最終更新日 2024-09-25

ダイアログ - 噴出ダイアログ

会話のためのダイアログを表示するAPIです。

大小関わらず、自作の独自イベントなどで利用することになるでしょう。

吹き出しの開始・更新・終了を意識して利用する

噴出ダイアログ《通常・左上》開始(int 武将番号【配列用】, string メッセージ)
噴出ダイアログ《通常・左上》更新(int 武将番号【配列用】, string メッセージ)
噴出ダイアログ《通常・左上》終了()
噴出ダイアログ《通常・右下》開始(int 武将番号【配列用】, string メッセージ)
噴出ダイアログ《通常・右下》更新(int 武将番号【配列用】, string メッセージ)
噴出ダイアログ《通常・右下》終了()
void カスタム::On_プレイヤ担当ターン《メイン画面》() {
    // 左上、開いて、閉じる
    噴出ダイアログ《通常・左上》開始(100, "ああ\x0Aマイクのテストテスト" );
    噴出ダイアログ《通常・左上》終了();

    // 右下、開いて、閉じる
    噴出ダイアログ《通常・右下》開始(102, "ああ、眠いなぁ~" );
    噴出ダイアログ《通常・右下》終了();

    噴出ダイアログ《通常・左上》開始(100, "え~本日の~" );
    // 左上ひらいたままで… 右が連続メッセージ
    噴出ダイアログ《通常・右下》開始(102, "うっせーぞっp!!" );
    噴出ダイアログ《通常・右下》更新(102, "返れ!!" );
    噴出ダイアログ《通常・右下》更新(102, "いや、帰れ!!" );
    // 右下も開いたままで… ダイアログで問いあわせ
    int 答え = 実行/取消ダイアログ表示("帰りますか?");

    if ( 答え ) {
        噴出ダイアログ《通常・右下》更新(102, "わかったようだな" );
    } else {
        噴出ダイアログ《通常・右下》更新(102, "いいから帰れ!!" );
    }

    噴出ダイアログ《通常・左上》更新(100, "さて、\x0A雪も降ってるし帰るか。" );
    噴出ダイアログ《通常・左上》終了();

    噴出ダイアログ《通常・右下》更新(102, "やっと帰ったか。" );
    噴出ダイアログ《通常・右下》終了();
}

メイン画面中だけではなく、戦争中も同様に機能する。

void カスタム::On_ターン変更《攻城中画面》(int ターン数) {
  if ( Is_野戦中() && 1 <= 残りターン数 && 残りターン数 < 30 ) {
    if ( Get_天気() == 天気::雨 ) { // 前のターンが雨だった。まだこれからのターンがどうなるかは不明。

      噴出ダイアログ《通常・左上》開始(100, "さて、\x0A雨降ったしもう帰るか。" );
      噴出ダイアログ《通常・右下》開始(102, "じゃ、俺も帰ろ!!" );

      噴出ダイアログ《通常・左上》終了();
      噴出ダイアログ《通常・右下》終了();
    }
  }
}

「ある武将A」が「左上で」噴き出しを出している最中に、
「別の武将B」が「同じ左上で」噴き出しを出すことはダメ。
一旦左上を閉じること

同じく「ある武将A」が「右下で」噴き出しを出している最中に、
「別の武将B」が「同じ右下で」噴き出しを出すことはダメ。
一旦閉じること。

OKなパターン。

信長と勝家は話していた。
勝家の右下の噴き出しを閉じたあとで、右下に秀吉を登場させている。

信長:左上 開始 「勝家よ」
勝家:右下 開始 「はい」
信長:左上 更新 「腹が減った」
勝家:右下 更新 「私も」
信長:左上 終了
勝家:右下 終了
信長:左上  開始 「外へ出かけるか」
秀吉:右下  開始 「私もいきまする」
信長:左上  終了
秀吉:右下  終了
					

NGなパターン。

信長と勝家は話していた。
信長側の噴出を閉じず、信長の噴出を開いたまま、秀吉が左上で新たに噴き出しを出している。
これをすると、噴出の背景描画が乱れるときがある。

信長:左上 開始 「勝家よ」
勝家:右下 開始 「はい」
信長:左上 更新 「腹が減った」
勝家:右下 更新 「私も」
信長:左上 更新 「外へ出かけるか」
勝家:右下 終了
秀吉:左上 開始 「私もいきまする」  // アウト!! 左上の信長の枠を開いたまま、さらに同じところに秀吉の枠を開いている
信長:左上 終了
秀吉:左上 終了
				

戦場専用として画面の中央に表示する噴き出しダイアログ

void 噴出ダイアログ《戦場・中央》表示(int 武将番号【配列用】, string メッセージ)

この噴き出しダイアログは、天翔記の戦場にてよくみかける噴き出しと同一のものであり、 左上や右下ではなく、画面中央に1つ出るモーダルタイプである。

この関数は戦場でのみ利用可能です。ダイアログ終了関数を呼び出す必要はありません。

void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {

	// 今表示中しているマップ中に居る人の武将番号【配列用】のリストを得る
	番号リスト型 list = Get_出陣中の武将番号リスト【配列用】《表示中マップ》();

	if (list.size() > 0) {
		int iBushouID = list[0];
		string 名前 = Get_名前(iBushouID);
		噴出ダイアログ《戦場・中央》表示(iBushouID, 名前 + "、推して参る!!");
	}
}

	

実践ではほとんどのシーンで「語句変化」を利用することになる

ダイアログの文章は、語句変化 を利用して作成することが多いため、
そちらも参照してください。

より詳細を知るには...

「噴出ダイアログ」に関する主な所は以上となります。 詳しくは「ダイアログ情報型.h」を参照してください。