メニュー画面まわりの作業に少し手を付けました。
次回作はご覧の通りいわゆるノベル形式のアドベンチャーゲームですので、テキスト表示中にメニュー画面を出せるのはマスト……ということで、そういう仕様で実装しました。
表示中のテキストを隠さないよう、ただしメニュー画面を開いていることがわかるように、薄暗くするようにしています(ウディタ基本システムと同じだね)。
元々「(共通システムの改修・試運転用の企画だったので)システムは頑張らない」がコンセプトだったため、凝ったことはやっていません。
選択肢表示は『ケルリート』『イルシェラート』と受け継いだ処理を少し改修して使っています。選択肢どうしの間隔とか、カーソル移動時の動きといった、比較しないとわからないようなところに手を加えました。
レイアウトは変えましたが、過去作を遊んでいれば画面だけ見て「あの作者じゃね?」と思ってもらえることを意識しました。どうだろう?
ちなみに、メニュー画面のコマンドを選ぶとこのようにテキストが表示されていたエリアに内容が表示されます。これはセーブ画面(未完成)。
処理自体は『イルシェラート』のセーブ画面とほぼ同じです。いじったのは描画まわりだけ。スクリーンショットを表示したかったけど、通常版ウディタでは特殊なことしないとできないし、そこまでするメリットも感じなかったので、質素な画面としています。
1つのデータに2行表示できるように見えますが、実際にこの2行目はフラグの表示に使おうと思っています。
ところで、UI(文字色含め)パーツの色設定は言われなきゃ誰もわからないこだわりがあり、次回作のUIパーツの色は『イルシェラート』のタイトル画面とまったく同じ色を使っています。関連作だからね。まあエフェクトかかって目に入る頃には別の色ってのはあるかもしれないですが
そうそう、実装の話をしますが、
「テキスト表示中にメニュー画面を開いたりセーブ画面を開いてセーブできたりする」
これを実現するために既存の共通処理を改修したわけですが、改修が必要になった箇所のほとんどはテキスト表示をするシステムでした。
”テキスト表示中”には、選択肢表示も当然含まれますので、選択肢表示中にどうやって選択肢の塊であるメニュー関連を表示し、閉じたときに元の画面を表示するか、結構悩まされました。
しかも、途中でセーブ&ロードもしたいから、セーブ地点のテキストから再開できなければならない。
テキストだけであれば透明にしてしまえばよいですが、共通のCDBを使う選択肢表示が絡むので厄介です。
結局、散々悩んだ末に出した実装方法は、”表示復元モード”をテキスト表示処理に組み込むことでした。
この表示復元モードは、「メニューを開く/セーブした時点で開いていたテキストファイルで最後に表示した文章・選択肢まで瞬間表示する」ことができます。
選択肢表示用のコマンドも読み直すので、メニューまわりの選択肢で同じCDBを使っても問題なく動作します。
別のアプローチもあるでしょうけど、いわゆる”イベント回想”を実装する際に必要な処理(変数操作等の無効化など)とある程度共通化が可能でしたので、この方法をとっています。
実際の中身は(解説すると本当に日が暮れるどころではないので)お見せしませんが、初めてアドベンチャーゲーム作る人のヒントになれば……と思います。
今後はある程度テキストの実装を進めていきます。