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

ホットポイント活用術


まず、ホットポイントは以下のようなコマンドです。
HotPoint name X Y width height [caption]

このコマンドによって指定した範囲にマウスでクリック可能なエリアを作成します。
そしてクリックしたホットポイントの「name」がシステム変数「選択」に代入されます。

これだけ見ると「name」には一つのデータしか指定できないと思ってしまいますが、SRCには「リスト処理関数」というものがあります。
このリストを活用することで、一つのホットポイントにも様々なデータを持たせることができ、またそのデータの参照も簡単に行えます。

リストの形式ですが、SRCヘルプには以下のように書いてあります。
SRCヘルプ:目次>シナリオの作成>関数>リスト処理関数より引用
複数の要素が空白と括弧で区切られた文字列をリストと呼びます。SRCではリストを扱うための関数が用意されています。

つまりリストとは難しい構造は何一つ無い、データ間を半角スペースで区切ったただの文字列というわけです。
よって、ホットポイントの「name」にもこのリストを簡単に指定することができます。

例えば以下のようにホットポイントを作成したとしましょう。
HotPoint "表示変更 特殊能力" 0 0 64 64 "特殊能力一覧を表示"
そしてこのホットポイントをクリックすると、システム変数「選択」には"表示変更 特殊能力"という文字列が代入されます。

では、このリストを分解して単純なデータに直しましょう。
Option1 = LIndex(選択, 1)
Option2 = LIndex(選択, 2)
これで終わりです。
以上の処理だけで「Option1」には"表示変更"が格納され、「Option2」には"特殊能力"が格納されました。
後はSwitch文なんなりで特殊能力を表示してあげればいいわけです。

※例
Switch Option1
Case "表示変更"
  表示能力 = Option2
Case ...
  ...
EndSw
まあ、こんな感じで。

この技法は特にユニットの持つ特殊能力を羅列し、クリックされたものは詳細を表示するという様な場面で活用できます。

※またしても例
HotPoint "特殊能力詳細表示 $(Info(対象ユニットID, 特殊能力, i))" 0 0 100 20

もちろんリストは2つ以上のデータで作ることも可能です。
無駄の無いデータ構造、アルゴリズムを追究しましょう。