WSN追加案: カードと背景セルのレイヤ指定配置

Issue #301 resolved
k4nagatsuki repo owner created an issue

技術的な目途がついたのでIssueを立てます。

カードとセルのZ座標をもっと柔軟に指定できるようにする事を検討します。CW 1.60では背景セルをメニュー・プレイヤーカードの手前に表示する機能がつきましたが、これは不十分です。1.20以前のようにメニューカードをプレイヤーカードの手前に表示する事ができませんし、プレイヤーカードとメニューカードの間に背景セルを置く事もできません。

そうしたZ座標(奥-手前)の配置の自由性を確保するよい方法の一つは、カードやセルに数値を指定して、数値の順序に従って配置を行うことです。例えば、

  1. Z値0の背景1
  2. Z値100のカード1
  3. Z値150の背景
  4. Z値200のカード2
  5. Z値250のカード3

こうした指定を行った時、カード3が最も手前に、その次にカード2、以下順に背景2、カード1、背景1と表示されるようにします。このZ値をレイヤとも呼びます。レイヤの値が重複した場合の優先度は、従来通りカードやセルの定義順(後ほど手前)です。

現在のCWPyは、内部的に次の値を持っています。

  • レイヤ0 … 背景
  • レイヤ100 … メニューカード・エネミーカード
  • レイヤ200 … プレイヤーカード
  • レイヤ300 … 1.20モードでのメニューカード・エネミーカード
  • レイヤ1000 … メッセージ

100点分の余裕を持たせているのは、それらの間に何かを配置したいという需要に対応するためです(メニューとプレイヤーの間に背景を配置したい場合はレイヤ150を指定するなど)。また、これらの数字には少数も使えますので、さらに細かくしたいという要望にも柔軟に対応することができます。

実装上のメモとして以下を挙げておきます。

  • キャンプモードのカードは最大のレイヤ値を持たなくてはなりません(手前に配置したセルなどに隠されてはいけないため)
  • 手前に配置した背景セルも、背景継承を伴わない背景変更を行った場合は消滅しなくてはなりません(1.60の仕様に合わせる)

Comments (5)

  1. Y Sakaguchi

    お疲れ様です。

    セル関係と、敵カードの絵にPC画像をコピーして表示させる機能はPyにも欲しいなと思っていたので、実現しそうで嬉しいです。

    プログラム関係はさっぱりなので手伝いも出来ずROMってばかりですが、いつもこちらの更新を楽しみにしています。頑張ってください。

  2. Liar_cw NA

    些細な事かもしれませんが……。

    説明文を書くにあたって便宜上「CW 1.60」と表記したものと思いますが、 groupASK official fansiteではCW1.50が正式な最新バージョンとして扱われている以上、 功労者が同じでも扱いが別エンジンに過ぎないCardWirthNextは「CWNext(1.60)」等と表した方が良いと思います。

  3. k4nagatsuki reporter

    @GanmaShadowさん

    この案にも問題があるかもしれないのでしばらく検討の時間を置きたいと考えていますが、技術的には実現可能になっているので、ゆっくりお待ちいただければと思います。

    以前、様々なバリアントでの名前のリストを提供していただけた事は非常にありがたいことでした。ソフトウェアはプログラムだけでできているわけではないので、今後もなんらかの形でお手伝いいただけることがあれば嬉しいです。

    @Liar_cwさん

    特に気にせずたびたびCW 1.60のように書いた気がしますが、言われてみれば付属テキストなどにCardWirth 1.60という表記は見当たらないですね。自らCardWirthNextと名乗っている以上、Nextをつけた方がよさそうです。今後はそのように表記することにします。ありがとうございます。

  4. k4nagatsuki reporter
    • pull request #1153
    • pull request #1173

    特に問題の指摘なども無いので試験実装を行いました。対応するエディタはcwxeditorの20151103版です(しかしなんかメモリエラーが出るので後で直す)。

    実装上で見つけた仕様の懸案として、セルやカードに同一のレイヤ値を指定した時にどう配置するかというものがあります。現在はメッセージ→背景セル→メニューカード→PCの順で優先して前に出すようにしていますが、他の実装では異なるかもしれません。そうなると仕様合せで第2のレイヤ値が必要になる可能性もあります。

  5. Log in to comment