「内政について」の編集履歴(バックアップ)一覧に戻る

内政について - (2019/05/29 (水) 19:26:07) のソース

**&color(green){内政の概要}
内政処理の考え方は以下の様になります。
1、内政領地に内政ユニットを配置し、雇用と解雇で増減させる。
2、内政ユニットの数量をトリガとした条件分岐で任意の処理およびイベントを発生させ、各種状態を変動する。
3、内政に関するデータは「数値変数」として扱い管理する。


**&color(green){内政ウィンドウの表示}
scenario構造体に&color(blue){poli}を記述します。
>poli = &color(blue){Aのラベル, Aの識別子, Aのヘルプ識別子,} &color(green){Bのラベル, Bの識別子, Bのヘルプ識別子,} ‥
poliでは3つのデータを一組として扱い一つの項目を定義します。
:ラベル|
ウィンドウに表示されるボタン名またはデータ欄名です。
:識別子|
spot構造体(内政領地を表示するボタン)か数値変数(内政値のデータ欄)のどちらかを記述します。
:ヘルプ識別子|
内政ウィンドウのマウスホバーの際に表示されるヘルプ文の識別子です。
detail構造体で定義したデータ名を指定します。ヘルプ文が無い場合は @ と記述してください。

>poli = &color(blue){内政値, value, detail0,} @, @, @, &color(magenta){内政, spot1, detail1,} &color(green){傭兵雇用, spot2, detail2}
上記の記述で内政ウィンドウはこう表示されます。
――――――――――――
  &color(blue){内政値 xxxxx}

  &color(magenta){「 内政 」}
  &color(green){「傭兵雇用」}
――――――――――――
一段目に数値変数「value」で示される内政値が表示されます。
二段目は余白となります。@は余白を示す記号です。必ず三連記述してください。
三段目は内政領地(spot1)を表示するボタンとなります。
四段目は傭兵雇用領地(spot2)を表示するボタンとなります。


**&color(green){内政表現の手順}
***1、内政領地を示すspot構造体を設定します。
>spot spot1 {
>  politics = on        内政領地である事を示します&color(red){(必須)}
>  name = 内政        内政領地の名前
>  member = sp1, sp2, ‥  初期配置される内政ユニットを列挙します
>}

***2、内政ユニットを示すunit構造体を設定します。
>unit unit1 {
>  politics = (on/fix/erase/unique)  内政ユニットのタイプ&color(red){(必須)}
>  name = 開発     内政ユニットの名前
>  image = town     内政ユニットのイメージ名
>  merce = p1, p2, p3 このユニットから雇える内政ユニットを列挙します
>}
:politics = (on/fix/erase/unique)|
|on|普通の内政ユニット。右クリックで削除できる|
|fix|削除できない|
|erase|雇用して内政スクリプトが実行された後に自動削除される。クリックに対する処理だけが必要な場合に使う。save()のタイミングによってはリロード時に残ってしまう場合があるので注意。|
|unique|一つしか登場させないユニット。内政領地にあったら雇用欄に出ない。右クリックで削除できる|

***3、detail構造体にヘルプ文を設定します。
>detail {
>  detail0 = 内政値です。;
>  detail1 = 内政を行います。;
>  detail2 = 傭兵雇用を行います。;
>}

***4、内政スクリプトをevent構造体に記述します。
内政ユニットを雇用する度に、
scenario構造体の&color(blue){politics}にセットされたevent構造体が実行されます。
このイベント内で内政ユニットの数量を条件分岐にした任意の処理を行います。
>scenario sc1 {
>  politics = p_proc
>}
>
>event p_proc {
>//特にinSpotに対する優位点が見い出せませんが、一応ptestも入れておきます
>  if (ptest(spot1, unit1)) { ...
>   もしくは
>  if (inSpot(spot1, unit1)) { ...
>   もしくは
>  pushCon(spot1, unit1, count1)
>  if (count1 > 0) { ...
>   など任意の処理
>}

なお、内政ユニットは通常のユニットとは異なる扱いとなっており、storeUnitOfSpotなどの関数では値や実体を取得できません。