OSDN Git Service

Merge branch 'feature/37178_プロジェクトとソリューションファイルの英語化' into develop
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 05.選曲 / CActSelectPopupMenu.cs
diff --git a/DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectPopupMenu.cs b/DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectPopupMenu.cs
deleted file mode 100644 (file)
index 59729cb..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Diagnostics;\r
-using System.Globalization;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using System.IO;\r
-using FDK;\r
-\r
-using SlimDXKey = SlimDX.DirectInput.Key;\r
-\r
-namespace DTXMania\r
-{\r
-       internal class CActSelectPopupMenu : CActivity\r
-       {\r
-               // プロパティ\r
-               public int GetIndex(int pos)\r
-               {\r
-                       return lciMenuItems[pos].cItem.Index;\r
-               }\r
-\r
-               public COptionBase GetObj現在値(int pos)\r
-               {\r
-                       return lciMenuItems[pos].cItem;\r
-               }\r
-\r
-               public bool bGotoDetailConfig\r
-               {\r
-                       get;\r
-                       internal set;\r
-               }\r
-\r
-               /// <summary>\r
-               /// ポップアップメニュー機能を使用中かどうか。\r
-               /// 外部からこれをtrueにすると、ポップアップメニューが出現する。falseにすると消える。\r
-               /// </summary>\r
-               public bool bIsActivePopupMenu\r
-               {\r
-                       get;\r
-                       private set;\r
-               }\r
-\r
-               public virtual void tActivatePopupMenu(EPart einst)\r
-               {\r
-                       nItemSelecting = -1;        // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu.\r
-                       this.eInst = einst;\r
-                       this.bIsActivePopupMenu = true;\r
-                       this.bIsSelectingIntItem = false;\r
-                       this.bGotoDetailConfig = false;\r
-               }\r
-               public virtual void tDeativatePopupMenu()\r
-               {\r
-                       this.bIsActivePopupMenu = false;\r
-               }\r
-\r
-               public void Initialize(List<COptionBase> menulist, bool showAllItems, string title, int defaultPos = 0)\r
-               {\r
-\r
-                       prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));\r
-\r
-                       stqMenuTitle = new stQuickMenuItem();\r
-                       stqMenuTitle.cItem = new COptionString(title);\r
-                       stqMenuTitle.cItem.label = title;\r
-                       stqMenuTitle.txName = TextureFactory.tテクスチャの生成(prvFont.DrawPrivateFont(title, Color.White, Color.Black), false);\r
-                       stqMenuTitle.rectName = prvFont.RectStrings;\r
-                       lciMenuItems = new stQuickMenuItem[menulist.Count];\r
-                       for (int i = 0; i < menulist.Count; i++)\r
-                       {\r
-                               stQuickMenuItem stqm = new stQuickMenuItem();\r
-                               stqm.cItem = menulist[i];\r
-                               stqm.txName = TextureFactory.tテクスチャの生成(prvFont.DrawPrivateFont(menulist[i].label, Color.White, Color.Black), false);\r
-                               stqm.rectName = prvFont.RectStrings;\r
-                               lciMenuItems[i] = stqm;\r
-                       }\r
-\r
-                       bShowAllItems = showAllItems;\r
-                       n現在の選択行 = defaultPos;\r
-               }\r
-\r
-\r
-               public void tEnter押下()\r
-               {\r
-                       if (this.bキー入力待ち)\r
-                       {\r
-                               CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-\r
-                               if (this.n現在の選択行 != lciMenuItems.Length - 1)\r
-                               {\r
-                                       if (lciMenuItems[n現在の選択行].cItem is IOptionList ||\r
-                                                       lciMenuItems[n現在の選択行].cItem is COptionBool)\r
-                                       {\r
-                                               lciMenuItems[n現在の選択行].cItem.OnNext();\r
-                                       }\r
-                                       else if (lciMenuItems[n現在の選択行].cItem is COptionInteger)\r
-                                       {\r
-                                               bIsSelectingIntItem = !bIsSelectingIntItem;     // 選択状態/選択解除状態を反転する\r
-                                       }\r
-                                       nItemSelecting = n現在の選択行;\r
-                               }\r
-                               lciMenuItems[n現在の選択行].cItem.OnEnter();\r
-                               this.bキー入力待ち = true;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// 追加の描画処理。必要に応じて、継承先で記述する。\r
-               /// </summary>\r
-               public virtual void t進行描画sub()\r
-               {\r
-               }\r
-\r
-               public void t次に移動()\r
-               {\r
-                       if (this.bキー入力待ち)\r
-                       {\r
-                               CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                               if (bIsSelectingIntItem)\r
-                               {\r
-                                       // 項目移動と数値上下は方向が逆になるので注意\r
-                                       lciMenuItems[n現在の選択行].cItem.OnPrevious();\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (++this.n現在の選択行 >= this.lciMenuItems.Length)\r
-                                       {\r
-                                               this.n現在の選択行 = 0;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               public void t前に移動()\r
-               {\r
-                       if (this.bキー入力待ち)\r
-                       {\r
-                               CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                               if (bIsSelectingIntItem)\r
-                               {\r
-                                       // 項目移動と数値上下は方向が逆になるので注意\r
-                                       lciMenuItems[n現在の選択行].cItem.OnNext();\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (--this.n現在の選択行 < 0)\r
-                                       {\r
-                                               this.n現在の選択行 = this.lciMenuItems.Length - 1;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public override void On活性化()\r
-               {\r
-                       this.n現在の選択行 = 0;\r
-                       this.bキー入力待ち = true;\r
-                       for (int i = 0; i < 4; i++)\r
-                       {\r
-                               this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.Instance.Timer);\r
-                       }\r
-                       base.b活性化してない = true;\r
-\r
-                       this.bIsActivePopupMenu = false;\r
-                       nItemSelecting = -1;\r
-\r
-\r
-                       base.On活性化();\r
-               }\r
-\r
-               public override void On非活性化()\r
-               {\r
-                       if (!base.b活性化してない)\r
-                       {\r
-                               //TextureFactory.tテクスチャの解放(ref this.txCursor);\r
-                               //TextureFactory.tテクスチャの解放(ref this.txPopupMenuBackground);\r
-                               for (int i = 0; i < 4; i++)\r
-                               {\r
-                                       this.ctキー反復用[i] = null;\r
-                               }\r
-                               base.On非活性化();\r
-                       }\r
-               }\r
-\r
-               public override void OnManagedリソースの作成()\r
-               {\r
-                       if (!base.b活性化してない)\r
-                       {\r
-                               string pathCursor = CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"); ;\r
-                               string pathPopupMenuBackground = CSkin.Path(@"Graphics\ScreenSelect sort menu background.png");\r
-                               if (File.Exists(pathCursor))\r
-                               {\r
-                                       this.txCursor = TextureFactory.tテクスチャの生成(pathCursor, false);\r
-                               }\r
-                               if (File.Exists(pathPopupMenuBackground))\r
-                               {\r
-                                       this.txPopupMenuBackground = TextureFactory.tテクスチャの生成(pathPopupMenuBackground, false);\r
-                               }\r
-                               base.OnManagedリソースの作成();\r
-                       }\r
-               }\r
-\r
-               public override void OnManagedリソースの解放()\r
-               {\r
-                       if ( base.b活性化してる )\r
-                       {\r
-                               TextureFactory.tテクスチャの解放( ref this.txPopupMenuBackground );\r
-                               TextureFactory.tテクスチャの解放( ref this.txCursor );\r
-\r
-                               TextureFactory.tテクスチャの解放( ref stqMenuTitle.txName );\r
-                               if ( lciMenuItems != null )\r
-                               {\r
-                                       for ( int i = 0; i < lciMenuItems.Length; i++ )\r
-                                       {\r
-                                               TextureFactory.tテクスチャの解放( ref lciMenuItems[i].txName );\r
-                                       }\r
-                               }\r
-                       }\r
-                       base.OnManagedリソースの解放();\r
-               }\r
-\r
-               public override int On進行描画()\r
-               {\r
-                       throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
-               }\r
-\r
-               public int t進行描画()\r
-               {\r
-                       if (!base.b活性化してない && this.bIsActivePopupMenu)\r
-                       {\r
-                               if (this.bキー入力待ち)\r
-                               {\r
-                                       #region [ Shift-F1: CONFIG画面 ]\r
-                                       if( ( CDTXMania.Instance.Input管理.Keyboard.bキーが押されている( (int) SlimDXKey.RightShift ) || CDTXMania.Instance.Input管理.Keyboard.bキーが押されている( (int) SlimDXKey.LeftShift ) ) &&\r
-                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F1 ) )\r
-                                       {\r
-                                               // [SHIFT] + [F1] CONFIG\r
-                                               CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                               // tCancel();\r
-                                               this.bGotoDetailConfig = true;\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ キー入力: キャンセル ]\r
-                                       else if( CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.Escape )\r
-                                                       || CDTXMania.Instance.Pad.bCancelPadIsPressedDGB() )\r
-                                       {\r
-                                               // キャンセル\r
-                                               CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                               // tCancel();\r
-                                               this.bIsActivePopupMenu = false;\r
-                                       }\r
-                                       #endregion\r
-\r
-                                       #region [ キー入力: 決定 ]\r
-                                       // E楽器パート eInst = E楽器パート.UNKNOWN;\r
-                                       ESortAction eAction = ESortAction.END;\r
-                                       if (CDTXMania.Instance.Pad.b押された(EPad.GtDecide))\r
-                                       {\r
-                                               eInst = EPart.Guitar;\r
-                                               eAction = ESortAction.Decide;\r
-                                       }\r
-                                       else if (CDTXMania.Instance.Pad.b押された(EPad.BsDecide))\r
-                                       {\r
-                                               eInst = EPart.Bass;\r
-                                               eAction = ESortAction.Decide;\r
-                                       }\r
-                                       else if (\r
-                                                                CDTXMania.Instance.Pad.b押された(EPad.CY) // #24756 2011.4.1 yyagi: Add condition "Drum-Decide" to enable CY in Sort Menu.\r
-                                                       || CDTXMania.Instance.Pad.b押された(EPad.RD)\r
-                                                       || CDTXMania.Instance.Pad.b押された(EPad.LC)\r
-                                                       || (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDXKey.Return)))\r
-                                       {\r
-                                               eInst = EPart.Drums;\r
-                                               eAction = ESortAction.Decide;\r
-                                       }\r
-                                       if (eAction == ESortAction.Decide)  // 決定\r
-                                       {\r
-                                               this.tEnter押下();\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ キー入力: 前に移動 ]\r
-\r
-                                       this.ctキー反復用.Up.tキー反復(\r
-                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押されている( (int) SlimDXKey.UpArrow ),\r
-                                               new CCounter.DGキー処理( this.t前に移動 ) );\r
-\r
-                                       this.ctキー反復用.R.tキー反復(\r
-                                               CDTXMania.Instance.Pad.b押されている( EPad.GtR ) || CDTXMania.Instance.Pad.b押されている( EPad.BsR ),\r
-                                               new CCounter.DGキー処理( this.t前に移動 ) );\r
-\r
-                                       if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
-                                       {\r
-                                               this.t前に移動();\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ キー入力: 次に移動 ]\r
-                                       this.ctキー反復用.Down.tキー反復(\r
-                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押されている( (int) SlimDXKey.DownArrow ),\r
-                                               new CCounter.DGキー処理( this.t次に移動 ) );\r
-\r
-                                       this.ctキー反復用.B.tキー反復(\r
-                                               CDTXMania.Instance.Pad.b押されている( EPad.GtB ) || CDTXMania.Instance.Pad.b押されている( EPad.BsB ),\r
-                                               new CCounter.DGキー処理( this.t次に移動 ) );\r
-\r
-                                       if (CDTXMania.Instance.Pad.b押された(EPad.LT))\r
-                                       {\r
-                                               this.t次に移動();\r
-                                       }\r
-                                       #endregion\r
-                               }\r
-                               #region [ ポップアップ背景描画 ]\r
-                               if (this.txPopupMenuBackground != null)\r
-                               {\r
-                                       this.txPopupMenuBackground.t2D描画(CDTXMania.Instance.Device, 160 * Scale.X, 10 * Scale.Y);\r
-                               }\r
-                               #endregion\r
-                               #region [ タイトル描画 ]\r
-                               int x = (int)(240 * Scale.X), y = (int)(16 * Scale.Y);\r
-                               stqMenuTitle.txName.t2D描画(CDTXMania.Instance.Device, x, y);\r
-                               #endregion\r
-                               #region [ カーソル描画 ]\r
-                               if (this.txCursor != null)\r
-                               {\r
-                                       int height = stqMenuTitle.rectName.Height;\r
-                                       int curX = (int)(180 * Scale.X);\r
-                                       int curY = (int)(16 * Scale.Y) + (height / 4 - 6) + (height * (this.n現在の選択行 + 1));\r
-                                       this.txCursor.t2D描画(CDTXMania.Instance.Device, curX, curY, new Rectangle(0, 0, (int)(16 * Scale.X), (int)(32 * Scale.Y)));\r
-                                       curX += (int)(0x10 * Scale.X);\r
-                                       Rectangle rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
-                                       for (int j = 0; j < 16 + 5; j++)\r
-                                       {\r
-                                               this.txCursor.t2D描画(CDTXMania.Instance.Device, curX, curY, rectangle);\r
-                                               curX += (int)(16 * Scale.Y);\r
-                                       }\r
-                                       this.txCursor.t2D描画(CDTXMania.Instance.Device, curX, curY, new Rectangle((int)(0x10 * Scale.X), 0, (int)(16 * Scale.X), (int)(32 * Scale.Y)));\r
-                               }\r
-                               #endregion\r
-                               #region [ リスト値文字列描画 ]\r
-                               for (int i = 0; i < lciMenuItems.Length; i++)\r
-                               {\r
-                                       bool bItemBold = (i == nItemSelecting && !bShowAllItems) ? true : false;\r
-                                       if (lciMenuItems[i].txName != null)\r
-                                       {\r
-                                               int height = lciMenuItems[i].rectName.Height;\r
-                                               lciMenuItems[i].txName.t2D描画(CDTXMania.Instance.Device, 190 * Scale.X, (50 * Scale.Y) + i * height);\r
-                                       }\r
-\r
-                                       bool bValueBold = (bItemBold || (i == nItemSelecting && bIsSelectingIntItem)) ? true : false;\r
-                                       if (bItemBold || bShowAllItems)\r
-                                       {\r
-                                               string s = lciMenuItems[i].cItem.ToString();\r
-                                               using (Bitmap bmpStr = bValueBold ?\r
-                                                               prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                                               prvFont.DrawPrivateFont(s, Color.White, Color.Black))\r
-                                               {\r
-                                                       CTexture ctStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                                                       ctStr.t2D描画(CDTXMania.Instance.Device, 340 * Scale.X, (50 * Scale.Y) + i * prvFont.RectStrings.Height);\r
-                                                       TextureFactory.tテクスチャの解放(ref ctStr);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               #endregion\r
-                               t進行描画sub();\r
-                       }\r
-                       return 0;\r
-               }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-\r
-               private bool bキー入力待ち;\r
-\r
-               internal int n現在の選択行;\r
-               internal EPart eInst = EPart.Unknown;\r
-\r
-               private CTexture txPopupMenuBackground;\r
-               private CTexture txCursor;\r
-\r
-               internal struct stQuickMenuItem\r
-               {\r
-                       internal COptionBase cItem;\r
-                       internal CTexture txName;\r
-                       internal Rectangle rectName;\r
-               }\r
-               private stQuickMenuItem[] lciMenuItems;\r
-               CPrivateFastFont prvFont;\r
-\r
-               private stQuickMenuItem stqMenuTitle;\r
-               private bool bShowAllItems;\r
-               private bool bIsSelectingIntItem;\r
-\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               private struct STキー反復用カウンタ\r
-               {\r
-                       public CCounter Up;\r
-                       public CCounter Down;\r
-                       public CCounter R;\r
-                       public CCounter B;\r
-                       public CCounter this[int index]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       return this.Up;\r
-\r
-                                               case 1:\r
-                                                       return this.Down;\r
-\r
-                                               case 2:\r
-                                                       return this.R;\r
-\r
-                                               case 3:\r
-                                                       return this.B;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       this.Up = value;\r
-                                                       return;\r
-\r
-                                               case 1:\r
-                                                       this.Down = value;\r
-                                                       return;\r
-\r
-                                               case 2:\r
-                                                       this.R = value;\r
-                                                       return;\r
-\r
-                                               case 3:\r
-                                                       this.B = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-               private STキー反復用カウンタ ctキー反復用;\r
-\r
-               private enum ESortAction : int\r
-               {\r
-                       Cancel, Decide, Previous, Next, END\r
-               }\r
-               // 「n現在の選択行」とは別に設ける。sortでメニュー表示直後にアイテムの中身を表示しないようにするため\r
-               private int nItemSelecting;\r
-\r
-               //-----------------\r
-               #endregion\r
-       }\r
-}\r