タスク: PCの対象消去が発生した時にPC表示のメニューカードを更新する

Issue #340 resolved
k4nagatsuki repo owner created an issue

現在のCWはメニューカードにPCのイメージを表示できますが、これは内部的にはPCの番号をカードイメージの情報として持つ事によって実現されています。

通常は一度表示されたら変更される事はありませんが、デバッガによるPCのイメージ変更や、表示メンバ以前の位置にいるPCの対象消去が発生した時には問題が起きます。具体的には、実際に表示されているイメージと、内部データ的に選択されているイメージとの間で齟齬が発生します。

この齟齬は、一度メニューカードを非表示にして再表示すると消滅します(つまりメニューカードのイメージが作り直されます)。これは1.50でも現状のCWPyでも同じです。キャンプ前とキャンプ後・セーブ時とロード時で背景やメニューカードの状態が変化するべきではないという考え方を原則とすると、この挙動は原則に反しています。

デバッガからのイメージ変更については、pull request #1354で、変更時点でメニューカードも更新するようにしました。対象消去についてはまだ何もしていませんが、対応を考える必要があります。そもそもこれは(おそらく)未定義の挙動で、これを前提にしたシナリオはおそらく存在しないため、比較的自由に方法を考える事ができます。

  1. 対象消去が発生した時点でメニューカードも更新する(アニメーションあり)
  2. 1.と同じだがアニメーションなし
  3. 一度表示されたメニューカードの画像は何があっても変更しない

個人的には1.を選びたいですが、これは完全に好みです。

Comments (4)

  1. k4nagatsuki reporter

    そういえばJPDCによってファイルを保存した時にもメニューカードの画像が変化する可能性があります。この場合も同様に処理したほうがよいでしょう。

  2. k4nagatsuki reporter

    カードを更新するタイミングは、そのカード自体のフラグによる表示・非表示の切替を除けば、プレイヤーが操作可能になったタイミングがよいでしょう。1.50の実装では、キャンプして戻すと画像が変化しているという動きをするからです。

  3. k4nagatsuki reporter

    pull request #1366

    メニューカードは対応しました。背景も一応対応しましたが、スケール変更などで表示が変化する可能性が依然としてあります。

    JPDCの存在によってCWの背景の仕様は際立って複雑なものになっており、完全な対応は不可能に近いです。実際問題として、ロードした時点でJPDCが絡む背景を復元するためには、そのJPDCが撮影処理を行った時点での画面情報を保存しておかなければなりません。これは明らかに現実的ではありません。

    せめてロードや冒険の再開を行った時点で、前回の中断から背景の状態が変化しないよう、操作可能になった時点で最新の情報によって背景を更新するようにしたのですが、シナリオによってはそのような動作が正しくないという事もあるかもしれません(私は見たことがありません)。そのような場合はまた互換モードで対応する事になると思います。また、その場合はロードなどで画面が変わる事を受け入れる必要があります。

    イベント中の画面スケール変更なども同様で、完全な対応は極めて難しいです。元々仕様に無理があるので、この辺りで妥協するのもやむなしかと考えています。

  4. Log in to comment