命令の表記

さて。実はある時期から病的なまでに読点の使用を避けてきたわけだが、つまらない意地を張るのもそろそろやめようと思う。どうせ理由などないのだ。アレだ、横断歩道の白い部分以外は踏まない、てのと同じ。


本日の話題は命令の表記方法。F Lon-Eng*1とか。
特に悩むこともなかろうと思いきやさにあらず。まず支援命令と輸送命令は対象に他国の命令を指定できるため、例えば支援命令の記述は A Vie S German A Mun-Boh*2などと書く羽目になる。もちろん支援命令を出したのがドイツなら A Vie S A Mun-Boh のように国名は省略する。


話はこれだけでは済まない。現在の仕様では、支援および輸送命令の対象は、既に発行済みの命令から選択するようになっている。もちろん他国の命令が覗き見れたらゲームにならないので、そこは仮想命令という名目で他国の命令を勝手に設定できるようにした。実際の行軍には一切影響しないのは言うまでもない。


ここで面倒なのは、自国がドイツで、オーストリアの仮想命令を設定した時、A Vie S German A Mun-Boh の German を表示するかどうかという判断だ。仮想命令の設定ページではその国視点になっているので、少なくとも Austrian A Vie S German A Mun-Boh とは表示したくない。ところがデータ構造の冗長性を嫌って過剰に簡略化したせいか、仮想命令の発行者、この例ではドイツだが、仮想的にはオーストリアという状況の判断が入り組んでしまった。ソースを示さないと何を言っているか分からないとは思うが、そもそもソースを見ている私が混乱する状況である。はっきり言って嬉しくない。大まかには次のような流れになっているはずである。

  1. 表示できる命令はプレイヤーが担当する国に帰属するものに限る。
  2. 仮想命令は対象となるユニットの所属国に関わらずプレイヤーが担当する国に帰属する。
  3. 命令は DB から読み込んでオブジェクト化する際にその帰属を対象ユニットの所属国に変換する。
  4. 命令はそれぞれ文字列化する際に帰属先と表示者が一致しなければ国名を表示する。


つまり Austrian A Vie S German A Mun-Boh が実命令にせよ仮想命令にせよ、オーストリア視点では先頭の Austrian は省略される。ただし他国の命令の支援対象として選択可能な場合はオーストリア視点ではないため省略されない。例えば、ドイツ視点で A Tyr の支援対象として Austrian A Vie S German A Mun-Boh が選べる場合、German が省略され、選択肢には Austrian A Vie S A Mun-Boh と表示されるわけだ。確定すれば A Tyr S Austrian A Vie S となる。


なんとか思った通りの動作をするところまで漕ぎ着けたが、しかし自分自身の理解に不安があるのが許せない。しばらくは簡略化を目指して格闘することになりそうな予感。


ところでライバル発見。ていうかこちらが発見された格好だが。よーし負けるもんかー。

http://bsg.to/mt/mt-tb.cgi/191

*1:海軍をロンドンから英仏海峡に移動するの意。

*2:ウィーンの陸軍はドイツ陸軍のミュンヘンからボヘミアへの移動を支援するの意。