※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ユニットリストを作成する

特定のキーによってソートされたユニットリストを作成するサブルーチンです。

複数のキーによる複合ソートが可能で、「回避 + 運動性」の場合は「(回避 運動性)」と引数に指定します。

// 指定されたパラメータでソートしたユニットのリストを作成する
// Args(1) : ソートキー
MakeUnitList:
  // ソートキーのデータを取得する
  Local _UnitID _templist i _lnum
  ForEach "味方" (出撃 待機 格納)
    _UnitID = 対象ユニットID        // 対象ユニットIDを変数に記録
     _templist[_UnitID] = 0  // ソート用の一時変数に格納

    _lnum = LLength(Args(1))
    For i = 1 to _lnum
      Switch LIndex(Args(1), i)
      Case "ユニット名称" "名称"
        _templist[_UnitID] = Unit()
        Break  // 名称ソートの場合は他との複合ソートはないので終了
      Case "パイロット名称"
        _templist[_UnitID] = Pilot()
        Break  // 名称ソートの場合は他との複合ソートはないので終了
      Case "ランク" "最大HP" "最大EN" "HP" "EN" "装甲" "運動性" "移動力" "最大攻撃力" "最長射程"
        Incr _templist[_UnitID] Info("ユニット", _UnitID, LIndex(Args(1), i))
      Case "レベル" "SP" "格闘" "射撃" "命中" "回避" "技量" "反応"
        Incr _templist[_UnitID] Info("パイロット", PilotID(_UnitID), LIndex(Args(1), i))
      EndSw
    Next
  Next

  // リストをソート
  If (InStr(Args(1), "名称") != 0) Then  // 名称ソートの場合
    Sort _templist "文字"
  Else  // 名称によるソートでない場合
    Sort _templist "降順"
  EndIf

  // ソート結果からユニットリストを作成
  ForEach _UnitID In _templist
    Set UnitList[_UnitID] _UnitID
  Next
Return