2 using System.Collections.Generic;
\r
3 using System.Diagnostics;
\r
5 using System.Drawing;
\r
12 internal class CActSelectQuickConfig : CActSelectPopupMenu
\r
14 readonly string QuickCfgTitle = "Quick Config";
\r
15 COptionStringList QTarget;
\r
16 COptionStringList QAuto;
\r
17 List<COptionBase> lci;
\r
22 public CActSelectQuickConfig()
\r
24 CActSelectQuickConfigMain();
\r
27 private void CActSelectQuickConfigMain()
\r
30 •Target: Drums/Guitar/Bass
\r
31 •Auto Mode: All ON/All OFF/CUSTOM
\r
36 •Hidden/Sudden: None/Hidden/Sudden/Both
\r
37 •AUTO Ghost: Perfect/Last Play/Hi Skill/Hi Score/Online
\r
38 •Target Ghost: None/Perfect/Last Play/Hi Skill/Hi Score/Online
\r
39 •Conf SET: SET-1/SET-2/SET-3
\r
43 QTarget = new COptionStringList("Drums");
\r
44 QTarget.Initialize("Target", "", new string[] { "Drums", "Guitar", "Bass" });
\r
45 QTarget.OnEnterDelegate = () =>
\r
47 EPart nCurrentTarget = 0;
\r
48 if (QTarget.Index == 0)
\r
50 nCurrentTarget = EPart.Drums;
\r
52 else if (QTarget.Index == 1)
\r
54 nCurrentTarget = EPart.Guitar;
\r
56 else if (QTarget.Index == 2)
\r
58 nCurrentTarget = EPart.Bass;
\r
60 lci = MakeListCItemBase(nCurrentTarget);
\r
61 // eInst = (E楽器パート) nCurrentTarget;
\r
62 // ここではeInstは変えない。メニューを開いたタイミングでのみeInstを使う
\r
63 Initialize(lci, true, QuickCfgTitle, n現在の選択行);
\r
66 lci = MakeListCItemBase(EPart.Drums);
\r
67 // ConfSet=0, nInst=Drums
\r
68 base.Initialize(lci, true, QuickCfgTitle, 2);
\r
71 private List<COptionBase> MakeListCItemBase(EPart nInst)
\r
73 List<COptionBase> ret = new List<COptionBase>();
\r
75 QAuto = new COptionStringList("Custom");
\r
76 if (nInst == EPart.Drums)
\r
78 string[] items_dr = new string[] { "All On", "Auto HH", "Auto BD", "Custom", "All Off" };
\r
79 int dr_init_idx = 3;
\r
80 if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllTrue(EPart.Drums))
\r
84 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoHH)
\r
88 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoBD)
\r
92 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllFalse(EPart.Drums))
\r
96 QAuto.Initialize("Auto", "", items_dr);
\r
97 QAuto.Index = dr_init_idx;
\r
98 QAuto.OnEnterDelegate = () =>
\r
100 if (QAuto.Value == "All On")
\r
102 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, EThreeState.On);
\r
104 else if (QAuto.Value == "All Off")
\r
106 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, EThreeState.Off);
\r
108 else if (QAuto.Value == "Auto HH")
\r
110 CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoHH();
\r
112 else if (QAuto.Value == "Auto BD")
\r
114 CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoBD();
\r
119 else if (nInst == EPart.Guitar || nInst == EPart.Bass)
\r
121 string[] items_gt = new string[] { "All On", "Auto Pick", "Auto Neck", "Custom", "All Off" };
\r
123 int gt_init_idx = 3;
\r
124 if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllTrue(nInst))
\r
128 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoPick(nInst))
\r
132 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoNeck(nInst))
\r
136 else if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllFalse(nInst))
\r
140 QAuto.Initialize("Auto", "", items_gt);
\r
141 QAuto.Index = gt_init_idx;
\r
142 QAuto.OnEnterDelegate = () =>
\r
144 if (QAuto.Value == "All On")
\r
146 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.On);
\r
148 else if (QAuto.Value == "All Off")
\r
150 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.Off);
\r
152 else if (QAuto.Value == "Auto Neck")
\r
154 CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoNeck(nInst);
\r
156 else if (QAuto.Value == "Auto Pick")
\r
158 CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoPick(nInst);
\r
160 else if (QAuto.Value == "All Off")
\r
162 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.Off);
\r
168 COptionLabel more = new COptionLabel("More", "");
\r
169 more.OnEnterDelegate = () =>
\r
171 bGotoDetailConfig = true;
\r
172 tDeativatePopupMenu();
\r
175 COptionLabel tret = new COptionLabel("Return", "");
\r
176 tret.OnEnterDelegate = () =>
\r
178 tDeativatePopupMenu();
\r
183 ret.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed[nInst]);
\r
184 ret.Add(CDTXMania.Instance.ConfigIni.eDark);
\r
185 ret.Add(CDTXMania.Instance.ConfigIni.nRisky);
\r
186 ret.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);
\r
187 ret.Add(CDTXMania.Instance.ConfigIni.eSudHidInv[nInst]);
\r
188 ret.Add(CDTXMania.Instance.ConfigIni.eAutoGhost[nInst]);
\r
189 ret.Add(CDTXMania.Instance.ConfigIni.eTargetGhost[nInst]);
\r
197 public override void tActivatePopupMenu(EPart einst)
\r
199 this.CActSelectQuickConfigMain();
\r
200 base.tActivatePopupMenu(einst);
\r
204 /// Auto Modeにフォーカスを合わせているときだけ、AUTOの設定状態を表示する。
\r
207 public override void t進行描画sub()
\r
209 if (lci[base.n現在の選択行] == QAuto)
\r
211 if (tx文字列パネル == null) // TagetとAuto Modeを全く変更せずにAuto Modeまで動かした場合限り、ここに来る
\r
216 if (this.txパネル本体 != null)
\r
218 this.txパネル本体.t2D描画(CDTXMania.Instance.Device, 213 * Scale.X, 167 * Scale.Y);
\r
220 if (this.tx文字列パネル != null)
\r
222 int x = (QTarget.Index == 0) ? 230 : 260;
\r
223 this.tx文字列パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, 190 * Scale.Y);
\r
230 /// DrumsのAUTOパラメータを一覧表示するパネルを作成する
\r
232 public void MakeAutoPanel()
\r
234 Bitmap image = new Bitmap((int)(300 * Scale.X), (int)(130 * Scale.Y));
\r
235 Graphics graphics = Graphics.FromImage(image);
\r
237 string header = "", s = "";
\r
238 switch (QTarget.Index)
\r
241 header = "LHSBHLFC";
\r
242 s = GetAutoParameters(EPart.Drums);
\r
246 s = GetAutoParameters(EPart.Guitar);
\r
250 s = GetAutoParameters(EPart.Bass);
\r
255 for (int i = 0; i < header.Length; i++)
\r
257 graphics.DrawString(header[i].ToString(), this.ft表示用フォント, Brushes.White, (float)i * 24 * Scale.X, (float)0f);
\r
258 graphics.DrawString(s[i].ToString(), this.ft表示用フォント, Brushes.White, (float)i * 24 * Scale.X, (float)24f * Scale.Y);
\r
260 graphics.Dispose();
\r
264 if (this.tx文字列パネル != null)
\r
266 this.tx文字列パネル.Dispose();
\r
268 this.tx文字列パネル = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);
\r
269 this.tx文字列パネル.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);
\r
272 catch (CTextureCreateFailedException)
\r
274 Trace.TraceError("演奏履歴文字列テクスチャの作成に失敗しました。");
\r
275 this.tx文字列パネル = null;
\r
280 /// 簡易CONFIG内のAUTO状態を、文字列で返す。
\r
282 /// <param name="target">対象楽器</param>
\r
283 /// <returns>AutoならA,さもなくば_。この文字が複数並んだ文字列。</returns>
\r
284 private string GetAutoParameters(EPart target)
\r
291 switch (QAuto.Index)
\r
293 case 0: // All Auto
\r
303 for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; i++)
\r
305 s += (CDTXMania.Instance.ConfigIni.bAutoPlay[i]) ? "A" : "_";
\r
312 throw new ArgumentOutOfRangeException();
\r
316 #region [ Guitar / Bass ]
\r
319 switch (QAuto.Index)
\r
321 case 0: // All Auto
\r
324 case 1: // Auto Neck
\r
327 case 2: // Auto Pick
\r
331 EPad from = (target == EPart.Guitar) ? EPad.GuitarPadMin : EPad.BassPadMin;
\r
332 EPad to = (target == EPart.Guitar) ? EPad.GuitarPadMax : EPad.BassPadMax;
\r
333 for (EPad i = from; i < to; i++)
\r
335 s += (CDTXMania.Instance.ConfigIni.bAutoPlay[i]) ? "A" : "_";
\r
342 throw new ArgumentOutOfRangeException();
\r
355 public override void On活性化()
\r
359 this.ft表示用フォント = new Font("Arial", 26f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);
\r
361 this.bGotoDetailConfig = false;
\r
365 public override void On非活性化()
\r
369 if (this.ft表示用フォント != null)
\r
371 this.ft表示用フォント.Dispose();
\r
372 this.ft表示用フォント = null;
\r
378 public override void OnManagedリソースの作成()
\r
382 string pathパネル本体 = CSkin.Path(@"Graphics\ScreenSelect popup auto settings.png");
\r
383 if (File.Exists(pathパネル本体))
\r
385 this.txパネル本体 = TextureFactory.tテクスチャの生成(pathパネル本体, true);
\r
387 base.OnManagedリソースの作成();
\r
391 public override void OnManagedリソースの解放()
\r
395 TextureFactory.tテクスチャの解放(ref this.txパネル本体);
\r
396 TextureFactory.tテクスチャの解放(ref this.tx文字列パネル);
\r
397 base.OnManagedリソースの解放();
\r