■ 31〜32日目のまとめ
前回(24〜30日目)は、メインシーンを「動かす」直前までの土台を固めた期間だった。今回はいよいよ本丸であるフェーズ管理に着手し、1ターンの進行が一巡する状態まで持っていった。
31日目はフェーズ管理の骨格(モック)を組み、ターンが最初から最後まで通して回ることを確認した。32日目はそのフェーズの中身、特に③数値変動フェーズを本実装し、内政・軍事・謀略の各コマンドが実際の数値変化として結果に反映されるようにした。コマンド入力から処理、結果表示までがようやく一本の線で繋がった2日間である。
■ 31日目(5/29):フェーズ管理の骨格・状態設計の整理
フェーズ管理のモック実装
1ターンを7フェーズで構成する設計はすでに確定していたため、まずは各フェーズを空の処理(モック)として並べ、ターンが端から端まで通して進行することを優先して確認した。
新規開始時は①開始フェーズから、セーブデータのロード時は⑥コマンド入力フェーズから始まるよう分岐させている。また、1ターン目は表示すべき結果がまだ無いため、④結果表示フェーズをスキップする制御を入れた。新規開始・ロード再開のどちらでもターンが正しく進むことを確認できた。
各フェーズの処理はPhase_という接頭辞で統一し、ManagerMainの末尾にまとめて配置した。将来的には専用のクラスへ切り出す前提の置き方である。
メインシーンの状態とフェーズは別概念
ここで一つ整理が必要だった。メインシーンの「状態レベル」(パネルを開いている/いない、といったUIの状態)と、「1ターン内のフェーズ進行」は別の概念である。両者が混ざらないよう、状態を管理する列挙型の名前を役割ごとに分け、コマンド入力フェーズ用・結果表示フェーズ用にそれぞれ用意した。
ターン情報パネルの追加
現在が何年目の何の季節か(1年=春夏秋冬の4ターン)を表示するパネルを追加した。ターン開始時に上からスライドインして現在のターン情報を示す。オプションで言語を切り替えた際にも表示が追従するようにしている。

配下枠の自動拡張
拠点数に応じて配下武将の枠が増える仕様(拠点1〜3で5名、以降段階的に最大9名)を、戦争解決フェーズの末尾で判定・拡張する処理として実装した。一度広がった枠は拠点が減っても縮まないため、その管理用の値を勢力データ側へ統合する修正もあわせて行っている。

ターン終了時のリセット処理
ターンをまたいで持ち越してはいけない状態(入力済みコマンド、褒賞の1回制限フラグなど)を、所定のフェーズでまとめてリセットする処理を入れた。ターンが進んだ後にコマンドを再入力できることを確認している。
ズーム座標のバグ修正
地図のズーム時、拡大の中心がずれて画面右上方向にずれていく不具合を修正した。原因は座標系の取り違えで、変換を1か所加えることでボタンズーム・ホイールズームの両方で解消した。
■ 32日目(5/30):③数値変動フェーズ本実装・資金コマンド・演出
この日は分量が多い。順に記録する。
③数値変動フェーズの本実装
フェーズの骨格に対し、中身を入れていく作業に入った。最初に着手したのが③数値変動フェーズである。
このフェーズは、入力されたコマンド(開発・施し・徴発・徴兵・募兵・訓練・諜報)の効果を、決められた順序で勢力の数値へ反映する処理である。設計書に沿って6つの段階(諜報力の減衰→兵数の変動→内政による変動→資金収支→諜報力の上昇→計略)を順に処理する形で実装した。
処理はプレイヤー勢力もAI勢力も同じロジックで回せるよう、勢力単位の共通メソッドとして切り出している。AIのコマンドはまだ入力する仕組み(⑦フェーズ)が無いため、現時点では空の状態で安全に動作するようにしてある。
各コマンドの計算式には設計書通りに能力値や特技の補正が絡む。たとえば開発なら知力と魅力、徴兵なら武力と魅力が効き、対応する特技を持っていれば補正がかかる。特技が発動したかどうかは、1回のコマンドにつき1度だけ判定し、その結果を計算と後述の結果表示の両方で使い回すようにした。これにより「表示では発動と出ているのに計算に反映されていない」といったズレが起きないようにしている。
結果の記録(プレイヤーのみ)
③のフェーズは内部で数値を処理するだけで、プレイヤーには何が起きたか見えない。そこで、誰がどのコマンドを実行し、どの数値がいくつからいくつへ変化したかを記録する仕組みを入れた。
記録は実行前と実行後の数値をそれぞれ写し取り、その差分から「変化した項目だけ」を抽出して表示する方式とした。開発なら国力の1項目、徴兵なら兵数・訓練度・民忠の3項目、というように、コマンドによって変わる項目数が違っても同じ仕組みで扱える。記録するのはプレイヤー勢力ぶんのみで、AI勢力は記録しない(表示しないため)。
結果表示パネルへの反映
記録した結果を、結果表示パネル内のスクロールビューに1件ずつ縦に並べて表示できるようにした。1件分の表示部品を新規に作り、武将・実行したコマンド・発動した特技・数値の変化量が読めるようにしている。まだ見た目は仮で、レイアウトや文言は今後詰めていくが、「誰がどう働いたか」がプレイヤーに見える状態にはなった。
以下は、結果だけを先行して表示するよう作成した仮UIの結果パネル。
発動特技はむちゃくちゃ(笑)

資金を使うコマンドの入力フロー
開発・施し・徴兵といった資金を消費するコマンドのために、資金額を選択する確認パネルを本実装した。10刻みのトグルボタンを並べ、コマンドによって選べる上限を変えている(開発・施しは30まで、徴兵は50まで)。
所持資金で払えない額のボタンは自動で無効になり、額を選ぶまでは決定ボタンも押せない。また、すでに数値が上限に達している場合(国力が999など)は、そのコマンド自体を実行不可とした。資金は確定した時点で即座に消費する方式とし、入力した額を③フェーズの計算に使う流れにしている。

数値変動の演出と操作ロック
資金を消費したとき、数値が変わる演出(前回作ったカウント表示)を見せてからパネルを閉じるようにした。
ここで一つ問題が起きた。演出の途中で別の操作をすると、後から前の演出の「閉じる」処理が遅れて発火し、開いたばかりの別パネルが勝手に閉じてしまう現象である。当初は「演出を途中で中断する」方向で対処しようとしたが、複数の操作経路すべてで中断を仕込むのは漏れが出やすい。
最終的に「演出が終わるまで操作を一切受け付けない」方式へ切り替えた。演出中はボタン操作も、地図上の右クリックによる操作も止める。演出時間は1秒程度と短いため、待ちがストレスになるほどではないと判断した。入口を1か所で締めることで、後から処理が暴発する余地そのものを消した形である。
フェーズ外でのマップ操作を禁止
結果表示パネルでスクロールバーを操作しようとすると、背後の地図が一緒にズームしてしまう問題があった。フェーズは演出によって長さが変わるため、状態ではなくフェーズそのもので判定し、コマンド入力フェーズ以外ではマップ操作(ズーム・スクロール)を一括で受け付けないようにした。
■ 結果表示フェーズの応答処理 ― 仕様を固めた
32日目の終盤は、次に着手する④結果表示フェーズについて、設計を詰める時間に充てた。
結果表示の中には、プレイヤーの判断が必要なものがある。武将の登用可否(捜索で発見した、引き抜きに成功した、など)や、AI勢力からの同盟・親睦の要請がそれである。これらは結果の一覧の中に判断ボタン付きで表示し、押すと小さな確認パネルでYES/NOを決める形にする。
判断のルールも整理した。YESを選んだら即座に確定し、後から戻せない(武将の登用や解雇は巻き戻しのコストが高いため)。判断せずに進めた場合は一律でNO扱いとする。明確なNOボタンは設けず、「閉じる=保留=結果的にNO」で兼ねることで、ボタンを2つに収めた。満席時の入れ替えについては、武将選択のUIを別途設計してから対応する。
ここは次回の最有力の着手対象であり、仕様を固めておくことで次の作業にすぐ入れるようにした。
■ 現時点の開発状況
| カテゴリ | 状況 |
|---|---|
| データクラス全般 | ✅ 完了 |
| Scene_Initialize / Title / Start | ✅ 完了 |
| Scene_Main(地図・情報パネル・コマンド入力) | ✅ 完了 |
| Scene_Main(数値変動演出) | ✅ 完了 |
| Scene_Main(フェーズ管理・骨格) | ✅ 実装 |
| Scene_Main(③数値変動フェーズ) | ✅ 本実装 |
| Scene_Main(資金コマンド入力フロー) | ✅ 完了 |
| Scene_Main(④結果表示フェーズ) | ⬜ 仕様確定・実装はこれから |
| Scene_Main(②戦争解決・戦闘計算) | ⬜ 未実装 |
| Scene_Main(⑦AIコマンド入力・AI) | ⬜ 未実装 |
| Scene_End | ⬜ 未着手 |
| コレクション画面・武将登録画面 | ✅ 完成(最終調整は別途) |
■ 次回の作業予定
次回は④結果表示フェーズの応答処理を実装する予定である。ただし、応答が発生する元(捜索での発見、引き抜きの成功、AIからの外交要請)がまだ実装されていないため、その発生源となる人事系または外交系のコマンドを先に作る必要がある。どちらから着手するかは次回の冒頭で整理する。
その先には、最も複雑になるであろう②戦争解決フェーズ(戦闘計算)と、⑦AIコマンド入力フェーズ(AIの行動ロジック)が控えている。コアループの骨格は動き出したので、ここから各フェーズの中身を一つずつ埋めていく段階に入る。






















