OSDN Git Service

#xxxxx songs.dbにBPMの情報を含めるよう修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CActConfigList.cs
index eb26715..c26fa60 100644 (file)
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Diagnostics;\r
 using System.Text;\r
 using System.Drawing;\r
+using SlimDX;\r
 using FDK;\r
 \r
 namespace DTXMania\r
@@ -41,12 +42,6 @@ namespace DTXMania
                                {\r
                                        return false;\r
                                }\r
-//                             CItemBase base2 = this.list項目リスト[ this.n現在の選択項目 ];\r
-//                             if( ( ( base2 != this.iSystemReturnToMenu ) && ( base2 != this.iKeyAssignDrumsReturnToMenu ) ) && ( base2 != this.iKeyAssignGuitarReturnToMenu ) )\r
-//                             {\r
-//                                     return ( base2 == this.iKeyAssignBassReturnToMenu );\r
-//                             }\r
-//                             return true;\r
                        }\r
                }\r
                public CItemBase ib現在の選択項目\r
@@ -64,6 +59,9 @@ namespace DTXMania
                {\r
                        this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iSystemReturnToMenu = new CItemBase( "<< ReturnTo Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
@@ -192,6 +190,29 @@ namespace DTXMania
                                "Turn ON to put debug log to\n DTXManiaLog.txt\nTo take it effective, you need to\n re-open DTXMania." );\r
                        this.list項目リスト.Add( this.iLogOutputLog );\r
 \r
+                       this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex,\r
+                               "スキン切替:\n" +\r
+                               "スキンを切り替えます。\n",\r
+                               //"CONFIGURATIONを抜けると、設定した\n" +\r
+                               //"スキンに変更されます。",\r
+                               "Skin:\n" +\r
+                               "Change skin.",\r
+                               skinNames );\r
+                       this.list項目リスト.Add( this.iSystemSkinSubfolder );\r
+                       this.iSystemUseBoxDefSkin = new CItemToggle( "Skin (Box)", CDTXMania.ConfigIni.bUseBoxDefSkin,\r
+                               "Music boxスキンの利用:\n" +\r
+                               "特別なスキンが設定されたMusic box\n" +\r
+                               "に出入りしたときに、自動でスキンを\n" +\r
+                               "切り替えるかどうかを設定します。\n",\r
+                               //"\n" +\r
+                               //"(Music Boxスキンは、box.defファイル\n" +\r
+                               //" で指定できます)\n",\r
+                               "Box skin:\n" +\r
+                               "Automatically change skin\n" +\r
+                               "specified in box.def file." );\r
+                       this.list項目リスト.Add( this.iSystemUseBoxDefSkin );\r
+\r
+       \r
                        this.iSystemGoToKeyAssign = new CItemBase( "System Keys", CItemBase.Eパネル種別.通常,\r
                        "システムのキー入力に関する項目を設\n定します。",\r
                        "Settings for the system key/pad inputs." );\r
@@ -201,186 +222,396 @@ namespace DTXMania
                        this.n現在の選択項目 = 0;\r
                        this.eメニュー種別 = Eメニュー種別.System;\r
                }\r
-\r
                public void t項目リストの設定・Drums()\r
                {\r
                        this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
                        this.list項目リスト.Add( this.iDrumsReturnToMenu );\r
+\r
                        this.iDrumsAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全パッドの自動演奏の ON/OFF を\nまとめて切り替えます。",\r
-                               "You can change whether Auto or not\n for all drums lanes at once." );\r
+                               "全パッドの自動演奏の ON/OFF を\n" +\r
+                               "まとめて切り替えます。",\r
+                               "You can change whether Auto or not\n" +\r
+                               " for all drums lanes at once." );\r
                        this.list項目リスト.Add( this.iDrumsAutoPlayAll );\r
+\r
                        this.iDrumsLeftCymbal = new CItemToggle( "    LeftCymbal", CDTXMania.ConfigIni.bAutoPlay.LC,\r
                                "左シンバルを自動で演奏します。",\r
                                "To play LeftCymbal automatically." );\r
                        this.list項目リスト.Add( this.iDrumsLeftCymbal );\r
+\r
                        this.iDrumsHiHat = new CItemToggle( "    HiHat", CDTXMania.ConfigIni.bAutoPlay.HH,\r
-                               "ハイハットを自動で演奏します。\n(クローズ、オープンとも)",\r
-                               "To play HiHat automatically.\n(It effects to both HH-close and\n HH-open)" );\r
+                               "ハイハットを自動で演奏します。\n" +\r
+                               "(クローズ、オープンとも)",\r
+                               "To play HiHat automatically.\n" +\r
+                               "(It effects to both HH-close and\n HH-open)" );\r
                        this.list項目リスト.Add( this.iDrumsHiHat );\r
+\r
                        this.iDrumsSnare = new CItemToggle( "    Snare", CDTXMania.ConfigIni.bAutoPlay.SD,\r
                                "スネアを自動で演奏します。",\r
                                "To play Snare automatically." );\r
                        this.list項目リスト.Add( this.iDrumsSnare );\r
+\r
                        this.iDrumsBass = new CItemToggle( "    BassDrum", CDTXMania.ConfigIni.bAutoPlay.BD,\r
                                "バスドラムを自動で演奏します。",\r
                                "To play Bass Drum automatically." );\r
                        this.list項目リスト.Add( this.iDrumsBass );\r
+\r
                        this.iDrumsHighTom = new CItemToggle( "    HighTom", CDTXMania.ConfigIni.bAutoPlay.HT,\r
                                "ハイタムを自動で演奏します。",\r
                                "To play High Tom automatically." );\r
                        this.list項目リスト.Add( this.iDrumsHighTom );\r
+\r
                        this.iDrumsLowTom = new CItemToggle( "    LowTom", CDTXMania.ConfigIni.bAutoPlay.LT,\r
                                "ロータムを自動で演奏します。",\r
                                "To play Low Tom automatically." );\r
                        this.list項目リスト.Add( this.iDrumsLowTom );\r
+\r
                        this.iDrumsFloorTom = new CItemToggle( "    FloorTom", CDTXMania.ConfigIni.bAutoPlay.FT,\r
                                "フロアタムを自動で演奏します。",\r
                                "To play Floor Tom automatically." );\r
                        this.list項目リスト.Add( this.iDrumsFloorTom );\r
+\r
                        this.iDrumsCymbalRide = new CItemToggle( "    Cym/Ride", CDTXMania.ConfigIni.bAutoPlay.CY,\r
-                               "右シンバルとライドシンバルを自動で\n演奏します。",\r
-                               "To play both right- and Ride-Cymbal\n automatically." );\r
+                               "右シンバルとライドシンバルを自動で\n" +\r
+                               "演奏します。",\r
+                               "To play both right- and Ride-Cymbal\n" +\r
+                               " automatically." );\r
                        this.list項目リスト.Add( this.iDrumsCymbalRide );\r
 \r
-                       this.iDrumsScrollSpeed = new CItemInteger("ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Drums,\r
-                               "演奏時のドラム譜面のスクロールの\n速度を指定します。\nx0.5 ~ x1000.0 を指定可能です。",\r
-                               "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
-                       this.list項目リスト.Add(this.iDrumsScrollSpeed);\r
-                       this.iDrumsSudden = new CItemToggle("Sudden", CDTXMania.ConfigIni.bSudden.Drums,\r
-                               "ドラムチップが譜面の下の方から表\n示されるようになります。",\r
-                               "Drums chips are disappered until they\ncome near the hit bar, and suddenly\nappears.");\r
-                       this.list項目リスト.Add(this.iDrumsSudden);\r
-                       this.iDrumsHidden = new CItemToggle("Hidden", CDTXMania.ConfigIni.bHidden.Drums,\r
-                               "ドラムチップが譜面の下の方で表示\nされなくなります。",\r
-                               "Drums chips are hidden by approaching\nto the hit bar. ");\r
-                       this.list項目リスト.Add(this.iDrumsHidden);\r
-\r
-                       this.iCommonDark = new CItemList("Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eDark,\r
-                               "HALF: 背景、レーン、ゲージが表示\nされなくなります。\nFULL: さらに小節線、拍線、判定ラ\nイン、パッドも表示されなくなります。",\r
-                               "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
-                               new string[] { "OFF", "HALF", "FULL" });\r
-                       this.list項目リスト.Add(this.iCommonDark);\r
+                       this.iDrumsScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Drums,\r
+                               "演奏時のドラム譜面のスクロールの\n" +\r
+                               "速度を指定します。\n" +\r
+                               "x0.5 ~ x1000.0 を指定可能です。",\r
+                               "To change the scroll speed for the\n" +\r
+                               "drums lanes.\n" +\r
+                               "You can set it from x0.5 to x1000.0.\n" +\r
+                               "(ScrollSpeed=x0.5 means half speed)" );\r
+                       this.list項目リスト.Add( this.iDrumsScrollSpeed );\r
+\r
+                       this.iDrumsSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Drums,\r
+                               "ドラムチップが譜面の下の方から表\n" +\r
+                               "示されるようになります。",\r
+                               "Drums chips are disappered until they\n" +\r
+                               "come near the hit bar, and suddenly\n" +\r
+                               "appears." );\r
+                       this.list項目リスト.Add( this.iDrumsSudden );\r
+\r
+                       this.iDrumsHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Drums,\r
+                               "ドラムチップが譜面の下の方で表示\n" +\r
+                               "されなくなります。",\r
+                               "Drums chips are hidden by approaching\n" +\r
+                               "to the hit bar. " );\r
+                       this.list項目リスト.Add( this.iDrumsHidden );\r
+\r
+                       this.iCommonDark = new CItemList( "Dark", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eDark,\r
+                               "HALF: 背景、レーン、ゲージが表示\n" +\r
+                               "されなくなります。\n" +\r
+                               "FULL: さらに小節線、拍線、判定ラ\n" +\r
+                               "イン、パッドも表示されなくなります。",\r
+                               "OFF: all display parts are shown.\n" +\r
+                               "HALF: wallpaper, lanes and gauge are\n" +\r
+                               " disappeared.\n" +\r
+                               "FULL: additionaly to HALF, bar/beat\n" +\r
+                               " lines, hit bar, pads are disappeared.",\r
+                               new string[] { "OFF", "HALF", "FULL" } );\r
+                       this.list項目リスト.Add( this.iCommonDark );\r
 \r
 \r
-                       this.iDrumsReverse = new CItemToggle("Reverse", CDTXMania.ConfigIni.bReverse.Drums,\r
-                               "ドラムチップが譜面の下から上に流\nれるようになります。",\r
-                               "The scroll way is reversed. Drums chips\nflow from the bottom to the top.");\r
-                       this.list項目リスト.Add(this.iDrumsReverse);\r
+                       this.iDrumsReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Drums,\r
+                               "ドラムチップが譜面の下から上に流\n" +\r
+                               "れるようになります。",\r
+                               "The scroll way is reversed. Drums chips\n"\r
+                               + "flow from the bottom to the top." );\r
+                       this.list項目リスト.Add( this.iDrumsReverse );\r
 \r
-                       this.iSystemRisky = new CItemInteger("Risky", 0, 10, CDTXMania.ConfigIni.nRisky,\r
-                               "Riskyモードの設定:\n1以上の値にすると、その回数分の\nPoor/MissでFAILEDとなります。\n0にすると無効になり、\nDamageLevelに従ったゲージ増減と\nなります。\nStageFailedの設定と併用できます。",\r
-                               "Risky mode:\nSet over 1, in case you'd like to specify\n the number of Poor/Miss times to be\n FAILED.\nSet 0 to disable Risky mode.");\r
-                       this.list項目リスト.Add(this.iSystemRisky);\r
-\r
-                       this.iDrumsTight = new CItemToggle("Tight", CDTXMania.ConfigIni.bTight,\r
-                               "ドラムチップのないところでパッドを\n叩くとミスになります。",\r
-                               "It becomes MISS to hit pad without\n chip.");\r
-                       this.list項目リスト.Add(this.iDrumsTight);\r
-\r
-                       this.iDrumsComboPosition = new CItemList("ComboPosition", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.ドラムコンボ文字の表示位置,\r
-                               "演奏時のドラムコンボ文字列の位置\nを指定します。",\r
-                               "The display position for Drums Combo.\nNote that it doesn't take effect\n at Autoplay ([Left] is forcely used).",\r
-                               new string[] { "Left", "Center", "Right", "OFF" });\r
-                       this.list項目リスト.Add(this.iDrumsComboPosition);\r
-                       this.iDrumsPosition = new CItemList("Position", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.判定文字表示位置.Drums,\r
-                               "ドラムの判定文字の表示位置を指定\nします。\n  P-A: レーン上\n  P-B: 判定ライン下\n  OFF: 表示しない",\r
-                               "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
-                               new string[] { "P-A", "P-B", "OFF" });\r
-                       this.list項目リスト.Add(this.iDrumsPosition);\r
+                       this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,\r
+                               "Riskyモードの設定:\n" +\r
+                               "1以上の値にすると、その回数分の\n" +\r
+                               "Poor/MissでFAILEDとなります。\n" +\r
+                               "0にすると無効になり、\n" +\r
+                               "DamageLevelに従ったゲージ増減と\n" +\r
+                               "なります。\n" +\r
+                               "StageFailedの設定と併用できます。",\r
+                               "Risky mode:\n" +\r
+                               "Set over 1, in case you'd like to specify\n" +\r
+                               " the number of Poor/Miss times to be\n" +\r
+                               " FAILED.\n" +\r
+                               "Set 0 to disable Risky mode." );\r
+                       this.list項目リスト.Add( this.iSystemRisky );\r
 \r
-       \r
-                       this.iSystemHHGroup = new CItemList("HH Group", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eHHGroup,\r
-                       "ハイハットレーン打ち分け設定:\n左シンバル、ハイハットオープン、ハ\nイハットクローズの打ち分け方法を指\n定します。\n  HH-0 ... LC | HHC | HHO\n  HH-1 ... LC & ( HHC | HHO )\n  HH-2 ... LC | ( HHC & HHO )\n  HH-3 ... LC & HHC & HHO\n",\r
-                       "HH-0: LC|HC|HO; all are separated.\nHH-1: LC&(HC|HO);\n HC and HO are separted.\n LC is grouped with HC and HHO.\nHH-2: LC|(HC&HO);\n LC and HHs are separated.\n HC and HO are grouped.\nHH-3: LC&HC&HO; all are grouped.",\r
-                       new string[] { "HH-0", "HH-1", "HH-2", "HH-3" } );\r
+                       this.iDrumsTight = new CItemToggle( "Tight", CDTXMania.ConfigIni.bTight,\r
+                               "ドラムチップのないところでパッドを\n" +\r
+                               "叩くとミスになります。",\r
+                               "It becomes MISS to hit pad without\n" +\r
+                               " chip." );\r
+                       this.list項目リスト.Add( this.iDrumsTight );\r
+\r
+                       this.iDrumsComboPosition = new CItemList( "ComboPosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.ドラムコンボ文字の表示位置,\r
+                               "演奏時のドラムコンボ文字列の位置\n" +\r
+                               "を指定します。",\r
+                               "The display position for Drums Combo.\n" +\r
+                               "Note that it doesn't take effect\n" +\r
+                               " at Autoplay ([Left] is forcely used).",\r
+                               new string[] { "Left", "Center", "Right", "OFF" } );\r
+                       this.list項目リスト.Add( this.iDrumsComboPosition );\r
+\r
+                       this.iDrumsPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Drums,\r
+                               "ドラムの判定文字の表示位置を指定\n" +\r
+                               "します。\n" +\r
+                               "  P-A: レーン上\n" +\r
+                               "  P-B: 判定ライン下\n" +\r
+                               "  OFF: 表示しない",\r
+                               "The position to show judgement mark.\n" +\r
+                               "(Perfect, Great, ...)\n" +\r
+                               "\n" +\r
+                               " P-A: on the lanes.\n" +\r
+                               " P-B: under the hit bar.\n" +\r
+                               " OFF: no judgement mark.",\r
+                               new string[] { "P-A", "P-B", "OFF" } );\r
+                       this.list項目リスト.Add( this.iDrumsPosition );\r
+\r
+\r
+                       this.iSystemHHGroup = new CItemList( "HH Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHHGroup,\r
+                               "ハイハットレーン打ち分け設定:\n" +\r
+                               "左シンバル、ハイハットオープン、ハ\n" +\r
+                               "イハットクローズの打ち分け方法を指\n" +\r
+                               "定します。\n" +\r
+                               "  HH-0 ... LC | HHC | HHO\n" +\r
+                               "  HH-1 ... LC & ( HHC | HHO )\n" +\r
+                               "  HH-2 ... LC | ( HHC & HHO )\n" +\r
+                               "  HH-3 ... LC & HHC & HHO\n" +\r
+                               "\n" +\r
+                               "※BD Group が BD-1 である場合、\n" +\r
+                               " この項目は変更できません。\n",\r
+                               "HH-0: LC|HC|HO; all are separated.\n" +\r
+                               "HH-1: LC&(HC|HO);\n" +\r
+                               " HC and HO are separted.\n" +\r
+                               " LC is grouped with HC and HHO.\n" +\r
+                               "HH-2: LC|(HC&HO);\n" +\r
+                               " LC and HHs are separated.\n" +\r
+                               " HC and HO are grouped.\n" +\r
+                               "HH-3: LC&HC&HO; all are grouped.\n" +\r
+                               "\n" +\r
+                               "* This value cannot be changed while \n" +\r
+                               "  BD Group is set as BD-1.",\r
+                               new string[] { "HH-0", "HH-1", "HH-2", "HH-3" } );\r
                        this.list項目リスト.Add( this.iSystemHHGroup );\r
+\r
                        this.iSystemFTGroup = new CItemList( "FT Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eFTGroup,\r
-                               "フロアタム打ち分け設定:\nロータムとフロアタムの打ち分け方法\nを指定します。\n  FT-0 ... LT | FT\n  FT-1 ... LT & FT\n",\r
-                               "FT-0: LT|FT\n LT and FT are separated.\nFT-1: LT&FT\n LT and FT are grouped.",\r
+                               "フロアタム打ち分け設定:\n" +\r
+                               "ロータムとフロアタムの打ち分け方法\n" +\r
+                               "を指定します。\n" +\r
+                               "  FT-0 ... LT | FT\n" +\r
+                               "  FT-1 ... LT & FT\n",\r
+                               "FT-0: LT|FT\n" +\r
+                               " LT and FT are separated.\n" +\r
+                               "FT-1: LT&FT\n" +\r
+                               " LT and FT are grouped.",\r
                                new string[] { "FT-0", "FT-1" } );\r
                        this.list項目リスト.Add( this.iSystemFTGroup );\r
+\r
                        this.iSystemCYGroup = new CItemList( "CY Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eCYGroup,\r
-                               "シンバルレーン打ち分け設定:\n右シンバルとライドシンバルの打ち分\nけ方法を指定します。\n  CY-0 ... CY | RD\n  CY-1 ... CY & RD\n",\r
-                               "CY-0: CY|RD\n CY and RD are separated.\nCY-1: CY&RD\n CY and RD are grouped.",\r
+                               "シンバルレーン打ち分け設定:\n" +\r
+                               "右シンバルとライドシンバルの打ち分\n" +\r
+                               "け方法を指定します。\n" +\r
+                               "  CY-0 ... CY | RD\n" +\r
+                               "  CY-1 ... CY & RD\n",\r
+                               "CY-0: CY|RD\n" +\r
+                               " CY and RD are separated.\n" +\r
+                               "CY-1: CY&RD\n" +\r
+                               " CY and RD are grouped.",\r
                                new string[] { "CY-0", "CY-1" } );\r
                        this.list項目リスト.Add( this.iSystemCYGroup );\r
+\r
                        this.iSystemBDGroup = new CItemList( "BD Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eBDGroup,         // #27029 2012.1.4 from\r
-                               "バス数設定:\nハイハットペダルをバスとして利用する\n方法を指定します。\n  BD-0 ... HP | BD\n  BD-1 ... FP & BD\n",    //\r
-                               "BD-0: HP|BD\n HiHatPedal is HiHat.\nBD-1: HP&BD\n HiHatPedal is Bass.",                                                                                        //\r
-                               new string[] { "BD-0", "BD-1" } );                                                                                                                                                                      //\r
-                       this.list項目リスト.Add( this.iSystemBDGroup );                                                                                                                                                    //\r
+                               "バス数設定:\n" +\r
+                               "ハイハットペダルをバスとして利用する\n" +\r
+                               "方法を指定します。\n" +\r
+                               "  BD-0 ... HP | BD\n" +\r
+                               "  BD-1 ... FP & BD\n" + \r
+                               "\n" +\r
+                               "注意:HitSound が OFF である場合は\n" + \r
+                               "不具合が生じます。\n" +\r
+                               "また、BD-1 を選択している間はいくつ\n" + \r
+                               "かのオプションが変更できなくなります。",\r
+                               "BD-0: HP|BD\n" +\r
+                               " HiHatPedal is HiHat.\n" +\r
+                               "BD-1: HP&BD\n" +\r
+                               " HiHatPedal is Bass.\n" +\r
+                               "\n" +\r
+                               "Warning: You should not use BD-1 with \n" +\r
+                               "HitSound OFF.\n" +\r
+                               "And you cannot change some options \n" +\r
+                               "while using BD-1.",\r
+                               new string[] { "BD-0", "BD-1" } );\r
+                       this.list項目リスト.Add( this.iSystemBDGroup );\r
 \r
                        this.iSystemCymbalFree = new CItemToggle( "CymbalFree", CDTXMania.ConfigIni.bシンバルフリー,\r
-                       "シンバルフリーモード:\n左シンバル・右シンバルの区別をなく\nします。ライドシンバルまで区別をな\nくすか否かは、CYGroup に従います。\n",\r
-                       "Turn ON to group LC (left cymbal) and\n CY (right cymbal).\nWhether RD (ride cymbal) is also\n grouped or not depends on the\n'CY Group' setting." );\r
+                               "シンバルフリーモード:\n" +\r
+                               "左シンバル・右シンバルの区別をなく\n" +\r
+                               "します。ライドシンバルまで区別をな\n" +\r
+                               "くすか否かは、CYGroup に従います。\n",\r
+                               "Turn ON to group LC (left cymbal) and\n" +\r
+                               " CY (right cymbal).\n" +\r
+                               "Whether RD (ride cymbal) is also\n" +\r
+                               " grouped or not depends on the\n" +\r
+                               "'CY Group' setting." );\r
                        this.list項目リスト.Add( this.iSystemCymbalFree );\r
 \r
-                       \r
+\r
                        this.iSystemHitSoundPriorityHH = new CItemList( "HH Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityHH,\r
-                               "発声音決定の優先順位:\nハイハットレーン打ち分け有効時に、\nチップの発声音をどのように決定する\nかを指定します。\n  C > P ... チップの音が優先\n  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're\n using HH-0,1 and 2.\n\nC>P:\n Chip sound is prior to the pad sound.\nP>C:\n Pad sound is prior to the chip sound.",\r
+                               "発声音決定の優先順位:\n" +\r
+                               "ハイハットレーン打ち分け有効時に、\n" +\r
+                               "チップの発声音をどのように決定する\n" +\r
+                               "かを指定します。\n" +\r
+                               "  C > P ... チップの音が優先\n" +\r
+                               "  P > C ... 叩いたパッドの音が優先\n" +\r
+                               "\n" +\r
+                               "※BD Group が BD-1 である場合、\n" +\r
+                               " この項目は変更できません。\n",\r
+                               "To specify playing sound in case you're\n" +\r
+                               " using HH-0,1 and 2.\n" +\r
+                               "\n" +\r
+                               "C>P:\n" +\r
+                               " Chip sound is prior to the pad sound.\n" +\r
+                               "P>C:\n" +\r
+                               " Pad sound is prior to the chip sound.\n" +\r
+                               "\n" +\r
+                               "* This value cannot be changed while \n" +\r
+                               "  BD Group is set as BD-1.",\r
                                new string[] { "C>P", "P>C" } );\r
                        this.list項目リスト.Add( this.iSystemHitSoundPriorityHH );\r
+\r
                        this.iSystemHitSoundPriorityFT = new CItemList( "FT Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityFT,\r
-                               "発声音決定の優先順位:\nフロアタム打ち分け有効時に、チップ\nの発声音をどのように決定するかを\n指定します。\n  C > P ... チップの音が優先\n  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're\n using FT-0.\n\nC>P:\n Chip sound is prior to the pad sound.\nP>C:\n Pad sound is prior to the chip sound.",\r
+                               "発声音決定の優先順位:\n" +\r
+                               "フロアタム打ち分け有効時に、チップ\n" +\r
+                               "の発声音をどのように決定するかを\n" +\r
+                               "指定します。\n" +\r
+                               "  C > P ... チップの音が優先\n" +\r
+                               "  P > C ... 叩いたパッドの音が優先",\r
+                               "To specify playing sound in case you're\n" +\r
+                               " using FT-0.\n" +\r
+                               "\n" +\r
+                               "C>P:\n" +\r
+                               " Chip sound is prior to the pad sound.\n" +\r
+                               "P>C:\n" +\r
+                               " Pad sound is prior to the chip sound.",\r
                                new string[] { "C>P", "P>C" } );\r
                        this.list項目リスト.Add( this.iSystemHitSoundPriorityFT );\r
+\r
                        this.iSystemHitSoundPriorityCY = new CItemList( "CY Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityCY,\r
-                               "発声音決定の優先順位:\nシンバルレーン打ち分け有効時に、\nチップの発声音をどのように決定する\nかを指定します。\n  C > P ... チップの音が優先\n  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're\n using CY-0.\n\nC>P:\n Chip sound is prior to the pad sound.\nP>C:\n Pad sound is prior to the chip sound.",\r
+                               "発声音決定の優先順位:\n" +\r
+                               "シンバルレーン打ち分け有効時に、\n" +\r
+                               "チップの発声音をどのように決定する\n" +\r
+                               "かを指定します。\n" +\r
+                               "  C > P ... チップの音が優先\n" +\r
+                               "  P > C ... 叩いたパッドの音が優先",\r
+                               "To specify playing sound in case you're\n" +\r
+                               " using CY-0.\n" +\r
+                               "\n" +\r
+                               "C>P:\n" +\r
+                               " Chip sound is prior to the pad sound.\n" +\r
+                               "P>C:\n" +\r
+                               " Pad sound is prior to the chip sound.",\r
                                new string[] { "C>P", "P>C" } );\r
                        this.list項目リスト.Add( this.iSystemHitSoundPriorityCY );\r
+\r
                        this.iSystemFillIn = new CItemToggle( "FillIn", CDTXMania.ConfigIni.bフィルイン有効,\r
-                               "フィルインエフェクトの使用:\nフィルイン区間の爆発パターンに特別\nのエフェクトを使用します。\nフィルインエフェクトの描画にはそれな\nりのマシンパワーが必要とされます。",\r
-                               "To show bursting effects at the fill-in\n zone or not." );\r
+                               "フィルインエフェクトの使用:\n" +\r
+                               "フィルイン区間の爆発パターンに特別\n" +\r
+                               "のエフェクトを使用します。\n" +\r
+                               "フィルインエフェクトの描画にはそれな\n" +\r
+                               "りのマシンパワーが必要とされます。",\r
+                               "To show bursting effects at the fill-in\n" +\r
+                               " zone or not." );\r
                        this.list項目リスト.Add( this.iSystemFillIn );\r
 \r
 \r
 \r
                        this.iSystemHitSound = new CItemToggle( "HitSound", CDTXMania.ConfigIni.bドラム打音を発声する,\r
-                       "打撃音の再生:\nこれをOFFにすると、パッドを叩いた\nときの音を再生しなくなります(ドラム\nのみ)。\nDTX の音色で演奏したい場合などに\nOFF にします。",\r
-                       "Turn OFF if you don't want to play\n hitting chip sound.\nIt is useful to play with real/electric\n drums kit." );\r
+                               "打撃音の再生:\n" +\r
+                               "これをOFFにすると、パッドを叩いた\n" +\r
+                               "ときの音を再生しなくなります(ドラム\n" +\r
+                               "のみ)。\n" +\r
+                               "DTX の音色で演奏したい場合などに\n" +\r
+                               "OFF にします。\n" + \r
+                               "\n" +\r
+                               "注意:BD Group が BD-1 である場合\n" +\r
+                               "は不具合が生じます。\n",\r
+                               "Turn OFF if you don't want to play\n" +\r
+                               " hitting chip sound.\n" +\r
+                               "It is useful to play with real/electric\n" +\r
+                               " drums kit.\n" + \r
+                               "\n" +\r
+                               "Warning: You should not use BD Group \n" + \r
+                               "BD-1 with HitSound OFF.\n" );\r
                        this.list項目リスト.Add( this.iSystemHitSound );\r
+\r
                        this.iSystemSoundMonitorDrums = new CItemToggle( "DrumsMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Drums,\r
-                               "ドラム音モニタ:\nドラム音を他の音より大きめの音量で\n発声します。\nただし、オートプレイの場合は通常音\n量で発声されます。",\r
-                               "To enhance the drums chip sound\n(except autoplay)." );\r
+                               "ドラム音モニタ:\n" +\r
+                               "ドラム音を他の音より大きめの音量で\n" +\r
+                               "発声します。\n" +\r
+                               "ただし、オートプレイの場合は通常音\n" +\r
+                               "量で発声されます。",\r
+                               "To enhance the drums chip sound\n" +\r
+                               "(except autoplay)." );\r
                        this.list項目リスト.Add( this.iSystemSoundMonitorDrums );\r
+\r
                        this.iSystemMinComboDrums = new CItemInteger( "D-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Drums,\r
-                               "表示可能な最小コンボ数(ドラム):\n画面に表示されるコンボの最小の数\nを指定します。\n1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo\n for the drums.\nYou can specify from 1 to 99999." );\r
+                               "表示可能な最小コンボ数(ドラム):\n" +\r
+                               "画面に表示されるコンボの最小の数\n" +\r
+                               "を指定します。\n" +\r
+                               "1 ~ 99999 の値が指定可能です。",\r
+                               "Initial number to show the combo\n" +\r
+                               " for the drums.\n" +\r
+                               "You can specify from 1 to 99999." );\r
                        this.list項目リスト.Add( this.iSystemMinComboDrums );\r
 \r
-                       \r
+\r
                        // #23580 2011.1.3 yyagi\r
                        this.iDrumsInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 0, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums,\r
-                               "ドラムの入力タイミングの微調整を\n行います。\n-99 ~ 0ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",\r
-                               "To adjust the drums input timing.\nYou can set from -99 to 0ms.\nTo decrease input lag, set minus value." );\r
+                               "ドラムの入力タイミングの微調整を\n" +\r
+                               "行います。\n" +\r
+                               "-99 ~ 0ms まで指定可能です。\n" +\r
+                               "入力ラグを軽減するためには、負の\n" +\r
+                               "値を指定してください。",\r
+                               "To adjust the drums input timing.\n" +\r
+                               "You can set from -99 to 0ms.\n" +\r
+                               "To decrease input lag, set minus value." );\r
                        this.list項目リスト.Add( this.iDrumsInputAdjustTimeMs );\r
+\r
                        // #24074 2011.01.23 add ikanick\r
                        this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Drums,\r
-                               "最高スキルと比較できるグラフを\n表示します。\nオートプレイだと表示されません。",\r
-                               "To draw Graph \n or not." );\r
+                               "最高スキルと比較できるグラフを\n" +\r
+                               "表示します。\n" +\r
+                               "オートプレイだと表示されません。",\r
+                               "To draw Graph \n" +\r
+                               " or not." );\r
                        this.list項目リスト.Add( this.iDrumsGraph );\r
 \r
                        this.iDrumsGoToKeyAssign = new CItemBase( "Drums Keys", CItemBase.Eパネル種別.通常,\r
-                               "ドラムのキー入力に関する項目を設\n定します。",\r
+                               "ドラムのキー入力に関する項目を設\n"+\r
+                               "定します。",\r
                                "Settings for the drums key/pad inputs." );\r
                        this.list項目リスト.Add( this.iDrumsGoToKeyAssign );\r
 \r
                        this.n現在の選択項目 = 0;\r
                        this.eメニュー種別 = Eメニュー種別.Drums;\r
                }\r
-\r
                public void t項目リストの設定・Guitar()\r
                {\r
                        this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
@@ -448,12 +679,13 @@ namespace DTXMania
                        this.n現在の選択項目 = 0;\r
                        this.eメニュー種別 = Eメニュー種別.Guitar;\r
                }\r
-\r
                public void t項目リストの設定・Bass()\r
                {\r
                        this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
 \r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
@@ -549,7 +781,6 @@ namespace DTXMania
                        }\r
                        // これ以外なら何もしない\r
                }\r
-\r
                public void tEnter押下()\r
                {\r
                        CDTXMania.Skin.sound決定音.t再生する();\r
@@ -563,7 +794,8 @@ namespace DTXMania
                        }\r
                        else if( this.b現在選択されている項目はReturnToMenuである )\r
                        {\r
-                               this.tConfigIniへ記録する();\r
+                               //this.tConfigIniへ記録する();\r
+                               //CONFIG中にスキン変化が発生すると面倒なので、一旦マスクした。\r
                        }\r
                        else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLC )\r
                        {\r
@@ -671,7 +903,21 @@ namespace DTXMania
                        }\r
                        else\r
                        {\r
-                               this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();\r
+                               // #27029 2012.1.5 from\r
+                               if( ( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD ) &&\r
+                                       ( ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHHGroup ) || ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHitSoundPriorityHH ) ) )\r
+                               {\r
+                                       // 変更禁止(何もしない)\r
+                               }\r
+                               else\r
+                               {\r
+                                       // 変更許可\r
+                                       this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();\r
+                               }\r
+\r
+\r
+                               // Enter押下後の後処理\r
+\r
                                if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemFullscreen )\r
                                {\r
                                        CDTXMania.app.b次のタイミングで全画面・ウィンドウ切り替えを行う = true;\r
@@ -719,18 +965,71 @@ namespace DTXMania
                                }\r
                                else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemBDGroup )                                       // #27029 2012.1.4 from\r
                                {\r
-                                       // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし\r
-                                       if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.全部打ち分ける )\r
-                                               this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.左シンバルのみ打ち分ける;\r
-                                       if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.ハイハットのみ打ち分ける )\r
-                                               this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.全部共通;\r
-\r
-                                       // HH Priority ... C>P → 変更なし / P>C → C>P\r
-                                       if( this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 == (int) E打ち分け時の再生の優先順位.PadがChipより優先 )\r
-                                               this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       if( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD )\r
+                                       {\r
+                                               // #27029 2012.1.5 from: 変更前の状態をバックアップする。\r
+                                               CDTXMania.ConfigIni.BackupOf1BD = new CConfigIni.CBackupOf1BD() {\r
+                                                       eHHGroup = (EHHGroup) this.iSystemHHGroup.n現在選択されている項目番号,\r
+                                                       eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityHH.n現在選択されている項目番号,\r
+                                               };\r
+\r
+                                               // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし\r
+                                               if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.全部打ち分ける )\r
+                                                       this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.左シンバルのみ打ち分ける;\r
+                                               if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.ハイハットのみ打ち分ける )\r
+                                                       this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.全部共通;\r
+\r
+                                               // HH Priority ... C>P → 変更なし / P>C → C>P\r
+                                               if( this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 == (int) E打ち分け時の再生の優先順位.PadがChipより優先 )\r
+                                                       this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               // #27029 2012.1.5 from: 変更前の状態に戻す。\r
+                                               this.iSystemHHGroup.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHHGroup;\r
+                                               this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHitSoundPriorityHH;\r
+                                               \r
+                                               CDTXMania.ConfigIni.BackupOf1BD = null;\r
+                                       }\r
+                               }\r
+                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemUseBoxDefSkin )                        // #28195 2012.5.6 yyagi\r
+                               {\r
+                                       CSkin.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;\r
+                               }\r
+                               #region [ スキン項目でEnterを押下した場合に限り、スキンの縮小サンプルを生成する。]\r
+                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )                        // #28195 2012.5.2 yyagi\r
+                               {\r
+                                       tGenerateSkinSample();\r
                                }\r
+                               #endregion\r
                        }\r
                }\r
+\r
+               private void tGenerateSkinSample()\r
+               {\r
+                       nSkinIndex = ( ( CItemList ) this.list項目リスト[ this.n現在の選択項目 ] ).n現在選択されている項目番号;\r
+                       if ( nSkinSampleIndex != nSkinIndex )\r
+                       {\r
+                               string path = skinSubFolders[ nSkinIndex ];\r
+                               path = System.IO.Path.Combine( path, @"Graphics\ScreenTitle background.jpg" );\r
+                               Bitmap bmSrc = new Bitmap( path );\r
+                               Bitmap bmDest = new Bitmap( bmSrc.Width / 4, bmSrc.Height / 4 );\r
+                               Graphics g = Graphics.FromImage( bmDest );\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
+                               if ( txSkinSample1 != null )\r
+                               {\r
+                                       CDTXMania.t安全にDisposeする( ref txSkinSample1 );\r
+                               }\r
+                               txSkinSample1 = CDTXMania.tテクスチャの生成( bmDest, false );\r
+                               g.Dispose();\r
+                               bmDest.Dispose();\r
+                               bmSrc.Dispose();\r
+                               nSkinSampleIndex = nSkinIndex;\r
+                       }\r
+               }\r
+\r
                public void t項目リストの設定・Exit()\r
                {\r
                        this.tConfigIniへ記録する();\r
@@ -738,8 +1037,11 @@ namespace DTXMania
                }\r
                public void t項目リストの設定・KeyAssignSystem()\r
                {\r
-                       //                      this.tConfigIniへ記録する();\r
+                       //this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iKeyAssignSystemReturnToMenu = new CItemBase( "<< ReturnTo Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
@@ -756,6 +1058,9 @@ namespace DTXMania
                {\r
 //                     this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iKeyAssignDrumsReturnToMenu = new CItemBase( "<< ReturnTo Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu.");\r
@@ -811,6 +1116,9 @@ namespace DTXMania
                {\r
 //                     this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iKeyAssignGuitarReturnToMenu = new CItemBase( "<< ReturnTo Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu.");\r
@@ -850,6 +1158,9 @@ namespace DTXMania
                {\r
 //                     this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
+\r
+                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+\r
                        this.iKeyAssignBassReturnToMenu = new CItemBase( "<< ReturnTo Menu", CItemBase.Eパネル種別.その他,\r
                                "左側のメニューに戻ります。",\r
                                "Return to left menu." );\r
@@ -885,6 +1196,7 @@ namespace DTXMania
                        this.n現在の選択項目 = 0;\r
                        this.eメニュー種別 = Eメニュー種別.KeyAssignBass;\r
                }\r
+\r
                public void t次に移動()\r
                {\r
                        CDTXMania.Skin.soundカーソル移動音.t再生する();\r
@@ -915,38 +1227,86 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
+                       if( this.b活性化してる )\r
+                               return;\r
+\r
                        this.list項目リスト = new List<CItemBase>();\r
                        this.eメニュー種別 = Eメニュー種別.Unknown;\r
-                       this.t項目リストの設定・System();\r
+\r
+                       #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
+                       int ns = ( CDTXMania.Skin.strSystemSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strSystemSkinSubfolders.Length;\r
+                       int nb = ( CDTXMania.Skin.strBoxDefSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strBoxDefSkinSubfolders.Length;\r
+                       skinSubFolders = new string[ ns + nb ];\r
+                       for ( int i = 0; i < ns; i++ )\r
+                       {\r
+                               skinSubFolders[ i ] = CDTXMania.Skin.strSystemSkinSubfolders[ i ];\r
+                       }\r
+                       for ( int i = 0; i < nb; i++ )\r
+                       {\r
+                               skinSubFolders[ ns + i ] = CDTXMania.Skin.strBoxDefSkinSubfolders[ i ];\r
+                       }\r
+                       skinSubFolder_org = CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true );\r
+                       Array.Sort( skinSubFolders );\r
+                       skinNames = CSkin.GetSkinName( skinSubFolders );\r
+                       nSkinIndex = Array.BinarySearch( skinSubFolders, skinSubFolder_org );\r
+                       if ( nSkinIndex < 0 )   // 念のため\r
+                       {\r
+                               nSkinIndex = 0;\r
+                       }\r
+                       nSkinSampleIndex = -1;\r
+                       #endregion\r
+\r
+                       this.t項目リストの設定・Bass();                // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、\r
+                       this.t項目リストの設定・Guitar();      // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。\r
+                       this.t項目リストの設定・Drums();       // \r
+                       this.t項目リストの設定・System();      // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。\r
                        this.b要素値にフォーカス中 = false;\r
                        this.n目標のスクロールカウンタ = 0;\r
                        this.n現在のスクロールカウンタ = 0;\r
                        this.nスクロール用タイマ値 = -1;\r
                        this.ct三角矢印アニメ = new CCounter();\r
+                       \r
                        base.On活性化();\r
                }\r
                public override void On非活性化()\r
                {\r
+                       if( this.b活性化してない )\r
+                               return;\r
+\r
                        this.tConfigIniへ記録する();\r
                        this.list項目リスト.Clear();\r
                        this.ct三角矢印アニメ = null;\r
+                       \r
                        base.On非活性化();\r
+\r
+                       if ( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true ) != this.skinSubFolder_org )\r
+                       {\r
+                               CDTXMania.Skin.PrepareReloadSkin();             // #28195 2012.5.2 yyagi CONFIG脱出時にSkin更新\r
+                               CDTXMania.Skin.ReloadSkin();                    //\r
+                       }\r
+\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if( !base.b活性化してない )\r
-                       {\r
-                               this.tx通常項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig itembox.png" ), false );\r
-                               this.txその他項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig itembox other.png" ), false );\r
-                               this.tx三角矢印 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig triangle arrow.png" ), false );\r
-                               base.OnManagedリソースの作成();\r
-                       }\r
+                       if( this.b活性化してない )\r
+                               return;\r
+\r
+                       this.tx通常項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig itembox.png" ), false );\r
+                       this.txその他項目行パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig itembox other.png" ), false );\r
+                       this.tx三角矢印 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig triangle arrow.png" ), false );\r
+                       this.txSkinSample1 = null;              // スキン選択時に動的に設定するため、ここでは初期化しない\r
+                       base.OnManagedリソースの作成();\r
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
+                       if( this.b活性化してない )\r
+                               return;\r
+\r
+                       CDTXMania.tテクスチャの解放( ref this.txSkinSample1 );\r
                        CDTXMania.tテクスチャの解放( ref this.tx通常項目行パネル );\r
                        CDTXMania.tテクスチャの解放( ref this.txその他項目行パネル );\r
                        CDTXMania.tテクスチャの解放( ref this.tx三角矢印 );\r
+               \r
                        base.OnManagedリソースの解放();\r
                }\r
                public override int On進行描画()\r
@@ -955,196 +1315,285 @@ namespace DTXMania
                }\r
                public int t進行描画( bool b項目リスト側にフォーカスがある )\r
                {\r
-                       if( !base.b活性化してない )\r
+                       if( this.b活性化してない )\r
+                               return 0;\r
+\r
+                       // 進行\r
+\r
+                       #region [ 初めての進行描画 ]\r
+                       //-----------------\r
+                       if( base.b初めての進行描画 )\r
                        {\r
-                               #region [初めての進行描画]\r
-                               if ( base.b初めての進行描画 )\r
+                               this.nスクロール用タイマ値 = CDTXMania.Timer.n現在時刻;\r
+                               this.ct三角矢印アニメ.t開始( 0, 9, 50, CDTXMania.Timer );\r
+                       \r
+                               base.b初めての進行描画 = false;\r
+                       }\r
+                       //-----------------\r
+                       #endregion\r
+\r
+                       this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;           // 記憶\r
+\r
+                       #region [ 項目スクロールの進行 ]\r
+                       //-----------------\r
+                       long n現在時刻 = CDTXMania.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
-                                       this.nスクロール用タイマ値 = CDTXMania.Timer.n現在時刻;\r
-                                       this.ct三角矢印アニメ.t開始( 0, 9, 50, CDTXMania.Timer );\r
-                                       base.b初めての進行描画 = false;\r
+                                       n加速度 = 2;\r
                                }\r
-                               #endregion\r
-                               this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;\r
-                               long num = CDTXMania.Timer.n現在時刻;\r
-                               if( num < this.nスクロール用タイマ値 )\r
+                               else if( n目標項目までのスクロール量 <= 300 )\r
                                {\r
-                                       this.nスクロール用タイマ値 = num;\r
+                                       n加速度 = 3;\r
                                }\r
-                               while( ( num - this.nスクロール用タイマ値 ) >= 2 )\r
+                               else if( n目標項目までのスクロール量 <= 500 )\r
                                {\r
-                                       int num2 = Math.Abs( (int) ( this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ ) );\r
-                                       int num3 = 0;\r
-                                       if( num2 <= 100 )\r
-                                       {\r
-                                               num3 = 2;\r
-                                       }\r
-                                       else if( num2 <= 300 )\r
-                                       {\r
-                                               num3 = 3;\r
-                                       }\r
-                                       else if( num2 <= 500 )\r
-                                       {\r
-                                               num3 = 4;\r
-                                       }\r
-                                       else\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
-                                               num3 = 8;\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
-                                               this.n現在のスクロールカウンタ += num3;\r
-                                               if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )\r
-                                               {\r
-                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
-                                               }\r
-                                       }\r
-                                       else if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )\r
-                                       {\r
-                                               this.n現在のスクロールカウンタ -= num3;\r
-                                               if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )\r
-                                               {\r
-                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
-                                               }\r
+                                               // 目標を超えたら目標値で停止。\r
+                                               this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
                                        }\r
-                                       if( this.n現在のスクロールカウンタ >= 100 )\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
-                                               this.n現在の選択項目 = this.t次の項目( this.n現在の選択項目 );\r
-                                               this.n現在のスクロールカウンタ -= 100;\r
-                                               this.n目標のスクロールカウンタ -= 100;\r
-                                               if( this.n目標のスクロールカウンタ == 0 )\r
-                                               {\r
-                                                       CDTXMania.stageコンフィグ.t項目変更通知();\r
-                                               }\r
+                                               CDTXMania.stageコンフィグ.t項目変更通知();\r
                                        }\r
-                                       else if( this.n現在のスクロールカウンタ <= -100 )\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
-                                               this.n現在の選択項目 = this.t前の項目( this.n現在の選択項目 );\r
-                                               this.n現在のスクロールカウンタ += 100;\r
-                                               this.n目標のスクロールカウンタ += 100;\r
-                                               if( this.n目標のスクロールカウンタ == 0 )\r
-                                               {\r
-                                                       CDTXMania.stageコンフィグ.t項目変更通知();\r
-                                               }\r
+                                               CDTXMania.stageコンフィグ.t項目変更通知();\r
                                        }\r
-                                       this.nスクロール用タイマ値 += 2;\r
                                }\r
-                               if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
+                               //-----------------\r
+                               #endregion\r
+\r
+                               this.nスクロール用タイマ値 += INTERVAL;\r
+                       }\r
+                       //-----------------\r
+                       #endregion\r
+                       \r
+                       #region [ ▲印アニメの進行 ]\r
+                       //-----------------\r
+                       if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
+                               this.ct三角矢印アニメ.t進行Loop();\r
+                       //-----------------\r
+                       #endregion\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
+                               nItem = this.t前の項目( nItem );\r
+\r
+                       for( int n行番号 = -4; n行番号 < 6; n行番号++ )                // n行番号 == 0 がフォーカスされている項目パネル。\r
+                       {\r
+                               #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
+                               //-----------------\r
+                               if( ( ( n行番号 == -4 ) && ( this.n現在のスクロールカウンタ > 0 ) ) ||           // 上に飛び出そうとしている\r
+                                       ( ( n行番号 == +5 ) && ( this.n現在のスクロールカウンタ < 0 ) ) )                // 下に飛び出そうとしている\r
                                {\r
-                                       this.ct三角矢印アニメ.t進行Loop();\r
+                                       nItem = this.t次の項目( nItem );\r
+                                       continue;\r
                                }\r
-                               this.ptパネルの基本座標[ 4 ].X = this.b項目リスト側にフォーカスがある ? 0x114 : 0x12d;\r
-                               int nItem = this.n現在の選択項目;\r
-                               for( int i = 0; i < 4; i++ )\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
+                               //-----------------\r
+                               switch( this.list項目リスト[ nItem ].eパネル種別 )\r
                                {\r
-                                       nItem = this.t前の項目( nItem );\r
+                                       case CItemBase.Eパネル種別.通常:\r
+                                               if( this.tx通常項目行パネル != null )\r
+                                                       this.tx通常項目行パネル.t2D描画( CDTXMania.app.Device, x, y );\r
+                                               break;\r
+\r
+                                       case CItemBase.Eパネル種別.その他:\r
+                                               if( this.txその他項目行パネル != null )\r
+                                                       this.txその他項目行パネル.t2D描画( CDTXMania.app.Device, x, y );\r
+                                               break;\r
                                }\r
-                               for( int j = -4; j < 6; j++ )\r
+                               //-----------------\r
+                               #endregion\r
+                               #region [ 現在の行の項目名を描画。]\r
+                               //-----------------\r
+                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );\r
+                               //-----------------\r
+                               #endregion\r
+                               #region [ 現在の行の項目の要素を描画。]\r
+                               //-----------------\r
+                               switch( this.list項目リスト[ nItem ].e種別 )\r
                                {\r
-                                       if( ( ( j == -4 ) && ( this.n現在のスクロールカウンタ > 0 ) ) || ( ( j == 5 ) && ( this.n現在のスクロールカウンタ < 0 ) ) )\r
-                                       {\r
-                                               nItem = this.t次の項目( nItem );\r
-                                               continue;\r
-                                       }\r
-                                       int index = j + 4;\r
-                                       int num8 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( ( j + 4 ) + 1 ) % 10 ) : ( ( ( ( j + 4 ) - 1 ) + 10 ) % 10 );\r
-                                       int x = this.ptパネルの基本座標[ index ].X + ( (int) ( ( this.ptパネルの基本座標[ num8 ].X - this.ptパネルの基本座標[ index ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );\r
-                                       int y = this.ptパネルの基本座標[ index ].Y + ( (int) ( ( this.ptパネルの基本座標[ num8 ].Y - this.ptパネルの基本座標[ index ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );\r
-                                       switch( this.list項目リスト[ nItem ].eパネル種別 )\r
-                                       {\r
-                                               case CItemBase.Eパネル種別.通常:\r
-                                                       if( this.tx通常項目行パネル != null )\r
-                                                       {\r
-                                                               this.tx通常項目行パネル.t2D描画( CDTXMania.app.Device, x, y );\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case CItemBase.Eパネル種別.その他:\r
-                                                       if( this.txその他項目行パネル != null )\r
-                                                       {\r
-                                                               this.txその他項目行パネル.t2D描画( CDTXMania.app.Device, x, y );\r
-                                                       }\r
-                                                       break;\r
-                                       }\r
-                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );\r
-                                       switch( this.list項目リスト[ nItem ].e種別 )\r
-                                       {\r
-                                               case CItemBase.E種別.ONorOFFトグル:\r
-                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );\r
-                                                       break;\r
+                                       case CItemBase.E種別.ONorOFFトグル:\r
+                                               #region [ *** ]\r
+                                               //-----------------\r
+                                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );\r
+                                               break;\r
+                                               //-----------------\r
+                                               #endregion\r
+\r
+                                       case CItemBase.E種別.ONorOFFor不定スリーステート:\r
+                                               #region [ *** ]\r
+                                               //-----------------\r
+                                               switch( ( (CItemThreeState) this.list項目リスト[ nItem ] ).e現在の状態 )\r
+                                               {\r
+                                                       case CItemThreeState.E状態.ON:\r
+                                                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "ON" );\r
+                                                               break;\r
 \r
-                                               case CItemBase.E種別.ONorOFFor不定スリーステート:\r
-                                                       switch( ( (CItemThreeState) this.list項目リスト[ nItem ] ).e現在の状態 )\r
-                                                       {\r
-                                                               case CItemThreeState.E状態.ON:\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "ON" );\r
-                                                                       break;\r
+                                                       case CItemThreeState.E状態.不定:\r
+                                                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "- -" );\r
+                                                               break;\r
 \r
-                                                               case CItemThreeState.E状態.不定:\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "- -" );\r
-                                                                       break;\r
+                                                       default:\r
+                                                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "OFF" );\r
+                                                               break;\r
+                                               }\r
+                                               break;\r
+                                               //-----------------\r
+                                               #endregion\r
+\r
+                                       case CItemBase.E種別.整数:          // #24789 2011.4.8 yyagi: add PlaySpeed supports (copied them from OPTION)\r
+                                               #region [ *** ]\r
+                                               //-----------------\r
+                                               if( this.list項目リスト[ nItem ] == this.iCommonPlaySpeed )\r
+                                               {\r
+                                                       double d = ( (double) ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 ) / 20.0;\r
+                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, d.ToString( "0.000" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
+                                               }\r
+                                               else if( this.list項目リスト[ nItem ] == this.iDrumsScrollSpeed || this.list項目リスト[ nItem ] == this.iGuitarScrollSpeed || this.list項目リスト[ nItem ] == this.iBassScrollSpeed )\r
+                                               {\r
+                                                       float f = ( ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 + 1 ) * 0.5f;\r
+                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, f.ToString( "x0.0" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
+                                               }\r
+                                               break;\r
+                                               //-----------------\r
+                                               #endregion\r
 \r
-                                                               default:\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "OFF" );\r
-                                                                       break;\r
-                                                       }\r
-                                                       break;\r
+                                       case CItemBase.E種別.リスト:       // #28195 2012.5.2 yyagi: add Skin supports\r
+                                               #region [ *** ]\r
+                                               //-----------------\r
+                                               {\r
+                                                       CItemList list = (CItemList) this.list項目リスト[ nItem ];\r
+                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );\r
 \r
-                                               case CItemBase.E種別.整数:          // #24789 2011.4.8 yyagi: add PlaySpeed supports (copied them from OPTION)\r
+                                                       #region [ 必要な場合に、Skinのサンプルを生成・描画する。#28195 2012.5.2 yyagi ]\r
+                                                       if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )\r
                                                        {\r
-                                                               if ( this.list項目リスト[ nItem ] == this.iCommonPlaySpeed )\r
+                                                               tGenerateSkinSample();          // 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。\r
+                                                               if ( txSkinSample1 != null )\r
                                                                {\r
-                                                                       double d = ( (double) ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 ) / 20.0;\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, d.ToString( "0.000" ), ( j == 0 ) && this.b要素値にフォーカス中 );\r
-                                                               }\r
-                                                               else if ( this.list項目リスト[ nItem ] == this.iDrumsScrollSpeed || this.list項目リスト[ nItem ] == this.iGuitarScrollSpeed || this.list項目リスト[ nItem ] == this.iBassScrollSpeed )\r
-                                                               {\r
-                                                                       float f = ( ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 + 1 ) * 0.5f;\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, f.ToString( "x0.0" ), ( j == 0 ) && this.b要素値にフォーカス中 );\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( j == 0 ) && this.b要素値にフォーカス中 );\r
+                                                                       txSkinSample1.t2D描画( CDTXMania.app.Device, 56, 300 );\r
                                                                }\r
                                                        }\r
+                                                       #endregion\r
                                                        break;\r
+                                               }\r
+                                               //-----------------\r
+                                               #endregion\r
+                               }\r
+                               //-----------------\r
+                               #endregion\r
+                               \r
+                               nItem = this.t次の項目( nItem );\r
+                       }\r
+                       //-----------------\r
+                       #endregion\r
+                       \r
+                       #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]\r
+                       //-----------------\r
+                       if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
+                       {\r
+                               int x;\r
+                               int y_upper;\r
+                               int y_lower;\r
+                       \r
+                               // 位置決定。\r
 \r
-                                               case CItemBase.E種別.リスト:\r
-                                                       {\r
-                                                               CItemList list = (CItemList) this.list項目リスト[ nItem ];\r
-                                                               CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );\r
-                                                               break;\r
-                                                       }\r
-                                       }\r
-                                       nItem = this.t次の項目( nItem );\r
+                               if( this.b要素値にフォーカス中 )\r
+                               {\r
+                                       x = 528;        // 要素値の上下あたり。\r
+                                       y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
+                                       y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
                                }\r
-                               if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
+                               else\r
                                {\r
-                                       int x;\r
-                                       int y_upper;\r
-                                       int y_lower;\r
-                                       if( !this.b要素値にフォーカス中 )\r
-                                       {\r
-                                               x = 0x114;\r
-                                               y_upper = 0xba - this.ct三角矢印アニメ.n現在の値;\r
-                                               y_lower = 0xfe + this.ct三角矢印アニメ.n現在の値;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               x = 0x210;\r
-                                               y_upper = 0xc6 - this.ct三角矢印アニメ.n現在の値;\r
-                                               y_lower = 0xf2 + this.ct三角矢印アニメ.n現在の値;\r
-                                       }\r
-                                       if( this.tx三角矢印 != null )\r
-                                       {\r
-                                               this.tx三角矢印.t2D描画( CDTXMania.app.Device, x, y_upper, new Rectangle( 0, 0, 0x20, 0x10 ) );\r
-                                               this.tx三角矢印.t2D描画( CDTXMania.app.Device, x, y_lower, new Rectangle( 0, 0x10, 0x20, 0x10 ) );\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.app.Device, x, y_upper, new Rectangle( 0, 0, 32, 16 ) );\r
+                                       this.tx三角矢印.t2D描画( CDTXMania.app.Device, x, y_lower, new Rectangle( 0, 16, 32, 16 ) );\r
                                }\r
                        }\r
+                       //-----------------\r
+                       #endregion\r
                        return 0;\r
                }\r
-\r
+       \r
 \r
                // その他\r
 \r
@@ -1251,6 +1700,13 @@ namespace DTXMania
                private CTexture tx三角矢印;\r
                private CTexture tx通常項目行パネル;\r
 \r
+               private CTexture txSkinSample1;                         // #28195 2012.5.2 yyagi\r
+               private string[] skinSubFolders;                        //\r
+               private string[] skinNames;                                     //\r
+               private string skinSubFolder_org;                       //\r
+               private int nSkinSampleIndex;                           //\r
+               private int nSkinIndex;                                         //\r
+\r
                private CItemBase iDrumsGoToKeyAssign;\r
                private CItemBase iGuitarGoToKeyAssign;\r
                private CItemBase iBassGoToKeyAssign;\r
@@ -1302,6 +1758,8 @@ namespace DTXMania
                private CItemInteger iDrumsInputAdjustTimeMs;           // #23580 2011.1.3 yyagi\r
                private CItemInteger iGuitarInputAdjustTimeMs;          //\r
                private CItemInteger iBassInputAdjustTimeMs;            //\r
+               private CItemList iSystemSkinSubfolder;                         // #28195 2012.5.2 yyagi\r
+               private CItemToggle iSystemUseBoxDefSkin;                       // #28195 2012.5.6 yyagi\r
 \r
                private int t前の項目( int nItem )\r
                {\r
@@ -1394,10 +1852,20 @@ namespace DTXMania
                        CDTXMania.ConfigIni.n自動再生音量 = this.iSystemAutoChipVolume.n現在の値;\r
                        CDTXMania.ConfigIni.bストイックモード = this.iSystemStoicMode.bON;\r
 \r
-                       CDTXMania.ConfigIni.nShowLagType = this.iSystemShowLag.n現在選択されている項目番号;                // #25370 2011.6.3 yyagi\r
-                       CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON;           // #25399 2011.6.9 yyagi\r
+                       CDTXMania.ConfigIni.nShowLagType = this.iSystemShowLag.n現在選択されている項目番号;                                // #25370 2011.6.3 yyagi\r
+                       CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON;                                   // #25399 2011.6.9 yyagi\r
 \r
-                       CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                           // #23559 2911.7.27 yyagi\r
+                       CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                                                           // #23559 2911.7.27 yyagi\r
+\r
+                       CDTXMania.ConfigIni.strSystemSkinSubfolderFullName = skinSubFolders[ nSkinIndex ];                              // #28195 2012.5.2 yyagi\r
+                       CDTXMania.Skin.SetCurrentSkinSubfolderFullName( CDTXMania.ConfigIni.strSystemSkinSubfolderFullName, true );\r
+                       CDTXMania.ConfigIni.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;                                                             // #28195 2012.5.6 yyagi\r
+\r
+//Trace.TraceInformation( "saved" );\r
+//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(true) );\r
+//Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
+//Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
+               \r
                }\r
                private void tConfigIniへ記録する・Bass()\r
                {\r