MOE3: 行軍解決処理
MainPhase#resolve_orders メソッド
いよいよ、肝心要の行軍解決処理、MainPhase#resolve_orders
に着手する。
撤退フェイズの RetreatPhase#resolve_orders
、調整フェイズの AdjustPhase#resolve_orders
は当分後回しで。
行軍解決処理の仕様
- フェイズに登録された命令の成否判定のみを行う
- あり得ない命令(海軍の内陸侵入やワープなど)の整合性検証は行わない
- ユニットの配置変更処理は行わない
このメソッドは今からそれなりに複雑になることが分かっているので、責任範囲をなるべく限定する。
現時点では地域隣接情報を作っていないので、いずれにせよ不正移動命令や遠隔地への異次元支援を検出できないのだが、ここではあくまで命令単体では正常であることを前提として処理する。
もちろん、支援や輸送の空振りは普通にあることなので考慮する。
has_many 設定
まず、Phase
から Unit
を経由して Order
に直接アクセスできるように has_many
を設定しておく。
class Unit < ActiveRecord::Base #(略) has_many :orders #(略) end
class Phase < ActiveRecord::Base belongs_to :turn has_many :units has_many :orders, through: :units end
これで MainPhase#resolve_orders
内から orders
メソッドで関係する全ての命令を取得できる。