+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Diagnostics;\r
-using System.Text;\r
-using System.Drawing;\r
-using System.Threading;\r
-using SharpDX;\r
-using FDK;\r
-\r
-using Color = System.Drawing.Color;\r
-using Point = System.Drawing.Point;\r
-using Rectangle = System.Drawing.Rectangle;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CActConfigList : CActivity\r
- {\r
- STDGBSValue<COptionLabel> ReturnToMenu;\r
- STDGBSValue<COptionLabel> KeyAssignMenu;\r
- STDGBSValue<COptionLabel> DisplayMenu;\r
- STDGBSValue<COptionLabel> EDrumsMenu;\r
- COptionLabel SoundMenu;\r
- COptionLabel HitRangeMenu;\r
- COptionStringList skins;\r
-\r
- bool b項目リスト側にフォーカスがある;\r
- bool b要素値にフォーカス中;\r
- CCounter ct三角矢印アニメ;\r
- Eメニュー種別 eメニュー種別;\r
- // #33689 2014.6.17 yyagi\r
- bool InitialUseOSTimer;\r
- bool InitialWASAPIEventDriven;\r
- ESoundDeviceTypeForConfig InitialSystemSoundType;\r
- int InitialWASAPIBufferSizeMs;\r
- int InitialASIODevice;\r
- bool InitialForceHighPower;\r
- List<COptionBase> list項目リスト;\r
- long nスクロール用タイマ値;\r
- int n現在のスクロールカウンタ;\r
- int n目標のスクロールカウンタ;\r
- Point[] ptパネルの基本座標 = new Point[]\r
- {\r
- new Point(0x12d, 3), new Point(0x12d, 0x35), new Point(0x12d, 0x67),\r
- new Point(0x12d, 0x99), new Point(0x114, 0xcb), new Point(0x12d, 0xfd),\r
- new Point(0x12d, 0x12f), new Point(0x12d, 0x161), new Point(0x12d, 0x193),\r
- new Point(0x12d, 0x1c5)\r
- };\r
- CTextureAf txその他項目行パネル;\r
- CTexture tx三角矢印;\r
- CTextureAf tx通常項目行パネル;\r
- // #28195 2012.5.2 yyagi\r
- CTexture txSkinSample;\r
- string[] skinSubFolders;\r
- string[] skinNames;\r
- string skinInitial;\r
- CPrivateFastFont prvFont;\r
- private struct stMenuItemRight\r
- {\r
- public CTexture txMenuItemRight;\r
- public int nParam;\r
- public string strParam;\r
- public CTexture txParam;\r
- public CTexture txParamColored;\r
- }\r
- stMenuItemRight[] listMenu;\r
-\r
- /// <summary>\r
- /// #32059 2013.9.17 yyagi\r
- /// </summary>\r
- public bool bIsFocusingParameter\r
- {\r
- get\r
- {\r
- return b要素値にフォーカス中;\r
- }\r
- }\r
-\r
- public bool b現在選択されている項目はReturnToMenuである\r
- {\r
- get\r
- {\r
- COptionBase sel = this.list項目リスト[this.n現在の選択項目];\r
- bool ret = false;\r
- for (EPart i = EPart.Drums; i <= EPart.System; ++i)\r
- {\r
- if (sel == ReturnToMenu[i])\r
- {\r
- ret = true;\r
- }\r
- }\r
- return ret;\r
- }\r
- }\r
-\r
- public bool b楽器またはシステム用メニューである\r
- {\r
- get\r
- {\r
- return eメニュー種別 == Eメニュー種別.Bass || eメニュー種別 == Eメニュー種別.Drums || eメニュー種別 == Eメニュー種別.Guitar || eメニュー種別 == Eメニュー種別.System;\r
- }\r
- }\r
-\r
- public COptionBase ib現在の選択項目\r
- {\r
- get\r
- {\r
- return this.list項目リスト[this.n現在の選択項目];\r
- }\r
- }\r
-\r
- public int n現在の選択項目;\r
-\r
- /// <summary>\r
- /// ESC押下時の右メニュー描画\r
- /// </summary>\r
- public void tEsc押下()\r
- {\r
- if (this.b要素値にフォーカス中)\r
- {\r
- // #32059 2013.9.17 add yyagi\r
- this.b要素値にフォーカス中 = false;\r
- }\r
-\r
- if (this.eメニュー種別 == Eメニュー種別.KeyAssignSystem)\r
- {\r
- t項目リストの設定(Eメニュー種別.System);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.KeyAssignDrums)\r
- {\r
- t項目リストの設定(Eメニュー種別.Drums);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar)\r
- {\r
- t項目リストの設定(Eメニュー種別.Guitar);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.KeyAssignBass)\r
- {\r
- t項目リストの設定(Eメニュー種別.Bass);\r
- }\r
- if (this.eメニュー種別 == Eメニュー種別.DisplaySystem)\r
- {\r
- t項目リストの設定(Eメニュー種別.System);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.DisplayDrums)\r
- {\r
- t項目リストの設定(Eメニュー種別.Drums);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.DisplayGuitar)\r
- {\r
- t項目リストの設定(Eメニュー種別.Guitar);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.DisplayBass)\r
- {\r
- t項目リストの設定(Eメニュー種別.Bass);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.EDrumsSettings)\r
- {\r
- t項目リストの設定(Eメニュー種別.Drums);\r
- }\r
- else if (this.eメニュー種別 == Eメニュー種別.HitRangeSettings)\r
- {\r
- t項目リストの設定(Eメニュー種別.System);\r
- }\r
- else if ( this.eメニュー種別 == Eメニュー種別.SoundSettings)\r
- {\r
- t項目リストの設定(Eメニュー種別.System);\r
- }\r
- }\r
-\r
- public bool tEnter押下()\r
- {\r
- bool ret = false;\r
- CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-\r
- if (this.b要素値にフォーカス中)\r
- {\r
- this.b要素値にフォーカス中 = false;\r
- }\r
- else if (this.list項目リスト[this.n現在の選択項目] is COptionInteger)\r
- {\r
- this.b要素値にフォーカス中 = true;\r
- }\r
- else if (this.list項目リスト[this.n現在の選択項目] is IOptionList || this.list項目リスト[this.n現在の選択項目] is COptionBool)\r
- {\r
- this.list項目リスト[this.n現在の選択項目].OnNext();\r
- }\r
-\r
- // #27029 2012.1.5 from\r
- if (\r
- CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group &&\r
- (\r
- (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHHGroup ||\r
- this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH)))\r
- {\r
- // 変更禁止(何もしない)\r
- }\r
- else\r
- {\r
- if (b現在選択されている項目はReturnToMenuである && b楽器またはシステム用メニューである)\r
- {\r
- ret = true;\r
- }\r
- this.list項目リスト[this.n現在の選択項目].OnEnter();\r
- }\r
- return ret;\r
- }\r
-\r
- private void tGenerateSkinSample()\r
- {\r
- string path = skinSubFolders[skins.Index];\r
- path = System.IO.Path.Combine(path, @"Graphics\ScreenTitle background.jpg");\r
- using (Bitmap bmSrc = new Bitmap(path))\r
- {\r
- using (Bitmap bmDest = new Bitmap(bmSrc.Width / 4, bmSrc.Height / 4))\r
- {\r
- using (Graphics g = Graphics.FromImage(bmDest))\r
- {\r
- g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
- g.DrawImage(bmSrc, new Rectangle(0, 0, bmSrc.Width / 4, bmSrc.Height / 4),\r
- 0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel);\r
- TextureFactory.tテクスチャの解放(ref txSkinSample);\r
- txSkinSample = TextureFactory.tテクスチャの生成(bmDest, false);\r
- }\r
- }\r
- }\r
- }\r
-\r
- // #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]\r
- public void t項目リストの設定_Exit()\r
- {\r
- CDTXMania.Instance.SaveConfig();\r
- this.eメニュー種別 = Eメニュー種別.Unknown;\r
- }\r
-\r
- public void t項目リストの設定(Eメニュー種別 eMenu)\r
- {\r
- this.list項目リスト.Clear();\r
-\r
- Func<EPad, string, string, COptionString> PadNotifier = (pad, lbl, expl) =>\r
- {\r
- COptionString opt = new COptionString("");\r
- opt.Initialize(lbl, expl);\r
- opt.OnEnterDelegate = () =>\r
- {\r
- CDTXMania.Instance.stageコンフィグ.tパッド選択通知(pad);\r
- };\r
- return opt;\r
- };\r
-\r
- CResources cr = CDTXMania.Instance.Resources;\r
-\r
- if (eMenu == Eメニュー種別.DisplaySystem)\r
- {\r
- list項目リスト.Add(ReturnToMenu.System);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullScreen);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGA);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAVI);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullAVI);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bVSyncWait);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nBGAlpha);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nShowLagType);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eJudgePriority);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDebugInfo);\r
- }\r
- else if (eMenu == Eメニュー種別.DisplayDrums)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.DrOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LC);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HH);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.SD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.FT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.CY);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Drums);\r
- }\r
- else if (eMenu == Eメニュー種別.DisplayGuitar)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtR);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtG);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtB);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Guitar);\r
- }\r
- else if (eMenu == Eメニュー種別.DisplayBass)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.Both);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.GBOnly);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsR);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsG);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsB);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Bass);\r
- }\r
- else if (eMenu == Eメニュー種別.EDrumsSettings)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.LC);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.HH);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.SD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.BD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.HT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.LT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.FT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.CY);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.RD);\r
- }\r
- else if (eMenu == Eメニュー種別.HitRangeSettings)\r
- {\r
- list項目リスト.Add(ReturnToMenu.System);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Perfect);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Great);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Good);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Poor);\r
- }\r
- else if (eMenu == Eメニュー種別.KeyAssignSystem)\r
- {\r
- list項目リスト.Add(ReturnToMenu.System);\r
- list項目リスト.Add(PadNotifier(EPad.Capture, cr.Label("strCfgKeyAssignCapture"), cr.Explanation("strCfgKeyAssignCapture") ));\r
- }\r
- else if (eMenu == Eメニュー種別.KeyAssignDrums)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Drums);\r
- list項目リスト.Add(PadNotifier(EPad.LC, cr.Label("strCfgKeyAssignLC"), cr.Explanation("strCfgKeyAssignLC") ));\r
- list項目リスト.Add(PadNotifier(EPad.HH, cr.Label("strCfgKeyAssignHH"), cr.Explanation("strCfgKeyAssignHH") ));\r
- list項目リスト.Add(PadNotifier(EPad.HHO,cr.Label("strCfgKeyAssignHHO"), cr.Explanation("strCfgKeyAssignHHO") ));\r
- list項目リスト.Add(PadNotifier(EPad.SD, cr.Label("strCfgKeyAssignSD"), cr.Explanation("strCfgKeyAssignSD") ));\r
- list項目リスト.Add(PadNotifier(EPad.BD, cr.Label("strCfgKeyAssignBD"), cr.Explanation("strCfgKeyAssignBD") ));\r
- list項目リスト.Add(PadNotifier(EPad.HT, cr.Label("strCfgKeyAssignHT"), cr.Explanation("strCfgKeyAssignHT") ));\r
- list項目リスト.Add(PadNotifier(EPad.LT, cr.Label("strCfgKeyAssignLT"), cr.Explanation("strCfgKeyAssignLT") ));\r
- list項目リスト.Add(PadNotifier(EPad.FT, cr.Label("strCfgKeyAssignFT"), cr.Explanation("strCfgKeyAssignFT") ));\r
- list項目リスト.Add(PadNotifier(EPad.CY, cr.Label("strCfgKeyAssignCY"), cr.Explanation("strCfgKeyAssignCY") ));\r
- list項目リスト.Add(PadNotifier(EPad.RD, cr.Label("strCfgKeyAssignRD"), cr.Explanation("strCfgKeyAssignRD") ));\r
- list項目リスト.Add(PadNotifier(EPad.HP, cr.Label("strCfgKeyAssignHP"), cr.Explanation("strCfgKeyAssignHP") ));\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHHGroup);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eFTGroup);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eCYGroup);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eBDGroup);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bCymbalFree);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);\r
- }\r
- else if (eMenu == Eメニュー種別.KeyAssignGuitar)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Guitar);\r
- list項目リスト.Add(PadNotifier(EPad.GtR, cr.Label("strCfgKeyAssignGtR"), cr.Explanation("strCfgKeyAssignGtR") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtG, cr.Label("strCfgKeyAssignGtG"), cr.Explanation("strCfgKeyAssignGtG") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtB, cr.Label("strCfgKeyAssignGtB"), cr.Explanation("strCfgKeyAssignGtB") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtPick, cr.Label("strCfgKeyAssignGtPick"), cr.Explanation("strCfgKeyAssignGtPick") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtWail, cr.Label("strCfgKeyAssignGtWailing"), cr.Explanation("strCfgKeyAssignGtWailing") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtDecide, cr.Label("strCfgKeyAssignGtDecide"), cr.Explanation("strCfgKeyAssignGtDecide") ));\r
- list項目リスト.Add(PadNotifier(EPad.GtCancel, cr.Label("strCfgKeyAssignGtCancel"), cr.Explanation("strCfgKeyAssignGtCancel") ));\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar);\r
- }\r
- else if (eMenu == Eメニュー種別.KeyAssignBass)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Bass);\r
- list項目リスト.Add(PadNotifier(EPad.BsR, cr.Label("strCfgKeyAssignBsR"), cr.Explanation("strCfgKeyAssignBsR") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsG, cr.Label("strCfgKeyAssignBsG"), cr.Explanation("strCfgKeyAssignBsG") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsB, cr.Label("strCfgKeyAssignBsB"), cr.Explanation("strCfgKeyAssignBsB") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsPick, cr.Label("strCfgKeyAssignBsPick"), cr.Explanation("strCfgKeyAssignBsPick") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsWail, cr.Label("strCfgKeyAssignBsWailing"), cr.Explanation("strCfgKeyAssignBsWailing") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsDecide, cr.Label("strCfgKeyAssignBsDecide"), cr.Explanation("strCfgKeyAssignBsDecide") ));\r
- list項目リスト.Add(PadNotifier(EPad.BsCancel, cr.Label("strCfgKeyAssignBsCancel"), cr.Explanation("strCfgKeyAssignBsCancel") ));\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);\r
- }\r
- else if (eMenu == Eメニュー種別.System)\r
- {\r
- list項目リスト.Add(ReturnToMenu.System);\r
- COptionStringList langlist = new COptionStringList("default");\r
- langlist.Initialize( "strCfgLanguage", cr.LanguageDispList );\r
- langlist.Index = CDTXMania.Instance.Resources.LanguageCodeIndex;\r
- langlist.OnEnterDelegate = () =>\r
- {\r
- int index = langlist.Index;\r
- CDTXMania.Instance.ConfigIni.strLanguage.Value = CDTXMania.Instance.Resources.Language = CDTXMania.Instance.Resources.LanguageCodeList[ index ];\r
- \r
- }; \r
- list項目リスト.Add( langlist );\r
- \r
- COptionString enumsongs = new COptionString("");\r
- enumsongs.Initialize( "strCfgSysEnumSongs" );\r
- list項目リスト.Add(enumsongs);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDark);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nRisky);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eActiveInst);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSleepPerFrameMs);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSleepUnfocusMs);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bForceHighPowerPlan);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStageFailed);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bRandSubBox);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreSoundWeightMs);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreImageWeightMs);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDamageLevel);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bScoreIni);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nChipVolume);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nAutoVolume);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStoicMode);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bIsAutoResultCapture);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBufferedInput);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLog);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadSoundSpeed);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadDTXDetail);// #36177 2016.7.30 ikanick\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);\r
- list項目リスト.Add(skins);\r
- list項目リスト.Add(SoundMenu);\r
- list項目リスト.Add(DisplayMenu.System);\r
- list項目リスト.Add(HitRangeMenu);\r
- list項目リスト.Add(KeyAssignMenu.System);\r
- enumsongs.OnEnterDelegate = () =>\r
- {\r
- if (CDTXMania.Instance.EnumSongs.IsEnumerating)\r
- {\r
- // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );\r
- CDTXMania.Instance.EnumSongs.Abort();\r
- CDTXMania.Instance.actEnumSongs.On非活性化();\r
- }\r
-\r
- CDTXMania.Instance.EnumSongs.StartEnumFromDisk();\r
- CDTXMania.Instance.EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);\r
- CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 = true;\r
- CDTXMania.Instance.actEnumSongs.On活性化();\r
- };\r
- }\r
- else if ( eMenu == Eメニュー種別.SoundSettings )\r
- {\r
- list項目リスト.Add( ReturnToMenu.System );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bTimeStretch );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bWaveAdjust );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bBGMPlay );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bAudience );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nChipVolume );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nAutoVolume );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nSoundDeviceType );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.strASIODevice );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.bUseOSTimer );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nMasterVolume );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nPolyphonicSounds );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.eClickType );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nClickHighVolume );\r
- list項目リスト.Add( CDTXMania.Instance.ConfigIni.nClickLowVolume );\r
- }\r
- else if ( eMenu == Eメニュー種別.Drums )\r
- {\r
- list項目リスト.Add(ReturnToMenu.Drums);\r
- COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
- AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
- AllAuto.OnEnterDelegate = () =>\r
- {\r
- if ( AllAuto.Value == EThreeState.X )\r
- {\r
- AllAuto.OnNext();\r
- }\r
- CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Drums, AllAuto );\r
- };\r
- list項目リスト.Add(AllAuto);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LC);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HH);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HHO);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.SD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.FT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.CY);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.RD);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTight);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFillin);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDrumsHitSound);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
- list項目リスト.Add(DisplayMenu.Drums);\r
- list項目リスト.Add(EDrumsMenu.Drums);\r
- list項目リスト.Add(KeyAssignMenu.Drums);\r
- }\r
- else if (eMenu == Eメニュー種別.Guitar)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Guitar);\r
- COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
- AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
- AllAuto.OnEnterDelegate = () =>\r
- {\r
- if ( AllAuto.Value == EThreeState.X )\r
- {\r
- AllAuto.OnNext();\r
- }\r
- CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Guitar, AllAuto );\r
- };\r
- list項目リスト.Add(AllAuto);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtR);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtG);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtB);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Guitar);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar);\r
- list項目リスト.Add(DisplayMenu.Guitar);\r
- list項目リスト.Add(KeyAssignMenu.Guitar);\r
- }\r
- else if (eMenu == Eメニュー種別.Bass)\r
- {\r
- list項目リスト.Add(ReturnToMenu.Bass);\r
- COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
- AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
- AllAuto.OnEnterDelegate = () =>\r
- {\r
- if ( AllAuto.Value == EThreeState.X )\r
- {\r
- AllAuto.OnNext();\r
- }\r
- CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Bass, AllAuto );\r
- };\r
- list項目リスト.Add(AllAuto);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsR);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsG);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsB);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Bass);\r
- list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass);\r
- list項目リスト.Add(DisplayMenu.Bass);\r
- list項目リスト.Add(KeyAssignMenu.Bass);\r
- }\r
- OnListMenuの初期化();\r
- n現在の選択項目 = 0;\r
- eメニュー種別 = eMenu;\r
- }\r
-\r
- public void OnNext()\r
- {\r
- CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
- if (b要素値にフォーカス中)\r
- {\r
- list項目リスト[n現在の選択項目].OnPrevious();\r
- t要素値を上下に変更中の処理();\r
- }\r
- else\r
- {\r
- n目標のスクロールカウンタ += 100;\r
- }\r
- }\r
-\r
- public void OnPrevious()\r
- {\r
- CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
- if (b要素値にフォーカス中)\r
- {\r
- list項目リスト[n現在の選択項目].OnNext();\r
- t要素値を上下に変更中の処理();\r
- }\r
- else\r
- {\r
- n目標のスクロールカウンタ -= 100;\r
- }\r
- }\r
-\r
- private void t要素値を上下に変更中の処理()\r
- {\r
- if (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.nMasterVolume)\r
- {\r
- // #33700 2014.4.26 yyagi\r
- CDTXMania.Instance.Sound管理.nMasterVolume = CDTXMania.Instance.ConfigIni.nMasterVolume;\r
- }\r
- }\r
-\r
- public override void On活性化()\r
- {\r
- if (b活性化してない)\r
- {\r
- this.list項目リスト = new List<COptionBase>();\r
- this.eメニュー種別 = Eメニュー種別.Unknown;\r
- this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));\r
- this.b要素値にフォーカス中 = false;\r
- this.n目標のスクロールカウンタ = 0;\r
- this.n現在のスクロールカウンタ = 0;\r
- this.nスクロール用タイマ値 = -1;\r
- this.ct三角矢印アニメ = new CCounter();\r
-\r
-\r
- DisplayMenu = new STDGBSValue<COptionLabel>();\r
- KeyAssignMenu = new STDGBSValue<COptionLabel>();\r
- EDrumsMenu = new STDGBSValue<COptionLabel>();\r
- ReturnToMenu = new STDGBSValue<COptionLabel>();\r
-\r
- CResources cr = CDTXMania.Instance.Resources;\r
- for ( EPart i = EPart.Drums; i <= EPart.System; ++i )\r
- {\r
- DisplayMenu[i] = new COptionLabel( "strCfgDisplayOption" );\r
- KeyAssignMenu[i] = new COptionLabel( "strCfgInputOption" );\r
- ReturnToMenu[i] = new COptionLabel( "strCfgReturnToMenu" );\r
- }\r
-\r
- EDrumsMenu[ EPart.Drums ] = new COptionLabel( "strCfgEDrumsOption" );\r
- HitRangeMenu = new COptionLabel( "strCfgHitRangeOption" );\r
- SoundMenu = new COptionLabel( "strCfgSoundOption" );\r
-\r
- DisplayMenu.Drums.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.DisplayDrums);\r
- };\r
- DisplayMenu.Guitar.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.DisplayGuitar);\r
- };\r
- DisplayMenu.Bass.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.DisplayBass);\r
- };\r
- DisplayMenu.System.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.DisplaySystem);\r
- };\r
- KeyAssignMenu.Drums.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.KeyAssignDrums);\r
- };\r
- KeyAssignMenu.Guitar.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.KeyAssignGuitar);\r
- };\r
- KeyAssignMenu.Bass.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.KeyAssignBass);\r
- };\r
- KeyAssignMenu.System.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.KeyAssignSystem);\r
- };\r
-\r
- ReturnToMenu.Drums.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.Drums);\r
- };\r
- ReturnToMenu.Guitar.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.Guitar);\r
- };\r
- ReturnToMenu.Bass.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.Bass);\r
- };\r
- ReturnToMenu.System.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.System);\r
- };\r
- EDrumsMenu.Drums.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定(Eメニュー種別.EDrumsSettings);\r
- };\r
- HitRangeMenu.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定( Eメニュー種別.HitRangeSettings );\r
- };\r
- SoundMenu.OnEnterDelegate = () =>\r
- {\r
- t項目リストの設定( Eメニュー種別.SoundSettings );\r
- };\r
-\r
- #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
- int ns = (CDTXMania.Instance.Skin.strSystemSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strSystemSkinSubfolders.Length;\r
- int nb = (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strBoxDefSkinSubfolders.Length;\r
-\r
- skinSubFolders = new string[ns + nb];\r
- skinInitial = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);\r
- int initIdx = 0;\r
- for (int i = 0; i < ns; i++)\r
- {\r
- skinSubFolders[i] = CDTXMania.Instance.Skin.strSystemSkinSubfolders[i];\r
- }\r
- for (int i = 0; i < nb; i++)\r
- {\r
- skinSubFolders[ns + i] = CDTXMania.Instance.Skin.strBoxDefSkinSubfolders[i];\r
- }\r
- Array.Sort(skinSubFolders);\r
- skinNames = CSkin.GetSkinName(skinSubFolders);\r
- initIdx = Array.BinarySearch(skinSubFolders, skinInitial);\r
- if (initIdx < 0)\r
- {\r
- initIdx = 0;\r
- }\r
- skins = new COptionStringList(skinNames[initIdx]);\r
- skins.Initialize("Skin", Properties.Resources.strCfgSysSkin, skinNames);\r
-\r
- skins.OnEnterDelegate = () =>\r
- {\r
- CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(skinSubFolders[skins.Index], true);\r
- CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath.Value = skinSubFolders[skins.Index];\r
- tGenerateSkinSample();\r
- };\r
- #endregion\r
-\r
- // CONFIG脱出時にこの値から変更されているようなら\r
- // サウンドデバイスを再構築する\r
- this.InitialSystemSoundType = CDTXMania.Instance.ConfigIni.nSoundDeviceType;\r
- this.InitialWASAPIBufferSizeMs = CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs;\r
- this.InitialASIODevice = CDTXMania.Instance.ConfigIni.strASIODevice.Index;\r
- this.InitialUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
- this.InitialWASAPIEventDriven = CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI;\r
-\r
- this.InitialForceHighPower = CDTXMania.Instance.ConfigIni.bForceHighPowerPlan;\r
-\r
- // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、\r
- this.t項目リストの設定(Eメニュー種別.Bass);\r
- // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。\r
- this.t項目リストの設定(Eメニュー種別.Guitar);\r
- this.t項目リストの設定(Eメニュー種別.Drums);\r
- // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。\r
- this.t項目リストの設定(Eメニュー種別.System);\r
-\r
- base.On活性化();\r
- }\r
- }\r
-\r
- public override void On非活性化()\r
- {\r
- if (b活性化してる)\r
- {\r
- CDTXMania.Instance.SaveConfig();\r
- this.list項目リスト.Clear();\r
- this.ct三角矢印アニメ = null;\r
-\r
- OnListMenuの解放();\r
- prvFont.Dispose();\r
-\r
- base.On非活性化();\r
- #region [ Skin変更 ]\r
- if (CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) != this.skinInitial)\r
- {\r
- CDTXMania.Instance.stageChangeSkin.tChangeSkinMain(); // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
- }\r
- #endregion\r
-\r
- // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
- // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。\r
- #region [ サウンドデバイス変更 ]\r
- if (InitialSystemSoundType != CDTXMania.Instance.ConfigIni.nSoundDeviceType ||\r
- InitialWASAPIBufferSizeMs != CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs ||\r
- InitialASIODevice != CDTXMania.Instance.ConfigIni.strASIODevice.Index ||\r
- InitialUseOSTimer != CDTXMania.Instance.ConfigIni.bUseOSTimer ||\r
- InitialWASAPIEventDriven != CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI )\r
- {\r
- ESoundDeviceType soundDeviceType;\r
- switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType.Value)\r
- {\r
- case ESoundDeviceTypeForConfig.DSound:\r
- soundDeviceType = ESoundDeviceType.DirectSound;\r
- break;\r
- case ESoundDeviceTypeForConfig.ASIO:\r
- soundDeviceType = ESoundDeviceType.ASIO;\r
- break;\r
- case ESoundDeviceTypeForConfig.WASAPI_Exclusive:\r
- soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
- break;\r
- case ESoundDeviceTypeForConfig.WASAPI_Shared:\r
- soundDeviceType = ESoundDeviceType.SharedWASAPI;\r
- break;\r
- default:\r
- soundDeviceType = ESoundDeviceType.Unknown;\r
- break;\r
- }\r
-\r
- CDTXMania.Instance.Sound管理.t初期化(\r
- soundDeviceType,\r
- CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
- CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI,\r
- 0,\r
- CDTXMania.Instance.ConfigIni.strASIODevice.Index,\r
- CDTXMania.Instance.ConfigIni.bUseOSTimer);\r
- CDTXMania.Instance.ShowWindowTitleWithSoundType();\r
- }\r
- #endregion\r
-\r
- #region [ メトロノーム音 音量設定 ]\r
- CDTXMania.Instance.Skin.soundClickHigh.n音量 = CDTXMania.Instance.ConfigIni.nClickHighVolume;\r
- CDTXMania.Instance.Skin.soundClickLow.n音量 = CDTXMania.Instance.ConfigIni.nClickLowVolume;\r
- #endregion\r
-\r
- #region [ サウンドのタイムストレッチモード変更 ]\r
-\r
- FDK.CSound管理.bIsTimeStretch = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
-\r
- #endregion\r
- #region [ 電源プラン変更 ]\r
- if ( CDTXMania.Instance.ConfigIni.bForceHighPowerPlan )\r
- {\r
- CPowerPlan.ChangeHighPerformance();\r
- }\r
- else\r
- {\r
- CPowerPlan.RestoreCurrentPowerPlan();\r
- }\r
- #endregion\r
- }\r
- }\r
-\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (b活性化してる)\r
- {\r
- this.tx通常項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox.png"), false);\r
- this.txその他項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox other.png"), false);\r
- this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);\r
- // スキン選択時に動的に設定するため、ここでは初期化しない\r
- this.txSkinSample = null;\r
- OnListMenuの初期化();\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
-\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (b活性化してる)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txSkinSample);\r
- TextureFactory.tテクスチャの解放(ref this.tx通常項目行パネル);\r
- TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);\r
- TextureFactory.tテクスチャの解放(ref this.tx三角矢印);\r
-\r
- OnListMenuの解放();\r
-\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
-\r
- private void OnListMenuの初期化()\r
- {\r
- OnListMenuの解放();\r
- this.listMenu = new stMenuItemRight[this.list項目リスト.Count];\r
- }\r
-\r
- /// <summary>\r
- /// 事前にレンダリングしておいたテクスチャを解放する。\r
- /// </summary>\r
- private void OnListMenuの解放()\r
- {\r
- if (listMenu != null)\r
- {\r
- for (int i = 0; i < listMenu.Length; i++)\r
- {\r
- TextureFactory.tテクスチャの解放(ref listMenu[i].txParam);\r
- TextureFactory.tテクスチャの解放(ref listMenu[i].txParamColored);\r
- TextureFactory.tテクスチャの解放(ref listMenu[i].txMenuItemRight);\r
- }\r
- this.listMenu = null;\r
- }\r
- }\r
-\r
- public override int On進行描画()\r
- {\r
- throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
- }\r
-\r
- public int t進行描画(bool b項目リスト側にフォーカスがある)\r
- {\r
- if (this.b活性化してる)\r
- {\r
- #region [ 初めての進行描画 ]\r
- //-----------------\r
- if (base.b初めての進行描画)\r
- {\r
- this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;\r
- this.ct三角矢印アニメ.t開始(0, 9, 50, CDTXMania.Instance.Timer);\r
-\r
- base.b初めての進行描画 = false;\r
- }\r
- //-----------------\r
- #endregion\r
-\r
- this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある; // 記憶\r
-\r
- #region [ 項目スクロールの進行 ]\r
- //-----------------\r
- long n現在時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
- if (n現在時刻 < this.nスクロール用タイマ値) this.nスクロール用タイマ値 = n現在時刻;\r
-\r
- const int INTERVAL = 2; // [ms]\r
- while ((n現在時刻 - this.nスクロール用タイマ値) >= INTERVAL)\r
- {\r
- int n目標項目までのスクロール量 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));\r
- int n加速度 = 0;\r
-\r
- #region [ n加速度の決定;目標まで遠いほど加速する。]\r
- //-----------------\r
- if (n目標項目までのスクロール量 <= 100)\r
- {\r
- n加速度 = 2;\r
- }\r
- else if (n目標項目までのスクロール量 <= 300)\r
- {\r
- n加速度 = 3;\r
- }\r
- else if (n目標項目までのスクロール量 <= 500)\r
- {\r
- n加速度 = 4;\r
- }\r
- else\r
- {\r
- n加速度 = 8;\r
- }\r
- //-----------------\r
- #endregion\r
- #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]\r
- //-----------------\r
- if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
- {\r
- this.n現在のスクロールカウンタ += n加速度;\r
- if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
- {\r
- // 目標を超えたら目標値で停止。\r
- this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
- }\r
- }\r
- else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
- {\r
- this.n現在のスクロールカウンタ -= n加速度;\r
- if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
- {\r
- // 目標を超えたら目標値で停止。\r
- this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
- }\r
- }\r
- //-----------------\r
- #endregion\r
- #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]\r
- //-----------------\r
- if (this.n現在のスクロールカウンタ >= 100)\r
- {\r
- this.n現在の選択項目 = this.t次の項目(this.n現在の選択項目);\r
- this.n現在のスクロールカウンタ -= 100;\r
- this.n目標のスクロールカウンタ -= 100;\r
- if (this.n目標のスクロールカウンタ == 0)\r
- {\r
- CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
- }\r
- }\r
- else if (this.n現在のスクロールカウンタ <= -100)\r
- {\r
- this.n現在の選択項目 = this.t前の項目(this.n現在の選択項目);\r
- this.n現在のスクロールカウンタ += 100;\r
- this.n目標のスクロールカウンタ += 100;\r
- if (this.n目標のスクロールカウンタ == 0)\r
- {\r
- CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
- }\r
- }\r
- //-----------------\r
- #endregion\r
-\r
- this.nスクロール用タイマ値 += INTERVAL;\r
- }\r
- //-----------------\r
- #endregion\r
-\r
- #region [ ▲印アニメの進行 ]\r
- if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
- {\r
- this.ct三角矢印アニメ.t進行Loop();\r
- }\r
- #endregion\r
-\r
-\r
- // 描画\r
-\r
- // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。\r
- this.ptパネルの基本座標[4].X = this.b項目リスト側にフォーカスがある ? 276 : 301;\r
-\r
- #region [ 計11個の項目パネルを描画する。]\r
- //-----------------\r
- int nItem = this.n現在の選択項目;\r
- for (int i = 0; i < 4; i++)\r
- {\r
- nItem = this.t前の項目(nItem);\r
- }\r
-\r
- for (int n行番号 = -4; n行番号 < 6; n行番号++)\r
- {\r
- // n行番号 == 0 がフォーカスされている項目パネル。\r
- #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
- if (((n行番号 == -4) && (this.n現在のスクロールカウンタ > 0)) ||\r
- ((n行番号 == +5) && (this.n現在のスクロールカウンタ < 0)))\r
- {\r
- nItem = this.t次の項目(nItem);\r
- continue;\r
- }\r
- #endregion\r
-\r
- int n移動元の行の基本位置 = n行番号 + 4;\r
- int n移動先の行の基本位置 = (this.n現在のスクロールカウンタ <= 0) ? ((n移動元の行の基本位置 + 1) % 10) : (((n移動元の行の基本位置 - 1) + 10) % 10);\r
- int x = this.ptパネルの基本座標[n移動元の行の基本位置].X + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].X - this.ptパネルの基本座標[n移動元の行の基本位置].X) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
- int y = this.ptパネルの基本座標[n移動元の行の基本位置].Y + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].Y - this.ptパネルの基本座標[n移動元の行の基本位置].Y) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
-\r
- #region [ 現在の行の項目パネル枠を描画。]\r
- if (this.list項目リスト[nItem].type == EOptionType.Normal)\r
- {\r
- if (this.tx通常項目行パネル != null)\r
- {\r
- this.tx通常項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
- }\r
- }\r
- else if (this.list項目リスト[nItem].type == EOptionType.Other)\r
- {\r
- if (this.txその他項目行パネル != null)\r
- {\r
- this.txその他項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
- }\r
- }\r
- #endregion\r
-\r
- #region [ 現在の行の項目名を描画。]\r
- if (listMenu[nItem].txMenuItemRight != null)\r
- {\r
- // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用\r
- listMenu[nItem].txMenuItemRight.t2D描画(CDTXMania.Instance.Device, (x + 0x12) * Scale.X, (y + 12) * Scale.Y - 20);\r
- }\r
- else\r
- {\r
- using (Bitmap bmpItem = prvFont.DrawPrivateFont(this.list項目リスト[nItem].label, Color.White, Color.Black))\r
- {\r
- TextureFactory.tテクスチャの解放(ref listMenu[nItem].txMenuItemRight);\r
- listMenu[nItem].txMenuItemRight = TextureFactory.tテクスチャの生成(bmpItem);\r
- }\r
- }\r
- #endregion\r
-\r
- #region [ 現在の行の項目の要素を描画。]\r
- string strParam = this.list項目リスト[nItem].ToString();\r
- //bool b強調 = false;\r
-\r
- #region [ 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。 #28195 2012.5.2 yyagi ]\r
- if (this.list項目リスト[this.n現在の選択項目] == skins)\r
- {\r
- if (txSkinSample == null)\r
- {\r
- tGenerateSkinSample();\r
- }\r
- if (txSkinSample != null)\r
- {\r
- txSkinSample.t2D描画(CDTXMania.Instance.Device, 56 * Scale.X, 300 * Scale.Y);\r
- }\r
- }\r
- #endregion\r
-\r
- #endregion\r
- int nIndex = this.list項目リスト[nItem].Index;\r
- bool bColored = list項目リスト[nItem] is COptionInteger && n行番号 == 0 && b要素値にフォーカス中;\r
- if (listMenu[nItem].nParam != nIndex ||\r
- (listMenu[nItem].txParam == null) ||\r
- (bColored && listMenu[nItem].txParamColored == null))\r
- {\r
- listMenu[nItem].nParam = nIndex;\r
- listMenu[nItem].strParam = this.list項目リスト[nItem].ToString();\r
- using (Bitmap bmpStr = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
- {\r
- TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParam);\r
- listMenu[nItem].txParam = TextureFactory.tテクスチャの生成(bmpStr, false);\r
- if (bColored)\r
- {\r
- using (Bitmap bmpStrColored = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed))\r
- {\r
- TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParamColored);\r
- listMenu[nItem].txParamColored = TextureFactory.tテクスチャの生成(bmpStrColored, false);\r
- }\r
- }\r
- }\r
- }\r
-\r
- if (bColored)\r
- {\r
- listMenu[nItem].txParamColored.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
- }\r
- else\r
- {\r
- listMenu[nItem].txParam.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
- }\r
- nItem = this.t次の項目(nItem);\r
- }\r
- #endregion\r
-\r
- #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]\r
- if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
- {\r
- int x;\r
- int y_upper;\r
- int y_lower;\r
-\r
- // 位置決定。\r
-\r
- if (this.b要素値にフォーカス中)\r
- {\r
- // 要素値の上下あたり。\r
- x = 528;\r
- y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
- y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
- }\r
- else\r
- {\r
- // 項目名の上下あたり。\r
- x = 276;\r
- y_upper = 186 - this.ct三角矢印アニメ.n現在の値;\r
- y_lower = 254 + this.ct三角矢印アニメ.n現在の値;\r
- }\r
-\r
- // 描画。\r
-\r
- if (this.tx三角矢印 != null)\r
- {\r
- this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
- y_upper * Scale.Y,\r
- new Rectangle(0, 0, (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
- this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
- y_lower * Scale.Y,\r
- new Rectangle(0, (int)(16 * Scale.Y), (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
- }\r
- }\r
- #endregion\r
- }\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
- internal enum Eメニュー種別\r
- {\r
- System,\r
- Drums,\r
- Guitar,\r
- Bass,\r
- // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン\r
- KeyAssignSystem,\r
- KeyAssignDrums,\r
- KeyAssignGuitar,\r
- KeyAssignBass,\r
- DisplaySystem,\r
- DisplayDrums,\r
- DisplayGuitar,\r
- DisplayBass,\r
- EDrumsSettings,\r
- HitRangeSettings,\r
- SoundSettings,\r
- Unknown\r
- }\r
-\r
- private int t前の項目(int nItem)\r
- {\r
- if (--nItem < 0)\r
- {\r
- nItem = this.list項目リスト.Count - 1;\r
- }\r
- return nItem;\r
- }\r
-\r
- private int t次の項目(int nItem)\r
- {\r
- if (++nItem >= this.list項目リスト.Count)\r
- {\r
- nItem = 0;\r
- }\r
- return nItem;\r
- }\r
- }\r
-}\r