2 using System.Collections.Generic;
\r
4 using System.Drawing;
\r
9 internal class CActOptionList : CActivity
\r
13 public int n現在の選択項目;
\r
14 public bool b現在選択されている項目はReturnToMenuである
\r
18 CItemBase currentItem = this.list項目リスト[ this.n現在の選択項目 ];
\r
19 if (currentItem == this.iCommonReturnToMenu || currentItem == this.iDrumsReturnToMenu ||
\r
20 currentItem == this.iGuitarReturnToMenu || currentItem == this.iBassReturnToMenu)
\r
30 public CItemBase ib現在の選択項目
\r
34 return this.list項目リスト[ this.n現在の選択項目 ];
\r
41 public void t項目リストの設定・Bass()
\r
43 this.tConfigIniへ記録する();
\r
44 this.list項目リスト.Clear();
\r
46 this.iBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
\r
48 "Return to left menu.");
\r
49 this.list項目リスト.Add(this.iBassReturnToMenu);
\r
50 this.iBassAutoPlay = new CItemToggle( "AutoPlay", CDTXMania.ConfigIni.bAutoPlay.Bass,
\r
52 "To play the bass part automatically.");
\r
53 this.list項目リスト.Add( this.iBassAutoPlay );
\r
54 this.iBassScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Bass,
\r
55 "演奏時のベース譜面のスクロールの\n速度を指定します。\nx0.5 ~ x1000.0 までを指定可能です。",
\r
56 "To change the scroll speed for the\nbass lanes.\nYou can set it from x0.5 to x1000.0.\n(ScrollSpeed=x0.5 means half speed)");
\r
57 this.list項目リスト.Add( this.iBassScrollSpeed );
\r
58 this.iBassSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Bass,
\r
59 "ベースチップがヒットバー付近にくる\nまで表示されなくなります。",
\r
60 "Bass chips are disappered until they\ncome near the hit bar, and suddenly\nappears.");
\r
61 this.list項目リスト.Add( this.iBassSudden );
\r
62 this.iBassHidden = new CItemToggle("Hidden", CDTXMania.ConfigIni.bHidden.Bass,
\r
63 "ベースチップがヒットバー付近で表示\nされなくなります。",
\r
64 "Bass chips are hidden by approaching\nto the hit bar.");
\r
65 this.list項目リスト.Add( this.iBassHidden );
\r
66 this.iBassReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Bass,
\r
67 "ベースチップが譜面の上から下に流\nれるようになります。",
\r
68 "The scroll way is reversed. Bass chips\nflow from the top to the bottom.");
\r
69 this.list項目リスト.Add( this.iBassReverse );
\r
70 this.iBassPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常,
\r
71 (int) CDTXMania.ConfigIni.判定文字表示位置.Bass,
\r
72 "ベースの判定文字の表示位置を指定\nします。\n P-A: レーン上\n P-B: COMBO の下\n OFF: 表示しない",
\r
73 "The position to show judgement mark.\n(Perfect, Great, ...)\n\n P-A: on the lanes.\n P-B: under the COMBO indication.\n OFF: no judgement mark.",
\r
74 new string[] { "P-A", "P-B", "OFF" });
\r
75 this.list項目リスト.Add( this.iBassPosition );
\r
76 this.iBassRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常,
\r
77 (int) CDTXMania.ConfigIni.eRandom.Bass,
\r
78 "ベースのチップがランダムに降ってき\nます。\n Part: 小節・レーン単位で交換\n Super: チップ単位で交換\n Hyper: 全部完全に変更",
\r
79 "Bass chips come randomly.\n\n Part: swapping lanes randomly for each\n measures.\n Super: swapping chip randomly\n Hyper: swapping randomly\n (number of lanes also changes)",
\r
80 new string[] { "OFF", "Part", "Super", "Hyper" });
\r
81 this.list項目リスト.Add( this.iBassRandom );
\r
82 this.iBassLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Bass,
\r
83 "ベースチップのないところでピッキン\nグしても BAD になりません。",
\r
84 "Even if you pick without any chips,\nit doesn't become BAD.");
\r
85 this.list項目リスト.Add( this.iBassLight );
\r
86 this.iBassLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Bass,
\r
87 "ベースの RGB の並びが左右反転し\nます。(左利きモード)",
\r
88 "Lane order 'R-G-B' becomes 'B-G-R'\nfor lefty.");
\r
89 this.list項目リスト.Add( this.iBassLeft );
\r
90 // #23580 2011.1.3 yyagi
\r
91 this.iBassInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass,
\r
92 "ベースの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",
\r
93 "To adjust the bass input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value.");
\r
94 this.list項目リスト.Add(this.iBassInputAdjustTimeMs);
\r
97 this.eメニュー種別 = Eメニュー種別.Bass;
\r
99 public void t項目リストの設定・Common()
\r
101 this.tConfigIniへ記録する();
\r
102 this.list項目リスト.Clear();
\r
103 this.iCommonReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
\r
105 "Return to left menu.");
\r
106 this.list項目リスト.Add(this.iCommonReturnToMenu);
\r
107 this.iCommonDark = new CItemList( "DARK", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eDark,
\r
108 "HALF: 背景、レーン、ゲージが表示\nされなくなります。\nFULL: さらに小節線、拍線、判定ラ\nイン、パッドも表示されなくなります。",
\r
109 "OFF: all display parts are shown.\nHALF: wallpaper, lanes and gauge are\n disappeared.\nFULL: additionaly to HALF, bar/beat\n lines, hit bar, pads are disappeared.",
\r
110 new string[] { "OFF", "HALF", "FULL" } );
\r
111 this.list項目リスト.Add( this.iCommonDark );
\r
112 this.iCommonPlaySpeed = new CItemInteger( "PlaySpeed", 5, 40, CDTXMania.ConfigIni.n演奏速度,
\r
113 "曲の演奏速度を、速くしたり遅くした\nりすることができます。\n(※一部のサウンドカードでは正しく\n 再生できない可能性があります。)",
\r
114 "It changes the song speed.\nFor example, you can play in half\n speed by setting PlaySpeed = x0.5\n for your practice.\nNote: It also changes the songs' pitch.");
\r
115 this.list項目リスト.Add( this.iCommonPlaySpeed );
\r
117 this.eメニュー種別 = Eメニュー種別.Common;
\r
119 public void t項目リストの設定・Drums()
\r
121 this.tConfigIniへ記録する();
\r
122 this.list項目リスト.Clear();
\r
123 this.iDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
\r
125 "Return to left menu.");
\r
126 this.list項目リスト.Add(this.iDrumsReturnToMenu);
\r
127 this.iDrumsAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,
\r
128 "全パッドの自動演奏の ON/OFF を\nまとめて切り替えます。",
\r
129 "You can change whether Auto or not\n for all drums lanes at once.");
\r
130 this.list項目リスト.Add( this.iDrumsAutoPlayAll );
\r
131 this.iDrumsLeftCymbal = new CItemToggle( " LeftCymbal", CDTXMania.ConfigIni.bAutoPlay.LC,
\r
133 "To play LeftCymbal automatically.");
\r
134 this.list項目リスト.Add( this.iDrumsLeftCymbal );
\r
135 this.iDrumsHiHat = new CItemToggle( " HiHat", CDTXMania.ConfigIni.bAutoPlay.HH,
\r
136 "ハイハットを自動で演奏します。\n(クローズ、オープンとも)",
\r
137 "To play HiHat automatically.\n(It effects to both HH-close and\n HH-open)");
\r
138 this.list項目リスト.Add( this.iDrumsHiHat );
\r
139 this.iDrumsSnare = new CItemToggle( " Snare", CDTXMania.ConfigIni.bAutoPlay.SD,
\r
141 "To play Snare automatically.");
\r
142 this.list項目リスト.Add( this.iDrumsSnare );
\r
143 this.iDrumsBass = new CItemToggle( " BassDrum", CDTXMania.ConfigIni.bAutoPlay.BD,
\r
145 "To play Bass Drum automatically.");
\r
146 this.list項目リスト.Add( this.iDrumsBass );
\r
147 this.iDrumsHighTom = new CItemToggle( " HighTom", CDTXMania.ConfigIni.bAutoPlay.HT,
\r
149 "To play High Tom automatically.");
\r
150 this.list項目リスト.Add( this.iDrumsHighTom );
\r
151 this.iDrumsLowTom = new CItemToggle( " LowTom", CDTXMania.ConfigIni.bAutoPlay.LT,
\r
153 "To play Low Tom automatically.");
\r
154 this.list項目リスト.Add( this.iDrumsLowTom );
\r
155 this.iDrumsFloorTom = new CItemToggle( " FloorTom", CDTXMania.ConfigIni.bAutoPlay.FT,
\r
157 "To play Floor Tom automatically.");
\r
158 this.list項目リスト.Add( this.iDrumsFloorTom );
\r
159 this.iDrumsCymbalRide = new CItemToggle( " Cym/Ride", CDTXMania.ConfigIni.bAutoPlay.CY,
\r
160 "右シンバルとライドシンバルを自動で\n演奏します。",
\r
161 "To play both right- and Ride-Cymbal\n automatically.");
\r
162 this.list項目リスト.Add( this.iDrumsCymbalRide );
\r
163 this.iDrumsScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Drums,
\r
164 "演奏時のドラム譜面のスクロールの\n速度を指定します。\nx0.5 ~ x1000.0 を指定可能です。",
\r
165 "To change the scroll speed for the\ndrums lanes.\nYou can set it from x0.5 to x1000.0.\n(ScrollSpeed=x0.5 means half speed)");
\r
166 this.list項目リスト.Add( this.iDrumsScrollSpeed );
\r
167 this.iDrumsComboPosition = new CItemList( "ComboPosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.ドラムコンボ文字の表示位置,
\r
168 "演奏時のドラムコンボ文字列の位置\nを指定します。",
\r
169 "The display position for Drums Combo.\nNote that it doesn't take effect\n at Autoplay ([Left] is forcely used).",
\r
170 new string[] { "Left", "Center", "Right", "OFF" } );
\r
171 this.list項目リスト.Add( this.iDrumsComboPosition );
\r
172 this.iDrumsSudden = new CItemToggle("Sudden", CDTXMania.ConfigIni.bSudden.Drums,
\r
173 "ドラムチップが譜面の下の方から表\n示されるようになります。",
\r
174 "Drums chips are disappered until they\ncome near the hit bar, and suddenly\nappears.");
\r
175 this.list項目リスト.Add( this.iDrumsSudden );
\r
176 this.iDrumsHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Drums,
\r
177 "ドラムチップが譜面の下の方で表示\nされなくなります。",
\r
178 "Drums chips are hidden by approaching\nto the hit bar. ");
\r
179 this.list項目リスト.Add( this.iDrumsHidden );
\r
180 this.iDrumsReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Drums,
\r
181 "ドラムチップが譜面の下から上に流\nれるようになります。",
\r
182 "The scroll way is reversed. Drums chips\nflow from the bottom to the top.");
\r
183 this.list項目リスト.Add( this.iDrumsReverse );
\r
184 this.iDrumsPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Drums,
\r
185 "ドラムの判定文字の表示位置を指定\nします。\n P-A: レーン上\n P-B: 判定ライン下\n OFF: 表示しない",
\r
186 "The position to show judgement mark.\n(Perfect, Great, ...)\n\n P-A: on the lanes.\n P-B: under the hit bar.\n OFF: no judgement mark.",
\r
187 new string[] { "P-A", "P-B", "OFF" } );
\r
188 this.list項目リスト.Add( this.iDrumsPosition );
\r
189 this.iDrumsTight = new CItemToggle( "Tight", CDTXMania.ConfigIni.bTight,
\r
190 "ドラムチップのないところでパッドを\n叩くとミスになります。",
\r
191 "It becomes MISS to hit pad without\n chip.");
\r
192 this.list項目リスト.Add( this.iDrumsTight );
\r
193 // #23580 2011.1.3 yyagi
\r
194 this.iDrumsInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums,
\r
195 "ドラムの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",
\r
196 "To adjust the drums input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value.");
\r
197 this.list項目リスト.Add(this.iDrumsInputAdjustTimeMs);
\r
198 // #24074 2011.01.23 add ikanick
\r
199 this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Drums,
\r
200 "最高スキルと比較できるグラフを\n表示します。\nオートプレイだと表示されません。",
\r
201 "To draw Graph \n or not.");
\r
202 this.list項目リスト.Add( this.iDrumsGraph );
\r
205 this.eメニュー種別 = Eメニュー種別.Drums;
\r
207 public void t項目リストの設定・Exit()
\r
209 this.tConfigIniへ記録する();
\r
210 this.eメニュー種別 = Eメニュー種別.Unknown;
\r
212 public void t項目リストの設定・Guitar()
\r
214 this.tConfigIniへ記録する();
\r
215 this.list項目リスト.Clear();
\r
216 this.iGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
\r
218 "Return to left menu.");
\r
219 this.list項目リスト.Add(this.iGuitarReturnToMenu);
\r
220 this.iGuitarAutoPlay = new CItemToggle( "AutoPlay", CDTXMania.ConfigIni.bAutoPlay.Guitar,
\r
221 "ギターパートを自動で演奏します。",
\r
222 "To play the guitar part automatically.");
\r
223 this.list項目リスト.Add( this.iGuitarAutoPlay );
\r
224 this.iGuitarScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Guitar,
\r
225 "演奏時のギター譜面のスクロールの\n速度を指定します。\nx0.5 ~ x1000.0 までを指定可能です。",
\r
226 "To change the scroll speed for the\nguitar lanes.\nYou can set it from x0.5 to x1000.0.\n(ScrollSpeed=x0.5 means half speed)");
\r
227 this.list項目リスト.Add(this.iGuitarScrollSpeed);
\r
228 this.iGuitarSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Guitar,
\r
229 "ギターチップがヒットバー付近にくる\nまで表示されなくなります。",
\r
230 "Guitar chips are disappered until they\ncome near the hit bar, and suddenly\nappears.");
\r
231 this.list項目リスト.Add( this.iGuitarSudden );
\r
232 this.iGuitarHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Guitar,
\r
233 "ギターチップがヒットバー付近で表示\nされなくなります。",
\r
234 "Guitar chips are hidden by approaching\nto the hit bar. ");
\r
235 this.list項目リスト.Add( this.iGuitarHidden );
\r
236 this.iGuitarReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Guitar,
\r
237 "ギターチップが譜面の上から下に流\nれるようになります。",
\r
238 "The scroll way is reversed. Guitar chips\nflow from the top to the bottom.");
\r
239 this.list項目リスト.Add( this.iGuitarReverse );
\r
240 this.iGuitarPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Guitar,
\r
241 "ギターの判定文字の表示位置を指定\nします。\n P-A: レーン上\n P-B: COMBO の下\n OFF: 表示しない",
\r
242 "The position to show judgement mark.\n(Perfect, Great, ...)\n\n P-A: on the lanes.\n P-B: under the COMBO indication.\n OFF: no judgement mark.",
\r
243 new string[] { "P-A", "P-B", "OFF" } );
\r
244 this.list項目リスト.Add( this.iGuitarPosition );
\r
245 this.iGuitarRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eRandom.Guitar,
\r
246 "ギターのチップがランダムに降ってき\nます。\n Part: 小節・レーン単位で交換\n Super: チップ単位で交換\n Hyper: 全部完全に変更",
\r
247 "Guitar chips come randomly.\n\n Part: swapping lanes randomly for each\n measures.\n Super: swapping chip randomly\n Hyper: swapping randomly\n (number of lanes also changes)",
\r
248 new string[] { "OFF", "Part", "Super", "Hyper" } );
\r
249 this.list項目リスト.Add( this.iGuitarRandom );
\r
250 this.iGuitarLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Guitar,
\r
251 "ギターチップのないところでピッキン\nグしても BAD になりません。",
\r
252 "Even if you pick without any chips,\nit doesn't become BAD.");
\r
253 this.list項目リスト.Add( this.iGuitarLight );
\r
254 this.iGuitarLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Guitar,
\r
255 "ギターの RGB の並びが左右反転し\nます。(左利きモード)",
\r
256 "Lane order 'R-G-B' becomes 'B-G-R'\nfor lefty.");
\r
257 this.list項目リスト.Add( this.iGuitarLeft );
\r
258 // #23580 2011.1.3 yyagi
\r
259 this.iGuitarInputAdjustTimeMs= new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar,
\r
260 "ギターの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",
\r
261 "To adjust the guitar input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value." );
\r
262 this.list項目リスト.Add( this.iGuitarInputAdjustTimeMs );
\r
265 this.eメニュー種別 = Eメニュー種別.Guitar;
\r
267 public void tEnter押下()
\r
269 if( this.b要素値にフォーカス中 )
\r
271 this.b要素値にフォーカス中 = false;
\r
273 else if( this.list項目リスト[ this.n現在の選択項目 ].e種別 == CItemBase.E種別.整数 )
\r
275 this.b要素値にフォーカス中 = true;
\r
277 else if( this.b現在選択されている項目はReturnToMenuである )
\r
279 this.tConfigIniへ記録する();
\r
283 this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();
\r
284 if( this.list項目リスト[ this.n現在の選択項目 ] == this.iDrumsAutoPlayAll )
\r
286 this.t全部のドラムパッドのAutoを切り替える( this.iDrumsAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );
\r
290 public void t次に移動()
\r
292 if( this.b要素値にフォーカス中 )
\r
294 this.list項目リスト[ this.n現在の選択項目 ].t項目値を前へ移動();
\r
298 this.n目標のスクロールカウンタ += 100;
\r
301 public void t前に移動()
\r
303 if( this.b要素値にフォーカス中 )
\r
305 this.list項目リスト[ this.n現在の選択項目 ].t項目値を次へ移動();
\r
309 this.n目標のスクロールカウンタ -= 100;
\r
316 public override void On活性化()
\r
318 this.list項目リスト = new List<CItemBase>();
\r
319 this.eメニュー種別 = Eメニュー種別.Unknown;
\r
320 this.t項目リストの設定・Common();
\r
321 this.b要素値にフォーカス中 = false;
\r
322 this.n目標のスクロールカウンタ = 0;
\r
323 this.n現在のスクロールカウンタ = 0;
\r
324 this.nスクロール用タイマ値 = -1;
\r
325 this.ct三角矢印アニメ = new CCounter();
\r
328 public override void On非活性化()
\r
330 this.tConfigIniへ記録する();
\r
331 this.list項目リスト.Clear();
\r
332 this.ct三角矢印アニメ = null;
\r
335 public override void OnManagedリソースの作成()
\r
337 if( !base.b活性化してない )
\r
339 this.tx通常項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenOption itembox.png" ), false );
\r
340 this.txその他項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenOption itembox other.png" ), false );
\r
341 this.tx三角矢印 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenOption triangle arrow.png" ), false );
\r
342 base.OnManagedリソースの作成();
\r
345 public override void OnManagedリソースの解放()
\r
347 if( !base.b活性化してない )
\r
349 CDTXMania.tテクスチャの解放( ref this.tx通常項目行パネル );
\r
350 CDTXMania.tテクスチャの解放( ref this.txその他項目行パネル );
\r
351 CDTXMania.tテクスチャの解放( ref this.tx三角矢印 );
\r
352 base.OnManagedリソースの解放();
\r
355 public override int On進行描画()
\r
357 throw new InvalidOperationException( "t進行描画(bool)のほうを使用してください。" );
\r
359 public int t進行描画( bool b項目リスト側にフォーカスがある )
\r
361 if( !base.b活性化してない )
\r
363 if( base.b初めての進行描画 )
\r
365 this.nスクロール用タイマ値 = CDTXMania.Timer.n現在時刻;
\r
366 this.ct三角矢印アニメ.t開始( 0, 9, 50, CDTXMania.Timer );
\r
367 base.b初めての進行描画 = false;
\r
369 this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;
\r
370 long num = CDTXMania.Timer.n現在時刻;
\r
371 if( num < this.nスクロール用タイマ値 )
\r
373 this.nスクロール用タイマ値 = num;
\r
375 while( ( num - this.nスクロール用タイマ値 ) >= 2 )
\r
377 int num2 = Math.Abs( (int) ( this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ ) );
\r
383 else if( num2 <= 300 )
\r
387 else if( num2 <= 500 )
\r
395 if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )
\r
397 this.n現在のスクロールカウンタ += num3;
\r
398 if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )
\r
400 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
\r
403 else if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )
\r
405 this.n現在のスクロールカウンタ -= num3;
\r
406 if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )
\r
408 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
\r
411 if( this.n現在のスクロールカウンタ >= 100 )
\r
413 this.n現在の選択項目 = this.t次の項目( this.n現在の選択項目 );
\r
414 this.n現在のスクロールカウンタ -= 100;
\r
415 this.n目標のスクロールカウンタ -= 100;
\r
416 if( this.n目標のスクロールカウンタ == 0 )
\r
418 CDTXMania.stageオプション.t項目変更通知();
\r
421 else if( this.n現在のスクロールカウンタ <= -100 )
\r
423 this.n現在の選択項目 = this.t前の項目( this.n現在の選択項目 );
\r
424 this.n現在のスクロールカウンタ += 100;
\r
425 this.n目標のスクロールカウンタ += 100;
\r
426 if( this.n目標のスクロールカウンタ == 0 )
\r
428 CDTXMania.stageオプション.t項目変更通知();
\r
431 this.nスクロール用タイマ値 += 2;
\r
433 if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )
\r
435 this.ct三角矢印アニメ.t進行Loop();
\r
437 this.ptパネルの基本座標[ 4 ].X = this.b項目リスト側にフォーカスがある ? 0x114 : 0x12d;
\r
438 int nItem = this.n現在の選択項目;
\r
439 for( int i = 0; i < 4; i++ )
\r
441 nItem = this.t前の項目( nItem );
\r
443 for( int j = -4; j < 6; j++ )
\r
445 if( ( ( j == -4 ) && ( this.n現在のスクロールカウンタ > 0 ) ) || ( ( j == 5 ) && ( this.n現在のスクロールカウンタ < 0 ) ) )
\r
447 nItem = this.t次の項目( nItem );
\r
451 int num8 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( ( j + 4 ) + 1 ) % 10 ) : ( ( ( ( j + 4 ) - 1 ) + 10 ) % 10 );
\r
452 int x = this.ptパネルの基本座標[ index ].X + ( (int) ( ( this.ptパネルの基本座標[ num8 ].X - this.ptパネルの基本座標[ index ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );
\r
453 int y = this.ptパネルの基本座標[ index ].Y + ( (int) ( ( this.ptパネルの基本座標[ num8 ].Y - this.ptパネルの基本座標[ index ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );
\r
454 switch( this.list項目リスト[ nItem ].eパネル種別 )
\r
456 case CItemBase.Eパネル種別.通常:
\r
457 if( this.tx通常項目行パネル != null )
\r
459 this.tx通常項目行パネル.t2D描画( CDTXMania.app.Device, x, y );
\r
463 case CItemBase.Eパネル種別.その他:
\r
464 if( this.txその他項目行パネル != null )
\r
466 this.txその他項目行パネル.t2D描画( CDTXMania.app.Device, x, y );
\r
470 CDTXMania.stageオプション.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );
\r
471 switch( this.list項目リスト[ nItem ].e種別 )
\r
473 case CItemBase.E種別.ONorOFFトグル:
\r
474 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );
\r
477 case CItemBase.E種別.ONorOFFor不定スリーステート:
\r
478 switch( ( (CItemThreeState) this.list項目リスト[ nItem ] ).e現在の状態 )
\r
480 case CItemThreeState.E状態.ON:
\r
481 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, "ON" );
\r
484 case CItemThreeState.E状態.不定:
\r
485 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, "- -" );
\r
489 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, "OFF" );
\r
494 case CItemBase.E種別.整数:
\r
496 if( this.list項目リスト[ nItem ] != this.iCommonPlaySpeed )
\r
498 if( ( ( this.list項目リスト[ nItem ] == this.iDrumsScrollSpeed ) || ( this.list項目リスト[ nItem ] == this.iGuitarScrollSpeed ) ) || ( this.list項目リスト[ nItem ] == this.iBassScrollSpeed ) )
\r
500 float num15 = ( ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 + 1 ) * 0.5f;
\r
501 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, num15.ToString( "x0.0" ), ( j == 0 ) && this.b要素値にフォーカス中 );
\r
505 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( j == 0 ) && this.b要素値にフォーカス中 );
\r
509 double num14 = ( (double) ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 ) / 20.0;
\r
510 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, num14.ToString( "0.000" ), ( j == 0 ) && this.b要素値にフォーカス中 );
\r
513 case CItemBase.E種別.リスト:
\r
515 CItemList list = (CItemList) this.list項目リスト[ nItem ];
\r
516 CDTXMania.stageオプション.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );
\r
520 nItem = this.t次の項目( nItem );
\r
522 if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )
\r
527 if( !this.b要素値にフォーカス中 )
\r
530 num12 = 0xba - this.ct三角矢印アニメ.n現在の値;
\r
531 num13 = 0xfe + this.ct三角矢印アニメ.n現在の値;
\r
536 num12 = 0xc6 - this.ct三角矢印アニメ.n現在の値;
\r
537 num13 = 0xf2 + this.ct三角矢印アニメ.n現在の値;
\r
539 if( this.tx三角矢印 != null )
\r
541 this.tx三角矢印.t2D描画( CDTXMania.app.Device, num11, num12, new Rectangle( 0, 0, 0x20, 0x10 ) );
\r
542 this.tx三角矢印.t2D描画( CDTXMania.app.Device, num11, num13, new Rectangle( 0, 0x10, 0x20, 0x10 ) );
\r
552 #region [ private ]
\r
553 //-----------------
\r
554 private enum Eメニュー種別
\r
563 private bool b項目リスト側にフォーカスがある;
\r
564 private bool b要素値にフォーカス中;
\r
565 private CCounter ct三角矢印アニメ;
\r
566 private Eメニュー種別 eメニュー種別;
\r
567 private CItemToggle iBassAutoPlay;
\r
568 private CItemToggle iBassHidden;
\r
569 private CItemToggle iBassLeft;
\r
570 private CItemToggle iBassLight;
\r
571 private CItemList iBassPosition;
\r
572 private CItemList iBassRandom;
\r
573 private CItemBase iBassReturnToMenu;
\r
574 private CItemToggle iBassReverse;
\r
575 private CItemInteger iBassScrollSpeed;
\r
576 private CItemToggle iBassSudden;
\r
577 private CItemList iCommonDark;
\r
578 private CItemInteger iCommonPlaySpeed;
\r
579 private CItemBase iCommonReturnToMenu;
\r
580 private CItemThreeState iDrumsAutoPlayAll;
\r
581 private CItemToggle iDrumsBass;
\r
582 private CItemList iDrumsComboPosition;
\r
583 private CItemToggle iDrumsCymbalRide;
\r
584 private CItemToggle iDrumsFloorTom;
\r
585 private CItemToggle iDrumsHidden;
\r
586 private CItemToggle iDrumsHighTom;
\r
587 private CItemToggle iDrumsHiHat;
\r
588 private CItemToggle iDrumsLeftCymbal;
\r
589 private CItemToggle iDrumsLowTom;
\r
590 private CItemList iDrumsPosition;
\r
591 private CItemBase iDrumsReturnToMenu;
\r
592 private CItemToggle iDrumsReverse;
\r
593 private CItemInteger iDrumsScrollSpeed;
\r
594 private CItemToggle iDrumsSnare;
\r
595 private CItemToggle iDrumsSudden;
\r
596 private CItemToggle iDrumsTight;
\r
597 private CItemToggle iDrumsGraph; // #24074 2011.01.23 add ikanick
\r
598 private CItemToggle iGuitarAutoPlay;
\r
599 private CItemToggle iGuitarHidden;
\r
600 private CItemToggle iGuitarLeft;
\r
601 private CItemToggle iGuitarLight;
\r
602 private CItemList iGuitarPosition;
\r
603 private CItemList iGuitarRandom;
\r
604 private CItemBase iGuitarReturnToMenu;
\r
605 private CItemToggle iGuitarReverse;
\r
606 private CItemInteger iGuitarScrollSpeed;
\r
607 private CItemToggle iGuitarSudden;
\r
608 private CItemInteger iDrumsInputAdjustTimeMs; // #23580 2011.1.3 yyagi
\r
609 private CItemInteger iGuitarInputAdjustTimeMs; //
\r
610 private CItemInteger iBassInputAdjustTimeMs; //
\r
613 private List<CItemBase> list項目リスト;
\r
614 private long nスクロール用タイマ値;
\r
615 private int n現在のスクロールカウンタ;
\r
616 private int n目標のスクロールカウンタ;
\r
617 private Point[] ptパネルの基本座標 = new Point[] { new Point( 0x12d, 3 ), new Point( 0x12d, 0x35 ), new Point( 0x12d, 0x67 ), new Point( 0x12d, 0x99 ), new Point( 0x114, 0xcb ), new Point( 0x12d, 0xfd ), new Point( 0x12d, 0x12f ), new Point( 0x12d, 0x161 ), new Point( 0x12d, 0x193 ), new Point( 0x12d, 0x1c5 ) };
\r
618 private CTexture txその他項目行パネル;
\r
619 private CTexture tx三角矢印;
\r
620 private CTexture tx通常項目行パネル;
\r
622 private int t前の項目( int nItem )
\r
626 nItem = this.list項目リスト.Count - 1;
\r
630 private int t次の項目( int nItem )
\r
632 if( ++nItem >= this.list項目リスト.Count )
\r
638 private void t全部のドラムパッドのAutoを切り替える( bool bAutoON )
\r
640 this.iDrumsLeftCymbal.bON = this.iDrumsHiHat.bON = this.iDrumsSnare.bON = this.iDrumsBass.bON = this.iDrumsHighTom.bON = this.iDrumsLowTom.bON = this.iDrumsFloorTom.bON = this.iDrumsCymbalRide.bON = bAutoON;
\r
642 private void tConfigIniへ記録する()
\r
644 switch( this.eメニュー種別 )
\r
646 case Eメニュー種別.Common:
\r
647 this.tConfigIniへ記録する・Common();
\r
650 case Eメニュー種別.Drums:
\r
651 this.tConfigIniへ記録する・Drums();
\r
654 case Eメニュー種別.Guitar:
\r
655 this.tConfigIniへ記録する・Guitar();
\r
659 this.tConfigIniへ記録する・Bass();
\r
663 private void tConfigIniへ記録する・Bass()
\r
665 CDTXMania.ConfigIni.bAutoPlay.Bass = this.iBassAutoPlay.bON;
\r
666 CDTXMania.ConfigIni.n譜面スクロール速度.Bass = this.iBassScrollSpeed.n現在の値;
\r
667 CDTXMania.ConfigIni.bSudden.Bass = this.iBassSudden.bON;
\r
668 CDTXMania.ConfigIni.bHidden.Bass = this.iBassHidden.bON;
\r
669 CDTXMania.ConfigIni.bReverse.Bass = this.iBassReverse.bON;
\r
670 CDTXMania.ConfigIni.判定文字表示位置.Bass = (E判定文字表示位置) this.iBassPosition.n現在選択されている項目番号;
\r
671 CDTXMania.ConfigIni.eRandom.Bass = (Eランダムモード) this.iBassRandom.n現在選択されている項目番号;
\r
672 CDTXMania.ConfigIni.bLight.Bass = this.iBassLight.bON;
\r
673 CDTXMania.ConfigIni.bLeft.Bass = this.iBassLeft.bON;
\r
674 CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass = this.iBassInputAdjustTimeMs.n現在の値; // #23580 2011.1.3 yyagi
\r
676 private void tConfigIniへ記録する・Common()
\r
678 CDTXMania.ConfigIni.eDark = (Eダークモード) this.iCommonDark.n現在選択されている項目番号;
\r
679 CDTXMania.ConfigIni.n演奏速度 = this.iCommonPlaySpeed.n現在の値;
\r
681 private void tConfigIniへ記録する・Drums()
\r
683 CDTXMania.ConfigIni.bAutoPlay.LC = this.iDrumsLeftCymbal.bON;
\r
684 CDTXMania.ConfigIni.bAutoPlay.HH = this.iDrumsHiHat.bON;
\r
685 CDTXMania.ConfigIni.bAutoPlay.SD = this.iDrumsSnare.bON;
\r
686 CDTXMania.ConfigIni.bAutoPlay.BD = this.iDrumsBass.bON;
\r
687 CDTXMania.ConfigIni.bAutoPlay.HT = this.iDrumsHighTom.bON;
\r
688 CDTXMania.ConfigIni.bAutoPlay.LT = this.iDrumsLowTom.bON;
\r
689 CDTXMania.ConfigIni.bAutoPlay.FT = this.iDrumsFloorTom.bON;
\r
690 CDTXMania.ConfigIni.bAutoPlay.CY = this.iDrumsCymbalRide.bON;
\r
691 CDTXMania.ConfigIni.n譜面スクロール速度.Drums = this.iDrumsScrollSpeed.n現在の値;
\r
692 CDTXMania.ConfigIni.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) this.iDrumsComboPosition.n現在選択されている項目番号;
\r
693 CDTXMania.ConfigIni.bSudden.Drums = this.iDrumsSudden.bON;
\r
694 CDTXMania.ConfigIni.bHidden.Drums = this.iDrumsHidden.bON;
\r
695 CDTXMania.ConfigIni.bReverse.Drums = this.iDrumsReverse.bON;
\r
696 CDTXMania.ConfigIni.判定文字表示位置.Drums = (E判定文字表示位置) this.iDrumsPosition.n現在選択されている項目番号;
\r
697 CDTXMania.ConfigIni.bTight = this.iDrumsTight.bON;
\r
698 CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums = this.iDrumsInputAdjustTimeMs.n現在の値; // #23580 2011.1.3 yyagi
\r
699 CDTXMania.ConfigIni.bGraph.Drums = this.iDrumsGraph.bON;// #24074 2011.01.23 add ikanick
\r
701 private void tConfigIniへ記録する・Guitar()
\r
703 CDTXMania.ConfigIni.bAutoPlay.Guitar = this.iGuitarAutoPlay.bON;
\r
704 CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = this.iGuitarScrollSpeed.n現在の値;
\r
705 CDTXMania.ConfigIni.bSudden.Guitar = this.iGuitarSudden.bON;
\r
706 CDTXMania.ConfigIni.bHidden.Guitar = this.iGuitarHidden.bON;
\r
707 CDTXMania.ConfigIni.bReverse.Guitar = this.iGuitarReverse.bON;
\r
708 CDTXMania.ConfigIni.判定文字表示位置.Guitar = (E判定文字表示位置) this.iGuitarPosition.n現在選択されている項目番号;
\r
709 CDTXMania.ConfigIni.eRandom.Guitar = (Eランダムモード) this.iGuitarRandom.n現在選択されている項目番号;
\r
710 CDTXMania.ConfigIni.bLight.Guitar = this.iGuitarLight.bON;
\r
711 CDTXMania.ConfigIni.bLeft.Guitar = this.iGuitarLeft.bON;
\r
712 CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar = this.iGuitarInputAdjustTimeMs.n現在の値; // #23580 2011.1.3 yyagi
\r
714 //-----------------
\r