行 |
処理内容 |
20-28 |
▼ パラメータ初期化 |
数値を初期化。 |
29-40 |
■条件分岐(変数): 【1】 CSelf0[モード] が 0 と同じ |
モードが「選択を終えるまでループ」の場合は分岐。 |
|
31-32 |
▼ 選択完了までの場合 カーソル位置を初期化 |
カーソル位置を左上(ID=0)に初期化。 |
|
34-40 |
■条件分岐(変数): 【1】 CSelf12[一時変数A] が -1 以外 |
可変DB[18:基本システム用変数]のデータ[21:万能ウィンドウ 外からカーソル指定]が
カーソル位置を指定(-1以外)の場合は分岐。 |
|
|
36-38 |
可変DB[18:基本システム用変数]のデータ[21:万能ウィンドウ 外からカーソル指定]をセルフ[11]に取得し、
カーソル位置が「0〜最終項目番号(項目総数−1)」の範囲内になるように設定。 |
42-51 |
◇分岐: 【2】 [ CSelf0[モード] が 1 と同じ ]の場合↓ |
モードが「キー1回分だけ処理」の場合は分岐。 |
|
43 |
▼ キー一回分だけ処理する場合はカーソル位置を初期化しない
(ただ外からカーソル指定がセットされてたら入れる) |
|
45-51 |
■条件分岐(変数): 【1】 CSelf12[一時変数A] が -1 以外 |
可変DB[18:基本システム用変数]のデータ[21:万能ウィンドウ 外からカーソル指定]が
カーソル位置を指定(-1以外)の場合は分岐。 |
|
|
47-49 |
可変DB[18:基本システム用変数]のデータ[21:万能ウィンドウ 外からカーソル指定]をセルフ[11]に取得し、
カーソル位置が「0〜最終項目番号(項目総数−1)」の範囲内になるように設定。 |
54-62 |
■条件分岐(変数): 【1】 CSelf0[モード] が 2 と同じ |
モードが「選択を終えるまでループ[カーソル初期化しない]」の場合は分岐。 |
|
56 |
▼ カーソル位置を初期化しない で通常ループする場合は、「外からカーソル指定」の値を読む |
|
57 |
セルフ[0]に「0」を設定し、以降は「選択を終えるまでループ」と同じ処理で実行します。 |
|
58-60 |
可変DB[18:基本システム用変数]のデータ[21:万能ウィンドウ 外からカーソル指定]をセルフ[11]に取得し、
カーソル位置が「0〜最終項目番号(項目総数−1)」の範囲内になるように設定。 |
64-68 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 万能ウィンドウ初期化
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 選択状態は-200で初期化する(キャンセルなら-100、選択していればそのコードが格納される) |
69-70 |
セルフ[10]と可変DB[18:基本システム用変数]のデータ[8:万能ウィンドウ_コード返値]に「-200」を設定。
何らかのキー操作を行った場合は「-200以外」になります。
0以上 |
選択した項目のコード |
-100 |
キャンセルキーを押した |
-200 |
初期値(選択中) |
-300 |
サブキーや左右キーを押した |
|
71-240 |
■ループ開始 |
キー処理が終わるまでループします。 |
|
72-77 |
▼ カーソル表示を更新 |
カーソルに関する数値設定を行い、コモンイベント[064:X[共]万能ウィンドウ描画処理]を呼び出し、
カーソルの表示とカーソル位置に合わせた一覧の表示を実行。 |
|
78-79 |
▼ キー受付ループ 決定キーか、キャンセルキーが押された段階で終了します。
▼ ただし、終了しても万能ウィンドウ画像は残ります。消すのは手動で。 |
|
80-95 |
■条件分岐(変数): 【1】 CSelf1[オプション] が 4 と同じ |
「左右キーで終了」の設定の場合は分岐。 |
|
|
82 |
▼ 左右キーを押したら終了する場合 |
|
|
83 |
■キー入力:CSelf20[受付キー][入力待ち] 4方向 決定(10) キャンセル(11) |
設定されたキーが押されるまで待機。 |
|
|
84-95 |
■条件分岐(変数): 【1】 CSelf20[受付キー] が 4 と同じ
【2】 CSelf20[受付キー] が 6 と同じ |
左右キーが押された場合は分岐し、
セルフ[10]に「-300(左右キーが押された)」を設定し、
セルフ[11]に「0」を設定して、【ループ中断】を実行。 |
|
97-107 |
◇上記以外
|
「左右キーで終了」の設定ではない場合は分岐。 |
|
|
98-101 |
■条件分岐(変数): 【1】 CSelf1[オプション] が 2 のビットを満たす |
オプションに「サブキーで終了」が設定されている場合は分岐。 |
|
|
|
100 |
▼ サブキーを押したら終了する場合 |
|
|
|
101 |
■キー入力:CSelf20[受付キー][入力待ち] 4方向 決定(10) キャンセル(11) サブキー(12) |
設定されたキーが押されるまで待機。 |
|
|
103-105 |
◇上記以外 |
オプションに「サブキーで終了」が設定されていない場合は分岐。 |
|
|
|
104 |
▼ 通常の場合 |
|
|
|
105 |
■キー入力:CSelf20[受付キー][入力待ち] 4方向 決定(10) キャンセル(11) |
設定されたキーが押されるまで待機。 |
|
110-116 |
■条件分岐(変数): 【1】 CSelf20[受付キー] が 12 と同じ |
サブキーが押された場合は分岐。 |
|
|
112-114 |
セルフ[10]に「-300(サブキーが押された)」を設定し、
セルフ[11]に「0」を設定して、【ループ中断】を実行。 |
|
117-141 |
■条件分岐(変数): 【1】 CSelf20[受付キー] が 10 と同じ |
決定キーが押された場合は分岐。 |
|
|
119 |
▼ 決定キー 選択可能なら、現在選択中のコードを代入して終了 |
|
|
121-135 |
■条件分岐(変数): 【1】 CSelf12[一時変数A] が 1 と同じ |
選択した項目が「選択可能」の場合は分岐。 |
|
|
|
123 |
▼ 選択可能な状態 |
|
|
|
124-125 |
選択した項目のコード(可変DB[19:万能ウィンドウ一時DB]の項目[1:項目コード])を
可変DB[18:基本システム用変数]のデータ[8:万能ウィンドウ_コード返値]に設定。
例えばアイテム[3:エリクサー]を選択した場合は「10003」が設定されます。 |
|
|
|
126-133 |
■条件分岐(変数): 【1】 CSelf1[オプション] が 1 のビットを満たす |
オプションに「決定音を鳴らさない」「決定無音+サブキーで終了」の場合は分岐し、決定音を鳴らしません。
例えば、このコモンイベントを終了して呼び出し元のコモンイベントへ戻り、
呼び出し元のコモンイベントの方で決定音を鳴らす場合は、この設定にします。 |
それ以外の場合は、コモンイベント[049:X[共]システムSE再生]を呼び出し、決定音のSEを演奏。 |
|
|
|
134-135 |
セルフ[11]に「0」を設定して、【ループ中断】を実行。 |
|
|
137-139 |
◇上記以外 |
選択した項目が「選択不可」の場合は分岐。 |
|
|
|
138 |
▼ 選択不能な状態 |
|
|
|
139 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
ブザー音のSEを演奏。 |
|
143-151 |
◇分岐: 【2】 [ CSelf20[受付キー] が 11 と同じ ]の場合↓ |
キャンセルキーが押された場合は分岐。 |
|
|
144 |
▼ キャンセルキー -100を返して終了 |
|
|
145 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
キャンセル音のSEを演奏。 |
|
|
146-147 |
セルフ[10]と可変DB[18:基本システム用変数]のデータ[8:万能ウィンドウ_コード返値]に
「-100(キャンセルが押された)」を設定。 |
|
|
148-151 |
コモンイベント[064:X[共]万能ウィンドウ描画処理]を呼び出し、
カーソル表示を消去して、セルフ[11]に「0」を設定して、【ループ中断】を実行。 |
|
154-174 |
■条件分岐(変数): 【1】 CSelf20[受付キー] が 8 と同じ |
上キーが押された場合は分岐。 |
|
|
156 |
▼ 上キー |
|
|
157 |
セルフ[11]に「横項目数」を減算し、カーソル位置を1つ上の行に移動。 |
|
|
167 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
カーソル移動音のSEを演奏。 |
|
|
168-170 |
▼ 補正 |
「(カーソル位置+最大項目数)<余剰>最大項目数」をセルフ[11]に設定し、
項目がある範囲内にカーソル位置を収めるために補正。 |
例えば、最大項目数が「30」の場合は、存在する項目の範囲は「0〜29」になります。
仮にカーソル位置が「-1」の場合は、「-1+30」でカーソル位置は「29」になり、
そして「余剰30」を実行しても「29」のままなので、カーソル位置は「29」になります。 |
|
|
171-174 |
▼ カーソル位置の項目コードを内部的に保存 |
可変DB[19:万能ウィンドウ一時DB]の項目[1:項目コード]をセルフ[13]に取得し、
可変DB[18:基本システム用変数]のデータ[18:万能ウィンドウ カーソル位置コード]に項目コードを設定。 |
可変DB[18:基本システム用変数]のデータ[61:[一時]万能ウィンドウ最終カーソル位置]に現在のカーソル位置を設定。 |
|
176-187 |
◇分岐: 【2】 [ CSelf20[受付キー] が 2 と同じ ]の場合↓ |
下キーが押された場合は分岐。 |
|
|
177 |
▼ 下キー 最下段でなければ実行
※実際には最下段でも実行しています。 |
|
|
178 |
「カーソル位置+横項目数」をセルフ[12]に設定。
但し、この設定を行った先にセルフ[12]を使った設定が無く、無意味な設定になっています。 |
|
|
179 |
セルフ[11]に「横項目数」を加算し、カーソル位置を1つ下の行に移動。 |
|
|
180 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
カーソル移動音のSEを演奏。 |
|
|
181-183 |
▼ 補正 |
「(カーソル位置+最大項目数)<余剰>最大項目数」をセルフ[11]に設定し、
項目がある範囲内にカーソル位置を収めるために補正。 |
例えば、最大項目数が「30」の場合は、存在する項目の範囲は「0〜29」になります。
仮にカーソル位置が「31」の場合は、「31+30」でカーソル位置は「61」になり、
そして「余剰30」を実行して「1」になるため、カーソル位置は「1」になります。
※「余剰30」は「30以上の場合は「減算30」を実行し続ける」と言った処理を行います。
そのため、「61」の場合は「61−30−30=1」になります。 |
|
|
184-187 |
▼ カーソル位置の項目コードを内部的に保存 |
可変DB[19:万能ウィンドウ一時DB]の項目[1:項目コード]をセルフ[13]に取得し、
可変DB[18:基本システム用変数]のデータ[18:万能ウィンドウ カーソル位置コード]に項目コードを設定。 |
可変DB[18:基本システム用変数]のデータ[61:[一時]万能ウィンドウ最終カーソル位置]に現在のカーソル位置を設定。 |
|
190-207 |
■条件分岐(変数): 【1】 CSelf20[受付キー] が 4 と同じ |
左キーが押された場合は分岐。 |
|
|
192 |
▼ 左キー (横方向に一周する計算 ) |
|
|
193-194 |
「カーソル位置÷横項目数×横項目数」をセルフ[13]に設定し、
カーソルがある行の最も左の項目のカーソル位置を算出。 |
|
|
195 |
「カーソル位置<余剰>横項目数」をセルフ[12]に設定し、
選択中のカーソルの横位置を最も左を「0」として算出。 |
例えば「横項目数=3」の場合は、
カーソルの位置が左の列の場合は「0」、中央の列なら「1」、右の列なら「2」が設定されます。 |
|
|
196-197 |
「(セルフ[12]+横項目数−1)<余剰>横項目数」をセルフ[12]に設定。 |
例えば「横項目数=3」の場合でカーソルの位置が「0」の場合は、
左キーを押すと「0+3−1=2」が実行され、カーソル位置は「2」になります。
カーソルの位置が「2」の場合で左キーを押すと「2+3−1=4」になり、
「3」で余剰する事で「1」になります。 |
|
|
198 |
「横のカーソル位置(セルフ[12])+縦のカーソル位置(セルフ[13])」をセルフ[11]に設定し、 左へ移動したあとのカーソル位置を設定。 |
|
|
199-201 |
▼ 補正 |
「(カーソル位置+最大項目数)<余剰>最大項目数」をセルフ[11]に設定し、
項目がある範囲内にカーソル位置を収めるために補正。 |
例えば最大項目数が「30」の場合は、存在する項目の範囲は「0〜29」になります。
仮にカーソル位置が「31」の場合は、「31+30」でカーソル位置は「61」になり、
そして「余剰30」を実行して「1」になるため、カーソル位置は「1」になります。 |
|
|
203-207 |
可変DB[19:万能ウィンドウ一時DB]の項目[1:項目コード]をセルフ[13]に取得し、
可変DB[18:基本システム用変数]のデータ[18:万能ウィンドウ カーソル位置コード]に項目コードを設定。 |
可変DB[18:基本システム用変数]のデータ[61:[一時]万能ウィンドウ最終カーソル位置]に現在のカーソル位置を設定。 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
カーソル移動音のSEを演奏。 |
|
209-225 |
◇分岐: 【2】 [ CSelf20[受付キー] が 6 と同じ ]の場合↓ |
右キーが押された場合は分岐。 |
|
|
210 |
▼ 右キー (横方向に一周する計算 ) |
|
|
211-212 |
「カーソル位置÷横項目数×横項目数」をセルフ[13]に設定し、
カーソルがある行の最も左の項目のカーソル位置を算出。 |
|
|
213 |
「カーソル位置<余剰>横項目数」をセルフ[12]に設定し、
選択中のカーソルの横位置を最も左を「0」として算出。 |
例えば「横項目数=3」の場合は、
カーソルの位置が左の列の場合は「0」、中央の列なら「1」、右の列なら「2」が設定されます。 |
|
|
214-215 |
「(セルフ[12]+横項目数+1)<余剰>横項目数」をセルフ[12]に設定。 |
例えば「横項目数=3」の場合でカーソルの位置が「2」の場合は、
右キーを押すと「2+3+1=6」になり、「3」で余剰する事で「0」になります。 |
|
|
216 |
「横のカーソル位置(セルフ[12])+縦のカーソル位置(セルフ[13])」をセルフ[11]に設定し、
右へ移動したあとのカーソル位置を設定。 |
|
|
217-219 |
▼ 補正 |
「(カーソル位置+最大項目数)<余剰>最大項目数」をセルフ[11]に設定し、
項目がある範囲内にカーソル位置を収めるために補正。 |
例えば最大項目数が「30」の場合は、存在する項目の範囲は「0〜29」になります。
仮にカーソル位置が「31」の場合は、「31+30」でカーソル位置は「61」になり、
そして「余剰30」を実行して「1」になるため、カーソル位置は「1」になります。 |
|
|
221-225 |
可変DB[19:万能ウィンドウ一時DB]の項目[1:項目コード]をセルフ[13]に取得し、
可変DB[18:基本システム用変数]のデータ[18:万能ウィンドウ カーソル位置コード]に項目コードを設定。 |
可変DB[18:基本システム用変数]のデータ[61:[一時]万能ウィンドウ最終カーソル位置]に現在のカーソル位置を設定。 |
コモンイベント[049:X[共]システムSE再生]を呼び出し、
カーソル移動音のSEを演奏。 |
|
233-238 |
■条件分岐(変数): 【1】 CSelf0[モード] が 1 と同じ |
「キー1回分だけ処理」の場合は分岐し、【ループ中断】を実行。 |
|
|
235-236 |
▼ 一回で終了なら、ここで抜ける |
何らかのキーが押されたので、【ループ中断】を実行。 |
241 |
セルフ[1]に「0」を設定。 |
このコモンイベントを呼び出す時に…
■イベントの挿入[名]:["X[共]万能ウィンドウ選択実行"]<コモンEv
65>/2:選択を終えるまでループ[カーソル初期化しない]
と言ったようにセルフ[1]の設定が無い呼び出し設定があり、この場合はセルフ[1]の値が初期化されないため、
この241行目で初期化を行っています。 |