OSDN Git Service

#36057 コンフィグまわりのリファクタ(リソース不完全なので注意)
authorchnmr0 <chnmr0@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sat, 9 Apr 2016 15:47:27 +0000 (15:47 +0000)
committerchnmr0 <chnmr0@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sat, 9 Apr 2016 15:47:27 +0000 (15:47 +0000)
#36195 Sud Hid Inv の統合(内面)
#36170 演奏画面にオプションパネルを表示
#36169 譜面状態により表示対象楽器を非表示にする
#36131 ギターの拍子線を非表示
#36128 難易度ラベルが存在しないとき、()を表示しない
#36085 表示座標をコンフィグ画面から変えられるように変更
#36043 主に、C定数.cs に含まれる列挙型を DataContract にし、また型名、メンバ名をすべて英語に変更

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@973 16f42ceb-6dc6-49c8-ba94-f2d53467949d

94 files changed:
DTXManiaプロジェクト/DTXManiaプロジェクト.csproj
DTXManiaプロジェクト/Properties/Resources.Designer.cs
DTXManiaプロジェクト/Properties/Resources.ja-JP.resx [new file with mode: 0644]
DTXManiaプロジェクト/Properties/Resources.resx
DTXManiaプロジェクト/コード/アイテム/CItemBase.cs
DTXManiaプロジェクト/コード/アイテム/CItemInteger.cs
DTXManiaプロジェクト/コード/アイテム/CItemList.cs
DTXManiaプロジェクト/コード/アイテム/CItemThreeState.cs
DTXManiaプロジェクト/コード/アイテム/CItemToggle.cs
DTXManiaプロジェクト/コード/スコア、曲/CBoxDef.cs
DTXManiaプロジェクト/コード/スコア、曲/CChip.cs
DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs
DTXManiaプロジェクト/コード/スコア、曲/CDTXInput.cs
DTXManiaプロジェクト/コード/スコア、曲/CDTXNestedTypes.cs
DTXManiaプロジェクト/コード/スコア、曲/CScoreIni.cs
DTXManiaプロジェクト/コード/スコア、曲/CSetDef.cs
DTXManiaプロジェクト/コード/スコア、曲/CSong管理.cs
DTXManiaプロジェクト/コード/スコア、曲/Cスコア.cs
DTXManiaプロジェクト/コード/スコア、曲/C曲リストノード.cs
DTXManiaプロジェクト/コード/ステージ/01.起動/CStage起動.cs
DTXManiaプロジェクト/コード/ステージ/02.タイトル/CActEnumSongs.cs
DTXManiaプロジェクト/コード/ステージ/02.タイトル/CEnumSongs.cs
DTXManiaプロジェクト/コード/ステージ/02.タイトル/CStageタイトル.cs
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CActConfigKeyAssign.cs
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CActConfigList.cs
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs [new file with mode: 0644]
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/COption.cs [new file with mode: 0644]
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CStageコンフィグ.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectArtistComment.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectInformation.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectPopupMenu.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectPreimageパネル.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectPresound.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectQuickConfig.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectShowCurrentPosition.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelectステータスパネル.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelect曲リスト.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSortSongs.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CStage選曲.cs
DTXManiaプロジェクト/コード/ステージ/06.曲読み込み/CStage曲読み込み.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏AVI.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏BGA.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏Combo共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏Danger共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏Lane.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏RGB共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏WailingBonus共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏ゲージ共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏スクロール速度.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏スコア共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏ステージ失敗.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏ステータスパネル共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏チップファイアGB.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏パネル文字列.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏レーンフラッシュGB共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏判定文字列共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏演奏情報.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CInvisibleChip.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通_描画.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CWailingChip.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/C演奏判定ライン座標共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏Drumsグラフ.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏Drumsパッド.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs
DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultImage.cs
DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultParameterPanel.cs
DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultRank.cs
DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultSongBar.cs
DTXManiaプロジェクト/コード/ステージ/08.結果/CStage結果.cs
DTXManiaプロジェクト/コード/ステージ/09.終了/CStage終了.cs
DTXManiaプロジェクト/コード/ステージ/10.ChangeSkin/CStageChangeSkin.cs
DTXManiaプロジェクト/コード/ステージ/CActDFPFont.cs
DTXManiaプロジェクト/コード/ステージ/CActDigit.cs
DTXManiaプロジェクト/コード/ステージ/CActFIFOBlack.cs
DTXManiaプロジェクト/コード/ステージ/CActFIFOWhite.cs
DTXManiaプロジェクト/コード/ステージ/CActオプションパネル.cs
DTXManiaプロジェクト/コード/ステージ/CDTXVmode.cs
DTXManiaプロジェクト/コード/ステージ/CStage.cs
DTXManiaプロジェクト/コード/プラグイン/IPluginActivity.cs
DTXManiaプロジェクト/コード/全体/CActFlushGPU.cs
DTXManiaプロジェクト/コード/全体/CConfigIni.cs
DTXManiaプロジェクト/コード/全体/CDTXMania.cs
DTXManiaプロジェクト/コード/全体/CDTXVersion.cs
DTXManiaプロジェクト/コード/全体/CPad.cs
DTXManiaプロジェクト/コード/全体/CPreviewMagnifier.cs
DTXManiaプロジェクト/コード/全体/CPrivateFastFont.cs
DTXManiaプロジェクト/コード/全体/CPrivateFont.cs
DTXManiaプロジェクト/コード/全体/CSkin.cs
DTXManiaプロジェクト/コード/全体/Coordinates.cs
DTXManiaプロジェクト/コード/全体/C定数.cs
DTXManiaプロジェクト/コード/全体/Program.cs
DTXManiaプロジェクト/コード/全体/TextureFactory.cs

index eed802b..2084c5a 100644 (file)
@@ -17,7 +17,6 @@
     <SignAssembly>false</SignAssembly>\r
     <AssemblyOriginatorKeyFile>SlimDXKey_yyagi.snk</AssemblyOriginatorKeyFile>\r
     <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>\r
-    <ApplicationManifest>DTXManiaGR.exe.x86.manifest</ApplicationManifest>\r
     <FileUpgradeFlags>\r
     </FileUpgradeFlags>\r
     <UpgradeBackupLocation>\r
@@ -50,6 +49,8 @@
     <NoWarn>0219</NoWarn>\r
     <UseVSHostingProcess>false</UseVSHostingProcess>\r
     <Prefer32Bit>false</Prefer32Bit>\r
+    <DocumentationFile>\r
+    </DocumentationFile>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">\r
     <OutputPath>bin\x86\Release\</OutputPath>\r
@@ -63,6 +64,9 @@
     <UseVSHostingProcess>true</UseVSHostingProcess>\r
     <Prefer32Bit>false</Prefer32Bit>\r
   </PropertyGroup>\r
+  <PropertyGroup>\r
+    <ApplicationManifest>DTXManiaGR.exe.x86.manifest</ApplicationManifest>\r
+  </PropertyGroup>\r
   <ItemGroup>\r
     <Reference Include="Microsoft.VisualBasic" />\r
     <Reference Include="SlimDXc_net20x86_Jun2010">\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Compile Include="Properties\AssemblyInfo.cs" />\r
+    <EmbeddedResource Include="Properties\Resources.ja-JP.resx" />\r
+    <None Include="コード\ステージ\04.コンフィグ\DeletedCode.cs" />\r
+    <Compile Include="コード\ステージ\04.コンフィグ\CConfigXml.cs" />\r
+    <Compile Include="コード\ステージ\04.コンフィグ\COption.cs" />\r
     <Compile Include="コード\ステージ\07.演奏\CAct演奏Lane.cs" />\r
     <Compile Include="コード\ステージ\07.演奏\CStage演奏画面共通_描画.cs" />\r
     <Compile Include="コード\ステージ\07.演奏\TypesForPlayStage.cs" />\r
index 827269b..f054a35 100644 (file)
@@ -1,10 +1,10 @@
 //------------------------------------------------------------------------------\r
 // <auto-generated>\r
-//     このコードはツールによって生成されました。\r
-//     ランタイム バージョン:4.0.30319.34014\r
+//     This code was generated by a tool.\r
+//     Runtime Version:4.0.30319.42000\r
 //\r
-//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、\r
-//     コードが再生成されるときに損失したりします。\r
+//     Changes to this file may cause incorrect behavior and will be lost if\r
+//     the code is regenerated.\r
 // </auto-generated>\r
 //------------------------------------------------------------------------------\r
 \r
@@ -13,12 +13,12 @@ namespace DTXMania.Properties {
     \r
     \r
     /// <summary>\r
-    ///   ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。\r
+    ///   A strongly-typed resource class, for looking up localized strings, etc.\r
     /// </summary>\r
-    // このクラスは StronglyTypedResourceBuilder クラスが ResGen\r
-    // または Visual Studio のようなツールを使用して自動生成されました。\r
-    // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に\r
-    // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。\r
+    // This class was auto-generated by the StronglyTypedResourceBuilder\r
+    // class via a tool like ResGen or Visual Studio.\r
+    // To add or remove a member, edit your .ResX file then rerun ResGen\r
+    // with the /str option, or rebuild your VS project.\r
     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]\r
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r
@@ -33,7 +33,7 @@ namespace DTXMania.Properties {
         }\r
         \r
         /// <summary>\r
-        ///   このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。\r
+        ///   Returns the cached ResourceManager instance used by this class.\r
         /// </summary>\r
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r
         internal static global::System.Resources.ResourceManager ResourceManager {\r
@@ -47,8 +47,8 @@ namespace DTXMania.Properties {
         }\r
         \r
         /// <summary>\r
-        ///   厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、\r
-        ///   現在のスレッドの CurrentUICulture プロパティをオーバーライドします。\r
+        ///   Overrides the current thread's CurrentUICulture property for all\r
+        ///   resource lookups using this strongly typed resource class.\r
         /// </summary>\r
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r
         internal static global::System.Globalization.CultureInfo Culture {\r
@@ -61,7 +61,7 @@ namespace DTXMania.Properties {
         }\r
         \r
         /// <summary>\r
-        ///   (アイコン) に類似した型 System.Drawing.Icon のローカライズされたリソースを検索します。\r
+        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\r
         /// </summary>\r
         internal static System.Drawing.Icon dtx {\r
             get {\r
@@ -69,5 +69,1571 @@ namespace DTXMania.Properties {
                 return ((System.Drawing.Icon)(obj));\r
             }\r
         }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Play the right cymbal automatically..\r
+        /// </summary>\r
+        internal static string strCfgAutoCY {\r
+            get {\r
+                return ResourceManager.GetString("strCfgAutoCY", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Play the hi-hat (closed) automatically..\r
+        /// </summary>\r
+        internal static string strCfgAutoHHC {\r
+            get {\r
+                return ResourceManager.GetString("strCfgAutoHHC", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Play the hi-hat (opened) automatically..\r
+        /// </summary>\r
+        internal static string strCfgAutoHHO {\r
+            get {\r
+                return ResourceManager.GetString("strCfgAutoHHO", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Play the left cymbal automatically..\r
+        /// </summary>\r
+        internal static string strCfgAutoLCY {\r
+            get {\r
+                return ResourceManager.GetString("strCfgAutoLCY", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Play the ride cymbal automatically..\r
+        /// </summary>\r
+        internal static string strCfgAutoRD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgAutoRD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Switch to play the bass automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAllAuto {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAllAuto", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Press the bass B lane automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAutoB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAutoB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Press the bass G lane automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAutoG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAutoG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Pick the bass automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAutoPick {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAutoPick", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Press the bass R lane automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAutoR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAutoR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Do the bass wailing automatically..\r
+        /// </summary>\r
+        internal static string strCfgBsAutoWailing {\r
+            get {\r
+                return ResourceManager.GetString("strCfgBsAutoWailing", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Return to the left menu..\r
+        /// </summary>\r
+        internal static string strCfgCommon左側メニューに戻ります {\r
+            get {\r
+                return ResourceManager.GetString("strCfgCommon左側メニューに戻ります", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbAutoGhost {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbAutoGhost", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbChipSoundMonitor {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbChipSoundMonitor", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbDisplayCombo {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbDisplayCombo", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbDisplayGraph {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbDisplayGraph", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbDisplayJudge {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbDisplayJudge", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbHidden {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbHidden", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbHiddenFrom {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbHiddenFrom", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbInputAdjust {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbInputAdjust", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbInvisible {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbInvisible", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbLeft {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbLeft", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbLight {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbLight", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbMinComboDisp {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbMinComboDisp", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbRandom {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbRandom", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbReverse {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbReverse", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbScrollSpeed {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbScrollSpeed", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbSudden {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbSudden", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbSuddenFrom {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbSuddenFrom", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDgbSudHidInv {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbSudHidInv", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDgbTargetGhost {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDgbTargetGhost", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBassXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBassXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBassXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBassXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsComboXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsComboXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsComboXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsComboXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsComboYBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsComboYBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsComboYGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsComboYGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsJudge {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsJudge", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispBsJudgeLine {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispBsJudgeLine", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugXDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugXDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugYBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugYBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugYDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugYDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDebugYGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDebugYGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrComboXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrComboXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrComboXDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrComboXDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrComboYBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrComboYBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrComboYDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrComboYDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrJudge {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrJudge", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrJudgeLine {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrJudgeLine", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrumsXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrumsXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispDrumsXDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispDrumsXDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtComboXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtComboXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtComboXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtComboXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtComboYBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtComboYBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtComboYGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtComboYGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtJudge {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtJudge", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGtJudgeLine {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGtJudgeLine", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGuitarXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGuitarXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispGuitarXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispGuitarXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderBD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderBD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderBsB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderBsB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderBsG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderBsG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderBsR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderBsR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderBsW {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderBsW", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderCY {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderCY", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderFT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderFT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderGtB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderGtB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderGtG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderGtG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderGtR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderGtR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderGtW {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderGtW", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderHH {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderHH", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderHT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderHT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderLC {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderLC", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderLT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderLT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispLaneOrderSD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispLaneOrderSD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieXBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieXBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieXDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieXDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieXGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieXGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieYBoth {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieYBoth", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieYDr {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieYDr", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDispMovieYGB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDispMovieYGB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAllAuto {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAllAuto", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoBD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoBD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoFT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoFT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoHH {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoHH", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDrAutoHHC {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoHHC", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgDrAutoHHO {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoHHO", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoHT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoHT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoLT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoLT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrAutoSD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrAutoSD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrBDGroup {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrBDGroup", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrChipSound {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrChipSound", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrCYGroup {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrCYGroup", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrCymbalFree {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrCymbalFree", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrCYPriority {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrCYPriority", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrFillin {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrFillin", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrFTGroup {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrFTGroup", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrFTPriority {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrFTPriority", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrHHGroup {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrHHGroup", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrHHPriority {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrHHPriority", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgDrTight {\r
+            get {\r
+                return ResourceManager.GetString("strCfgDrTight", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAllAuto {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAllAuto", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAutoB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAutoB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAutoG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAutoG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAutoPick {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAutoPick", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAutoR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAutoR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgGtAutoWailing {\r
+            get {\r
+                return ResourceManager.GetString("strCfgGtAutoWailing", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsCancel {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsCancel", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsDecide {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsDecide", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsPick {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsPick", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignBsWailing {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignBsWailing", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignCY {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignCY", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignFT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignFT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtB {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtB", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtCancel {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtCancel", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtDecide {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtDecide", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtG {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtG", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtPick {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtPick", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtR {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtR", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignGtWailing {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignGtWailing", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignHH {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignHH", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignHHO {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignHHO", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignHP {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignHP", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignHT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignHT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignLC {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignLC", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignLT {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignLT", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignRD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignRD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignSD {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignSD", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Capture key assign:\nTo assign key for screen capture.\n(You can assign keyboard only. You can&apos;t use pads to capture screenshot.).\r
+        /// </summary>\r
+        internal static string strCfgKeyAssignキャプチャ説明 {\r
+            get {\r
+                return ResourceManager.GetString("strCfgKeyAssignキャプチャ説明", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSts {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSts", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysAdjustWaves {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysAdjustWaves", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysASIODevice {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysASIODevice", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysAudience {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysAudience", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysAutoResultCapture {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysAutoResultCapture", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysAutoVolume {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysAutoVolume", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysAVI {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysAVI", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysBGA {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysBGA", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgSysBGAAlpha {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysBGAAlpha", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysBGM {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysBGM", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysBufferingInput {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysBufferingInput", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysChipVolume {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysChipVolume", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysDamageLevel {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysDamageLevel", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgSysDark {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysDark", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgSysDebugInfo {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysDebugInfo", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgSysEnumSongs {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysEnumSongs", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysFullAVI {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysFullAVI", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysFullScreen {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysFullScreen", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysJudgePriority {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysJudgePriority", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysLog {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysLog", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysMasterVolume {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysMasterVolume", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysPlayMode {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysPlayMode", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysPlaySpeed {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysPlaySpeed", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysPreImageWait {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysPreImageWait", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysPreSoundWait {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysPreSoundWait", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysRandSubBox {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysRandSubBox", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysRisky {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysRisky", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysSaveScoreIni {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysSaveScoreIni", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysShowLagType {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysShowLagType", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to .\r
+        /// </summary>\r
+        internal static string strCfgSysSkin {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysSkin", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysSoundDeviceType {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysSoundDeviceType", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysSoundLoadLimiter {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysSoundLoadLimiter", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysStageFailed {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysStageFailed", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysStoic {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysStoic", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysTimeStretch {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysTimeStretch", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysUseBoxDefSkin {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysUseBoxDefSkin", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysUseOSTimer {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysUseOSTimer", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysVSync {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysVSync", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to test.\r
+        /// </summary>\r
+        internal static string strCfgSysWASAPIBufSize {\r
+            get {\r
+                return ResourceManager.GetString("strCfgSysWASAPIBufSize", resourceCulture);\r
+            }\r
+        }\r
     }\r
 }\r
diff --git a/DTXManiaプロジェクト/Properties/Resources.ja-JP.resx b/DTXManiaプロジェクト/Properties/Resources.ja-JP.resx
new file mode 100644 (file)
index 0000000..94efba6
--- /dev/null
@@ -0,0 +1,633 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<root>\r
+  <!-- \r
+    Microsoft ResX Schema \r
+    \r
+    Version 2.0\r
+    \r
+    The primary goals of this format is to allow a simple XML format \r
+    that is mostly human readable. The generation and parsing of the \r
+    various data types are done through the TypeConverter classes \r
+    associated with the data types.\r
+    \r
+    Example:\r
+    \r
+    ... ado.net/XML headers & schema ...\r
+    <resheader name="resmimetype">text/microsoft-resx</resheader>\r
+    <resheader name="version">2.0</resheader>\r
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>\r
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>\r
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">\r
+        <value>[base64 mime encoded serialized .NET Framework object]</value>\r
+    </data>\r
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r
+        <comment>This is a comment</comment>\r
+    </data>\r
+                \r
+    There are any number of "resheader" rows that contain simple \r
+    name/value pairs.\r
+    \r
+    Each data row contains a name, and value. The row also contains a \r
+    type or mimetype. Type corresponds to a .NET class that support \r
+    text/value conversion through the TypeConverter architecture. \r
+    Classes that don't support this are serialized and stored with the \r
+    mimetype set.\r
+    \r
+    The mimetype is used for serialized objects, and tells the \r
+    ResXResourceReader how to depersist the object. This is currently not \r
+    extensible. For a given mimetype the value must be set accordingly:\r
+    \r
+    Note - application/x-microsoft.net.object.binary.base64 is the format \r
+    that the ResXResourceWriter will generate, however the reader can \r
+    read any of the formats listed below.\r
+    \r
+    mimetype: application/x-microsoft.net.object.binary.base64\r
+    value   : The object must be serialized with \r
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r
+            : and then encoded with base64 encoding.\r
+    \r
+    mimetype: application/x-microsoft.net.object.soap.base64\r
+    value   : The object must be serialized with \r
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r
+            : and then encoded with base64 encoding.\r
+\r
+    mimetype: application/x-microsoft.net.object.bytearray.base64\r
+    value   : The object must be serialized into a byte array \r
+            : using a System.ComponentModel.TypeConverter\r
+            : and then encoded with base64 encoding.\r
+    -->\r
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">\r
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />\r
+    <xsd:element name="root" msdata:IsDataSet="true">\r
+      <xsd:complexType>\r
+        <xsd:choice maxOccurs="unbounded">\r
+          <xsd:element name="metadata">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" use="required" type="xsd:string" />\r
+              <xsd:attribute name="type" type="xsd:string" />\r
+              <xsd:attribute name="mimetype" type="xsd:string" />\r
+              <xsd:attribute ref="xml:space" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="assembly">\r
+            <xsd:complexType>\r
+              <xsd:attribute name="alias" type="xsd:string" />\r
+              <xsd:attribute name="name" type="xsd:string" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="data">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />\r
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />\r
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />\r
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />\r
+              <xsd:attribute ref="xml:space" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="resheader">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" type="xsd:string" use="required" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+        </xsd:choice>\r
+      </xsd:complexType>\r
+    </xsd:element>\r
+  </xsd:schema>\r
+  <resheader name="resmimetype">\r
+    <value>text/microsoft-resx</value>\r
+  </resheader>\r
+  <resheader name="version">\r
+    <value>2.0</value>\r
+  </resheader>\r
+  <resheader name="reader">\r
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </resheader>\r
+  <resheader name="writer">\r
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </resheader>\r
+  <data name="strCfgCommon左側メニューに戻ります" xml:space="preserve">\r
+    <value>左側メニューに戻ります。</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignキャプチャ説明" xml:space="preserve">\r
+    <value>キャプチャキー設定:\n画面キャプチャのキーの割り当てを設定します。</value>\r
+  </data>\r
+  <data name="strCfgSysFullScreen" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysVSync" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysStageFailed" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysFullAVI" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAVI" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBGA" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysLog" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysStoic" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAdjustWaves" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBGM" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAudience" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysSaveScoreIni" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysRandSubBox" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoHHC" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoSD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoBD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoHT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoLT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoFT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgAutoCY" xml:space="preserve">\r
+    <value>右シンバルを自動で演奏します。</value>\r
+  </data>\r
+  <data name="strCfgAutoLCY" xml:space="preserve">\r
+    <value>左シンバルを自動で演奏します。</value>\r
+  </data>\r
+  <data name="strCfgGtAutoR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgBsAutoR" xml:space="preserve">\r
+    <value>ベースのRレーンを自動で演奏します。</value>\r
+  </data>\r
+  <data name="strCfgBsAutoG" xml:space="preserve">\r
+    <value>ベースのGレーンを自動で抑えます。</value>\r
+  </data>\r
+  <data name="strCfgBsAutoB" xml:space="preserve">\r
+    <value>ベースのBレーンを自動で抑えます。</value>\r
+  </data>\r
+  <data name="strCfgBsAutoPick" xml:space="preserve">\r
+    <value>ベースを自動でピックします。</value>\r
+  </data>\r
+  <data name="strCfgBsAutoWailing" xml:space="preserve">\r
+    <value>ベースのウェイリングを自動で行います。</value>\r
+  </data>\r
+  <data name="strCfgSysSoundLoadLimiter" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAutoResultCapture" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBufferingInput" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysUseBoxDefSkin" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysUseOSTimer" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysTimeStretch" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCymbalFree" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrChipSound" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFillin" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrTight" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysSoundDeviceType" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysDamageLevel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysJudgePriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCYGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSts" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFTGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrHHGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrBDGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCYPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFTPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrHHPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPlayMode" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysShowLagType" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPreSoundWait" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPreImageWait" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAutoVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysChipVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPlaySpeed" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysRisky" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysWASAPIBufSize" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysMasterVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbChipSoundMonitor" xml:space="preserve">\r
+    <value>チップ音を強調します。</value>\r
+  </data>\r
+  <data name="strCfgDgbSudden" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbHidden" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbReverse" xml:space="preserve">\r
+    <value>チップの進行方向が逆になります。</value>\r
+  </data>\r
+  <data name="strCfgDgbRandom" xml:space="preserve">\r
+    <value>チップをランダムに配置します。Random:小節単位でレーンが交換されます。\nSuper:チップごとにレーンが交換されます。\nHyper:チップごとにレーン構成がランダムになります。\n</value>\r
+  </data>\r
+  <data name="strCfgDgbLight" xml:space="preserve">\r
+    <value>チップがないところでピックした時BADになりません。</value>\r
+  </data>\r
+  <data name="strCfgDgbLeft" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbScrollSpeed" xml:space="preserve">\r
+    <value>譜面のスクロール速度です。</value>\r
+  </data>\r
+  <data name="strCfgDgbInputAdjust" xml:space="preserve">\r
+    <value>入力のタイムスタンプを調節します。</value>\r
+  </data>\r
+  <data name="strCfgDgbMinComboDisp" xml:space="preserve">\r
+    <value>コンボを表示を開始するコンボ数です。</value>\r
+  </data>\r
+  <data name="strCfgDgbInvisible" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbAutoGhost" xml:space="preserve">\r
+    <value>自動ゴーストを設定します。\nPerfect:全自動演奏です。\nHiSkill:最高スキルのゴーストです。\nHiScore:最高スコアのゴーストです。\nLastPlay:最後にプレーした時のゴーストです。\nOnline:オンラインゴーストです。\nDTXMania Online Stats のプラグイン\nが必要です。</value>\r
+  </data>\r
+  <data name="strCfgDgbTargetGhost" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysASIODevice" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignLC" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHH" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHHO" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignSD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignLT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignFT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignCY" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignRD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHP" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtDecide" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtCancel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsDecide" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsCancel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAllAuto" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAllAuto" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgBsAllAuto" xml:space="preserve">\r
+    <value>ベースの自動演奏設定を一括で行います。</value>\r
+  </data>\r
+  <data name="strCfgDgbDisplayCombo" xml:space="preserve">\r
+    <value>コンボを表示します。</value>\r
+  </data>\r
+  <data name="strCfgDgbDisplayJudge" xml:space="preserve">\r
+    <value>判定文字列を表示します。</value>\r
+  </data>\r
+  <data name="strCfgSysBGAAlpha" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysDark" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysSkin" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbSudHidInv" xml:space="preserve">\r
+    <value>Hidden:ある地点からチップが見えなくなります。\nSudden:ある地点までチップが見えません。\nSudHid:HiddenとSuddenを同時に適用します。\nSInvisible:チップが見えなくなりますが、\nミスをすると一定時間再表示されます。\nFInvisible:チップが見えなくなります。</value>\r
+  </data>\r
+  <data name="strCfgSysDebugInfo" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysEnumSongs" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbHiddenFrom" xml:space="preserve">\r
+    <value>Hiddenモードでチップが見えなくなる位置です。</value>\r
+  </data>\r
+  <data name="strCfgDgbSuddenFrom" xml:space="preserve">\r
+    <value>Suddenモードでチップが表示される位置です。</value>\r
+  </data>\r
+  <data name="strCfgAutoHHO" xml:space="preserve">\r
+    <value>ハイハット(オープン)を自動で演奏します。</value>\r
+  </data>\r
+  <data name="strCfgAutoRD" xml:space="preserve">\r
+    <value>ライドシンバルを自動で演奏します。</value>\r
+  </data>\r
+  <data name="strCfgDispBassXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBassXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrumsXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrumsXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGuitarXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGuitarXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBD" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsG" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsR" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsW" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderCY" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderFT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtG" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtR" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtW" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderHH" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderHT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderLC" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderLT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderSD" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbDisplayGraph" xml:space="preserve">\r
+    <value>グラフを表示します。</value>\r
+  </data>\r
+</root>
\ No newline at end of file
index 69825d9..23c1473 100644 (file)
     <value>2.0</value>\r
   </resheader>\r
   <resheader name="reader">\r
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
   <resheader name="writer">\r
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
   <data name="dtx" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\dtx.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
+  <data name="strCfgCommon左側メニューに戻ります" xml:space="preserve">\r
+    <value>Return to the left menu.</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignキャプチャ説明" xml:space="preserve">\r
+    <value>Capture key assign:\nTo assign key for screen capture.\n(You can assign keyboard only. You can't use pads to capture screenshot.)</value>\r
+  </data>\r
+  <data name="strCfgSysFullScreen" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysVSync" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysStageFailed" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysFullAVI" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAVI" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBGA" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysLog" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysStoic" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAdjustWaves" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBGM" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAudience" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysSaveScoreIni" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysRandSubBox" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoHH" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoSD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoBD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoHT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoLT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAutoFT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgAutoCY" xml:space="preserve">\r
+    <value>Play the right cymbal automatically.</value>\r
+  </data>\r
+  <data name="strCfgAutoLCY" xml:space="preserve">\r
+    <value>Play the left cymbal automatically.</value>\r
+  </data>\r
+  <data name="strCfgGtAutoR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAutoWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgBsAutoR" xml:space="preserve">\r
+    <value>Press the bass R lane automatically.</value>\r
+  </data>\r
+  <data name="strCfgBsAutoG" xml:space="preserve">\r
+    <value>Press the bass G lane automatically.</value>\r
+  </data>\r
+  <data name="strCfgBsAutoB" xml:space="preserve">\r
+    <value>Press the bass B lane automatically.</value>\r
+  </data>\r
+  <data name="strCfgBsAutoPick" xml:space="preserve">\r
+    <value>Pick the bass automatically.</value>\r
+  </data>\r
+  <data name="strCfgBsAutoWailing" xml:space="preserve">\r
+    <value>Do the bass wailing automatically.</value>\r
+  </data>\r
+  <data name="strCfgSysSoundLoadLimiter" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAutoResultCapture" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysBufferingInput" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysUseBoxDefSkin" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysUseOSTimer" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysTimeStretch" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCymbalFree" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrChipSound" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFillin" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrTight" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysSoundDeviceType" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysDamageLevel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysJudgePriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCYGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSts" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFTGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrHHGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrBDGroup" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrCYPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrFTPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrHHPriority" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPlayMode" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysShowLagType" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPreSoundWait" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPreImageWait" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysAutoVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysChipVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysPlaySpeed" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysRisky" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysWASAPIBufSize" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysMasterVolume" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbChipSoundMonitor" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbSudden" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbHidden" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbReverse" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbRandom" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbLight" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbLeft" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbScrollSpeed" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbInputAdjust" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbMinComboDisp" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbInvisible" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbAutoGhost" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDgbTargetGhost" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgSysASIODevice" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignLC" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHH" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHHO" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignSD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignLT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignFT" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignCY" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignRD" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignHP" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtDecide" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignGtCancel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsR" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsG" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsB" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsPick" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsWailing" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsDecide" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgKeyAssignBsCancel" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgDrAllAuto" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgGtAllAuto" xml:space="preserve">\r
+    <value>test</value>\r
+  </data>\r
+  <data name="strCfgBsAllAuto" xml:space="preserve">\r
+    <value>Switch to play the bass automatically.</value>\r
+  </data>\r
+  <data name="strCfgDgbDisplayCombo" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbDisplayJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysBGAAlpha" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysDark" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysSkin" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbSudHidInv" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysDebugInfo" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgSysEnumSongs" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbHiddenFrom" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbSuddenFrom" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgAutoHHC" xml:space="preserve">\r
+    <value>Play the hi-hat (closed) automatically.</value>\r
+  </data>\r
+  <data name="strCfgAutoHHO" xml:space="preserve">\r
+    <value>Play the hi-hat (opened) automatically.</value>\r
+  </data>\r
+  <data name="strCfgAutoRD" xml:space="preserve">\r
+    <value>Play the ride cymbal automatically.</value>\r
+  </data>\r
+  <data name="strCfgDrAutoHHC" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDrAutoHHO" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBassXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBassXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsComboYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispBsJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDebugYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrComboYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrumsXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispDrumsXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtComboYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtJudge" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGtJudgeLine" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGuitarXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispGuitarXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBD" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsG" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsR" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderBsW" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderCY" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderFT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtG" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtR" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderGtW" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderHH" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderHT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderLC" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderLT" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispLaneOrderSD" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieXGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYBoth" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYDr" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDispMovieYGB" xml:space="preserve">\r
+    <value />\r
+  </data>\r
+  <data name="strCfgDgbDisplayGraph" xml:space="preserve">\r
+    <value />\r
+  </data>\r
 </root>
\ No newline at end of file
index 1a5a0d3..5f28270 100644 (file)
@@ -1,128 +1 @@
-using System;\r
-using System.Globalization;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Diagnostics;\r
-\r
-namespace DTXMania\r
-{\r
-       /// <summary>\r
-       /// すべてのアイテムの基本クラス。\r
-       /// </summary>\r
-       internal class CItemBase\r
-       {\r
-               // プロパティ\r
-\r
-               public Eパネル種別 eパネル種別;\r
-               public enum Eパネル種別\r
-               {\r
-                       通常,\r
-                       その他\r
-               }\r
-\r
-               public E種別 e種別;\r
-               public enum E種別\r
-               {\r
-                       基本形,\r
-                       ONorOFFトグル,\r
-                       ONorOFFor不定スリーステート,\r
-                       整数,\r
-                       リスト,\r
-                       切替リスト\r
-               }\r
-\r
-               public string str項目名;\r
-               public string str説明文;\r
-\r
-\r
-               // コンストラクタ\r
-\r
-               public CItemBase()\r
-               {\r
-                       this.str項目名 = "";\r
-                       this.str説明文 = "";\r
-               }\r
-               public CItemBase(string str項目名)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名);\r
-               }\r
-               public CItemBase(string str項目名, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, str説明文jp);\r
-               }\r
-               public CItemBase(string str項目名, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, str説明文jp, str説明文en);\r
-               }\r
-\r
-               public CItemBase(string str項目名, Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別);\r
-               }\r
-               public CItemBase(string str項目名, Eパネル種別 eパネル種別, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, str説明文jp);\r
-               }\r
-               public CItemBase(string str項目名, Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               // メソッド;子クラスで実装する\r
-\r
-               public virtual void tEnter押下()\r
-               {\r
-               }\r
-               public virtual void t項目値を次へ移動()\r
-               {\r
-               }\r
-               public virtual void t項目値を前へ移動()\r
-               {\r
-               }\r
-               public virtual void t初期化(string str項目名)\r
-               {\r
-                       this.t初期化(str項目名, Eパネル種別.通常);\r
-               }\r
-               public virtual void t初期化(string str項目名, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, Eパネル種別.通常, str説明文jp, str説明文jp);\r
-               }\r
-               public virtual void t初期化(string str項目名, string str説明文jp, string str説明文en)\r
-               {\r
-                       this.t初期化(str項目名, Eパネル種別.通常, str説明文jp, str説明文en);\r
-               }\r
-\r
-               public virtual void t初期化(string str項目名, Eパネル種別 eパネル種別)\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, "", "");\r
-               }\r
-               public virtual void t初期化(string str項目名, Eパネル種別 eパネル種別, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, str説明文jp, str説明文jp);\r
-               }\r
-               public virtual void t初期化(string str項目名, Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-               {\r
-                       this.str項目名 = str項目名;\r
-                       this.eパネル種別 = eパネル種別;\r
-                       this.str説明文 = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? str説明文jp : str説明文en;\r
-               }\r
-               public virtual object obj現在値()\r
-               {\r
-                       return null;\r
-               }\r
-               public virtual int GetIndex()\r
-               {\r
-                       return 0;\r
-               }\r
-               public virtual void SetIndex(int index)\r
-               {\r
-               }\r
-       }\r
-}\r
+
\ No newline at end of file
index a4c207d..5f28270 100644 (file)
@@ -1,133 +1 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
-       /// <summary>\r
-       /// 「整数」を表すアイテム。\r
-       /// </summary>\r
-       internal class CItemInteger : CItemBase\r
-       {\r
-               // プロパティ\r
-\r
-               public int n現在の値;\r
-               public bool b値がフォーカスされている;\r
-\r
-\r
-               // コンストラクタ\r
-\r
-               public CItemInteger()\r
-               {\r
-                       base.e種別 = CItemBase.E種別.整数;\r
-                       this.n最小値 = 0;\r
-                       this.n最大値 = 0;\r
-                       this.n現在の値 = 0;\r
-                       this.b値がフォーカスされている = false;\r
-               }\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値);\r
-               }\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, str説明文jp);\r
-               }\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, eパネル種別);\r
-               }\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, eパネル種別, str説明文jp);\r
-               }\r
-               public CItemInteger(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, eパネル種別, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               // CItemBase 実装\r
-\r
-               public override void tEnter押下()\r
-               {\r
-                       this.b値がフォーカスされている = !this.b値がフォーカスされている;\r
-               }\r
-               public override void t項目値を次へ移動()\r
-               {\r
-                       if (++this.n現在の値 > this.n最大値)\r
-                       {\r
-                               this.n現在の値 = this.n最大値;\r
-                       }\r
-               }\r
-               public override void t項目値を前へ移動()\r
-               {\r
-                       if (--this.n現在の値 < this.n最小値)\r
-                       {\r
-                               this.n現在の値 = this.n最小値;\r
-                       }\r
-               }\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値)\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, CItemBase.Eパネル種別.通常, "", "");\r
-               }\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, CItemBase.Eパネル種別.通常, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値, string str説明文jp, string str説明文en)\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, CItemBase.Eパネル種別.通常, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別)\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, eパネル種別, "", "");\r
-               }\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, n最小値, n最大値, n初期値, eパネル種別, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, int n最小値, int n最大値, int n初期値, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-               {\r
-                       base.t初期化(str項目名, eパネル種別, str説明文jp, str説明文en);\r
-                       this.n最小値 = n最小値;\r
-                       this.n最大値 = n最大値;\r
-                       this.n現在の値 = n初期値;\r
-                       this.b値がフォーカスされている = false;\r
-               }\r
-               public override object obj現在値()\r
-               {\r
-                       return this.n現在の値;\r
-               }\r
-               public override int GetIndex()\r
-               {\r
-                       return this.n現在の値;\r
-               }\r
-               public override void SetIndex(int index)\r
-               {\r
-                       this.n現在の値 = index;\r
-               }\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private int n最小値;\r
-               private int n最大値;\r
-               //-----------------\r
-               #endregion\r
-       }\r
-}\r
+
\ No newline at end of file
index 3b2c92b..5f28270 100644 (file)
@@ -1,159 +1 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
-       /// <summary>\r
-       /// 「リスト」(複数の固定値からの1つを選択可能)を表すアイテム。\r
-       /// </summary>\r
-       internal class CItemList : CItemBase\r
-       {\r
-               // プロパティ\r
-\r
-               public List<string> list項目値;\r
-               public int n現在選択されている項目番号;\r
-\r
-\r
-               // コンストラクタ\r
-\r
-               public CItemList()\r
-               {\r
-                       base.e種別 = CItemBase.E種別.リスト;\r
-                       this.n現在選択されている項目番号 = 0;\r
-                       this.list項目値 = new List<string>();\r
-               }\r
-               public CItemList(string str項目名)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名);\r
-               }\r
-               public CItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別);\r
-               }\r
-               public CItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, arg項目リスト);\r
-               }\r
-               public CItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, str説明文jp, arg項目リスト);\r
-               }\r
-               public CItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, string str説明文en, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, str説明文jp, str説明文en, arg項目リスト);\r
-               }\r
-\r
-\r
-               // CItemBase 実装\r
-\r
-               public override void tEnter押下()\r
-               {\r
-                       this.t項目値を次へ移動();\r
-               }\r
-               public override void t項目値を次へ移動()\r
-               {\r
-                       if (++this.n現在選択されている項目番号 >= this.list項目値.Count)\r
-                       {\r
-                               this.n現在選択されている項目番号 = 0;\r
-                       }\r
-               }\r
-               public override void t項目値を前へ移動()\r
-               {\r
-                       if (--this.n現在選択されている項目番号 < 0)\r
-                       {\r
-                               this.n現在選択されている項目番号 = this.list項目値.Count - 1;\r
-                       }\r
-               }\r
-               public override void t初期化(string str項目名, CItemBase.Eパネル種別 eパネル種別)\r
-               {\r
-                       base.t初期化(str項目名, eパネル種別);\r
-                       this.n現在選択されている項目番号 = 0;\r
-                       this.list項目値.Clear();\r
-               }\r
-               public void t初期化(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, params string[] arg項目リスト)\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, "", "", arg項目リスト);\r
-               }\r
-               public void t初期化(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, params string[] arg項目リスト)\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, str説明文jp, str説明文jp, arg項目リスト);\r
-               }\r
-               public void t初期化(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, string str説明文en, params string[] arg項目リスト)\r
-               {\r
-                       base.t初期化(str項目名, eパネル種別, str説明文jp, str説明文en);\r
-                       this.n現在選択されている項目番号 = n初期インデックス値;\r
-                       foreach (string str in arg項目リスト)\r
-                       {\r
-                               this.list項目値.Add(str);\r
-                       }\r
-               }\r
-               public override object obj現在値()\r
-               {\r
-                       return this.list項目値[n現在選択されている項目番号];\r
-               }\r
-               public override int GetIndex()\r
-               {\r
-                       return n現在選択されている項目番号;\r
-               }\r
-               public override void SetIndex(int index)\r
-               {\r
-                       n現在選択されている項目番号 = index;\r
-               }\r
-       }\r
-\r
-\r
-\r
-\r
-       /// <summary>\r
-       /// 簡易コンフィグの「切り替え」に使用する、「リスト」(複数の固定値からの1つを選択可能)を表すアイテム。\r
-       /// e種別が違うのと、tEnter押下()で何もしない以外は、「リスト」そのまま。\r
-       /// </summary>\r
-       internal class CSwitchItemList : CItemList\r
-       {\r
-               // コンストラクタ\r
-\r
-               public CSwitchItemList()\r
-               {\r
-                       base.e種別 = CItemBase.E種別.切替リスト;\r
-                       this.n現在選択されている項目番号 = 0;\r
-                       this.list項目値 = new List<string>();\r
-               }\r
-               public CSwitchItemList(string str項目名)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名);\r
-               }\r
-               public CSwitchItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別);\r
-               }\r
-               public CSwitchItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, arg項目リスト);\r
-               }\r
-               public CSwitchItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, str説明文jp, arg項目リスト);\r
-               }\r
-               public CSwitchItemList(string str項目名, CItemBase.Eパネル種別 eパネル種別, int n初期インデックス値, string str説明文jp, string str説明文en, params string[] arg項目リスト)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, eパネル種別, n初期インデックス値, str説明文jp, str説明文en, arg項目リスト);\r
-               }\r
-\r
-               public override void tEnter押下()\r
-               {\r
-                       // this.t項目値を次へ移動();    // 何もしない\r
-               }\r
-       }\r
-\r
-}\r
+
\ No newline at end of file
index 32448b1..5f28270 100644 (file)
@@ -1,162 +1 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
-       /// <summary>\r
-       /// 「スリーステート」(ON, OFF, 不定 の3状態)を表すアイテム。\r
-       /// </summary>\r
-       internal class CItemThreeState : CItemBase\r
-       {\r
-               // プロパティ\r
-\r
-               public E状態 e現在の状態;\r
-               public enum E状態\r
-               {\r
-                       ON,\r
-                       OFF,\r
-                       不定\r
-               }\r
-\r
-\r
-               // コンストラクタ\r
-\r
-               public CItemThreeState()\r
-               {\r
-                       base.e種別 = CItemBase.E種別.ONorOFFor不定スリーステート;\r
-                       this.e現在の状態 = E状態.不定;\r
-               }\r
-               public CItemThreeState(string str項目名, E状態 e初期状態)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態);\r
-               }\r
-               public CItemThreeState(string str項目名, E状態 e初期状態, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, str説明文jp, str説明文jp);\r
-               }\r
-               public CItemThreeState(string str項目名, E状態 e初期状態, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, str説明文jp, str説明文en);\r
-               }\r
-\r
-               public CItemThreeState(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, eパネル種別);\r
-               }\r
-               public CItemThreeState(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, eパネル種別, str説明文jp, str説明文jp);\r
-               }\r
-               public CItemThreeState(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, eパネル種別, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               // CItemBase 実装\r
-\r
-               public override void tEnter押下()\r
-               {\r
-                       this.t項目値を次へ移動();\r
-               }\r
-               public override void t項目値を次へ移動()\r
-               {\r
-                       switch (this.e現在の状態)\r
-                       {\r
-                               case E状態.ON:\r
-                                       this.e現在の状態 = E状態.OFF;\r
-                                       return;\r
-\r
-                               case E状態.OFF:\r
-                                       this.e現在の状態 = E状態.ON;\r
-                                       return;\r
-\r
-                               case E状態.不定:\r
-                                       this.e現在の状態 = E状態.ON;\r
-                                       return;\r
-                       }\r
-               }\r
-               public override void t項目値を前へ移動()\r
-               {\r
-                       switch (this.e現在の状態)\r
-                       {\r
-                               case E状態.ON:\r
-                                       this.e現在の状態 = E状態.OFF;\r
-                                       return;\r
-\r
-                               case E状態.OFF:\r
-                                       this.e現在の状態 = E状態.ON;\r
-                                       return;\r
-\r
-                               case E状態.不定:\r
-                                       this.e現在の状態 = E状態.OFF;\r
-                                       return;\r
-                       }\r
-               }\r
-               public void t初期化(string str項目名, E状態 e初期状態)\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, CItemBase.Eパネル種別.通常);\r
-               }\r
-               public void t初期化(string str項目名, E状態 e初期状態, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, CItemBase.Eパネル種別.通常, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, E状態 e初期状態, string str説明文jp, string str説明文en)\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, CItemBase.Eパネル種別.通常, str説明文jp, str説明文en);\r
-               }\r
-\r
-               public void t初期化(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別)\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, CItemBase.Eパネル種別.通常, "", "");\r
-               }\r
-               public void t初期化(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, e初期状態, CItemBase.Eパネル種別.通常, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, E状態 e初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-               {\r
-                       base.t初期化(str項目名, eパネル種別, str説明文jp, str説明文en);\r
-                       this.e現在の状態 = e初期状態;\r
-               }\r
-               public override object obj現在値()\r
-               {\r
-                       if (this.e現在の状態 == E状態.不定)\r
-                       {\r
-                               return "- -";\r
-                       }\r
-                       else\r
-                       {\r
-                               return this.e現在の状態.ToString();\r
-                       }\r
-               }\r
-               public override int GetIndex()\r
-               {\r
-                       return (int)this.e現在の状態;\r
-               }\r
-               public override void SetIndex(int index)\r
-               {\r
-                       switch (index)\r
-                       {\r
-                               case 0:\r
-                                       this.e現在の状態 = E状態.ON;\r
-                                       break;\r
-                               case 1:\r
-                                       this.e現在の状態 = E状態.OFF;\r
-                                       break;\r
-                               case 2:\r
-                                       this.e現在の状態 = E状態.不定;\r
-                                       break;\r
-                               default:\r
-                                       throw new ArgumentOutOfRangeException();\r
-                       }\r
-               }\r
-       }\r
-}\r
+
\ No newline at end of file
index e2f7352..5f28270 100644 (file)
@@ -1,119 +1 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace DTXMania\r
-{\r
-       /// <summary>\r
-       /// 「トグル」(ON, OFF の2状態)を表すアイテム。\r
-       /// </summary>\r
-       internal class CItemToggle : CItemBase\r
-       {\r
-               // プロパティ\r
-\r
-               public bool bON;\r
-\r
-\r
-               // コンストラクタ\r
-\r
-               public CItemToggle()\r
-               {\r
-                       base.e種別 = CItemBase.E種別.ONorOFFトグル;\r
-                       this.bON = false;\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態);\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, str説明文jp);\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, str説明文jp, str説明文en);\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, eパネル種別);\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, eパネル種別, str説明文jp);\r
-               }\r
-               public CItemToggle(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-                       : this()\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, eパネル種別, str説明文jp, str説明文en);\r
-               }\r
-\r
-\r
-               // CItemBase 実装\r
-\r
-               public override void tEnter押下()\r
-               {\r
-                       this.t項目値を次へ移動();\r
-               }\r
-               public override void t項目値を次へ移動()\r
-               {\r
-                       this.bON = !this.bON;\r
-               }\r
-               public override void t項目値を前へ移動()\r
-               {\r
-                       this.t項目値を次へ移動();\r
-               }\r
-               public void t初期化(string str項目名, bool b初期状態)\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, CItemBase.Eパネル種別.通常);\r
-               }\r
-               public void t初期化(string str項目名, bool b初期状態, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, CItemBase.Eパネル種別.通常, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, bool b初期状態, string str説明文jp, string str説明文en)\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, CItemBase.Eパネル種別.通常, str説明文jp, str説明文en);\r
-               }\r
-\r
-               public void t初期化(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別)\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, eパネル種別, "", "");\r
-               }\r
-               public void t初期化(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp)\r
-               {\r
-                       this.t初期化(str項目名, b初期状態, eパネル種別, str説明文jp, str説明文jp);\r
-               }\r
-               public void t初期化(string str項目名, bool b初期状態, CItemBase.Eパネル種別 eパネル種別, string str説明文jp, string str説明文en)\r
-               {\r
-                       base.t初期化(str項目名, eパネル種別, str説明文jp, str説明文en);\r
-                       this.bON = b初期状態;\r
-               }\r
-               public override object obj現在値()\r
-               {\r
-                       return (this.bON) ? "ON" : "OFF";\r
-               }\r
-               public override int GetIndex()\r
-               {\r
-                       return (this.bON) ? 1 : 0;\r
-               }\r
-               public override void SetIndex(int index)\r
-               {\r
-                       switch (index)\r
-                       {\r
-                               case 0:\r
-                                       this.bON = false;\r
-                                       break;\r
-                               case 1:\r
-                                       this.bON = true;\r
-                                       break;\r
-                               default:\r
-                                       throw new ArgumentOutOfRangeException();\r
-                       }\r
-               }\r
-       }\r
-}\r
+
\ No newline at end of file
index f220647..6a7853d 100644 (file)
@@ -22,7 +22,7 @@ namespace DTXMania
                public string Premovie;\r
                public string Presound;\r
                public string Title;\r
-               public string SkinPath;         // ""ならユーザー指定スキン、さもなくばbox.def指定スキン。\r
+               public string SkinPath;     // ""ならユーザー指定スキン、さもなくばbox.def指定スキン。\r
 \r
                // コンストラクタ\r
 \r
@@ -43,7 +43,7 @@ namespace DTXMania
                        this.SkinPath = "";\r
                }\r
                public CBoxDef(string boxdefファイル名)\r
-                       : this()\r
+                               : this()\r
                {\r
                        this.t読み込み(boxdefファイル名);\r
                }\r
index 15fa3ba..b48f7a4 100644 (file)
@@ -11,24 +11,24 @@ namespace DTXMania
                public bool bHit { get; set; }\r
                public bool b可視 { get; set; }\r
                public int n透明度 { get; set; }\r
-               public int nLag { get; set; }                           // 2011.2.1 yyagi\r
+               public int nLag { get; set; }       // 2011.2.1 yyagi\r
                public int n楽器パートでの出現順 { get; set; }               // #35411 2015.08.20 chnmr0\r
                public bool bTargetGhost判定済み { get; set; }               // #35411 2015.08.22 chnmr0\r
                public bool extendInfoForGhost { get; set; } // 2015.9.29 chnmr0\r
 \r
-               public bool bIsAutoPlayed { get; private set; }                                                 // 2011.6.10 yyagi              \r
+               public bool bIsAutoPlayed { get; private set; }             // 2011.6.10 yyagi          \r
                public double dbチップサイズ倍率 { get; private set; }\r
                public double db実数値 { get; private set; }\r
-               public EAVI種別 eAVI種別 { get; private set; }\r
-               public EBGA種別 eBGA種別 { get; private set; }\r
-               public E楽器パート e楽器パート { get; private set; }\r
-               public Ech定義 eチャンネル番号 { get; private set; }\r
+               public EAVIType eAVI種別 { get; private set; }\r
+               public EBGAType eBGA種別 { get; private set; }\r
+               public EPart e楽器パート { get; private set; }\r
+               public EChannel eチャンネル番号 { get; private set; }\r
 \r
                /// <summary>\r
                /// バーからの距離(スクロールスピードを反映したチップの発声時刻)\r
                /// プロパティに対してインデクサsetできないためまずフィールドとして持ち、プロパティでアクセスできるようにします。\r
                /// </summary>\r
-               private STDGBVALUE<int> nバーからの距離dotInternal;\r
+               private STDGBSValue<int> nバーからの距離dotInternal;\r
                public int n整数値 { get; private set; }\r
                public int n整数値_内部番号 { get; private set; }\r
                public int n総移動時間 { get; private set; }\r
@@ -40,10 +40,10 @@ namespace DTXMania
                public CDTX.CBGAPAN rBGAPan { get; private set; }\r
                public CDTX.CBMP rBMP { get; private set; }\r
                public CDTX.CBMPTEX rBMPTEX { get; private set; }\r
-               public bool b演奏終了後も再生が続くチップである { get; private set; }  // #32248 2013.10.14 yyagi\r
-               public bool b空打ちチップである { get; private set; }                                  // #34029 2014.7.15 yyagi\r
+               public bool b演奏終了後も再生が続くチップである { get; private set; }  // #32248 2013.10.14 yyagi\r
+               public bool b空打ちチップである { get; private set; }          // #34029 2014.7.15 yyagi\r
 \r
-               public STDGBVALUE<int> nバーからの距離dot\r
+               public STDGBSValue<int> nバーからの距離dot\r
                {\r
                        get\r
                        {\r
@@ -59,8 +59,8 @@ namespace DTXMania
                        get\r
                        {\r
                                return (\r
-                                       this.eチャンネル番号 == Ech定義.BPM ||\r
-                                       this.eチャンネル番号 == Ech定義.BPMEx\r
+                                       this.eチャンネル番号 == EChannel.BPM ||\r
+                                       this.eチャンネル番号 == EChannel.BPMEx\r
                                );\r
                        }\r
                }\r
@@ -72,7 +72,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.HiHatClose <= eチャンネル番号 && eチャンネル番号 <= Ech定義.LeftBassDrum;\r
+                               return EChannel.HiHatClose <= eチャンネル番号 && eチャンネル番号 <= EChannel.LeftBassDrum;\r
                        }\r
                }\r
 \r
@@ -84,7 +84,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.HiHatClose <= eチャンネル番号 && eチャンネル番号 <= Ech定義.LeftCymbal;\r
+                               return EChannel.HiHatClose <= eチャンネル番号 && eチャンネル番号 <= EChannel.LeftCymbal;\r
                        }\r
                }\r
 \r
@@ -95,7 +95,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.HiHatClose_Hidden <= eチャンネル番号 && eチャンネル番号 <= Ech定義.LeftBassDrum_Hidden;\r
+                               return EChannel.HiHatClose_Hidden <= eチャンネル番号 && eチャンネル番号 <= EChannel.LeftBassDrum_Hidden;\r
                        }\r
                }\r
 \r
@@ -106,7 +106,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.HiHatClose_Hidden <= eチャンネル番号 && eチャンネル番号 <= Ech定義.LeftCymbal_Hidden;\r
+                               return EChannel.HiHatClose_Hidden <= eチャンネル番号 && eチャンネル番号 <= EChannel.LeftCymbal_Hidden;\r
                        }\r
                }\r
 \r
@@ -118,8 +118,8 @@ namespace DTXMania
                        get\r
                        {\r
                                return\r
-                                       (Ech定義.HiHatClose_NoChip <= eチャンネル番号 && eチャンネル番号 <= Ech定義.RideCymbal_NoChip) ||\r
-                                       (Ech定義.LeftCymbal_NoChip <= eチャンネル番号 && eチャンネル番号 <= Ech定義.LeftBassDrum_NoChip);\r
+                                       (EChannel.HiHatClose_NoChip <= eチャンネル番号 && eチャンネル番号 <= EChannel.RideCymbal_NoChip) ||\r
+                                       (EChannel.LeftCymbal_NoChip <= eチャンネル番号 && eチャンネル番号 <= EChannel.LeftBassDrum_NoChip);\r
                        }\r
                }\r
 \r
@@ -154,7 +154,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.Guitar_Open <= eチャンネル番号 && eチャンネル番号 <= Ech定義.Guitar_RGB;\r
+                               return EChannel.Guitar_Open <= eチャンネル番号 && eチャンネル番号 <= EChannel.Guitar_RGB;\r
                        }\r
                }\r
 \r
@@ -162,7 +162,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.Guitar_Open <= eチャンネル番号 && eチャンネル番号 <= Ech定義.Guitar_Wailing;\r
+                               return EChannel.Guitar_Open <= eチャンネル番号 && eチャンネル番号 <= EChannel.Guitar_Wailing;\r
                        }\r
                }\r
 \r
@@ -173,7 +173,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.Bass_Open <= eチャンネル番号 && eチャンネル番号 <= Ech定義.Bass_RGB;\r
+                               return EChannel.Bass_Open <= eチャンネル番号 && eチャンネル番号 <= EChannel.Bass_RGB;\r
                        }\r
                }\r
 \r
@@ -181,13 +181,13 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.Bass_Open <= eチャンネル番号 && eチャンネル番号 <= Ech定義.Bass_Wailing;\r
+                               return EChannel.Bass_Open <= eチャンネル番号 && eチャンネル番号 <= EChannel.Bass_Wailing;\r
                        }\r
                }\r
 \r
-               public static bool bBass可視チップ_Wailing含む_st(Ech定義 e)\r
+               public static bool bBass可視チップ_Wailing含む_st(EChannel e)\r
                {\r
-                       return Ech定義.Bass_Open <= e && e <= Ech定義.Bass_Wailing;\r
+                       return EChannel.Bass_Open <= e && e <= EChannel.Bass_Wailing;\r
                }\r
 \r
                /// <summary>\r
@@ -252,7 +252,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public bool this[Ech定義 x]\r
+               public bool this[EChannel x]\r
                {\r
                        get\r
                        {\r
@@ -265,10 +265,10 @@ namespace DTXMania
                        get\r
                        {\r
                                return\r
-                                       ((eチャンネル番号 == Ech定義.BGALayer1) ||\r
-                                       (eチャンネル番号 == Ech定義.BGALayer2) ||\r
-                                       ((Ech定義.BGALayer3 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.BGALayer7)) ||\r
-                                       (eチャンネル番号 == Ech定義.BGALayer8));\r
+                                       ((eチャンネル番号 == EChannel.BGALayer1) ||\r
+                                       (eチャンネル番号 == EChannel.BGALayer2) ||\r
+                                       ((EChannel.BGALayer3 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.BGALayer7)) ||\r
+                                       (eチャンネル番号 == EChannel.BGALayer8));\r
                        }\r
                }\r
 \r
@@ -277,10 +277,10 @@ namespace DTXMania
                        get\r
                        {\r
                                return\r
-                                       ((eチャンネル番号 == Ech定義.BGALayer1_Swap) ||\r
-                                       (eチャンネル番号 == Ech定義.BGALayer2_Swap) ||\r
-                                       ((Ech定義.BGALayer3_Swap <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.BGALayer7_Swap)) ||\r
-                                       (eチャンネル番号 == Ech定義.BGALayer8_Swap));\r
+                                       ((eチャンネル番号 == EChannel.BGALayer1_Swap) ||\r
+                                       (eチャンネル番号 == EChannel.BGALayer2_Swap) ||\r
+                                       ((EChannel.BGALayer3_Swap <= eチャンネル番号) && (eチャンネル番号 <= EChannel.BGALayer7_Swap)) ||\r
+                                       (eチャンネル番号 == EChannel.BGALayer8_Swap));\r
                        }\r
                }\r
 \r
@@ -288,19 +288,19 @@ namespace DTXMania
                {\r
                        if (bDrums可視チップ)\r
                        {\r
-                               e楽器パート = E楽器パート.DRUMS;\r
+                               e楽器パート = EPart.Drums;\r
                        }\r
                        else if (bGuitar可視チップ)\r
                        {\r
-                               e楽器パート = E楽器パート.GUITAR;\r
+                               e楽器パート = EPart.Guitar;\r
                        }\r
                        else if (bBass可視チップ)\r
                        {\r
-                               e楽器パート = E楽器パート.BASS;\r
+                               e楽器パート = EPart.Bass;\r
                        }\r
                        else\r
                        {\r
-                               e楽器パート = E楽器パート.UNKNOWN;\r
+                               e楽器パート = EPart.Unknown;\r
                        }\r
                }\r
 \r
@@ -310,37 +310,37 @@ namespace DTXMania
                /// </summary>\r
                public void ConvertNoChip()\r
                {\r
-                       if (Ech定義.HiHatClose_NoChip <= eチャンネル番号 && eチャンネル番号 <= Ech定義.RideCymbal_NoChip)\r
+                       if (EChannel.HiHatClose_NoChip <= eチャンネル番号 && eチャンネル番号 <= EChannel.RideCymbal_NoChip)\r
                        {\r
                                b空打ちチップである = true;\r
                                eチャンネル番号 = eチャンネル番号 - 0xB0 + 0x10;\r
                        }\r
-                       else if (this[Ech定義.Guitar_NoChip] || this[Ech定義.Bass_NoChip])\r
+                       else if (this[EChannel.Guitar_NoChip] || this[EChannel.Bass_NoChip])\r
                        {\r
                                b空打ちチップである = true;\r
                        }\r
-                       else if (this[Ech定義.LeftCymbal_NoChip])\r
+                       else if (this[EChannel.LeftCymbal_NoChip])\r
                        {\r
                                b空打ちチップである = true;\r
-                               eチャンネル番号 = Ech定義.LeftCymbal;\r
+                               eチャンネル番号 = EChannel.LeftCymbal;\r
                        }\r
-                       else if (this[Ech定義.LeftPedal_NoChip])\r
+                       else if (this[EChannel.LeftPedal_NoChip])\r
                        {\r
                                b空打ちチップである = true;\r
-                               eチャンネル番号 = Ech定義.LeftPedal;\r
+                               eチャンネル番号 = EChannel.LeftPedal;\r
                        }\r
-                       else if (this[Ech定義.LeftBassDrum_NoChip])\r
+                       else if (this[EChannel.LeftBassDrum_NoChip])\r
                        {\r
                                b空打ちチップである = true;\r
-                               eチャンネル番号 = Ech定義.LeftBassDrum;\r
+                               eチャンネル番号 = EChannel.LeftBassDrum;\r
                        }\r
                }\r
 \r
                public void ConvertGBNoChip()\r
                {\r
-                       if (this[Ech定義.Guitar_NoChip] || this[Ech定義.Bass_NoChip])\r
+                       if (this[EChannel.Guitar_NoChip] || this[EChannel.Bass_NoChip])\r
                        {\r
-                               eチャンネル番号 = this[Ech定義.Guitar_NoChip] ? Ech定義.Guitar_Open : Ech定義.Bass_Open;\r
+                               eチャンネル番号 = this[EChannel.Guitar_NoChip] ? EChannel.Guitar_Open : EChannel.Bass_Open;\r
                        }\r
                }\r
 \r
@@ -353,19 +353,19 @@ namespace DTXMania
                        get\r
                        {\r
                                bool ret = false;\r
-                               Ech定義 x = eチャンネル番号;\r
-\r
-                               if (x == Ech定義.BGM ||\r
-                                       (Ech定義.HiHatClose <= x && x <= Ech定義.LeftBassDrum) ||\r
-                                       (Ech定義.DrumsFillin == x) ||\r
-                                       (Ech定義.Guitar_Open <= x && x <= Ech定義.Guitar_Wailing) || x == Ech定義.Guitar_WailingSound ||\r
-                                       (Ech定義.HiHatClose_Hidden <= x && x <= Ech定義.LeftBassDrum_Hidden) ||\r
-                                       (Ech定義.SE01 <= x && x <= Ech定義.SE09) ||\r
-                                       (Ech定義.SE10 <= x && x <= Ech定義.SE19) ||\r
-                                       (Ech定義.SE20 <= x && x <= Ech定義.SE29) ||\r
-                                       (Ech定義.SE30 <= x && x <= Ech定義.SE32) ||\r
-                                       (Ech定義.Bass_Open <= x && x <= Ech定義.Bass_Wailing) || x == Ech定義.Bass_WailingSound ||\r
-                                       (Ech定義.HiHatClose_NoChip <= x && x <= Ech定義.LeftBassDrum_NoChip)\r
+                               EChannel x = eチャンネル番号;\r
+\r
+                               if (x == EChannel.BGM ||\r
+                                       (EChannel.HiHatClose <= x && x <= EChannel.LeftBassDrum) ||\r
+                                       (EChannel.DrumsFillin == x) ||\r
+                                       (EChannel.Guitar_Open <= x && x <= EChannel.Guitar_Wailing) || x == EChannel.Guitar_WailingSound ||\r
+                                       (EChannel.HiHatClose_Hidden <= x && x <= EChannel.LeftBassDrum_Hidden) ||\r
+                                       (EChannel.SE01 <= x && x <= EChannel.SE09) ||\r
+                                       (EChannel.SE10 <= x && x <= EChannel.SE19) ||\r
+                                       (EChannel.SE20 <= x && x <= EChannel.SE29) ||\r
+                                       (EChannel.SE30 <= x && x <= EChannel.SE32) ||\r
+                                       (EChannel.Bass_Open <= x && x <= EChannel.Bass_Wailing) || x == EChannel.Bass_WailingSound ||\r
+                                       (EChannel.HiHatClose_NoChip <= x && x <= EChannel.LeftBassDrum_NoChip)\r
                                        )\r
                                {\r
                                        ret = true;\r
@@ -378,7 +378,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return eチャンネル番号 == Ech定義.MovieFull || eチャンネル番号 == Ech定義.Movie;\r
+                               return eチャンネル番号 == EChannel.MovieFull || eチャンネル番号 == EChannel.Movie;\r
                        }\r
                }\r
 \r
@@ -386,10 +386,10 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               if (((Ech定義.SE01 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.SE09)) ||\r
-                                               ((Ech定義.SE10 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.SE19)) ||\r
-                                               ((Ech定義.SE20 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.SE29)) ||\r
-                                               ((Ech定義.SE30 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.SE32)))\r
+                               if (((EChannel.SE01 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.SE09)) ||\r
+                                               ((EChannel.SE10 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.SE19)) ||\r
+                                               ((EChannel.SE20 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.SE29)) ||\r
+                                               ((EChannel.SE30 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.SE32)))\r
                                {\r
                                        return true;\r
                                }\r
@@ -404,7 +404,7 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return Ech定義.SE24 <= eチャンネル番号 && eチャンネル番号 <= Ech定義.SE29;\r
+                               return EChannel.SE24 <= eチャンネル番号 && eチャンネル番号 <= EChannel.SE29;\r
                        }\r
                }\r
 \r
@@ -415,14 +415,14 @@ namespace DTXMania
                                int ret = -1;\r
                                switch (eチャンネル番号)\r
                                {\r
-                                       case Ech定義.BGALayer1: ret = 0; break;\r
-                                       case Ech定義.BGALayer2: ret = 1; break;\r
-                                       case Ech定義.BGALayer3: ret = 2; break;\r
-                                       case Ech定義.BGALayer4: ret = 3; break;\r
-                                       case Ech定義.BGALayer5: ret = 4; break;\r
-                                       case Ech定義.BGALayer6: ret = 5; break;\r
-                                       case Ech定義.BGALayer7: ret = 6; break;\r
-                                       case Ech定義.BGALayer8: ret = 7; break;\r
+                                       case EChannel.BGALayer1: ret = 0; break;\r
+                                       case EChannel.BGALayer2: ret = 1; break;\r
+                                       case EChannel.BGALayer3: ret = 2; break;\r
+                                       case EChannel.BGALayer4: ret = 3; break;\r
+                                       case EChannel.BGALayer5: ret = 4; break;\r
+                                       case EChannel.BGALayer6: ret = 5; break;\r
+                                       case EChannel.BGALayer7: ret = 6; break;\r
+                                       case EChannel.BGALayer8: ret = 7; break;\r
                                }\r
                                return ret;\r
                        }\r
@@ -435,14 +435,14 @@ namespace DTXMania
                                int ret = -1;\r
                                switch (eチャンネル番号)\r
                                {\r
-                                       case Ech定義.BGALayer1_Swap: ret = 0; break;\r
-                                       case Ech定義.BGALayer2_Swap: ret = 1; break;\r
-                                       case Ech定義.BGALayer3_Swap: ret = 2; break;\r
-                                       case Ech定義.BGALayer4_Swap: ret = 3; break;\r
-                                       case Ech定義.BGALayer5_Swap: ret = 4; break;\r
-                                       case Ech定義.BGALayer6_Swap: ret = 5; break;\r
-                                       case Ech定義.BGALayer7_Swap: ret = 6; break;\r
-                                       case Ech定義.BGALayer8_Swap: ret = 7; break;\r
+                                       case EChannel.BGALayer1_Swap: ret = 0; break;\r
+                                       case EChannel.BGALayer2_Swap: ret = 1; break;\r
+                                       case EChannel.BGALayer3_Swap: ret = 2; break;\r
+                                       case EChannel.BGALayer4_Swap: ret = 3; break;\r
+                                       case EChannel.BGALayer5_Swap: ret = 4; break;\r
+                                       case EChannel.BGALayer6_Swap: ret = 5; break;\r
+                                       case EChannel.BGALayer7_Swap: ret = 6; break;\r
+                                       case EChannel.BGALayer8_Swap: ret = 7; break;\r
                                }\r
                                return ret;\r
                        }\r
@@ -455,18 +455,18 @@ namespace DTXMania
                                int ret = -1;\r
                                switch (eチャンネル番号)\r
                                {\r
-                                       case Ech定義.HiHatClose: ret = 0; break;\r
-                                       case Ech定義.Snare: ret = 1; break;\r
-                                       case Ech定義.BassDrum: ret = 2; break;\r
-                                       case Ech定義.HighTom: ret = 3; break;\r
-                                       case Ech定義.LowTom: ret = 4; break;\r
-                                       case Ech定義.Cymbal: ret = 5; break;\r
-                                       case Ech定義.FloorTom: ret = 6; break;\r
-                                       case Ech定義.HiHatOpen: ret = 7; break;\r
-                                       case Ech定義.RideCymbal: ret = 8; break;\r
-                                       case Ech定義.LeftCymbal: ret = 9; break;\r
-                                       case Ech定義.LeftPedal: ret = 10; break;\r
-                                       case Ech定義.LeftBassDrum: ret = 11; break;\r
+                                       case EChannel.HiHatClose: ret = 0; break;\r
+                                       case EChannel.Snare: ret = 1; break;\r
+                                       case EChannel.BassDrum: ret = 2; break;\r
+                                       case EChannel.HighTom: ret = 3; break;\r
+                                       case EChannel.LowTom: ret = 4; break;\r
+                                       case EChannel.Cymbal: ret = 5; break;\r
+                                       case EChannel.FloorTom: ret = 6; break;\r
+                                       case EChannel.HiHatOpen: ret = 7; break;\r
+                                       case EChannel.RideCymbal: ret = 8; break;\r
+                                       case EChannel.LeftCymbal: ret = 9; break;\r
+                                       case EChannel.LeftPedal: ret = 10; break;\r
+                                       case EChannel.LeftBassDrum: ret = 11; break;\r
                                }\r
                                return ret;\r
                        }\r
@@ -479,18 +479,18 @@ namespace DTXMania
                                int ret = -1;\r
                                switch (eチャンネル番号)\r
                                {\r
-                                       case Ech定義.HiHatClose_Hidden: ret = 0; break;\r
-                                       case Ech定義.Snare_Hidden: ret = 1; break;\r
-                                       case Ech定義.BassDrum_Hidden: ret = 2; break;\r
-                                       case Ech定義.HighTom_Hidden: ret = 3; break;\r
-                                       case Ech定義.LowTom_Hidden: ret = 4; break;\r
-                                       case Ech定義.Cymbal_Hidden: ret = 5; break;\r
-                                       case Ech定義.FloorTom_Hidden: ret = 6; break;\r
-                                       case Ech定義.HiHatOpen_Hidden: ret = 7; break;\r
-                                       case Ech定義.RideCymbal_Hidden: ret = 8; break;\r
-                                       case Ech定義.LeftCymbal_Hidden: ret = 9; break;\r
-                                       case Ech定義.LeftPedal_Hidden: ret = 10; break;\r
-                                       case Ech定義.LeftBassDrum_Hidden: ret = 11; break;\r
+                                       case EChannel.HiHatClose_Hidden: ret = 0; break;\r
+                                       case EChannel.Snare_Hidden: ret = 1; break;\r
+                                       case EChannel.BassDrum_Hidden: ret = 2; break;\r
+                                       case EChannel.HighTom_Hidden: ret = 3; break;\r
+                                       case EChannel.LowTom_Hidden: ret = 4; break;\r
+                                       case EChannel.Cymbal_Hidden: ret = 5; break;\r
+                                       case EChannel.FloorTom_Hidden: ret = 6; break;\r
+                                       case EChannel.HiHatOpen_Hidden: ret = 7; break;\r
+                                       case EChannel.RideCymbal_Hidden: ret = 8; break;\r
+                                       case EChannel.LeftCymbal_Hidden: ret = 9; break;\r
+                                       case EChannel.LeftPedal_Hidden: ret = 10; break;\r
+                                       case EChannel.LeftBassDrum_Hidden: ret = 11; break;\r
                                }\r
                                return ret;\r
                        }\r
@@ -507,123 +507,123 @@ namespace DTXMania
                                switch (this.eチャンネル番号)\r
                                {\r
                                        #region [ Drums ]\r
-                                       case Ech定義.HiHatClose:\r
-                                       case Ech定義.Snare:\r
-                                       case Ech定義.BassDrum:\r
-                                       case Ech定義.HighTom:\r
-                                       case Ech定義.LowTom:\r
-                                       case Ech定義.Cymbal:\r
-                                       case Ech定義.FloorTom:\r
-                                       case Ech定義.HiHatOpen:\r
-                                       case Ech定義.RideCymbal:\r
-                                       case Ech定義.LeftCymbal:\r
-                                       case Ech定義.LeftPedal:\r
-                                       case Ech定義.LeftBassDrum:\r
-\r
-                                       case Ech定義.HiHatClose_Hidden:\r
-                                       case Ech定義.Snare_Hidden:\r
-                                       case Ech定義.BassDrum_Hidden:\r
-                                       case Ech定義.HighTom_Hidden:\r
-                                       case Ech定義.LowTom_Hidden:\r
-                                       case Ech定義.Cymbal_Hidden:\r
-                                       case Ech定義.FloorTom_Hidden:\r
-                                       case Ech定義.HiHatOpen_Hidden:\r
-                                       case Ech定義.RideCymbal_Hidden:\r
-                                       case Ech定義.LeftCymbal_Hidden:\r
-                                       case Ech定義.LeftPedal_Hidden:\r
-                                       case Ech定義.LeftBassDrum_Hidden:\r
-\r
-                                       case Ech定義.HiHatClose_NoChip:\r
-                                       case Ech定義.Snare_NoChip:\r
-                                       case Ech定義.BassDrum_NoChip:\r
-                                       case Ech定義.HighTom_NoChip:\r
-                                       case Ech定義.LowTom_NoChip:\r
-                                       case Ech定義.Cymbal_NoChip:\r
-                                       case Ech定義.FloorTom_NoChip:\r
-                                       case Ech定義.HiHatOpen_NoChip:\r
-                                       case Ech定義.RideCymbal_NoChip:\r
-                                       case Ech定義.LeftCymbal_NoChip:\r
-                                       case Ech定義.LeftPedal_NoChip:\r
-                                       case Ech定義.LeftBassDrum_NoChip:\r
+                                       case EChannel.HiHatClose:\r
+                                       case EChannel.Snare:\r
+                                       case EChannel.BassDrum:\r
+                                       case EChannel.HighTom:\r
+                                       case EChannel.LowTom:\r
+                                       case EChannel.Cymbal:\r
+                                       case EChannel.FloorTom:\r
+                                       case EChannel.HiHatOpen:\r
+                                       case EChannel.RideCymbal:\r
+                                       case EChannel.LeftCymbal:\r
+                                       case EChannel.LeftPedal:\r
+                                       case EChannel.LeftBassDrum:\r
+\r
+                                       case EChannel.HiHatClose_Hidden:\r
+                                       case EChannel.Snare_Hidden:\r
+                                       case EChannel.BassDrum_Hidden:\r
+                                       case EChannel.HighTom_Hidden:\r
+                                       case EChannel.LowTom_Hidden:\r
+                                       case EChannel.Cymbal_Hidden:\r
+                                       case EChannel.FloorTom_Hidden:\r
+                                       case EChannel.HiHatOpen_Hidden:\r
+                                       case EChannel.RideCymbal_Hidden:\r
+                                       case EChannel.LeftCymbal_Hidden:\r
+                                       case EChannel.LeftPedal_Hidden:\r
+                                       case EChannel.LeftBassDrum_Hidden:\r
+\r
+                                       case EChannel.HiHatClose_NoChip:\r
+                                       case EChannel.Snare_NoChip:\r
+                                       case EChannel.BassDrum_NoChip:\r
+                                       case EChannel.HighTom_NoChip:\r
+                                       case EChannel.LowTom_NoChip:\r
+                                       case EChannel.Cymbal_NoChip:\r
+                                       case EChannel.FloorTom_NoChip:\r
+                                       case EChannel.HiHatOpen_NoChip:\r
+                                       case EChannel.RideCymbal_NoChip:\r
+                                       case EChannel.LeftCymbal_NoChip:\r
+                                       case EChannel.LeftPedal_NoChip:\r
+                                       case EChannel.LeftBassDrum_NoChip:\r
 \r
                                                return ESoundChipType.Drums;\r
                                        #endregion\r
 \r
                                        #region [ Guitar ]\r
-                                       case Ech定義.Guitar_Open:\r
-                                       case Ech定義.Guitar_xxB:\r
-                                       case Ech定義.Guitar_xGx:\r
-                                       case Ech定義.Guitar_xGB:\r
-                                       case Ech定義.Guitar_Rxx:\r
-                                       case Ech定義.Guitar_RxB:\r
-                                       case Ech定義.Guitar_RGx:\r
-                                       case Ech定義.Guitar_RGB:\r
-                                       case Ech定義.Guitar_Wailing:\r
-                                       case Ech定義.Guitar_WailingSound:\r
-                                       case Ech定義.Guitar_NoChip:\r
+                                       case EChannel.Guitar_Open:\r
+                                       case EChannel.Guitar_xxB:\r
+                                       case EChannel.Guitar_xGx:\r
+                                       case EChannel.Guitar_xGB:\r
+                                       case EChannel.Guitar_Rxx:\r
+                                       case EChannel.Guitar_RxB:\r
+                                       case EChannel.Guitar_RGx:\r
+                                       case EChannel.Guitar_RGB:\r
+                                       case EChannel.Guitar_Wailing:\r
+                                       case EChannel.Guitar_WailingSound:\r
+                                       case EChannel.Guitar_NoChip:\r
                                                return ESoundChipType.Guitar;\r
                                        #endregion\r
 \r
                                        #region [ Bass ]\r
-                                       case Ech定義.Bass_Open:\r
-                                       case Ech定義.Bass_xxB:\r
-                                       case Ech定義.Bass_xGx:\r
-                                       case Ech定義.Bass_xGB:\r
-                                       case Ech定義.Bass_Rxx:\r
-                                       case Ech定義.Bass_RxB:\r
-                                       case Ech定義.Bass_RGx:\r
-                                       case Ech定義.Bass_RGB:\r
-                                       case Ech定義.Bass_Wailing:\r
-                                       case Ech定義.Bass_WailingSound:\r
-                                       case Ech定義.Bass_NoChip:\r
+                                       case EChannel.Bass_Open:\r
+                                       case EChannel.Bass_xxB:\r
+                                       case EChannel.Bass_xGx:\r
+                                       case EChannel.Bass_xGB:\r
+                                       case EChannel.Bass_Rxx:\r
+                                       case EChannel.Bass_RxB:\r
+                                       case EChannel.Bass_RGx:\r
+                                       case EChannel.Bass_RGB:\r
+                                       case EChannel.Bass_Wailing:\r
+                                       case EChannel.Bass_WailingSound:\r
+                                       case EChannel.Bass_NoChip:\r
                                                return ESoundChipType.Bass;\r
                                        #endregion\r
 \r
                                        #region [ SE ]\r
-                                       case Ech定義.SE01:\r
-                                       case Ech定義.SE02:\r
-                                       case Ech定義.SE03:\r
-                                       case Ech定義.SE04:\r
-                                       case Ech定義.SE05:\r
-                                       case Ech定義.SE06:\r
-                                       case Ech定義.SE07:\r
-                                       case Ech定義.SE08:\r
-                                       case Ech定義.SE09:\r
-                                       case Ech定義.SE10:\r
-                                       case Ech定義.SE11:\r
-                                       case Ech定義.SE12:\r
-                                       case Ech定義.SE13:\r
-                                       case Ech定義.SE14:\r
-                                       case Ech定義.SE15:\r
-                                       case Ech定義.SE16:\r
-                                       case Ech定義.SE17:\r
-                                       case Ech定義.SE18:\r
-                                       case Ech定義.SE19:\r
-                                       case Ech定義.SE20:\r
-                                       case Ech定義.SE21:\r
-                                       case Ech定義.SE22:\r
-                                       case Ech定義.SE23:\r
-                                       case Ech定義.SE24:\r
-                                       case Ech定義.SE25:\r
-                                       case Ech定義.SE26:\r
-                                       case Ech定義.SE27:\r
-                                       case Ech定義.SE28:\r
-                                       case Ech定義.SE29:\r
-                                       case Ech定義.SE30:\r
-                                       case Ech定義.SE31:\r
-                                       case Ech定義.SE32:\r
+                                       case EChannel.SE01:\r
+                                       case EChannel.SE02:\r
+                                       case EChannel.SE03:\r
+                                       case EChannel.SE04:\r
+                                       case EChannel.SE05:\r
+                                       case EChannel.SE06:\r
+                                       case EChannel.SE07:\r
+                                       case EChannel.SE08:\r
+                                       case EChannel.SE09:\r
+                                       case EChannel.SE10:\r
+                                       case EChannel.SE11:\r
+                                       case EChannel.SE12:\r
+                                       case EChannel.SE13:\r
+                                       case EChannel.SE14:\r
+                                       case EChannel.SE15:\r
+                                       case EChannel.SE16:\r
+                                       case EChannel.SE17:\r
+                                       case EChannel.SE18:\r
+                                       case EChannel.SE19:\r
+                                       case EChannel.SE20:\r
+                                       case EChannel.SE21:\r
+                                       case EChannel.SE22:\r
+                                       case EChannel.SE23:\r
+                                       case EChannel.SE24:\r
+                                       case EChannel.SE25:\r
+                                       case EChannel.SE26:\r
+                                       case EChannel.SE27:\r
+                                       case EChannel.SE28:\r
+                                       case EChannel.SE29:\r
+                                       case EChannel.SE30:\r
+                                       case EChannel.SE31:\r
+                                       case EChannel.SE32:\r
                                                return ESoundChipType.SE;\r
                                        #endregion\r
 \r
                                        #region [ BGM ]\r
-                                       case Ech定義.BGM:\r
+                                       case EChannel.BGM:\r
                                                return ESoundChipType.BGM;\r
                                        #endregion\r
 \r
                                        #region [ その他 ]\r
                                        default:\r
-                                               return ESoundChipType.UNKNOWN;\r
-                                       #endregion\r
+                                               return ESoundChipType.Unknown;\r
+                                               #endregion\r
                                }\r
                        }\r
                }\r
@@ -633,36 +633,36 @@ namespace DTXMania
                        {\r
                                switch (this.eチャンネル番号)\r
                                {\r
-                                       case Ech定義.HiHatClose:\r
-                                       case Ech定義.Snare:\r
-                                       case Ech定義.BassDrum:\r
-                                       case Ech定義.HighTom:\r
-                                       case Ech定義.LowTom:\r
-                                       case Ech定義.Cymbal:\r
-                                       case Ech定義.FloorTom:\r
-                                       case Ech定義.HiHatOpen:\r
-                                       case Ech定義.RideCymbal:\r
-                                       case Ech定義.LeftCymbal:\r
-                                       case Ech定義.LeftPedal:\r
-                                       case Ech定義.LeftBassDrum:\r
-\r
-                                       case Ech定義.Guitar_Open:\r
-                                       case Ech定義.Guitar_xxB:\r
-                                       case Ech定義.Guitar_xGx:\r
-                                       case Ech定義.Guitar_xGB:\r
-                                       case Ech定義.Guitar_Rxx:\r
-                                       case Ech定義.Guitar_RxB:\r
-                                       case Ech定義.Guitar_RGx:\r
-                                       case Ech定義.Guitar_RGB:\r
-\r
-                                       case Ech定義.Bass_Open:\r
-                                       case Ech定義.Bass_xxB:\r
-                                       case Ech定義.Bass_xGx:\r
-                                       case Ech定義.Bass_xGB:\r
-                                       case Ech定義.Bass_Rxx:\r
-                                       case Ech定義.Bass_RxB:\r
-                                       case Ech定義.Bass_RGx:\r
-                                       case Ech定義.Bass_RGB:\r
+                                       case EChannel.HiHatClose:\r
+                                       case EChannel.Snare:\r
+                                       case EChannel.BassDrum:\r
+                                       case EChannel.HighTom:\r
+                                       case EChannel.LowTom:\r
+                                       case EChannel.Cymbal:\r
+                                       case EChannel.FloorTom:\r
+                                       case EChannel.HiHatOpen:\r
+                                       case EChannel.RideCymbal:\r
+                                       case EChannel.LeftCymbal:\r
+                                       case EChannel.LeftPedal:\r
+                                       case EChannel.LeftBassDrum:\r
+\r
+                                       case EChannel.Guitar_Open:\r
+                                       case EChannel.Guitar_xxB:\r
+                                       case EChannel.Guitar_xGx:\r
+                                       case EChannel.Guitar_xGB:\r
+                                       case EChannel.Guitar_Rxx:\r
+                                       case EChannel.Guitar_RxB:\r
+                                       case EChannel.Guitar_RGx:\r
+                                       case EChannel.Guitar_RGB:\r
+\r
+                                       case EChannel.Bass_Open:\r
+                                       case EChannel.Bass_xxB:\r
+                                       case EChannel.Bass_xGx:\r
+                                       case EChannel.Bass_xGB:\r
+                                       case EChannel.Bass_Rxx:\r
+                                       case EChannel.Bass_RxB:\r
+                                       case EChannel.Bass_RGx:\r
+                                       case EChannel.Bass_RGB:\r
                                                return true;\r
 \r
                                        default:\r
@@ -698,18 +698,18 @@ namespace DTXMania
 \r
                public void AdjustPlayPositionForFillin(int index)\r
                {\r
-                       if (this[Ech定義.FillIn])\r
+                       if (this[EChannel.FillIn])\r
                        {\r
                                // ずらすのは、フィルインONチップと同じ位置にいるチップでも確実にフィルインが発動し、\r
                                // 同様に、フィルインOFFチップと同じ位置にいるチップでも確実にフィルインが終了するようにするため。\r
 \r
                                if ((index > 0) && (index != 2))\r
                                {\r
-                                       n発声位置 -= 32;    // 384÷32=12 ということで、フィルインONチップは12分音符ほど前へ移動。\r
+                                       n発声位置 -= 32;  // 384÷32=12 ということで、フィルインONチップは12分音符ほど前へ移動。\r
                                }\r
                                else if (index == 2)\r
                                {\r
-                                       n発声位置 += 32;    // 同じく、フィルインOFFチップは12分音符ほど後ろへ移動。\r
+                                       n発声位置 += 32;  // 同じく、フィルインOFFチップは12分音符ほど後ろへ移動。\r
                                }\r
                        }\r
                }\r
@@ -729,7 +729,7 @@ namespace DTXMania
 \r
                public void AddPlayPositionMsForSE(int increment)\r
                {\r
-                       if (this[Ech定義.BGM] || bSE)\r
+                       if (this[EChannel.BGM] || bSE)\r
                        {\r
                                n発声時刻ms += increment;\r
                        }\r
@@ -742,7 +742,7 @@ namespace DTXMania
                {\r
                        if (bMovie)\r
                        {\r
-                               eAVI種別 = EAVI種別.Unknown;\r
+                               eAVI種別 = EAVIType.Unknown;\r
                                rAVI = null;\r
                                rAVIPan = null;\r
                                if (listAVIPAN.ContainsKey(n整数値))\r
@@ -750,7 +750,7 @@ namespace DTXMania
                                        CDTX.CAVIPAN cavipan = listAVIPAN[n整数値];\r
                                        if (listAVI.ContainsKey(cavipan.nAVI番号) && (listAVI[cavipan.nAVI番号].avi != null))\r
                                        {\r
-                                               eAVI種別 = EAVI種別.AVIPAN;\r
+                                               eAVI種別 = EAVIType.AVIPAN;\r
                                                rAVI = listAVI[cavipan.nAVI番号];\r
                                                rAVIPan = cavipan;\r
                                                return;\r
@@ -758,7 +758,7 @@ namespace DTXMania
                                }\r
                                if (listAVI.ContainsKey(n整数値) && (listAVI[n整数値].avi != null))\r
                                {\r
-                                       eAVI種別 = EAVI種別.AVI;\r
+                                       eAVI種別 = EAVIType.AVI;\r
                                        rAVI = listAVI[n整数値];\r
                                }\r
                        }\r
@@ -773,7 +773,7 @@ namespace DTXMania
                {\r
                        if (bBGALayer)\r
                        {\r
-                               eBGA種別 = EBGA種別.Unknown;\r
+                               eBGA種別 = EBGAType.Unknown;\r
                                rBMP = null;\r
                                rBMPTEX = null;\r
                                rBGA = null;\r
@@ -785,14 +785,14 @@ namespace DTXMania
                                        CDTX.CBGAPAN cbgapan = listBGAPAN[n整数値];\r
                                        if (listBMPTEX.ContainsKey(cbgapan.nBMP番号) && listBMPTEX[cbgapan.nBMP番号].bUse)\r
                                        {\r
-                                               eBGA種別 = EBGA種別.BGAPAN;\r
+                                               eBGA種別 = EBGAType.BGAPAN;\r
                                                rBMPTEX = listBMPTEX[cbgapan.nBMP番号];\r
                                                rBGAPan = cbgapan;\r
                                                return;\r
                                        }\r
                                        if (listBMP.ContainsKey(cbgapan.nBMP番号) && listBMP[cbgapan.nBMP番号].bUse)\r
                                        {\r
-                                               eBGA種別 = EBGA種別.BGAPAN;\r
+                                               eBGA種別 = EBGAType.BGAPAN;\r
                                                rBMP = listBMP[cbgapan.nBMP番号];\r
                                                rBGAPan = cbgapan;\r
                                                return;\r
@@ -806,14 +806,14 @@ namespace DTXMania
                                        CDTX.CBGA cbga = listBGA[n整数値];\r
                                        if (listBMPTEX.ContainsKey(cbga.nBMP番号) && listBMPTEX[cbga.nBMP番号].bUse)\r
                                        {\r
-                                               eBGA種別 = EBGA種別.BGA;\r
+                                               eBGA種別 = EBGAType.BGA;\r
                                                rBMPTEX = listBMPTEX[cbga.nBMP番号];\r
                                                rBGA = cbga;\r
                                                return;\r
                                        }\r
                                        if (listBMP.ContainsKey(cbga.nBMP番号) && listBMP[cbga.nBMP番号].bUse)\r
                                        {\r
-                                               eBGA種別 = EBGA種別.BGA;\r
+                                               eBGA種別 = EBGAType.BGA;\r
                                                rBMP = listBMP[cbga.nBMP番号];\r
                                                rBGA = cbga;\r
                                                return;\r
@@ -824,7 +824,7 @@ namespace DTXMania
                                #region [ BMPTEX ]\r
                                if (listBMPTEX.ContainsKey(n整数値) && listBMPTEX[n整数値].bUse)\r
                                {\r
-                                       eBGA種別 = EBGA種別.BMPTEX;\r
+                                       eBGA種別 = EBGAType.BMPTEX;\r
                                        rBMPTEX = listBMPTEX[n整数値];\r
                                        return;\r
                                }\r
@@ -833,7 +833,7 @@ namespace DTXMania
                                #region [ BMP ]\r
                                if (listBMP.ContainsKey(n整数値) && listBMP[n整数値].bUse)\r
                                {\r
-                                       eBGA種別 = EBGA種別.BMP;\r
+                                       eBGA種別 = EBGAType.BMP;\r
                                        rBMP = listBMP[n整数値];\r
                                        return;\r
                                }\r
@@ -842,19 +842,19 @@ namespace DTXMania
                        #region [ BGA入れ替え ]\r
                        if (bBGALayerSwap)\r
                        {\r
-                               eBGA種別 = EBGA種別.Unknown;\r
+                               eBGA種別 = EBGAType.Unknown;\r
                                rBMP = null;\r
                                rBMPTEX = null;\r
                                rBGA = null;\r
                                rBGAPan = null;\r
                                if (listBMPTEX.ContainsKey(n整数値) && listBMPTEX[n整数値].bUse)\r
                                {\r
-                                       eBGA種別 = EBGA種別.BMPTEX;\r
+                                       eBGA種別 = EBGAType.BMPTEX;\r
                                        rBMPTEX = listBMPTEX[n整数値];\r
                                }\r
                                else if (listBMP.ContainsKey(n整数値) && listBMP[n整数値].bUse)\r
                                {\r
-                                       eBGA種別 = EBGA種別.BMP;\r
+                                       eBGA種別 = EBGAType.BMP;\r
                                        rBMP = listBMP[n整数値];\r
                                }\r
                        }\r
@@ -894,19 +894,19 @@ namespace DTXMania
                        }\r
                        nBar = n発声位置 / 384;\r
 \r
-                       if (this[Ech定義.BarLength])\r
+                       if (this[EChannel.BarLength])\r
                        {\r
                                basePlayPosition = n発声位置;\r
                                ms = n発声時刻ms;\r
                                dbBarLength = db実数値;\r
                        }\r
-                       else if (this[Ech定義.BPM])\r
+                       else if (this[EChannel.BPM])\r
                        {\r
                                basePlayPosition = n発声位置;\r
                                ms = n発声時刻ms;\r
                                bpm = basebpm + n整数値;\r
                        }\r
-                       else if (this[Ech定義.BPMEx])\r
+                       else if (this[EChannel.BPMEx])\r
                        {\r
                                basePlayPosition = n発声位置;\r
                                ms = n発声時刻ms;\r
@@ -937,12 +937,12 @@ namespace DTXMania
 \r
                public void ConvertSE25_26_27toCY_RCY_LCY()\r
                {\r
-                       Ech定義 to = eチャンネル番号;\r
+                       EChannel to = eチャンネル番号;\r
                        switch (eチャンネル番号)\r
                        {\r
-                               case Ech定義.SE25: to = Ech定義.Cymbal; break;\r
-                               case Ech定義.SE26: to = Ech定義.RideCymbal; break;\r
-                               case Ech定義.SE27: to = Ech定義.LeftCymbal; break;\r
+                               case EChannel.SE25: to = EChannel.Cymbal; break;\r
+                               case EChannel.SE26: to = EChannel.RideCymbal; break;\r
+                               case EChannel.SE27: to = EChannel.LeftCymbal; break;\r
                        }\r
                        eチャンネル番号 = to;\r
                }\r
@@ -959,7 +959,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public void CalcDistanceFromBar(long currentTime, STDGBVALUE<double> ScrollSpeedInSetting)\r
+               public void CalcDistanceFromBar(long currentTime, STDGBSValue<double> ScrollSpeedInSetting)\r
                {\r
                        const double speed = 526.5;// BPM150の時の1小節の長さ[dot]\r
                        double ScrollSpeedDrums = (ScrollSpeedInSetting.Drums + 1.0) * 0.5 * 37.5 * speed / 60000.0;\r
@@ -975,7 +975,7 @@ namespace DTXMania
                        //nバーからの距離dot = newDot;\r
                }\r
 \r
-               public void RandomizeRGB(Eランダムモード eRandom, int seed, bool existOpen)\r
+               public void RandomizeRGB(ERandom eRandom, int seed, bool existOpen)\r
                {\r
                        int[,] nランダムレーン候補 = new int[,]\r
                        {\r
@@ -995,26 +995,26 @@ namespace DTXMania
                        {\r
                                switch (eRandom)\r
                                {\r
-                                       case Eランダムモード.RANDOM:             // 1小節単位でレーンのR/G/Bがランダムに入れ替わる\r
-                                               eチャンネル番号 = (Ech定義)((nGuitarBassUpper4Bit) | nランダムレーン候補[seed, (int)eRGBビットパターン]);\r
+                                       case ERandom.Random:    // 1小節単位でレーンのR/G/Bがランダムに入れ替わる\r
+                                               eチャンネル番号 = (EChannel)((nGuitarBassUpper4Bit) | nランダムレーン候補[seed, (int)eRGBビットパターン]);\r
                                                return;\r
 \r
-                                       case Eランダムモード.SUPERRANDOM:        // チップごとにR/G/Bがランダムで入れ替わる(レーンの本数までは変わらない)。\r
-                                               eチャンネル番号 = (Ech定義)((nGuitarBassUpper4Bit) | nランダムレーン候補[CDTXMania.Instance.Random.Next(6), (int)eRGBビットパターン]);\r
+                                       case ERandom.Super: // チップごとにR/G/Bがランダムで入れ替わる(レーンの本数までは変わらない)。\r
+                                               eチャンネル番号 = (EChannel)((nGuitarBassUpper4Bit) | nランダムレーン候補[CDTXMania.Instance.Random.Next(6), (int)eRGBビットパターン]);\r
                                                return;\r
 \r
-                                       case Eランダムモード.HYPERRANDOM:        // レーンの本数も変わる\r
+                                       case ERandom.Hyper: // レーンの本数も変わる\r
                                                nRGBレーンビットパターン = eRGBビットパターン;\r
                                                // n新RGBレーンビットパターン = (int)Eレーンビットパターン.OPEN;   // この値は結局未使用なので削除\r
                                                if (\r
                                                        (nRGBレーンビットパターン != Eレーンビットパターン.xxB) &&\r
                                                        (nRGBレーンビットパターン != Eレーンビットパターン.xGx) &&\r
-                                                       (nRGBレーンビットパターン != Eレーンビットパターン.Rxx))            // xxB, xGx, Rxx レーン1本相当\r
+                                                       (nRGBレーンビットパターン != Eレーンビットパターン.Rxx))    // xxB, xGx, Rxx レーン1本相当\r
                                                {\r
                                                }\r
                                                else\r
                                                {\r
-                                                       n新RGBレーンビットパターン = (Eレーンビットパターン)CDTXMania.Instance.Random.Next(6) + 1;         // レーン1本相当なら、レーン1本か2本(1~6)に変化して終了\r
+                                                       n新RGBレーンビットパターン = (Eレーンビットパターン)CDTXMania.Instance.Random.Next(6) + 1;   // レーン1本相当なら、レーン1本か2本(1~6)に変化して終了\r
                                                        bAdjustRandomLane = false;\r
                                                }\r
                                                break;\r
@@ -1026,16 +1026,16 @@ namespace DTXMania
                                {\r
                                        switch (nRGBレーンビットパターン)\r
                                        {\r
-                                               case Eレーンビットパターン.xGB:       // xGB  レーン2本相当\r
-                                               case Eレーンビットパターン.RxB:       // RxB\r
-                                               case Eレーンビットパターン.RGx:       // RGx\r
-                                                       n新RGBレーンビットパターン = existOpen ? (Eレーンビットパターン)(CDTXMania.Instance.Random.Next(8)) : (Eレーンビットパターン)(CDTXMania.Instance.Random.Next(7) + 1);    // OPENあり譜面ならOPENを含むランダム, OPENなし譜面ならOPENを含まないランダム\r
+                                               case Eレーンビットパターン.xGB: // xGB        レーン2本相当\r
+                                               case Eレーンビットパターン.RxB: // RxB\r
+                                               case Eレーンビットパターン.RGx: // RGx\r
+                                                       n新RGBレーンビットパターン = existOpen ? (Eレーンビットパターン)(CDTXMania.Instance.Random.Next(8)) : (Eレーンビットパターン)(CDTXMania.Instance.Random.Next(7) + 1);  // OPENあり譜面ならOPENを含むランダム, OPENなし譜面ならOPENを含まないランダム\r
                                                        break;\r
 \r
                                                default:\r
-                                                       if (nRGBレーンビットパターン == Eレーンビットパターン.RGB)  // RGB レーン3本相当\r
+                                                       if (nRGBレーンビットパターン == Eレーンビットパターン.RGB)  // RGB レーン3本相当\r
                                                        {\r
-                                                               if (existOpen)  // OPENあり譜面の場合\r
+                                                               if (existOpen)  // OPENあり譜面の場合\r
                                                                {\r
                                                                        int n乱数パーセント = CDTXMania.Instance.Random.Next(100);\r
                                                                        if (n乱数パーセント < 30)\r
@@ -1060,7 +1060,7 @@ namespace DTXMania
                                                                                }\r
                                                                                n新RGBレーンビットパターン = Eレーンビットパターン.RGx;\r
                                                                        }\r
-                                                                       else    // OPENでない場合\r
+                                                                       else  // OPENでない場合\r
                                                                        {\r
                                                                                switch (CDTXMania.Instance.Random.Next(3))\r
                                                                                {\r
@@ -1075,7 +1075,7 @@ namespace DTXMania
                                                                                n新RGBレーンビットパターン = Eレーンビットパターン.Rxx;\r
                                                                        }\r
                                                                }\r
-                                                               else    // OPENなし譜面の場合\r
+                                                               else  // OPENなし譜面の場合\r
                                                                {\r
                                                                        int n乱数パーセント = CDTXMania.Instance.Random.Next(100);\r
                                                                        if (n乱数パーセント < 60)\r
@@ -1115,7 +1115,7 @@ namespace DTXMania
                                                        break;\r
                                        }\r
                                }\r
-                               eチャンネル番号 = (Ech定義)((nランダム化前BassFlag) | (int)n新RGBレーンビットパターン);\r
+                               eチャンネル番号 = (EChannel)((nランダム化前BassFlag) | (int)n新RGBレーンビットパターン);\r
                        }\r
                }\r
 \r
@@ -1135,7 +1135,7 @@ namespace DTXMania
 \r
                public CChip()\r
                {\r
-                       this.nバーからの距離dotInternal = new STDGBVALUE<int>()\r
+                       this.nバーからの距離dotInternal = new STDGBSValue<int>()\r
                        {\r
                                Drums = 0,\r
                                Guitar = 0,\r
@@ -1143,17 +1143,17 @@ namespace DTXMania
                        };\r
                        b可視 = true;\r
                        dbチップサイズ倍率 = 1.0;\r
-                       e楽器パート = E楽器パート.UNKNOWN;\r
+                       e楽器パート = EPart.Unknown;\r
                        n透明度 = 0xff;\r
                }\r
 \r
-               public CChip(int playPosition, int intData, int intDataInternalIndex, Ech定義 channel)\r
+               public CChip(int playPosition, int intData, int intDataInternalIndex, EChannel channel)\r
                        : this(playPosition, intData, channel)\r
                {\r
                        n整数値_内部番号 = intDataInternalIndex;\r
                }\r
 \r
-               public CChip(int playPosition, int intData, Ech定義 channel)\r
+               public CChip(int playPosition, int intData, EChannel channel)\r
                        : this()\r
                {\r
                        n発声位置 = playPosition;\r
@@ -1161,7 +1161,7 @@ namespace DTXMania
                        eチャンネル番号 = channel;\r
                }\r
 \r
-               public CChip(int playPosition, double phraseLengthFactor, Ech定義 channel)\r
+               public CChip(int playPosition, double phraseLengthFactor, EChannel channel)\r
                        : this()\r
                {\r
                        n発声位置 = playPosition;\r
@@ -1169,13 +1169,13 @@ namespace DTXMania
                        eチャンネル番号 = channel;\r
                }\r
 \r
-               public CChip(Ech定義 channel)\r
+               public CChip(EChannel channel)\r
                        : this()\r
                {\r
                        eチャンネル番号 = channel;\r
                }\r
 \r
-               public CChip(int playPosition, int intData, int intDataInternalIndex, Ech定義 channel,\r
+               public CChip(int playPosition, int intData, int intDataInternalIndex, EChannel channel,\r
                        int playPositionMs, bool bSoundAfterPlayEnd)\r
                        : this(playPosition, intData, intDataInternalIndex, channel)\r
                {\r
@@ -1240,7 +1240,7 @@ namespace DTXMania
                {\r
                        int nDuration = 0;\r
 \r
-                       if (this.bWAVを使うチャンネルである)         // WAV\r
+                       if (this.bWAVを使うチャンネルである)   // WAV\r
                        {\r
                                CDTX.CWAV wc;\r
                                CDTXMania.Instance.DTX.listWAV.TryGetValue(this.n整数値_内部番号, out wc);\r
@@ -1253,7 +1253,7 @@ namespace DTXMania
                                        nDuration = (wc.rSound[0] == null) ? 0 : wc.rSound[0].n総演奏時間ms;\r
                                }\r
                        }\r
-                       else if (this.eチャンネル番号 == Ech定義.Movie || this.eチャンネル番号 == Ech定義.MovieFull)  // AVI\r
+                       else if (this.eチャンネル番号 == EChannel.Movie || this.eチャンネル番号 == EChannel.MovieFull)  // AVI\r
                        {\r
                                if (this.rAVI != null && this.rAVI.avi != null)\r
                                {\r
@@ -1270,21 +1270,21 @@ namespace DTXMania
                public int CompareTo(CChip other)\r
                {\r
                        byte[] n優先度 = new byte[] {\r
-                                       5, 5, 3, 3, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, \r
-                                       7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
-                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, \r
+                                       5, 5, 3, 3, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5,\r
+                                       7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
+                                       5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
                                        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r
                                };\r
 \r
@@ -1318,7 +1318,7 @@ namespace DTXMania
 \r
 \r
 \r
-               public bool bAssignAutoPlayState(STAUTOPLAY bIsAutoPlay)\r
+               public bool bAssignAutoPlayState()\r
                {\r
                        bool ret = false;\r
                        bool bGtBsR = bGuitarBass_R;\r
@@ -1328,7 +1328,7 @@ namespace DTXMania
                        bool bGtBsO = bGuitarBass_Open;\r
                        if (bDrums可視チップ)\r
                        {\r
-                               if (bIsAutoPlay[CStage演奏画面共通.nチャンネル0Atoレーン07[eチャンネル番号 - Ech定義.HiHatClose]])\r
+                               if (CDTXMania.Instance.ConfigIni.bAutoPlay[EnumConverter.PadFromChannel(eチャンネル番号)])\r
                                {\r
                                        ret = true;\r
                                }\r
@@ -1338,15 +1338,17 @@ namespace DTXMania
                                //Trace.TraceInformation( "chip:{0}{1}{2} ", bGtBsR, bGtBsG, bGtBsB );\r
                                //Trace.TraceInformation( "auto:{0}{1}{2} ", bIsAutoPlay[ (int) Eレーン.GtR ], bIsAutoPlay[ (int) Eレーン.GtG ], bIsAutoPlay[ (int) Eレーン.GtB ]);\r
                                ret = true;\r
-                               if (bIsAutoPlay[(int)Eレーン.GtPick] == false) ret = false;\r
+                               if (CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtPick] == false) ret = false;\r
                                else\r
                                {\r
-                                       if (bGtBsR == true && bIsAutoPlay[(int)Eレーン.GtR] == false) ret = false;\r
-                                       else if (bGtBsG == true && bIsAutoPlay[(int)Eレーン.GtG] == false) ret = false;\r
-                                       else if (bGtBsB == true && bIsAutoPlay[(int)Eレーン.GtB] == false) ret = false;\r
-                                       else if (bGtBsW == true && bIsAutoPlay[(int)Eレーン.GtW] == false) ret = false;\r
+                                       if (bGtBsR == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtR] == false) ret = false;\r
+                                       else if (bGtBsG == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtG] == false) ret = false;\r
+                                       else if (bGtBsB == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtB] == false) ret = false;\r
+                                       else if (bGtBsW == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtWail] == false) ret = false;\r
                                        else if (bGtBsO == true &&\r
-                                               (bIsAutoPlay[(int)Eレーン.GtR] == false || bIsAutoPlay[(int)Eレーン.GtG] == false || bIsAutoPlay[(int)Eレーン.GtB] == false))\r
+                                               (CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtR] == false ||\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtG] == false ||\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.GtB] == false))\r
                                                ret = false;\r
                                }\r
                                //Trace.TraceInformation( "{0:x2}: {1}", pChip.nチャンネル番号, bPChipIsAutoPlay.ToString() );\r
@@ -1354,15 +1356,17 @@ namespace DTXMania
                        else if (bBass可視チップ)\r
                        {\r
                                ret = true;\r
-                               if (bIsAutoPlay[(int)Eレーン.BsPick] == false) ret = false;\r
+                               if (CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsPick] == false) ret = false;\r
                                else\r
                                {\r
-                                       if (bGtBsR == true && bIsAutoPlay[(int)Eレーン.BsR] == false) ret = false;\r
-                                       else if (bGtBsG == true && bIsAutoPlay[(int)Eレーン.BsG] == false) ret = false;\r
-                                       else if (bGtBsB == true && bIsAutoPlay[(int)Eレーン.BsB] == false) ret = false;\r
-                                       else if (bGtBsW == true && bIsAutoPlay[(int)Eレーン.BsW] == false) ret = false;\r
+                                       if (bGtBsR == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsR] == false) ret = false;\r
+                                       else if (bGtBsG == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsG] == false) ret = false;\r
+                                       else if (bGtBsB == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsB] == false) ret = false;\r
+                                       else if (bGtBsW == true && CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsWail] == false) ret = false;\r
                                        else if (bGtBsO == true &&\r
-                                               (bIsAutoPlay[(int)Eレーン.BsR] == false || bIsAutoPlay[(int)Eレーン.BsG] == false || bIsAutoPlay[(int)Eレーン.BsB] == false))\r
+                                               (CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsR] == false ||\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsG] == false ||\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay[EPad.BsB] == false))\r
                                                ret = false;\r
                                }\r
                        }\r
@@ -1382,21 +1386,21 @@ namespace DTXMania
 \r
                internal void ConvertSE25_26_27ToCY_RCY_LCY()\r
                {\r
-                       if ((Ech定義.SE25 <= eチャンネル番号) && (eチャンネル番号 <= Ech定義.SE27))\r
+                       if ((EChannel.SE25 <= eチャンネル番号) && (eチャンネル番号 <= EChannel.SE27))\r
                        {\r
-                               Ech定義[] ch = { Ech定義.Cymbal, Ech定義.RideCymbal, Ech定義.LeftCymbal };\r
-                               eチャンネル番号 = ch[eチャンネル番号 - Ech定義.SE25];\r
+                               EChannel[] ch = { EChannel.Cymbal, EChannel.RideCymbal, EChannel.LeftCymbal };\r
+                               eチャンネル番号 = ch[eチャンネル番号 - EChannel.SE25];\r
                        }\r
                }\r
 \r
                internal void SetNoChipGuitarToOpen()\r
                {\r
-                       eチャンネル番号 = Ech定義.Guitar_Open;\r
+                       eチャンネル番号 = EChannel.Guitar_Open;\r
                }\r
 \r
                internal void SetNoChipBassToOpen()\r
                {\r
-                       eチャンネル番号 = Ech定義.Bass_Open;\r
+                       eチャンネル番号 = EChannel.Bass_Open;\r
                }\r
        }\r
 \r
index 1db2270..6cfd0ea 100644 (file)
@@ -36,7 +36,7 @@ namespace DTXMania
                public EDTX種別 e種別;\r
                public string GENRE;\r
                public bool HIDDENLEVEL;\r
-               public STDGBVALUE<int> LEVEL;\r
+               public STDGBSValue<int> LEVEL;\r
                public Dictionary<int, CAVI> listAVI;\r
                public Dictionary<int, CAVIPAN> listAVIPAN;\r
                public Dictionary<int, CBGA> listBGA;\r
@@ -49,7 +49,7 @@ namespace DTXMania
                public string MIDIFILE;\r
                public bool MIDINOTE;\r
                public int MIDIレベル;\r
-               public STDGBVALUE<int> n可視チップ数;\r
+               public STDGBSValue<int> n可視チップ数;\r
                public const int n最大音数 = 4;\r
                public const int n小節の解像度 = 384;\r
                public string PANEL;\r
@@ -73,9 +73,9 @@ namespace DTXMania
                public double dbDTXVPlaySpeed;\r
                public bool bMovieをFullscreen再生する;\r
                public bool bUse556x710BGAAVI;\r
-               public STDGBVALUE<List<int>> listAutoGhostLag;\r
-               public STDGBVALUE<List<int>> listTargetGhsotLag;\r
-               public STDGBVALUE<int> n使用レーン数;\r
+               public STDGBSValue<List<int>> listAutoGhostLag;\r
+               public STDGBSValue<List<int>> listTargetGhsotLag;\r
+               public STDGBSValue<int> n使用レーン数;\r
 \r
 #if TEST_NOTEOFFMODE\r
                public STLANEVALUE<bool> b演奏で直前の音を消音する;\r
@@ -106,7 +106,7 @@ namespace DTXMania
                        this.SOUND_AUDIENCE = "";\r
                        this.BPM = 120.0;\r
                        this.BLACKCOLORKEY = true;\r
-                       STDGBVALUE<int> stdgbvalue = new STDGBVALUE<int>();\r
+                       STDGBSValue<int> stdgbvalue = new STDGBSValue<int>();\r
                        stdgbvalue.Drums = 0;\r
                        stdgbvalue.Guitar = 0;\r
                        stdgbvalue.Bass = 0;\r
@@ -144,72 +144,72 @@ namespace DTXMania
                        this.nRESULTIMAGE用優先順位 = new int[7];\r
                        this.nRESULTMOVIE用優先順位 = new int[7];\r
                        this.nRESULTSOUND用優先順位 = new int[7];\r
-                       this.listAutoGhostLag = new STDGBVALUE<List<int>>();\r
-                       this.listTargetGhsotLag = new STDGBVALUE<List<int>>();\r
+                       this.listAutoGhostLag = new STDGBSValue<List<int>>();\r
+                       this.listTargetGhsotLag = new STDGBSValue<List<int>>();\r
 \r
                        #region [ 2011.1.1 yyagi GDA->DTX変換テーブル リファクタ後 ]\r
                        STGDAPARAM[] stgdaparamArray = new STGDAPARAM[] {               // GDA->DTX conversion table\r
-                               new STGDAPARAM("TC", Ech定義.BPM),\r
-                               new STGDAPARAM("BL", Ech定義.BarLength),\r
-                               new STGDAPARAM("GS", Ech定義.flowspeed_gt_nouse),\r
-                               new STGDAPARAM("DS", Ech定義.flowspeed_dr_nouse),\r
-                               new STGDAPARAM("FI", Ech定義.FillIn),\r
-                               new STGDAPARAM("HH", Ech定義.HiHatClose),\r
-                               new STGDAPARAM("SD", Ech定義.Snare),\r
-                               new STGDAPARAM("BD", Ech定義.BassDrum),\r
-                               new STGDAPARAM("HT", Ech定義.HighTom),\r
-                               new STGDAPARAM("LT", Ech定義.LowTom),\r
-                               new STGDAPARAM("CY", Ech定義.Cymbal),\r
-                               new STGDAPARAM("G1", Ech定義.Guitar_xxB),\r
-                               new STGDAPARAM("G2", Ech定義.Guitar_xGx),\r
-                               new STGDAPARAM("G3", Ech定義.Guitar_xGB),\r
-                               new STGDAPARAM("G4", Ech定義.Guitar_Rxx),\r
-                               new STGDAPARAM("G5", Ech定義.Guitar_RxB),\r
-                               new STGDAPARAM("G6", Ech定義.Guitar_RGx),\r
-                               new STGDAPARAM("G7", Ech定義.Guitar_RGB),\r
-                               new STGDAPARAM("GW", Ech定義.Guitar_Wailing),\r
-                               new STGDAPARAM("01", Ech定義.SE01),\r
-                               new STGDAPARAM("02", Ech定義.SE02),\r
-                               new STGDAPARAM("03", Ech定義.SE03),\r
-                               new STGDAPARAM("04", Ech定義.SE04),\r
-                               new STGDAPARAM("05", Ech定義.SE05),\r
-                               new STGDAPARAM("06", Ech定義.SE06),\r
-                               new STGDAPARAM("07", Ech定義.SE07),\r
-                               new STGDAPARAM("08", Ech定義.SE08),\r
-                               new STGDAPARAM("09", Ech定義.SE09),\r
-                               new STGDAPARAM("0A", Ech定義.SE10),\r
-                               new STGDAPARAM("0B", Ech定義.SE11),\r
-                               new STGDAPARAM("0C", Ech定義.SE12),\r
-                               new STGDAPARAM("0D", Ech定義.SE13),\r
-                               new STGDAPARAM("0E", Ech定義.SE14),\r
-                               new STGDAPARAM("0F", Ech定義.SE15),\r
-                               new STGDAPARAM("10", Ech定義.SE16),\r
-                               new STGDAPARAM("11", Ech定義.SE17),\r
-                               new STGDAPARAM("12", Ech定義.SE18),\r
-                               new STGDAPARAM("13", Ech定義.SE19),\r
-                               new STGDAPARAM("14", Ech定義.SE20),\r
-                               new STGDAPARAM("15", Ech定義.SE21),\r
-                               new STGDAPARAM("16", Ech定義.SE22),   \r
-                               new STGDAPARAM("17", Ech定義.SE23),\r
-                               new STGDAPARAM("18", Ech定義.SE24),\r
-                               new STGDAPARAM("19", Ech定義.SE25),\r
-                               new STGDAPARAM("1A", Ech定義.SE26),\r
-                               new STGDAPARAM("1B", Ech定義.SE27),\r
-                               new STGDAPARAM("1C", Ech定義.SE28),\r
-                               new STGDAPARAM("1D", Ech定義.SE29),\r
-                               new STGDAPARAM("1E", Ech定義.SE30),\r
-                               new STGDAPARAM("1F", Ech定義.SE31),\r
-                               new STGDAPARAM("20", Ech定義.SE32),\r
-                               new STGDAPARAM("B1", Ech定義.Bass_xxB),\r
-                               new STGDAPARAM("B2", Ech定義.Bass_xGx),\r
-                               new STGDAPARAM("B3", Ech定義.Bass_xGB),\r
-                               new STGDAPARAM("B4", Ech定義.Bass_Rxx),\r
-                               new STGDAPARAM("B5", Ech定義.Bass_RxB),\r
-                               new STGDAPARAM("B6", Ech定義.Bass_RGx),\r
-                               new STGDAPARAM("B7", Ech定義.Bass_RGB),\r
-                               new STGDAPARAM("BW", Ech定義.Bass_Wailing),\r
-                               new STGDAPARAM("G0", Ech定義.Guitar_Open),\r
-                               new STGDAPARAM("B0", Ech定義.Bass_Open)\r
+                               new STGDAPARAM("TC", EChannel.BPM),\r
+                               new STGDAPARAM("BL", EChannel.BarLength),\r
+                               new STGDAPARAM("GS", EChannel.flowspeed_gt_nouse),\r
+                               new STGDAPARAM("DS", EChannel.flowspeed_dr_nouse),\r
+                               new STGDAPARAM("FI", EChannel.FillIn),\r
+                               new STGDAPARAM("HH", EChannel.HiHatClose),\r
+                               new STGDAPARAM("SD", EChannel.Snare),\r
+                               new STGDAPARAM("BD", EChannel.BassDrum),\r
+                               new STGDAPARAM("HT", EChannel.HighTom),\r
+                               new STGDAPARAM("LT", EChannel.LowTom),\r
+                               new STGDAPARAM("CY", EChannel.Cymbal),\r
+                               new STGDAPARAM("G1", EChannel.Guitar_xxB),\r
+                               new STGDAPARAM("G2", EChannel.Guitar_xGx),\r
+                               new STGDAPARAM("G3", EChannel.Guitar_xGB),\r
+                               new STGDAPARAM("G4", EChannel.Guitar_Rxx),\r
+                               new STGDAPARAM("G5", EChannel.Guitar_RxB),\r
+                               new STGDAPARAM("G6", EChannel.Guitar_RGx),\r
+                               new STGDAPARAM("G7", EChannel.Guitar_RGB),\r
+                               new STGDAPARAM("GW", EChannel.Guitar_Wailing),\r
+                               new STGDAPARAM("01", EChannel.SE01),\r
+                               new STGDAPARAM("02", EChannel.SE02),\r
+                               new STGDAPARAM("03", EChannel.SE03),\r
+                               new STGDAPARAM("04", EChannel.SE04),\r
+                               new STGDAPARAM("05", EChannel.SE05),\r
+                               new STGDAPARAM("06", EChannel.SE06),\r
+                               new STGDAPARAM("07", EChannel.SE07),\r
+                               new STGDAPARAM("08", EChannel.SE08),\r
+                               new STGDAPARAM("09", EChannel.SE09),\r
+                               new STGDAPARAM("0A", EChannel.SE10),\r
+                               new STGDAPARAM("0B", EChannel.SE11),\r
+                               new STGDAPARAM("0C", EChannel.SE12),\r
+                               new STGDAPARAM("0D", EChannel.SE13),\r
+                               new STGDAPARAM("0E", EChannel.SE14),\r
+                               new STGDAPARAM("0F", EChannel.SE15),\r
+                               new STGDAPARAM("10", EChannel.SE16),\r
+                               new STGDAPARAM("11", EChannel.SE17),\r
+                               new STGDAPARAM("12", EChannel.SE18),\r
+                               new STGDAPARAM("13", EChannel.SE19),\r
+                               new STGDAPARAM("14", EChannel.SE20),\r
+                               new STGDAPARAM("15", EChannel.SE21),\r
+                               new STGDAPARAM("16", EChannel.SE22),\r
+                               new STGDAPARAM("17", EChannel.SE23),\r
+                               new STGDAPARAM("18", EChannel.SE24),\r
+                               new STGDAPARAM("19", EChannel.SE25),\r
+                               new STGDAPARAM("1A", EChannel.SE26),\r
+                               new STGDAPARAM("1B", EChannel.SE27),\r
+                               new STGDAPARAM("1C", EChannel.SE28),\r
+                               new STGDAPARAM("1D", EChannel.SE29),\r
+                               new STGDAPARAM("1E", EChannel.SE30),\r
+                               new STGDAPARAM("1F", EChannel.SE31),\r
+                               new STGDAPARAM("20", EChannel.SE32),\r
+                               new STGDAPARAM("B1", EChannel.Bass_xxB),\r
+                               new STGDAPARAM("B2", EChannel.Bass_xGx),\r
+                               new STGDAPARAM("B3", EChannel.Bass_xGB),\r
+                               new STGDAPARAM("B4", EChannel.Bass_Rxx),\r
+                               new STGDAPARAM("B5", EChannel.Bass_RxB),\r
+                               new STGDAPARAM("B6", EChannel.Bass_RGx),\r
+                               new STGDAPARAM("B7", EChannel.Bass_RGB),\r
+                               new STGDAPARAM("BW", EChannel.Bass_Wailing),\r
+                               new STGDAPARAM("G0", EChannel.Guitar_Open),\r
+                               new STGDAPARAM("B0", EChannel.Bass_Open)\r
                        };\r
                        this.stGDAParam = stgdaparamArray;\r
                        #endregion\r
@@ -217,7 +217,7 @@ namespace DTXMania
                        this.nPolyphonicSounds = CDTXMania.Instance.ConfigIni.nPoliphonicSounds;\r
                        this.dbDTXVPlaySpeed = 1.0f;\r
                        this.bUse556x710BGAAVI = false;\r
-                       this.n使用レーン数 = new STDGBVALUE<int>();\r
+                       this.n使用レーン数 = new STDGBSValue<int>();\r
 \r
 #if TEST_NOTEOFFMODE\r
                        this.bHH演奏で直前のHHを消音する = true;\r
@@ -255,37 +255,36 @@ namespace DTXMania
 \r
                // メソッド\r
 \r
-               public int nモニタを考慮した音量(E楽器パート part)\r
+               public int nモニタを考慮した音量(EPart part)\r
                {\r
-                       CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
-                                       if (configIni.b演奏音を強調する.Drums)\r
+                               case EPart.Drums:\r
+                                       if (CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums)\r
                                        {\r
-                                               return configIni.n自動再生音量;\r
+                                               return CDTXMania.Instance.ConfigIni.nAutoVolume;\r
                                        }\r
-                                       return configIni.n手動再生音量;\r
+                                       return CDTXMania.Instance.ConfigIni.nChipVolume;\r
 \r
-                               case E楽器パート.GUITAR:\r
-                                       if (configIni.b演奏音を強調する.Guitar)\r
+                               case EPart.Guitar:\r
+                                       if (CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar)\r
                                        {\r
-                                               return configIni.n自動再生音量;\r
+                                               return CDTXMania.Instance.ConfigIni.nAutoVolume;\r
                                        }\r
-                                       return configIni.n手動再生音量;\r
+                                       return CDTXMania.Instance.ConfigIni.nChipVolume;\r
 \r
-                               case E楽器パート.BASS:\r
-                                       if (configIni.b演奏音を強調する.Bass)\r
+                               case EPart.Bass:\r
+                                       if (CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass)\r
                                        {\r
-                                               return configIni.n自動再生音量;\r
+                                               return CDTXMania.Instance.ConfigIni.nAutoVolume;\r
                                        }\r
-                                       return configIni.n手動再生音量;\r
+                                       return CDTXMania.Instance.ConfigIni.nChipVolume;\r
                        }\r
-                       if ((!configIni.b演奏音を強調する.Drums && !configIni.b演奏音を強調する.Guitar) && !configIni.b演奏音を強調する.Bass)\r
+                       if ((!CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums && !CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar) && !CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass)\r
                        {\r
-                               return configIni.n手動再生音量;\r
+                               return CDTXMania.Instance.ConfigIni.nChipVolume;\r
                        }\r
-                       return configIni.n自動再生音量;\r
+                       return CDTXMania.Instance.ConfigIni.nAutoVolume;\r
                }\r
                public void tAVIの読み込み()\r
                {\r
@@ -309,7 +308,7 @@ namespace DTXMania
                static BackgroundBMPLoadAll backgroundBMPLoadAll = new BackgroundBMPLoadAll(BMPLoadAll);\r
                delegate void BackgroundBMPTEXLoadAll(Dictionary<int, CBMPTEX> listB);\r
                static BackgroundBMPTEXLoadAll backgroundBMPTEXLoadAll = new BackgroundBMPTEXLoadAll(BMPTEXLoadAll);\r
-               private static void LoadTexture(CBMPbase cbmp)                                          // バックグラウンドスレッドで動作する、ファイル読み込み部\r
+               private static void LoadTexture(CBMPbase cbmp)            // バックグラウンドスレッドで動作する、ファイル読み込み部\r
                {\r
                        string filename = cbmp.GetFullPathname;\r
                        if (!File.Exists(filename))\r
@@ -329,7 +328,7 @@ namespace DTXMania
                                return;\r
                        }\r
                }\r
-               private static void BMPLoadAll(Dictionary<int, CBMP> listB)     // バックグラウンドスレッドで、テクスチャファイルをひたすら読み込んではキューに追加する\r
+               private static void BMPLoadAll(Dictionary<int, CBMP> listB) // バックグラウンドスレッドで、テクスチャファイルをひたすら読み込んではキューに追加する\r
                {\r
                        //Trace.TraceInformation( "Back: ThreadID(BMPLoad)=" + Thread.CurrentThread.ManagedThreadId + ", listCount=" + listB.Count  );\r
                        foreach (CBMPbase cbmp in listB.Values)\r
@@ -346,7 +345,7 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private static void BMPTEXLoadAll(Dictionary<int, CBMPTEX> listB)       // ダサい実装だが、Dictionary<>の中には手を出せず、妥協した\r
+               private static void BMPTEXLoadAll(Dictionary<int, CBMPTEX> listB) // ダサい実装だが、Dictionary<>の中には手を出せず、妥協した\r
                {\r
                        //Trace.TraceInformation( "Back: ThreadID(BMPLoad)=" + Thread.CurrentThread.ManagedThreadId + ", listCount=" + listB.Count  );\r
                        foreach (CBMPbase cbmp in listB.Values)\r
@@ -413,7 +412,7 @@ namespace DTXMania
                                                                }\r
                                                                cbmp.OnDeviceCreated(cbmp.bitmap, cbmp.GetFullPathname);\r
                                                        }\r
-                                                       catch (InvalidCastException)    // bmp読み込み失敗時は、キャストに失敗する\r
+                                                       catch (InvalidCastException)  // bmp読み込み失敗時は、キャストに失敗する\r
                                                        {\r
                                                        }\r
                                                        finally\r
@@ -425,8 +424,8 @@ namespace DTXMania
                                                else\r
                                                {\r
                                                        //Trace.TraceInformation( "Main: Sleeped.");\r
-                                                       Thread.Sleep(5);        // WaitOneのイベント待ちにすると、メインスレッド処理中に2個以上イベント完了したときにそれを正しく検出できなくなるので、\r
-                                               }                                               // ポーリングに逃げてしまいました。\r
+                                                       Thread.Sleep(5);  // WaitOneのイベント待ちにすると、メインスレッド処理中に2個以上イベント完了したときにそれを正しく検出できなくなるので、\r
+                                               }           // ポーリングに逃げてしまいました。\r
                                        }\r
                                        #endregion\r
                                }\r
@@ -478,8 +477,8 @@ namespace DTXMania
                                                else\r
                                                {\r
                                                        //Trace.TraceInformation( "Main: Sleeped.");\r
-                                                       Thread.Sleep(5);        // WaitOneのイベント待ちにすると、メインスレッド処理中に2個以上イベント完了したときにそれを正しく検出できなくなるので、\r
-                                               }                                               // ポーリングに逃げてしまいました。\r
+                                                       Thread.Sleep(5);  // WaitOneのイベント待ちにすると、メインスレッド処理中に2個以上イベント完了したときにそれを正しく検出できなくなるので、\r
+                                               }           // ポーリングに逃げてしまいました。\r
                                        }\r
                                        #endregion\r
                                }\r
@@ -518,8 +517,8 @@ namespace DTXMania
                                                        //    wc.rSound[ 0 ].n総演奏時間ms\r
                                                        //);\r
                                                        // wc.rSound[ i ].t再生位置を変更する( wc.rSound[ i ].t時刻から位置を返す( nAbsTimeFromStartPlaying ) );\r
-                                                       wc.rSound[i].t再生位置を変更する(nAbsTimeFromStartPlaying);    // WASAPI/ASIO用\r
-                                                       //Debug.WriteLine( "再生位置を変更: " + Path.GetFileName( wc.strファイル名 ) + nAbsTimeFromStartPlaying + "ms");\r
+                                                       wc.rSound[i].t再生位置を変更する(nAbsTimeFromStartPlaying);  // WASAPI/ASIO用\r
+                                                                                                                                                                                                                                                                       //Debug.WriteLine( "再生位置を変更: " + Path.GetFileName( wc.strファイル名 ) + nAbsTimeFromStartPlaying + "ms");\r
                                                }\r
                                        }\r
                                }\r
@@ -633,7 +632,7 @@ namespace DTXMania
                                                {\r
                                                        cwav.rSound[0].tBASSサウンドをミキサーに追加する();\r
                                                }\r
-                                               if (CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                               if (CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                {\r
                                                        Trace.TraceInformation("サウンドを作成しました。({3})({0})({1})({2}bytes)", cwav.strコメント文, str, cwav.rSound[0].nサウンドバッファサイズ, cwav.rSound[0].bストリーム再生する ? "Stream" : "OnMemory");\r
                                                }\r
@@ -647,8 +646,8 @@ namespace DTXMania
 \r
                                        #region [ 同時発音数を、チャンネルによって変える ]\r
                                        int nPoly = nPolyphonicSounds;\r
-                                       if (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() != "DirectSound")        // DShowでの再生の場合はミキシング負荷が高くないため、\r
-                                       {                                                                                                                                               // チップのライフタイム管理を行わない\r
+                                       if (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() != "DirectSound")  // DShowでの再生の場合はミキシング負荷が高くないため、\r
+                                       {                                   // チップのライフタイム管理を行わない\r
                                                if (cwav.bIsBassSound) nPoly = (nPolyphonicSounds >= 2) ? 2 : 1;\r
                                                else if (cwav.bIsGuitarSound) nPoly = (nPolyphonicSounds >= 2) ? 2 : 1;\r
                                                else if (cwav.bIsSESound) nPoly = 1;\r
@@ -682,7 +681,7 @@ namespace DTXMania
                                                                {\r
                                                                        cwav.rSound[i].tBASSサウンドをミキサーに追加する();\r
                                                                }\r
-                                                               if (CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                                               if (CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                                {\r
                                                                        Trace.TraceInformation("サウンドを作成しました。({3})({0})({1})({2}bytes)", cwav.strコメント文, str, cwav.rSound[0].nサウンドバッファサイズ, cwav.rSound[0].bストリーム再生する ? "Stream" : "OnMemory");\r
                                                                }\r
@@ -710,22 +709,22 @@ namespace DTXMania
                public static string tZZ(int n)\r
                {\r
                        if (n < 0 || n >= 36 * 36)\r
-                               return "!!";    // オーバー/アンダーフロー。\r
+                               return "!!";  // オーバー/アンダーフロー。\r
 \r
                        // n を36進数2桁の文字列にして返す。\r
 \r
                        string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";\r
                        return new string(new char[] { str[n / 36], str[n % 36] });\r
                }\r
-               public void tギターとベースのランダム化(E楽器パート part, Eランダムモード eRandom)\r
+               public void tギターとベースのランダム化(EPart part, ERandom eRandom)\r
                {\r
-                       if (((part == E楽器パート.GUITAR) || (part == E楽器パート.BASS)) && (eRandom != Eランダムモード.OFF))\r
+                       if (((part == EPart.Guitar) || (part == EPart.Bass)) && (eRandom != ERandom.Off))\r
                        {\r
                                int rndVal = 0;\r
                                foreach (CChip chip in this.listChip)\r
                                {\r
                                        bool bOpenChip = (chip.bGuitar可視チップ && this.bチップがある.OpenGuitar) || ((chip.bBass可視チップ) && this.bチップがある.OpenBass);\r
-                                       if (chip[Ech定義.BarLine])            // 小節が変化したら\r
+                                       if (chip[EChannel.BarLine])   // 小節が変化したら\r
                                        {\r
                                                rndVal = CDTXMania.Instance.Random.Next(6);\r
                                        }\r
@@ -736,26 +735,22 @@ namespace DTXMania
                }\r
 \r
                #region [ チップの再生と停止 ]\r
-               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms, int nLane)\r
+               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms)\r
                {\r
-                       this.tチップの再生(rChip, n再生開始システム時刻ms, nLane, CDTXMania.Instance.ConfigIni.n自動再生音量, false, false);\r
+                       this.tチップの再生(rChip, n再生開始システム時刻ms, CDTXMania.Instance.ConfigIni.nAutoVolume, false, false);\r
                }\r
-               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms, int nLane, int nVol)\r
+               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms, int nVol)\r
                {\r
-                       this.tチップの再生(rChip, n再生開始システム時刻ms, nLane, nVol, false, false);\r
+                       this.tチップの再生(rChip, n再生開始システム時刻ms, nVol, false, false);\r
                }\r
-               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms, int nLane, int nVol, bool bMIDIMonitor)\r
+               public void tチップの再生(CChip rChip, long n再生開始システム時刻ms, int nVol, bool bMIDIMonitor)\r
                {\r
-                       this.tチップの再生(rChip, n再生開始システム時刻ms, nLane, nVol, bMIDIMonitor, false);\r
+                       this.tチップの再生(rChip, n再生開始システム時刻ms, nVol, bMIDIMonitor, false);\r
                }\r
-               public void tチップの再生(CChip pChip, long n再生開始システム時刻ms, int nLane, int nVol, bool bMIDIMonitor, bool bBad)\r
+               public void tチップの再生(CChip pChip, long n再生開始システム時刻ms, int nVol, bool bMIDIMonitor, bool bBad)\r
                {\r
                        if (pChip.n整数値_内部番号 >= 0)\r
                        {\r
-                               if ((nLane < (int)Eレーン.LC) || ((int)Eレーン.BGM < nLane))\r
-                               {\r
-                                       throw new ArgumentOutOfRangeException();\r
-                               }\r
                                if (this.listWAV.ContainsKey(pChip.n整数値_内部番号))\r
                                {\r
                                        CWAV wc = this.listWAV[pChip.n整数値_内部番号];\r
@@ -776,7 +771,7 @@ namespace DTXMania
                                                {\r
                                                        sound.db周波数倍率 = 1.0;\r
                                                }\r
-                                               sound.db再生速度 = ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0;\r
+                                               sound.db再生速度 = ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0;\r
                                                // 再生速度によって、WASAPI/ASIOで使う使用mixerが決まるため、付随情報の設定(音量/PAN)は、再生速度の設定後に行う\r
                                                sound.n音量 = (int)(((double)(nVol * wc.n音量)) / 100.0);\r
                                                sound.n位置 = wc.n位置;\r
@@ -857,8 +852,8 @@ namespace DTXMania
                /// </summary>\r
                public void PlanToAddMixerChannel()\r
                {\r
-                       if (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound")        // DShowでの再生の場合はミキシング負荷が高くないため、\r
-                       {                                                                                                                                               // チップのライフタイム管理を行わない\r
+                       if (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound")  // DShowでの再生の場合はミキシング負荷が高くないため、\r
+                       {                                   // チップのライフタイム管理を行わない\r
                                return;\r
                        }\r
 \r
@@ -873,16 +868,16 @@ namespace DTXMania
                                if (pChip.bWAVを使うチャンネルである)\r
                                {\r
                                        #region [ 発音1秒前のタイミングを記録 ]\r
-                                       int n発音前余裕ms = 1000, n発音後余裕ms = 800;                                                // Drums\r
+                                       int n発音前余裕ms = 1000, n発音後余裕ms = 800;            // Drums\r
                                        {\r
                                                // Guitar / Bass\r
-                                               if ( pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS )\r
+                                               if (pChip.e楽器パート == EPart.Guitar || pChip.e楽器パート == EPart.Bass)\r
                                                {\r
                                                        n発音前余裕ms = 800;\r
                                                        //n発音後余裕ms = 500;\r
                                                }\r
                                                // SE\r
-                                               if ( pChip.ESoundChipTypeを得る == ESoundChipType.SE )\r
+                                               if (pChip.ESoundChipTypeを得る == ESoundChipType.SE)\r
                                                {\r
                                                        n発音前余裕ms = 200;\r
                                                        //n発音後余裕ms = 500;\r
@@ -909,7 +904,7 @@ namespace DTXMania
                                        t発声時刻msと発声位置を取得する(pChip.n発声時刻ms - n発音前余裕ms, out nAddMixer時刻ms, out nAddMixer位置);\r
                                        //Debug.WriteLine( "nAddMixer時刻ms=" + nAddMixer時刻ms + ",nAddMixer位置=" + nAddMixer位置 );\r
 \r
-                                       CChip c_AddMixer = new CChip(nAddMixer位置, pChip.n整数値, pChip.n整数値_内部番号, Ech定義.MixerAdd, nAddMixer時刻ms, false);\r
+                                       CChip c_AddMixer = new CChip(nAddMixer位置, pChip.n整数値, pChip.n整数値_内部番号, EChannel.MixerAdd, nAddMixer時刻ms, false);\r
                                        listAddMixerChannel.Add(c_AddMixer);\r
                                        //Debug.WriteLine("listAddMixerChannel:" );\r
                                        //DebugOut_CChipList( listAddMixerChannel );\r
@@ -921,7 +916,7 @@ namespace DTXMania
                                        {\r
                                                CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
                                                double _db再生速度 = (CDTXMania.Instance.DTXVmode.Enabled) ? this.dbDTXVPlaySpeed : this.db再生速度;\r
-                                               fullduration = (wc.rSound[0] == null) ? 0 : (int)(wc.rSound[0].n総演奏時間ms / _db再生速度);   // #23664 durationに再生速度が加味されておらず、低速再生でBGMが途切れる問題を修正 (発声時刻msは、DTX読み込み時に再生速度加味済)\r
+                                               fullduration = (wc.rSound[0] == null) ? 0 : (int)(wc.rSound[0].n総演奏時間ms / _db再生速度); // #23664 durationに再生速度が加味されておらず、低速再生でBGMが途切れる問題を修正 (発声時刻msは、DTX読み込み時に再生速度加味済)\r
                                        }\r
                                        //Debug.WriteLine("fullduration=" + fullduration );\r
                                        #endregion\r
@@ -961,13 +956,13 @@ namespace DTXMania
                                        int n新RemoveMixer時刻ms, n新RemoveMixer位置;\r
                                        t発声時刻msと発声位置を取得する(pChip.n発声時刻ms + duration + n発音後余裕ms, out n新RemoveMixer時刻ms, out n新RemoveMixer位置);\r
                                        //Debug.WriteLine( "n新RemoveMixer時刻ms=" + n新RemoveMixer時刻ms + ",n新RemoveMixer位置=" + n新RemoveMixer位置 );\r
-                                       if (n新RemoveMixer時刻ms < pChip.n発声時刻ms + duration) // 曲の最後でサウンドが切れるような場合は\r
+                                       if (n新RemoveMixer時刻ms < pChip.n発声時刻ms + duration) // 曲の最後でサウンドが切れるような場合は\r
                                        {\r
                                                CChip c_AddMixer_noremove = c_AddMixer;\r
                                                c_AddMixer_noremove.SetSoundAfterPlayEnd(true);\r
                                                listAddMixerChannel[listAddMixerChannel.Count - 1] = c_AddMixer_noremove;\r
-                                               continue;                                                                                               // 発声位置の計算ができないので、Mixer削除をあきらめる・・・のではなく\r
-                                                                                                                                                               // #32248 2013.10.15 yyagi 演奏終了後も再生を続けるチップであるというフラグをpChip内に立てる\r
+                                               continue;                       // 発声位置の計算ができないので、Mixer削除をあきらめる・・・のではなく\r
+                                                                                                                                                                               // #32248 2013.10.15 yyagi 演奏終了後も再生を続けるチップであるというフラグをpChip内に立てる\r
                                        }\r
                                        #region [ 未使用コード ]\r
                                        //if ( n新RemoveMixer時刻ms < pChip.n発声時刻ms + duration )     // 曲の最後でサウンドが切れるような場合\r
@@ -981,43 +976,43 @@ namespace DTXMania
                                        #region [ 発音終了2秒後にmixerから削除するが、その前に再発音することになるのかを確認(再発音ならmixer削除タイミングを延期) ]\r
                                        int n整数値 = pChip.n整数値;\r
                                        int index = listRemoveTiming.FindIndex(\r
-                                               delegate(CChip cchip) { return cchip.n整数値 == n整数値; }\r
+                                               delegate (CChip cchip) { return cchip.n整数値 == n整数値; }\r
                                        );\r
                                        //Debug.WriteLine( "index=" + index );\r
-                                       if (index >= 0)                                                                                                 // 過去に同じチップで発音中のものが見つかった場合\r
-                                       {                                                                                                                                       // 過去の発音のmixer削除を確定させるか、延期するかの2択。\r
+                                       if (index >= 0)                         // 過去に同じチップで発音中のものが見つかった場合\r
+                                       {                                 // 過去の発音のmixer削除を確定させるか、延期するかの2択。\r
                                                int n旧RemoveMixer時刻ms = listRemoveTiming[index].n発声時刻ms;\r
                                                int n旧RemoveMixer位置 = listRemoveTiming[index].n発声位置;\r
 \r
                                                //Debug.WriteLine( "n旧RemoveMixer時刻ms=" + n旧RemoveMixer時刻ms + ",n旧RemoveMixer位置=" + n旧RemoveMixer位置 );\r
-                                               if (pChip.n発声時刻ms - n発音前余裕ms <= n旧RemoveMixer時刻ms)      // mixer削除前に、同じ音の再発音がある場合は、\r
-                                               {                                                                                                                                       // mixer削除時刻を遅延させる(if-else後に行う)\r
-                                                       //Debug.WriteLine( "remove TAIL of listAddMixerChannel. TAIL INDEX=" + listAddMixerChannel.Count );\r
-                                                       //DebugOut_CChipList( listAddMixerChannel );\r
-                                                       listAddMixerChannel.RemoveAt(listAddMixerChannel.Count - 1);    // また、同じチップ音の「mixerへの再追加」は削除する\r
-                                                       //Debug.WriteLine( "removed result:" );\r
-                                                       //DebugOut_CChipList( listAddMixerChannel );\r
+                                               if (pChip.n発声時刻ms - n発音前余裕ms <= n旧RemoveMixer時刻ms)  // mixer削除前に、同じ音の再発音がある場合は、\r
+                                               {                                 // mixer削除時刻を遅延させる(if-else後に行う)\r
+                                                                                                                                                                                       //Debug.WriteLine( "remove TAIL of listAddMixerChannel. TAIL INDEX=" + listAddMixerChannel.Count );\r
+                                                                                                                                                                                       //DebugOut_CChipList( listAddMixerChannel );\r
+                                                       listAddMixerChannel.RemoveAt(listAddMixerChannel.Count - 1);  // また、同じチップ音の「mixerへの再追加」は削除する\r
+                                                                                                                                                                                                                                                                                                               //Debug.WriteLine( "removed result:" );\r
+                                                                                                                                                                                                                                                                                                               //DebugOut_CChipList( listAddMixerChannel );\r
                                                }\r
-                                               else                                                                                                                    // 逆に、時間軸上、mixer削除後に再発音するような流れの場合は\r
+                                               else                              // 逆に、時間軸上、mixer削除後に再発音するような流れの場合は\r
                                                {\r
                                                        //Debug.WriteLine( "Publish the value(listRemoveTiming[index] to listRemoveMixerChannel." );\r
-                                                       listRemoveMixerChannel.Add(listRemoveTiming[index]);    // mixer削除を確定させる\r
-                                                       //Debug.WriteLine( "listRemoveMixerChannel:" );\r
-                                                       //DebugOut_CChipList( listRemoveMixerChannel );\r
-                                                       //listRemoveTiming.RemoveAt( index );\r
+                                                       listRemoveMixerChannel.Add(listRemoveTiming[index]);  // mixer削除を確定させる\r
+                                                                                                                                                                                                                                                                               //Debug.WriteLine( "listRemoveMixerChannel:" );\r
+                                                                                                                                                                                                                                                                               //DebugOut_CChipList( listRemoveMixerChannel );\r
+                                                                                                                                                                                                                                                                               //listRemoveTiming.RemoveAt( index );\r
                                                }\r
-                                               CChip c = new CChip(n新RemoveMixer位置, listRemoveTiming[index].n整数値, listRemoveTiming[index].n整数値_内部番号, Ech定義.MixerRemove, n新RemoveMixer時刻ms, false);// mixer削除時刻を更新(遅延)する\r
+                                               CChip c = new CChip(n新RemoveMixer位置, listRemoveTiming[index].n整数値, listRemoveTiming[index].n整数値_内部番号, EChannel.MixerRemove, n新RemoveMixer時刻ms, false);// mixer削除時刻を更新(遅延)する\r
                                                listRemoveTiming[index] = c;\r
                                                //listRemoveTiming[ index ].n発声時刻ms = n新RemoveMixer時刻ms;  // mixer削除時刻を更新(遅延)する\r
                                                //listRemoveTiming[ index ].n発声位置 = n新RemoveMixer位置;\r
                                                //Debug.WriteLine( "listRemoveTiming: modified" );\r
                                                //DebugOut_CChipList( listRemoveTiming );\r
                                        }\r
-                                       else                                                                                                                            // 過去に同じチップを発音していないor\r
-                                       {                                                                                                                                       // 発音していたが既にmixer削除確定していたなら\r
-                                               CChip c = new CChip(n新RemoveMixer位置, pChip.n整数値, pChip.n整数値_内部番号, Ech定義.MixerRemove, n新RemoveMixer時刻ms, false);// 新しくmixer削除候補として追加する\r
-                                               //Debug.WriteLine( "Add new chip to listRemoveMixerTiming: " );\r
-                                               //Debug.WriteLine( "ch=" + c.nチャンネル番号.ToString( "x2" ) + ", nWAV番号=" + c.n整数値 + ", time=" + c.n発声時刻ms + ", lasttime=" + listChip[ listChip.Count - 1 ].n発声時刻ms );\r
+                                       else                                // 過去に同じチップを発音していないor\r
+                                       {                                 // 発音していたが既にmixer削除確定していたなら\r
+                                               CChip c = new CChip(n新RemoveMixer位置, pChip.n整数値, pChip.n整数値_内部番号, EChannel.MixerRemove, n新RemoveMixer時刻ms, false);// 新しくmixer削除候補として追加する\r
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       //Debug.WriteLine( "Add new chip to listRemoveMixerTiming: " );\r
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       //Debug.WriteLine( "ch=" + c.nチャンネル番号.ToString( "x2" ) + ", nWAV番号=" + c.n整数値 + ", time=" + c.n発声時刻ms + ", lasttime=" + listChip[ listChip.Count - 1 ].n発声時刻ms );\r
                                                listRemoveTiming.Add(c);\r
                                                //Debug.WriteLine( "listRemoveTiming:" );\r
                                                //DebugOut_CChipList( listRemoveTiming );\r
@@ -1072,7 +1067,7 @@ namespace DTXMania
                        //}\r
 \r
                        int index_min = -1, index_max = -1;\r
-                       for (int i = 0; i < listChip.Count; i++)                // 希望発声位置前後の「前」の方のチップを検索\r
+                       for (int i = 0; i < listChip.Count; i++)    // 希望発声位置前後の「前」の方のチップを検索\r
                        {\r
                                if (listChip[i].n発声時刻ms >= n希望発声時刻ms)\r
                                {\r
@@ -1080,7 +1075,7 @@ namespace DTXMania
                                        break;\r
                                }\r
                        }\r
-                       if (index_min < 0)      // 希望発声時刻に至らずに曲が終了してしまう場合\r
+                       if (index_min < 0)  // 希望発声時刻に至らずに曲が終了してしまう場合\r
                        {\r
                                // listの最終項目の時刻をそのまま使用する\r
                                //・・・のではダメ。BGMが尻切れになる。\r
@@ -1106,7 +1101,7 @@ namespace DTXMania
                /// <summary>\r
                /// Swap infos between Guitar and Bass (notes, level, n可視チップ数, bチップがある)\r
                /// </summary>\r
-               public void SwapGuitarBassInfos()                                               // #24063 2011.1.24 yyagi ギターとベースの譜面情報入替\r
+               public void SwapGuitarBassInfos()           // #24063 2011.1.24 yyagi ギターとベースの譜面情報入替\r
                {\r
                        foreach (CChip chip in listChip)\r
                        {\r
@@ -1254,9 +1249,9 @@ namespace DTXMania
                private struct STGDAPARAM\r
                {\r
                        public string strGDAのチャンネル文字列;\r
-                       public Ech定義 eDTXのチャンネル番号;\r
+                       public EChannel eDTXのチャンネル番号;\r
 \r
-                       public STGDAPARAM(string strGDAのチャンネル文字列, Ech定義 eDTXのチャンネル番号)             // 2011.1.1 yyagi 構造体のコンストラクタ追加(初期化簡易化のため)\r
+                       public STGDAPARAM(string strGDAのチャンネル文字列, EChannel eDTXのチャンネル番号)    // 2011.1.1 yyagi 構造体のコンストラクタ追加(初期化簡易化のため)\r
                        {\r
                                this.strGDAのチャンネル文字列 = strGDAのチャンネル文字列;\r
                                this.eDTXのチャンネル番号 = eDTXのチャンネル番号;\r
@@ -1270,7 +1265,7 @@ namespace DTXMania
                private int n現在の行数;\r
                private int n現在の乱数;\r
 \r
-               private int nPolyphonicSounds = 4;                                                      // #28228 2012.5.1 yyagi\r
+               private int nPolyphonicSounds = 4;              // #28228 2012.5.1 yyagi\r
 \r
                private int n内部番号BPM1to;\r
                private int n内部番号WAV1to;\r
@@ -1292,65 +1287,65 @@ namespace DTXMania
                /// <returns>s が正常に変換された場合は true。それ以外の場合は false。</returns>\r
                /// <exception cref="ArgumentException">style が NumberStyles 値でないか、style に NumberStyles.AllowHexSpecifier 値が含まれている</exception>\r
                private bool TryParse(string s, out double result)\r
-               {       // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
+               { // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
                        // EU諸国での #BPM 123,45 のような記述に対応するため、\r
                        // 小数点の最終位置を検出して、それをlocaleにあった\r
                        // 文字に置き換えてからTryParse()する\r
                        // 桁区切りの文字はスキップする\r
 \r
-                       const string DecimalSeparators = ".,";                          // 小数点文字\r
-                       const string GroupSeparators = ".,' ";                          // 桁区切り文字\r
-                       const string NumberSymbols = "0123456789";                      // 数値文字\r
+                       const string DecimalSeparators = ".,";        // 小数点文字\r
+                       const string GroupSeparators = ".,' ";        // 桁区切り文字\r
+                       const string NumberSymbols = "0123456789";      // 数値文字\r
 \r
-                       int len = s.Length;                                                                     // 文字列長\r
-                       int decimalPosition = len;                                                      // 真の小数点の位置 最初は文字列終端位置に仮置きする\r
+                       int len = s.Length;                 // 文字列長\r
+                       int decimalPosition = len;              // 真の小数点の位置 最初は文字列終端位置に仮置きする\r
 \r
                        for (int i = 0; i < len; i++)\r
-                       {                                                       // まず、真の小数点(一番最後に現れる小数点)の位置を求める\r
+                       {             // まず、真の小数点(一番最後に現れる小数点)の位置を求める\r
                                char c = s[i];\r
                                if (NumberSymbols.IndexOf(c) >= 0)\r
-                               {                               // 数値だったらスキップ\r
+                               {       // 数値だったらスキップ\r
                                        continue;\r
                                }\r
                                else if (DecimalSeparators.IndexOf(c) >= 0)\r
-                               {               // 小数点文字だったら、その都度位置を上書き記憶\r
+                               {   // 小数点文字だったら、その都度位置を上書き記憶\r
                                        decimalPosition = i;\r
                                }\r
                                else if (GroupSeparators.IndexOf(c) >= 0)\r
-                               {               // 桁区切り文字の場合もスキップ\r
+                               {   // 桁区切り文字の場合もスキップ\r
                                        continue;\r
                                }\r
                                else\r
-                               {                                                                                       // 数値・小数点・区切り文字以外がきたらループ終了\r
+                               {                     // 数値・小数点・区切り文字以外がきたらループ終了\r
                                        break;\r
                                }\r
                        }\r
 \r
                        StringBuilder decimalStr = new StringBuilder(16);\r
                        for (int i = 0; i < len; i++)\r
-                       {                                                       // 次に、localeにあった数値文字列を生成する\r
+                       {             // 次に、localeにあった数値文字列を生成する\r
                                char c = s[i];\r
                                if (NumberSymbols.IndexOf(c) >= 0)\r
-                               {                               // 数値だったら\r
-                                       decimalStr.Append(c);                                                   // そのままコピー\r
+                               {       // 数値だったら\r
+                                       decimalStr.Append(c);             // そのままコピー\r
                                }\r
                                else if (DecimalSeparators.IndexOf(c) >= 0)\r
-                               {               // 小数点文字だったら\r
+                               {   // 小数点文字だったら\r
                                        if (i == decimalPosition)\r
-                                       {                                               // 最後に出現した小数点文字なら、localeに合った小数点を出力する\r
+                                       {           // 最後に出現した小数点文字なら、localeに合った小数点を出力する\r
                                                decimalStr.Append(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);\r
                                        }\r
                                }\r
                                else if (GroupSeparators.IndexOf(c) >= 0)\r
-                               {               // 桁区切り文字だったら\r
-                                       continue;                                                                               // 何もしない(スキップ)\r
+                               {   // 桁区切り文字だったら\r
+                                       continue;                   // 何もしない(スキップ)\r
                                }\r
                                else\r
                                {\r
                                        break;\r
                                }\r
                        }\r
-                       return double.TryParse(decimalStr.ToString(), out result);      // 最後に、自分のlocale向けの文字列に対してTryParse実行\r
+                       return double.TryParse(decimalStr.ToString(), out result);  // 最後に、自分のlocale向けの文字列に対してTryParse実行\r
                }\r
                #endregion\r
                //-----------------\r
index 6e94d88..e21c4f1 100644 (file)
@@ -156,7 +156,7 @@ namespace DTXMania
                                                }\r
                                        }\r
                                        while (this.t入力_コメントをスキップする(ref ce));\r
-                               #endregion\r
+                                       #endregion\r
                                        //span = (TimeSpan) ( DateTime.Now - timeBeginLoad );\r
                                        //Trace.TraceInformation( "抜き出し時間:             {0}", span.ToString() );\r
                                        //timeBeginLoad = DateTime.Now;\r
@@ -184,17 +184,17 @@ namespace DTXMania
                                                        cbpm.n表記上の番号 = 0;\r
                                                        cbpm.dbBPM値 = 120.0;\r
                                                        this.listBPM.Add(cbpm.n内部番号, cbpm);\r
-                                                       CChip chip = new CChip(0, 0, cbpm.n内部番号, Ech定義.BPMEx);\r
+                                                       CChip chip = new CChip(0, 0, cbpm.n内部番号, EChannel.BPMEx);\r
                                                        this.listChip.Insert(0, chip);\r
                                                }\r
                                                else\r
                                                {\r
-                                                       CChip chip = new CChip(0, 0, cbpm.n内部番号, Ech定義.BPMEx);\r
+                                                       CChip chip = new CChip(0, 0, cbpm.n内部番号, EChannel.BPMEx);\r
                                                        this.listChip.Insert(0, chip);\r
                                                }\r
                                                if (this.listBMP.ContainsKey(0))\r
                                                {\r
-                                                       CChip chip = new CChip(0, 0, 0, Ech定義.BGALayer1);\r
+                                                       CChip chip = new CChip(0, 0, 0, EChannel.BGALayer1);\r
                                                        this.listChip.Insert(0, chip);\r
                                                }\r
                                                #endregion\r
@@ -280,16 +280,16 @@ namespace DTXMania
                                                #region [ 拍子・拍線の挿入 ]\r
                                                if (this.listChip.Count > 0)\r
                                                {\r
-                                                       this.listChip.Sort();           // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、\r
-                                                       // 保守性確保を優先してここでのソートは残しておく\r
-                                                       // なお、093時点では、このソートを削除しても動作するようにはしてある。\r
-                                                       // (ここまでの一部チップ登録を、listChip.Add(c)から同Insert(0,c)に変更してある)\r
-                                                       // これにより、数ms程度ながらここでのソートも高速化されている。\r
+                                                       this.listChip.Sort();   // 高速化のためにはこれを削りたいが、listChipの最後がn発声位置の終端である必要があるので、\r
+                                                                                                                                                       // 保守性確保を優先してここでのソートは残しておく\r
+                                                                                                                                                       // なお、093時点では、このソートを削除しても動作するようにはしてある。\r
+                                                                                                                                                       // (ここまでの一部チップ登録を、listChip.Add(c)から同Insert(0,c)に変更してある)\r
+                                                                                                                                                       // これにより、数ms程度ながらここでのソートも高速化されている。\r
                                                        double barlength = 1.0;\r
                                                        int nEndOfSong = (this.listChip[this.listChip.Count - 1].n発声位置 + 384) - (this.listChip[this.listChip.Count - 1].n発声位置 % 384);\r
-                                                       for (int tick384 = 0; tick384 <= nEndOfSong; tick384 += 384)    // 小節線の挿入 (後に出てくる拍子線とループをまとめようとするなら、forループの終了条件の微妙な違いに注意が必要)\r
+                                                       for (int tick384 = 0; tick384 <= nEndOfSong; tick384 += 384)  // 小節線の挿入 (後に出てくる拍子線とループをまとめようとするなら、forループの終了条件の微妙な違いに注意が必要)\r
                                                        {\r
-                                                               CChip chip = new CChip(tick384, 36 * 36 - 1, Ech定義.BarLine);\r
+                                                               CChip chip = new CChip(tick384, 36 * 36 - 1, EChannel.BarLine);\r
                                                                this.listChip.Add(chip);\r
                                                        }\r
                                                        //this.listChip.Sort();                         // ここでのソートは不要。ただし最後にソートすること\r
@@ -300,7 +300,7 @@ namespace DTXMania
                                                                int n発声位置_C1_同一小節内 = 0;\r
                                                                while ((nChipNo_C1 < this.listChip.Count) && (this.listChip[nChipNo_C1].n発声位置 < (tick384 + 384)))\r
                                                                {\r
-                                                                       if (this.listChip[nChipNo_C1].eチャンネル番号 == Ech定義.BeatLineShift)                                // 拍線シフトの検出\r
+                                                                       if (this.listChip[nChipNo_C1].eチャンネル番号 == EChannel.BeatLineShift)       // 拍線シフトの検出\r
                                                                        {\r
                                                                                n発声位置_C1_同一小節内 = this.listChip[nChipNo_C1].n発声位置 - tick384;\r
                                                                        }\r
@@ -312,13 +312,13 @@ namespace DTXMania
                                                                }\r
                                                                while ((nChipNo_BarLength < this.listChip.Count) && (this.listChip[nChipNo_BarLength].n発声位置 <= tick384))\r
                                                                {\r
-                                                                       if (this.listChip[nChipNo_BarLength].eチャンネル番号 == Ech定義.BarLength)             // bar lengthの検出\r
+                                                                       if (this.listChip[nChipNo_BarLength].eチャンネル番号 == EChannel.BarLength)    // bar lengthの検出\r
                                                                        {\r
                                                                                barlength = this.listChip[nChipNo_BarLength].db実数値;\r
                                                                        }\r
                                                                        nChipNo_BarLength++;\r
                                                                }\r
-                                                               for (int i = 0; i < 100; i++)                                                           // 拍線の挿入\r
+                                                               for (int i = 0; i < 100; i++)               // 拍線の挿入\r
                                                                {\r
                                                                        int tickBeat = (int)(((double)(384 * i)) / (4.0 * barlength));\r
                                                                        if ((tickBeat + n発声位置_C1_同一小節内) >= 384)\r
@@ -327,7 +327,7 @@ namespace DTXMania
                                                                        }\r
                                                                        if (((tickBeat + n発声位置_C1_同一小節内) % 384) != 0)\r
                                                                        {\r
-                                                                               CChip chip = new CChip(tick384 + (tickBeat + n発声位置_C1_同一小節内), 36 * 36 - 1, Ech定義.BeatLine);\r
+                                                                               CChip chip = new CChip(tick384 + (tickBeat + n発声位置_C1_同一小節内), 36 * 36 - 1, EChannel.BeatLine);\r
                                                                                this.listChip.Add(chip);\r
                                                                        }\r
                                                                }\r
@@ -343,31 +343,31 @@ namespace DTXMania
                                                for (int i = 0; i < this.listChip.Count; i++)\r
                                                {\r
                                                        bool bChangedBeatBarStatus = false;\r
-                                                       if ((this.listChip[i].eチャンネル番号 == Ech定義.BeatLineDisplay))\r
+                                                       if ((this.listChip[i].eチャンネル番号 == EChannel.BeatLineDisplay))\r
                                                        {\r
-                                                               if (this.listChip[i].n整数値 == 1)                           // BAR/BEAT LINE = ON\r
+                                                               if (this.listChip[i].n整数値 == 1)       // BAR/BEAT LINE = ON\r
                                                                {\r
                                                                        bShowBeatBarLine = true;\r
                                                                        bChangedBeatBarStatus = true;\r
                                                                }\r
-                                                               else if (this.listChip[i].n整数値 == 2)                      // BAR/BEAT LINE = OFF\r
+                                                               else if (this.listChip[i].n整数値 == 2)      // BAR/BEAT LINE = OFF\r
                                                                {\r
                                                                        bShowBeatBarLine = false;\r
                                                                        bChangedBeatBarStatus = true;\r
                                                                }\r
                                                        }\r
                                                        int startIndex = i;\r
-                                                       if (bChangedBeatBarStatus)                                                      // C2チップの前に50/51チップが来ている可能性に配慮\r
+                                                       if (bChangedBeatBarStatus)              // C2チップの前に50/51チップが来ている可能性に配慮\r
                                                        {\r
                                                                while (startIndex > 0 && this.listChip[startIndex].n発声位置 == this.listChip[i].n発声位置)\r
                                                                {\r
                                                                        startIndex--;\r
                                                                }\r
-                                                               startIndex++;   // 1つ小さく過ぎているので、戻す\r
+                                                               startIndex++; // 1つ小さく過ぎているので、戻す\r
                                                        }\r
                                                        for (int j = startIndex; j <= i; j++)\r
                                                        {\r
-                                                               if (((this.listChip[j].eチャンネル番号 == Ech定義.BarLine) || (this.listChip[j].eチャンネル番号 == Ech定義.BeatLine)) &&\r
+                                                               if (((this.listChip[j].eチャンネル番号 == EChannel.BarLine) || (this.listChip[j].eチャンネル番号 == EChannel.BeatLine)) &&\r
                                                                        (this.listChip[j].n整数値 == (36 * 36 - 1)))\r
                                                                {\r
                                                                        this.listChip[j].b可視 = bShowBeatBarLine;\r
@@ -407,7 +407,7 @@ namespace DTXMania
                                                //Trace.TraceInformation( "再生時刻変更:             {0}", span.ToString() );\r
                                                //timeBeginLoad = DateTime.Now;\r
                                                #region [ 可視チップ数カウント ]\r
-                                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                                {\r
                                                        this.n可視チップ数[inst] = 0;\r
                                                }\r
@@ -496,7 +496,7 @@ namespace DTXMania
                                                //Trace.TraceInformation( "hash計算:                 {0}", span.ToString() );\r
                                                //timeBeginLoad = DateTime.Now;\r
                                                #region [ bLogDTX詳細ログ出力 ]\r
-                                               if (CDTXMania.Instance.ConfigIni.bLogDTX詳細ログ出力)\r
+                                               if (CDTXMania.Instance.ConfigIni.bLogDTX)\r
                                                {\r
                                                        foreach (CWAV cwav in this.listWAV.Values)\r
                                                        {\r
@@ -536,11 +536,11 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                #endregion\r
-                                               \r
+\r
                                                // #36177 使用レーン数の表示 add ikanick 16.03.20\r
                                                #region [ 使用レーン数カウント ]\r
-                                               \r
-                                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+\r
+                                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                                {\r
                                                        this.n使用レーン数[inst] = 0;\r
                                                }\r
@@ -548,30 +548,35 @@ namespace DTXMania
                                                foreach (CChip chip in this.listChip)\r
                                                {\r
                                                        int ch = (int)chip.eチャンネル番号;\r
-                                                       if (chip.bDrums可視チップ) {\r
-                                                               if ( this.n使用レーン数.Drums == 0 ) this.n使用レーン数.Drums = 6;\r
-                                                               if ( this.n使用レーン数.Drums < 10 ) {\r
-                                                                       if ( ( chip.eチャンネル番号 == Ech定義.FloorTom )\r
-                                                                       || ( chip.eチャンネル番号 == Ech定義.HiHatOpen )\r
-                                                                       || ( chip.eチャンネル番号 == Ech定義.RideCymbal )\r
-                                                                       || ( chip.eチャンネル番号 == Ech定義.LeftCymbal ) )\r
+                                                       if (chip.bDrums可視チップ)\r
+                                                       {\r
+                                                               if (this.n使用レーン数.Drums == 0) this.n使用レーン数.Drums = 6;\r
+                                                               if (this.n使用レーン数.Drums < 10)\r
+                                                               {\r
+                                                                       if ((chip.eチャンネル番号 == EChannel.FloorTom)\r
+                                                                       || (chip.eチャンネル番号 == EChannel.HiHatOpen)\r
+                                                                       || (chip.eチャンネル番号 == EChannel.RideCymbal)\r
+                                                                       || (chip.eチャンネル番号 == EChannel.LeftCymbal))\r
                                                                        {\r
                                                                                this.n使用レーン数.Drums = 10;\r
                                                                        }\r
                                                                }\r
-                                                               if ( this.n使用レーン数.Drums < 12 ) {\r
-                                                                       if ( ( chip.eチャンネル番号 == Ech定義.LeftPedal )\r
-                                                                       || ( chip.eチャンネル番号 == Ech定義.LeftBassDrum ) )\r
+                                                               if (this.n使用レーン数.Drums < 12)\r
+                                                               {\r
+                                                                       if ((chip.eチャンネル番号 == EChannel.LeftPedal)\r
+                                                                       || (chip.eチャンネル番号 == EChannel.LeftBassDrum))\r
                                                                        {\r
                                                                                this.n使用レーン数.Drums = 12;\r
                                                                        }\r
                                                                }\r
                                                        }\r
-                                                       if (chip.bGuitar可視チップ) {\r
+                                                       if (chip.bGuitar可視チップ)\r
+                                                       {\r
                                                                // 5レーン未対応\r
                                                                //if ( this.n使用レーン数.Guitar == 0 ) this.n使用レーン数.Guitar = 3;\r
                                                        }\r
-                                                       if (chip.bBass可視チップ) {\r
+                                                       if (chip.bBass可視チップ)\r
+                                                       {\r
                                                                // 5レーン未対応\r
                                                                //if ( this.n使用レーン数.Bass == 0 ) this.n使用レーン数.Bass = 3;\r
                                                        }\r
@@ -586,7 +591,7 @@ namespace DTXMania
                private bool t入力_コマンド文字列を抜き出す(ref CharEnumerator ce, ref StringBuilder sb文字列)\r
                {\r
                        if (!this.t入力_空白をスキップする(ref ce))\r
-                               return false;   // 文字が尽きた\r
+                               return false; // 文字が尽きた\r
 \r
                        #region [ コマンド終端文字(':')、半角空白、コメント開始文字(';')、改行のいずれかが出現するまでをコマンド文字列と見なし、sb文字列 にコピーする。]\r
                        //-----------------\r
@@ -595,7 +600,7 @@ namespace DTXMania
                                sb文字列.Append(ce.Current);\r
 \r
                                if (!ce.MoveNext())\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
                        }\r
                        //-----------------\r
                        #endregion\r
@@ -605,10 +610,10 @@ namespace DTXMania
                        if (ce.Current == ':')\r
                        {\r
                                if (!ce.MoveNext())\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
 \r
                                if (!this.t入力_空白をスキップする(ref ce))\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
                        }\r
                        //-----------------\r
                        #endregion\r
@@ -622,7 +627,7 @@ namespace DTXMania
                        while (ce.Current != '\n')\r
                        {\r
                                if (!ce.MoveNext())\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
                        }\r
 \r
                        // 改行の次の文字へ移動した結果を返す。\r
@@ -631,10 +636,10 @@ namespace DTXMania
                }\r
                private bool t入力_コメント文字列を抜き出す(ref CharEnumerator ce, ref StringBuilder sb文字列)\r
                {\r
-                       if (ce.Current != ';')          // コメント開始文字(';')じゃなければ正常帰還。\r
+                       if (ce.Current != ';')    // コメント開始文字(';')じゃなければ正常帰還。\r
                                return true;\r
 \r
-                       if (!ce.MoveNext())             // ';' の次で文字列が終わってたら終了帰還。\r
+                       if (!ce.MoveNext())   // ';' の次で文字列が終わってたら終了帰還。\r
                                return false;\r
 \r
                        #region [ ';' の次の文字から '\n' の1つ前までをコメント文字列と見なし、sb文字列にコピーする。]\r
@@ -662,7 +667,7 @@ namespace DTXMania
                private bool t入力_パラメータ文字列を抜き出す(ref CharEnumerator ce, ref StringBuilder sb文字列)\r
                {\r
                        if (!this.t入力_空白をスキップする(ref ce))\r
-                               return false;   // 文字が尽きた\r
+                               return false; // 文字が尽きた\r
 \r
                        #region [ 改行またはコメント開始文字(';')が出現するまでをパラメータ文字列と見なし、sb文字列 にコピーする。]\r
                        //-----------------\r
@@ -685,10 +690,10 @@ namespace DTXMania
                        while (ce.Current == ' ' || ce.Current == '\n')\r
                        {\r
                                if (ce.Current == '\n')\r
-                                       this.n現在の行数++;                // 改行文字では行番号が増える。\r
+                                       this.n現在の行数++;    // 改行文字では行番号が増える。\r
 \r
                                if (!ce.MoveNext())\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
                        }\r
 \r
                        return true;\r
@@ -700,7 +705,7 @@ namespace DTXMania
                        while (ce.Current == ' ')\r
                        {\r
                                if (!ce.MoveNext())\r
-                                       return false;   // 文字が尽きた\r
+                                       return false; // 文字が尽きた\r
                        }\r
 \r
                        return true;\r
@@ -725,16 +730,16 @@ namespace DTXMania
                                }\r
                                else if (this.bstackIFからENDIFをスキップする.Peek())\r
                                {\r
-                                       this.bstackIFからENDIFをスキップする.Push(true);       // 親が true ならその入れ子も問答無用で true 。\r
+                                       this.bstackIFからENDIFをスキップする.Push(true); // 親が true ならその入れ子も問答無用で true 。\r
                                }\r
-                               else                                                                                                    // 親が false なら入れ子はパラメータと乱数を比較して結果を判断する。\r
+                               else                          // 親が false なら入れ子はパラメータと乱数を比較して結果を判断する。\r
                                {\r
                                        int n数値 = 0;\r
 \r
                                        if (!int.TryParse(strパラメータ, out n数値))\r
                                                n数値 = 1;\r
 \r
-                                       this.bstackIFからENDIFをスキップする.Push(n数値 != this.n現在の乱数);           // 乱数と数値が一致したら true 。\r
+                                       this.bstackIFからENDIFをスキップする.Push(n数値 != this.n現在の乱数);   // 乱数と数値が一致したら true 。\r
                                }\r
                        }\r
                        //-----------------\r
@@ -747,7 +752,7 @@ namespace DTXMania
 \r
                                if (this.bstackIFからENDIFをスキップする.Count > 1)\r
                                {\r
-                                       this.bstackIFからENDIFをスキップする.Pop();            // 入れ子を1つ脱出。\r
+                                       this.bstackIFからENDIFをスキップする.Pop();    // 入れ子を1つ脱出。\r
                                }\r
                                else\r
                                {\r
@@ -757,7 +762,7 @@ namespace DTXMania
                        //-----------------\r
                        #endregion\r
 \r
-                       else if (!this.bstackIFからENDIFをスキップする.Peek())         // IF~ENDIF をスキップするなら以下はすべて無視。\r
+                       else if (!this.bstackIFからENDIFをスキップする.Peek())   // IF~ENDIF をスキップするなら以下はすべて無視。\r
                        {\r
                                #region [ PATH_WAV ]\r
                                //-----------------\r
@@ -807,7 +812,7 @@ namespace DTXMania
                                        int dlevel;\r
                                        if (int.TryParse(strパラメータ, out dlevel))\r
                                        {\r
-                                               this.LEVEL.Drums = Math.Min(Math.Max(dlevel, 0), 100);  // 0~100 に丸める\r
+                                               this.LEVEL.Drums = Math.Min(Math.Max(dlevel, 0), 100);  // 0~100 に丸める\r
                                        }\r
                                }\r
                                //-----------------\r
@@ -821,7 +826,7 @@ namespace DTXMania
                                        int glevel;\r
                                        if (int.TryParse(strパラメータ, out glevel))\r
                                        {\r
-                                               this.LEVEL.Guitar = Math.Min(Math.Max(glevel, 0), 100);         // 0~100 に丸める\r
+                                               this.LEVEL.Guitar = Math.Min(Math.Max(glevel, 0), 100);   // 0~100 に丸める\r
                                        }\r
                                }\r
                                //-----------------\r
@@ -835,7 +840,7 @@ namespace DTXMania
                                        int blevel;\r
                                        if (int.TryParse(strパラメータ, out blevel))\r
                                        {\r
-                                               this.LEVEL.Bass = Math.Min(Math.Max(blevel, 0), 100);           // 0~100 に丸める\r
+                                               this.LEVEL.Bass = Math.Min(Math.Max(blevel, 0), 100);   // 0~100 に丸める\r
                                        }\r
                                }\r
                                //-----------------\r
@@ -947,7 +952,7 @@ namespace DTXMania
                                        if (!int.TryParse(strパラメータ, out n数値))\r
                                                n数値 = 1;\r
 \r
-                                       this.n現在の乱数 = CDTXMania.Instance.Random.Next(n数値) + 1;            // 1~数値 までの乱数を生成。\r
+                                       this.n現在の乱数 = CDTXMania.Instance.Random.Next(n数値) + 1;    // 1~数値 までの乱数を生成。\r
                                }\r
                                //-----------------\r
                                #endregion\r
@@ -982,7 +987,7 @@ namespace DTXMania
                                }\r
                                //-----------------\r
                                #endregion\r
-                               else if (!this.bヘッダのみ)                // ヘッダのみの解析の場合、以下は無視。\r
+                               else if (!this.bヘッダのみ)    // ヘッダのみの解析の場合、以下は無視。\r
                                {\r
                                        #region [ PANEL ]\r
                                        //-----------------\r
@@ -990,12 +995,12 @@ namespace DTXMania
                                        {\r
                                                this.t入力_パラメータ食い込みチェック("PANEL", ref strコマンド, ref strパラメータ);\r
 \r
-                                               int dummyResult;                                                                // #23885 2010.12.12 yyagi: not to confuse "#PANEL strings (panel)" and "#PANEL int (panpot of EL)"\r
+                                               int dummyResult;                // #23885 2010.12.12 yyagi: not to confuse "#PANEL strings (panel)" and "#PANEL int (panpot of EL)"\r
                                                if (!int.TryParse(strパラメータ, out dummyResult))\r
-                                               {               // 数値じゃないならPANELとみなす\r
-                                                       this.PANEL = strパラメータ;                                                        //\r
-                                                       goto EOL;                                                                       //\r
-                                               }                                                                                               // 数値ならPAN ELとみなす\r
+                                               {   // 数値じゃないならPANELとみなす\r
+                                                       this.PANEL = strパラメータ;              //\r
+                                                       goto EOL;                 //\r
+                                               }                       // 数値ならPAN ELとみなす\r
 \r
                                        }\r
                                        //-----------------\r
@@ -1035,8 +1040,8 @@ namespace DTXMania
 \r
                                                double basebpm = 0.0;\r
                                                //if( double.TryParse( str2, out num6 ) && ( num6 > 0.0 ) )\r
-                                               if (TryParse(strパラメータ, out basebpm) && basebpm > 0.0) // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
-                                               {                                                                                                       // #24204 2011.01.21 yyagi: Fix the condition correctly\r
+                                               if (TryParse(strパラメータ, out basebpm) && basebpm > 0.0) // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
+                                               {                         // #24204 2011.01.21 yyagi: Fix the condition correctly\r
                                                        this.BASEBPM = basebpm;\r
                                                }\r
                                        }\r
@@ -1089,9 +1094,9 @@ namespace DTXMania
                                        {\r
                                                this.t入力_行解析_チップ配置(strコマンド, strパラメータ, strコメント);\r
                                        }\r
-                               EOL:\r
-                                       Debug.Assert(true);             // #23885 2010.12.12 yyagi: dummy line to exit parsing the line\r
-                                       // 2011.8.17 from: "int xx=0;" から変更。毎回警告が出るので。\r
+                                       EOL:\r
+                                       Debug.Assert(true);   // #23885 2010.12.12 yyagi: dummy line to exit parsing the line\r
+                                                                                                                               // 2011.8.17 from: "int xx=0;" から変更。毎回警告が出るので。\r
                                }\r
                                //else\r
                                //{     // Duration測定のため、bヘッダのみ==trueでも、チップ配置は行う\r
@@ -1106,10 +1111,10 @@ namespace DTXMania
                        #region [ "AVI" or "VIDEO" で始まらないコマンドは無効。]\r
                        //-----------------\r
                        if (strコマンド.StartsWith("AVI", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(3);         // strコマンド から先頭の"AVI"文字を除去。\r
+                               strコマンド = strコマンド.Substring(3);   // strコマンド から先頭の"AVI"文字を除去。\r
 \r
                        else if (strコマンド.StartsWith("VIDEO", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(5);         // strコマンド から先頭の"VIDEO"文字を除去。\r
+                               strコマンド = strコマンド.Substring(5);   // strコマンド から先頭の"VIDEO"文字を除去。\r
 \r
                        else\r
                                return false;\r
@@ -1119,7 +1124,7 @@ namespace DTXMania
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // AVI番号 zz がないなら無効。\r
+                               return false; // AVI番号 zz がないなら無効。\r
 \r
                        #region [ AVI番号 zz を取得する。]\r
                        //-----------------\r
@@ -1134,9 +1139,9 @@ namespace DTXMania
 \r
                        #region [ AVIリストに {zz, avi} の組を登録する。 ]\r
                        //-----------------\r
-                       var avi = new CAVI(zz, strパラメータ, strコメント, CDTXMania.Instance.ConfigIni.n演奏速度);\r
+                       var avi = new CAVI(zz, strパラメータ, strコメント, CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
 \r
-                       if (this.listAVI.ContainsKey(zz))       // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listAVI.ContainsKey(zz)) // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listAVI.Remove(zz);\r
 \r
                        this.listAVI.Add(zz, avi);\r
@@ -1154,14 +1159,14 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("AVIPAN", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"AVIPAN"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"AVIPAN"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // AVIPAN番号 zz がないなら無効。\r
+                               return false; // AVIPAN番号 zz がないなら無効。\r
 \r
                        #region [ AVIPAN番号 zz を取得する。]\r
                        //-----------------\r
@@ -1375,7 +1380,7 @@ namespace DTXMania
 \r
                        #region [ AVIPANリストに {zz, avipan} の組を登録する。]\r
                        //-----------------\r
-                       if (this.listAVIPAN.ContainsKey(zz))    // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listAVIPAN.ContainsKey(zz))  // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listAVIPAN.Remove(zz);\r
 \r
                        this.listAVIPAN.Add(zz, avipan);\r
@@ -1393,14 +1398,14 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("BGA", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BGA"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BGA"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // BGA番号 zz がないなら無効。\r
+                               return false; // BGA番号 zz がないなら無効。\r
 \r
                        #region [ BGA番号 zz を取得する。]\r
                        //-----------------\r
@@ -1542,7 +1547,7 @@ namespace DTXMania
                        #endregion\r
                        #region [ BGAリストに {zz, bga} の組を登録する。]\r
                        //-----------------\r
-                       if (this.listBGA.ContainsKey(zz))       // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listBGA.ContainsKey(zz)) // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listBGA.Remove(zz);\r
 \r
                        this.listBGA.Add(zz, bga);\r
@@ -1560,14 +1565,14 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("BGAPAN", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"BGAPAN"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"BGAPAN"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // BGAPAN番号 zz がないなら無効。\r
+                               return false; // BGAPAN番号 zz がないなら無効。\r
 \r
                        #region [ BGAPAN番号 zz を取得する。]\r
                        //-----------------\r
@@ -1781,7 +1786,7 @@ namespace DTXMania
 \r
                        #region [ BGAPANリストに {zz, bgapan} の組を登録する。]\r
                        //-----------------\r
-                       if (this.listBGAPAN.ContainsKey(zz))    // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listBGAPAN.ContainsKey(zz))  // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listBGAPAN.Remove(zz);\r
 \r
                        this.listBGAPAN.Add(zz, bgapan);\r
@@ -1799,8 +1804,8 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("BMP", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BMP"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BMP"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
@@ -1843,7 +1848,7 @@ namespace DTXMania
 \r
                        #region [ BMPリストに {zz, bmp} の組を登録。]\r
                        //-----------------\r
-                       if (this.listBMP.ContainsKey(zz))       // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listBMP.ContainsKey(zz)) // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listBMP.Remove(zz);\r
 \r
                        this.listBMP.Add(zz, bmp);\r
@@ -1861,14 +1866,14 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("BMPTEX", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"BMPTEX"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(6); // strコマンド から先頭の"BMPTEX"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // BMPTEX番号 zz がないなら無効。\r
+                               return false; // BMPTEX番号 zz がないなら無効。\r
 \r
                        #region [ BMPTEX番号 zz を取得する。]\r
                        //-----------------\r
@@ -1890,7 +1895,7 @@ namespace DTXMania
 \r
                        #region [ BMPTEXリストに {zz, bmptex} の組を登録する。]\r
                        //-----------------\r
-                       if (this.listBMPTEX.ContainsKey(zz))    // 既にリスト中に存在しているなら削除。後のものが有効。\r
+                       if (this.listBMPTEX.ContainsKey(zz))  // 既にリスト中に存在しているなら削除。後のものが有効。\r
                                this.listBMPTEX.Remove(zz);\r
 \r
                        this.listBMPTEX.Add(zz, bmptex);\r
@@ -1908,8 +1913,8 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("BPM", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BPM"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"BPM"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
@@ -1947,7 +1952,7 @@ namespace DTXMania
                        #region [ BPM値を取得する。]\r
                        //-----------------\r
                        //if( !double.TryParse( strパラメータ, out result ) )\r
-                       if (!TryParse(strパラメータ, out dbBPM))                   // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
+                       if (!TryParse(strパラメータ, out dbBPM))     // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
                                return false;\r
 \r
                        if (dbBPM <= 0.0)\r
@@ -1955,8 +1960,8 @@ namespace DTXMania
                        //-----------------\r
                        #endregion\r
 \r
-                       if (zz == 0)                    // "#BPM00:" と "#BPM:" は等価。\r
-                               this.BPM = dbBPM;       // この曲の代表 BPM に格納する。\r
+                       if (zz == 0)      // "#BPM00:" と "#BPM:" は等価。\r
+                               this.BPM = dbBPM; // この曲の代表 BPM に格納する。\r
 \r
                        #region [ BPMリストに {内部番号, zz, dbBPM} の組を登録。]\r
                        //-----------------\r
@@ -1973,16 +1978,16 @@ namespace DTXMania
 \r
                        #region [ BPM番号が zz であるBPM未設定のBPMチップがあれば、そのサイズを変更する。無限管理に対応。]\r
                        //-----------------\r
-                       if (this.n無限管理BPM[zz] == -zz)   // 初期状態では n無限管理BPM[zz] = -zz である。この場合、#BPMzz がまだ出現していないことを意味する。\r
+                       if (this.n無限管理BPM[zz] == -zz) // 初期状態では n無限管理BPM[zz] = -zz である。この場合、#BPMzz がまだ出現していないことを意味する。\r
                        {\r
-                               foreach (CChip chip in listChip)        // これまでに出てきたチップのうち、該当する(BPM値が未設定の)BPMチップの値を変更する(仕組み上、必ず後方参照となる)。\r
+                               foreach (CChip chip in listChip)  // これまでに出てきたチップのうち、該当する(BPM値が未設定の)BPMチップの値を変更する(仕組み上、必ず後方参照となる)。\r
                                {\r
                                        chip.AdjustInfiniteManageIntInternalIndex(chip.bBPMチップである, zz, this.n内部番号BPM1to);\r
                                }\r
                        }\r
-                       this.n無限管理BPM[zz] = this.n内部番号BPM1to;                   // 次にこの BPM番号 zz を使うBPMチップが現れたら、このBPM値が格納されることになる。\r
-                       this.n内部番号BPM1to++;             // 内部番号は単純増加連番。\r
-                       //-----------------\r
+                       this.n無限管理BPM[zz] = this.n内部番号BPM1to;     // 次にこの BPM番号 zz を使うBPMチップが現れたら、このBPM値が格納されることになる。\r
+                       this.n内部番号BPM1to++;   // 内部番号は単純増加連番。\r
+                                                                                                               //-----------------\r
                        #endregion\r
 \r
                        return true;\r
@@ -1996,8 +2001,8 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("RESULTIMAGE", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(11);        // strコマンド から先頭の"RESULTIMAGE"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(11);  // strコマンド から先頭の"RESULTIMAGE"文字を除去。\r
+                                                                                                                                                               //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
@@ -2057,7 +2062,7 @@ namespace DTXMania
                }\r
                private void t入力_行解析_RESULTIMAGE_ファイルを設定する(int nランク0to6, string strファイル名)\r
                {\r
-                       if (nランク0to6 < 0 || nランク0to6 > 6)   // 値域チェック。\r
+                       if (nランク0to6 < 0 || nランク0to6 > 6) // 値域チェック。\r
                                return;\r
 \r
                        // 指定されたランクから上位のすべてのランクについて、ファイル名を更新する。\r
@@ -2085,8 +2090,8 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("RESULTMOVIE", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(11);        // strコマンド から先頭の"RESULTMOVIE"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(11);  // strコマンド から先頭の"RESULTMOVIE"文字を除去。\r
+                                                                                                                                                               //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
@@ -2146,7 +2151,7 @@ namespace DTXMania
                }\r
                private void t入力_行解析_RESULTMOVIE_ファイルを設定する(int nランク0to6, string strファイル名)\r
                {\r
-                       if (nランク0to6 < 0 || nランク0to6 > 6)   // 値域チェック。\r
+                       if (nランク0to6 < 0 || nランク0to6 > 6) // 値域チェック。\r
                                return;\r
 \r
                        // 指定されたランクから上位のすべてのランクについて、ファイル名を更新する。\r
@@ -2174,8 +2179,8 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("RESULTSOUND", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(11);        // strコマンド から先頭の"RESULTSOUND"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(11);  // strコマンド から先頭の"RESULTSOUND"文字を除去。\r
+                                                                                                                                                               //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
@@ -2235,7 +2240,7 @@ namespace DTXMania
                }\r
                private void t入力_行解析_RESULTSOUND_ファイルを設定する(int nランク0to6, string strファイル名)\r
                {\r
-                       if (nランク0to6 < 0 || nランク0to6 > 6)   // 値域チェック。\r
+                       if (nランク0to6 < 0 || nランク0to6 > 6) // 値域チェック。\r
                                return;\r
 \r
                        // 指定されたランクから上位のすべてのランクについて、ファイル名を更新する。\r
@@ -2263,9 +2268,9 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("SIZE", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(4); // strコマンド から先頭の"SIZE"文字を除去。\r
+                       strコマンド = strコマンド.Substring(4); // strコマンド から先頭の"SIZE"文字を除去。\r
 \r
-                       if (strコマンド.Length < 2) // サイズ番号の指定がない場合は無効。\r
+                       if (strコマンド.Length < 2) // サイズ番号の指定がない場合は無効。\r
                                return false;\r
                        //-----------------\r
                        #endregion\r
@@ -2290,24 +2295,24 @@ namespace DTXMania
                        int nサイズ値;\r
 \r
                        if (!int.TryParse(strパラメータ, out nサイズ値))\r
-                               return true;    // int変換に失敗しても、この行自体の処理は終えたのでtrueを返す。\r
+                               return true;  // int変換に失敗しても、この行自体の処理は終えたのでtrueを返す。\r
 \r
-                       nサイズ値 = Math.Min(Math.Max(nサイズ値, 0), 100);      // 0未満は0、100超えは100に強制変換。\r
-                       //-----------------\r
+                       nサイズ値 = Math.Min(Math.Max(nサイズ値, 0), 100);  // 0未満は0、100超えは100に強制変換。\r
+                                                                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        #region [ nWAV番号で示されるサイズ未設定のWAVチップがあれば、そのサイズを変更する。無限管理に対応。]\r
                        //-----------------\r
-                       if (this.n無限管理SIZE[nWAV番号] == -nWAV番号)  // 初期状態では n無限管理SIZE[xx] = -xx である。この場合、#SIZExx がまだ出現していないことを意味する。\r
+                       if (this.n無限管理SIZE[nWAV番号] == -nWAV番号)  // 初期状態では n無限管理SIZE[xx] = -xx である。この場合、#SIZExx がまだ出現していないことを意味する。\r
                        {\r
-                               foreach (CWAV wav in this.listWAV.Values)               // これまでに出てきたWAVチップのうち、該当する(サイズが未設定の)チップのサイズを変更する(仕組み上、必ず後方参照となる)。\r
+                               foreach (CWAV wav in this.listWAV.Values)   // これまでに出てきたWAVチップのうち、該当する(サイズが未設定の)チップのサイズを変更する(仕組み上、必ず後方参照となる)。\r
                                {\r
-                                       if (wav.nチップサイズ == -nWAV番号)             // #SIZExx 行より前の行に出現した #WAVxx では、チップサイズは -xx に初期化されている。\r
+                                       if (wav.nチップサイズ == -nWAV番号)   // #SIZExx 行より前の行に出現した #WAVxx では、チップサイズは -xx に初期化されている。\r
                                                wav.nチップサイズ = nサイズ値;\r
                                }\r
                        }\r
-                       this.n無限管理SIZE[nWAV番号] = nサイズ値;                     // 次にこの nWAV番号を使うWAVチップが現れたら、負数の代わりに、このサイズ値が格納されることになる。\r
-                       //-----------------\r
+                       this.n無限管理SIZE[nWAV番号] = nサイズ値;     // 次にこの nWAV番号を使うWAVチップが現れたら、負数の代わりに、このサイズ値が格納されることになる。\r
+                                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        return true;\r
@@ -2321,14 +2326,14 @@ namespace DTXMania
                        if (!strコマンド.StartsWith("WAV", StringComparison.OrdinalIgnoreCase))\r
                                return false;\r
 \r
-                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"WAV"文字を除去。\r
-                       //-----------------\r
+                       strコマンド = strコマンド.Substring(3); // strコマンド から先頭の"WAV"文字を除去。\r
+                                                                                                                                                       //-----------------\r
                        #endregion\r
 \r
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // WAV番号 zz がないなら無効。\r
+                               return false; // WAV番号 zz がないなら無効。\r
 \r
                        #region [ WAV番号 zz を取得する。]\r
                        //-----------------\r
@@ -2360,16 +2365,16 @@ namespace DTXMania
 \r
                        #region [ WAV番号が zz である内部番号未設定のWAVチップがあれば、その内部番号を変更する。無限管理対応。]\r
                        //-----------------\r
-                       if (this.n無限管理WAV[zz] == -zz)   // 初期状態では n無限管理WAV[zz] = -zz である。この場合、#WAVzz がまだ出現していないことを意味する。\r
+                       if (this.n無限管理WAV[zz] == -zz) // 初期状態では n無限管理WAV[zz] = -zz である。この場合、#WAVzz がまだ出現していないことを意味する。\r
                        {\r
-                               foreach (CChip chip in listChip)        // これまでに出てきたチップのうち、該当する(内部番号が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
+                               foreach (CChip chip in listChip)  // これまでに出てきたチップのうち、該当する(内部番号が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
                                {\r
                                        chip.AdjustInfiniteManageIntInternalIndex(chip.bWAVを使うチャンネルである, zz, n内部番号WAV1to);\r
                                }\r
                        }\r
-                       this.n無限管理WAV[zz] = this.n内部番号WAV1to;                   // 次にこの WAV番号 zz を使うWAVチップが現れたら、この内部番号が格納されることになる。\r
-                       this.n内部番号WAV1to++;             // 内部番号は単純増加連番。\r
-                       //-----------------\r
+                       this.n無限管理WAV[zz] = this.n内部番号WAV1to;     // 次にこの WAV番号 zz を使うWAVチップが現れたら、この内部番号が格納されることになる。\r
+                       this.n内部番号WAV1to++;   // 内部番号は単純増加連番。\r
+                                                                                                               //-----------------\r
                        #endregion\r
 \r
                        return true;\r
@@ -2381,10 +2386,10 @@ namespace DTXMania
                        #region [ "WAVPAN" or "PAN" で始まらないコマンドは無効。]\r
                        //-----------------\r
                        if (strコマンド.StartsWith("WAVPAN", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(6);         // strコマンド から先頭の"WAVPAN"文字を除去。\r
+                               strコマンド = strコマンド.Substring(6);   // strコマンド から先頭の"WAVPAN"文字を除去。\r
 \r
                        else if (strコマンド.StartsWith("PAN", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(3);         // strコマンド から先頭の"PAN"文字を除去。\r
+                               strコマンド = strコマンド.Substring(3);   // strコマンド から先頭の"PAN"文字を除去。\r
 \r
                        else\r
                                return false;\r
@@ -2394,7 +2399,7 @@ namespace DTXMania
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // WAV番号 zz がないなら無効。\r
+                               return false; // WAV番号 zz がないなら無効。\r
 \r
                        #region [ WAV番号 zz を取得する。]\r
                        //-----------------\r
@@ -2412,17 +2417,17 @@ namespace DTXMania
                        int n位置;\r
                        if (int.TryParse(strパラメータ, out n位置))\r
                        {\r
-                               n位置 = Math.Min(Math.Max(n位置, -100), 100);       // -100~+100 に丸める\r
+                               n位置 = Math.Min(Math.Max(n位置, -100), 100); // -100~+100 に丸める\r
 \r
-                               if (this.n無限管理PAN[zz] == (-10000 - zz)) // 初期状態では n無限管理PAN[zz] = -10000 - zz である。この場合、#WAVPANzz, #PANzz がまだ出現していないことを意味する。\r
+                               if (this.n無限管理PAN[zz] == (-10000 - zz)) // 初期状態では n無限管理PAN[zz] = -10000 - zz である。この場合、#WAVPANzz, #PANzz がまだ出現していないことを意味する。\r
                                {\r
-                                       foreach (CWAV wav in this.listWAV.Values)       // これまでに出てきたチップのうち、該当する(位置が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
+                                       foreach (CWAV wav in this.listWAV.Values) // これまでに出てきたチップのうち、該当する(位置が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
                                        {\r
-                                               if (wav.n位置 == (-10000 - zz))       // #WAVPANzz, #PANzz 行より前の行に出現した #WAVzz では、位置は -10000-zz に初期化されている。\r
+                                               if (wav.n位置 == (-10000 - zz)) // #WAVPANzz, #PANzz 行より前の行に出現した #WAVzz では、位置は -10000-zz に初期化されている。\r
                                                        wav.n位置 = n位置;\r
                                        }\r
                                }\r
-                               this.n無限管理PAN[zz] = n位置;                    // 次にこの WAV番号 zz を使うWAVチップが現れたら、この位置が格納されることになる。\r
+                               this.n無限管理PAN[zz] = n位置;      // 次にこの WAV番号 zz を使うWAVチップが現れたら、この位置が格納されることになる。\r
                        }\r
                        //-----------------\r
                        #endregion\r
@@ -2436,10 +2441,10 @@ namespace DTXMania
                        #region [ "WAVCOL" or "VOLUME" で始まらないコマンドは無効。]\r
                        //-----------------\r
                        if (strコマンド.StartsWith("WAVVOL", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(6);         // strコマンド から先頭の"WAVVOL"文字を除去。\r
+                               strコマンド = strコマンド.Substring(6);   // strコマンド から先頭の"WAVVOL"文字を除去。\r
 \r
                        else if (strコマンド.StartsWith("VOLUME", StringComparison.OrdinalIgnoreCase))\r
-                               strコマンド = strコマンド.Substring(6);         // strコマンド から先頭の"VOLUME"文字を除去。\r
+                               strコマンド = strコマンド.Substring(6);   // strコマンド から先頭の"VOLUME"文字を除去。\r
 \r
                        else\r
                                return false;\r
@@ -2449,7 +2454,7 @@ namespace DTXMania
                        // (2) パラメータを処理。\r
 \r
                        if (strコマンド.Length < 2)\r
-                               return false;   // WAV番号 zz がないなら無効。\r
+                               return false; // WAV番号 zz がないなら無効。\r
 \r
                        #region [ WAV番号 zz を取得する。]\r
                        //-----------------\r
@@ -2467,17 +2472,17 @@ namespace DTXMania
                        int n音量;\r
                        if (int.TryParse(strパラメータ, out n音量))\r
                        {\r
-                               n音量 = Math.Min(Math.Max(n音量, 0), 100);  // 0~100に丸める。\r
+                               n音量 = Math.Min(Math.Max(n音量, 0), 100);  // 0~100に丸める。\r
 \r
-                               if (this.n無限管理VOL[zz] == -zz)   // 初期状態では n無限管理VOL[zz] = - zz である。この場合、#WAVVOLzz, #VOLUMEzz がまだ出現していないことを意味する。\r
+                               if (this.n無限管理VOL[zz] == -zz) // 初期状態では n無限管理VOL[zz] = - zz である。この場合、#WAVVOLzz, #VOLUMEzz がまだ出現していないことを意味する。\r
                                {\r
-                                       foreach (CWAV wav in this.listWAV.Values)       // これまでに出てきたチップのうち、該当する(音量が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
+                                       foreach (CWAV wav in this.listWAV.Values) // これまでに出てきたチップのうち、該当する(音量が未設定の)WAVチップの値を変更する(仕組み上、必ず後方参照となる)。\r
                                        {\r
-                                               if (wav.n音量 == -zz) // #WAVVOLzz, #VOLUMEzz 行より前の行に出現した #WAVzz では、音量は -zz に初期化されている。\r
+                                               if (wav.n音量 == -zz) // #WAVVOLzz, #VOLUMEzz 行より前の行に出現した #WAVzz では、音量は -zz に初期化されている。\r
                                                        wav.n音量 = n音量;\r
                                        }\r
                                }\r
-                               this.n無限管理VOL[zz] = n音量;                    // 次にこの WAV番号 zz を使うWAVチップが現れたら、この音量が格納されることになる。\r
+                               this.n無限管理VOL[zz] = n音量;      // 次にこの WAV番号 zz を使うWAVチップが現れたら、この音量が格納されることになる。\r
                        }\r
                        //-----------------\r
                        #endregion\r
@@ -2488,7 +2493,7 @@ namespace DTXMania
                {\r
                        // (1) コマンドを処理。\r
 \r
-                       if (strコマンド.Length != 5)        // コマンドは必ず5文字であること。\r
+                       if (strコマンド.Length != 5)  // コマンドは必ず5文字であること。\r
                                return false;\r
 \r
                        #region [ n小節番号 を取得する。]\r
@@ -2497,13 +2502,13 @@ namespace DTXMania
                        if (n小節番号 < 0)\r
                                return false;\r
 \r
-                       n小節番号++;        // 先頭に空の1小節を設ける。\r
-                       //-----------------\r
+                       n小節番号++;  // 先頭に空の1小節を設ける。\r
+                                                               //-----------------\r
                        #endregion\r
 \r
                        #region [ nチャンネル番号 を取得する。]\r
                        //-----------------\r
-                       Ech定義 tmpチャンネル番号 = Ech定義.Invalid;\r
+                       EChannel tmpチャンネル番号 = EChannel.Invalid;\r
 \r
                        // ファイルフォーマットによって処理が異なる。\r
 \r
@@ -2518,19 +2523,19 @@ namespace DTXMania
                                        if (strチャンネル文字列.Equals(param.strGDAのチャンネル文字列, StringComparison.OrdinalIgnoreCase))\r
                                        {\r
                                                tmpチャンネル番号 = param.eDTXのチャンネル番号;\r
-                                               break;  // 置き換え成功\r
+                                               break;  // 置き換え成功\r
                                        }\r
                                }\r
-                               if (tmpチャンネル番号 == Ech定義.Invalid)\r
-                                       return false;   // 置き換え失敗\r
-                               //-----------------\r
+                               if (tmpチャンネル番号 == EChannel.Invalid)\r
+                                       return false; // 置き換え失敗\r
+                                                                                               //-----------------\r
                                #endregion\r
                        }\r
                        else\r
                        {\r
                                #region [ (B) その他の場合:チャンネル番号は16進数2桁。]\r
                                //-----------------\r
-                               tmpチャンネル番号 = (Ech定義)C変換.n16進数2桁の文字列を数値に変換して返す(strコマンド.Substring(3, 2));\r
+                               tmpチャンネル番号 = (EChannel)C変換.n16進数2桁の文字列を数値に変換して返す(strコマンド.Substring(3, 2));\r
 \r
                                if (tmpチャンネル番号 < 0)\r
                                        return false;\r
@@ -2544,12 +2549,12 @@ namespace DTXMania
                        // (2) Ch.02を処理。\r
                        #region [ 小節長変更(Ch.02)は他のチャンネルとはパラメータが特殊なので、先にとっとと終わらせる。 ]\r
                        //-----------------\r
-                       if (tmpチャンネル番号 == Ech定義.BarLength)\r
+                       if (tmpチャンネル番号 == EChannel.BarLength)\r
                        {\r
                                // 小節長倍率を取得する。\r
                                double db小節長倍率 = 1.0;\r
                                //if( !double.TryParse( strパラメータ, out result ) )\r
-                               if (!this.TryParse(strパラメータ, out db小節長倍率))                  // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
+                               if (!this.TryParse(strパラメータ, out db小節長倍率))      // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
                                {\r
                                        Trace.TraceError("小節長倍率に不正な値を指定しました。[{0}: {1}行]", this.strファイル名の絶対パス, this.n現在の行数);\r
                                        return false;\r
@@ -2558,13 +2563,13 @@ namespace DTXMania
                                // 小節長倍率チップを一番先頭に配置する。\r
                                this.listChip.Insert(0, new CChip(n小節番号 * 384, db小節長倍率, tmpチャンネル番号));\r
 \r
-                               return true;    // 配置終了。\r
+                               return true;  // 配置終了。\r
                        }\r
                        //-----------------\r
                        #endregion\r
 \r
                        // (3) パラメータを処理。\r
-                       if (string.IsNullOrEmpty(strパラメータ))           // パラメータはnullまたは空文字列ではないこと。\r
+                       if (string.IsNullOrEmpty(strパラメータ))   // パラメータはnullまたは空文字列ではないこと。\r
                                return false;\r
 \r
                        #region [ strパラメータ にオブジェクト記述を格納し、その n文字数 をカウントする。]\r
@@ -2578,10 +2583,10 @@ namespace DTXMania
                        CharEnumerator ce = strパラメータ.GetEnumerator();\r
                        while (ce.MoveNext())\r
                        {\r
-                               if (ce.Current == '_')          // '_' は無視。\r
+                               if (ce.Current == '_')    // '_' は無視。\r
                                        continue;\r
 \r
-                               if (C変換.str36進数文字.IndexOf(ce.Current) < 0)  // オブジェクト記述は36進数文字であること。\r
+                               if (C変換.str36進数文字.IndexOf(ce.Current) < 0)  // オブジェクト記述は36進数文字であること。\r
                                {\r
                                        Trace.TraceError("不正なオブジェクト指定があります。[{0}: {1}行]", this.strファイル名の絶対パス, this.n現在の行数);\r
                                        return false;\r
@@ -2591,9 +2596,9 @@ namespace DTXMania
                                n文字数++;\r
                        }\r
 \r
-                       strパラメータ = sb.ToString();     // 正規化された文字列になりました。\r
+                       strパラメータ = sb.ToString(); // 正規化された文字列になりました。\r
 \r
-                       if ((n文字数 % 2) != 0)              // パラメータの文字数が奇数の場合、最後の1文字を無視する。\r
+                       if ((n文字数 % 2) != 0)    // パラメータの文字数が奇数の場合、最後の1文字を無視する。\r
                                n文字数--;\r
                        //-----------------\r
                        #endregion\r
@@ -2601,13 +2606,13 @@ namespace DTXMania
 \r
                        // (4) パラメータをオブジェクト数値に分解して配置する。\r
 \r
-                       for (int i = 0; i < (n文字数 / 2); i++)      // 2文字で1オブジェクト数値\r
+                       for (int i = 0; i < (n文字数 / 2); i++)  // 2文字で1オブジェクト数値\r
                        {\r
                                #region [ nオブジェクト数値 を1つ取得する。'00' なら無視。]\r
                                //-----------------\r
                                int nオブジェクト数値 = 0;\r
 \r
-                               if (tmpチャンネル番号 == Ech定義.BPM)\r
+                               if (tmpチャンネル番号 == EChannel.BPM)\r
                                {\r
                                        // Ch.03 のみ 16進数2桁。\r
                                        nオブジェクト数値 = C変換.n16進数2桁の文字列を数値に変換して返す(strパラメータ.Substring(i * 2, 2));\r
@@ -2631,20 +2636,20 @@ namespace DTXMania
 \r
                                // チップがある更新\r
                                this.bチップがある.Drums |= chip.bDrums可視チップ;\r
-                               this.bチップがある.HHOpen |= chip[Ech定義.HiHatOpen];\r
-                               this.bチップがある.Ride |= chip[Ech定義.RideCymbal];\r
-                               this.bチップがある.LeftCymbal |= chip[Ech定義.LeftCymbal];\r
-                               this.bチップがある.LeftPedal |= chip[Ech定義.LeftPedal];\r
-                               this.bチップがある.LeftBassDrum |= chip[Ech定義.LeftBassDrum];\r
+                               this.bチップがある.HHOpen |= chip[EChannel.HiHatOpen];\r
+                               this.bチップがある.Ride |= chip[EChannel.RideCymbal];\r
+                               this.bチップがある.LeftCymbal |= chip[EChannel.LeftCymbal];\r
+                               this.bチップがある.LeftPedal |= chip[EChannel.LeftPedal];\r
+                               this.bチップがある.LeftBassDrum |= chip[EChannel.LeftBassDrum];\r
                                this.bチップがある.Guitar |= chip.bGuitar可視チップ;\r
-                               this.bチップがある.OpenGuitar |= chip[Ech定義.Guitar_Open];\r
+                               this.bチップがある.OpenGuitar |= chip[EChannel.Guitar_Open];\r
                                this.bチップがある.Bass |= chip.bBass可視チップ;\r
-                               this.bチップがある.OpenBass |= chip[Ech定義.Bass_Open];\r
+                               this.bチップがある.OpenBass |= chip[EChannel.Bass_Open];\r
                                this.bチップがある.BGA |= chip.bBGALayer;\r
                                this.bチップがある.Movie |= chip.bMovie;\r
                                if (chip.bMovie)\r
                                {\r
-                                       if (chip[Ech定義.MovieFull] || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen)\r
+                                       if (chip[EChannel.MovieFull] || CDTXMania.Instance.ConfigIni.bFullAVI)\r
                                        {\r
                                                this.bMovieをFullscreen再生する = true;\r
                                        }\r
index 4281025..3fed9e5 100644 (file)
@@ -38,8 +38,8 @@ namespace DTXMania
                                //-----------------\r
                                string strAVIファイル名;\r
 \r
-                               if (CDTXMania.Instance.DTX != null && !Path.IsPathRooted(this.strファイル名))      // CDTX抜きでCAVI単体で使うことを考慮(選曲画面, リザルト画面)\r
-                               {                                                                                                                                                       // 演奏終了直後はCDTXオブジェクトが残っているので、ファイル名がフルパスかどうかでプレビュー判定する\r
+                               if (CDTXMania.Instance.DTX != null && !Path.IsPathRooted(this.strファイル名))  // CDTX抜きでCAVI単体で使うことを考慮(選曲画面, リザルト画面)\r
+                               {                                     // 演奏終了直後はCDTXオブジェクトが残っているので、ファイル名がフルパスかどうかでプレビュー判定する\r
                                        if (!string.IsNullOrEmpty(CDTXMania.Instance.DTX.PATH_WAV))\r
                                                strAVIファイル名 = CDTXMania.Instance.DTX.PATH_WAV + this.strファイル名;\r
                                        else\r
@@ -90,8 +90,8 @@ namespace DTXMania
                                        #region [ strAVIファイル名 の作成。なぜDispose時にファイル名の生成をしているのかと思ったら、デバッグログ用でした。 ]\r
                                        //-----------------\r
                                        string strAVIファイル名;\r
-                                       if (CDTXMania.Instance.DTX != null && !Path.IsPathRooted(this.strファイル名))      // CDTX抜きでCAVI単体で使うことを考慮(選曲画面, リザルト画面)\r
-                                       {                                                                                                                                                       // 演奏終了直後はCDTXオブジェクトが残っているので、ファイル名がフルパスかどうかでプレビュー判定する\r
+                                       if (CDTXMania.Instance.DTX != null && !Path.IsPathRooted(this.strファイル名))  // CDTX抜きでCAVI単体で使うことを考慮(選曲画面, リザルト画面)\r
+                                       {                                     // 演奏終了直後はCDTXオブジェクトが残っているので、ファイル名がフルパスかどうかでプレビュー判定する\r
                                                if (!string.IsNullOrEmpty(CDTXMania.Instance.DTX.PATH_WAV))\r
                                                        strAVIファイル名 = CDTXMania.Instance.DTX.PATH_WAV + this.strファイル名;\r
                                                else\r
@@ -188,7 +188,7 @@ namespace DTXMania
                {\r
                        public CBMP()\r
                        {\r
-                               b黒を透過する = true;     // BMPでは、黒を透過色とする\r
+                               b黒を透過する = true; // BMPでは、黒を透過色とする\r
                        }\r
                        public override void PutLog(string strテクスチャファイル名)\r
                        {\r
@@ -204,7 +204,7 @@ namespace DTXMania
                {\r
                        public CBMPTEX()\r
                        {\r
-                               b黒を透過する = false;    // BMPTEXでは、透過色はαで表現する\r
+                               b黒を透過する = false;  // BMPTEXでは、透過色はαで表現する\r
                        }\r
                        public override void PutLog(string strテクスチャファイル名)\r
                        {\r
@@ -270,7 +270,7 @@ namespace DTXMania
                                if (this.tx画像 != null)\r
                                {\r
                                        // 作成成功。\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                PutLog(strテクスチャファイル名);\r
                                        txData = null;\r
                                        this.bUse = true;\r
@@ -291,14 +291,14 @@ namespace DTXMania
                        {\r
                                if (bitmap != null && b黒を透過する)\r
                                {\r
-                                       bitmap.MakeTransparent(Color.Black);            // 黒を透過色にする\r
+                                       bitmap.MakeTransparent(Color.Black);    // 黒を透過色にする\r
                                }\r
                                this.tx画像 = TextureFactory.tテクスチャの生成(bitmap, b黒を透過する);\r
 \r
                                if (this.tx画像 != null)\r
                                {\r
                                        // 作成成功。\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                PutLog(strテクスチャファイル名);\r
                                        this.bUse = true;\r
                                }\r
@@ -339,7 +339,7 @@ namespace DTXMania
 \r
                                        TextureFactory.tテクスチャの解放(ref this.tx画像);\r
 \r
-                                       if (CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                Trace.TraceInformation("テクスチャを解放しました。({0})({1})", this.strコメント文, strテクスチャファイル名);\r
                                }\r
                                this.bUse = false;\r
@@ -377,16 +377,16 @@ namespace DTXMania
                public class CWAV : IDisposable\r
                {\r
                        public bool bBGMとして使う;\r
-                       public List<Ech定義> listこのWAVを使用するチャンネル番号の集合 = new List<Ech定義>(16);\r
+                       public List<EChannel> listこのWAVを使用するチャンネル番号の集合 = new List<EChannel>(16);\r
                        public int nチップサイズ = 100;\r
                        public int n位置;\r
-                       public long[] n一時停止時刻 = new long[CDTXMania.Instance.ConfigIni.nPoliphonicSounds];   // 4\r
+                       public long[] n一時停止時刻 = new long[CDTXMania.Instance.ConfigIni.nPoliphonicSounds]; // 4\r
                        public int n音量 = 100;\r
                        public int n現在再生中のサウンド番号;\r
-                       public long[] n再生開始時刻 = new long[CDTXMania.Instance.ConfigIni.nPoliphonicSounds];   // 4\r
+                       public long[] n再生開始時刻 = new long[CDTXMania.Instance.ConfigIni.nPoliphonicSounds]; // 4\r
                        public int n内部番号;\r
                        public int n表記上の番号;\r
-                       public CSound[] rSound = new CSound[CDTXMania.Instance.ConfigIni.nPoliphonicSounds];            // 4\r
+                       public CSound[] rSound = new CSound[CDTXMania.Instance.ConfigIni.nPoliphonicSounds];    // 4\r
                        public string strコメント文 = "";\r
                        public string strファイル名 = "";\r
                        public bool bBGMとして使わない\r
@@ -437,13 +437,13 @@ namespace DTXMania
 \r
                                if (bManagedリソースの解放も行う)\r
                                {\r
-                                       for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)        // 4\r
+                                       for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)  // 4\r
                                        {\r
                                                if (this.rSound[i] != null)\r
                                                        CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.rSound[i]);\r
                                                this.rSound[i] = null;\r
 \r
-                                               if ((i == 0) && CDTXMania.Instance.ConfigIni.bLog作成解放ログ出力)\r
+                                               if ((i == 0) && CDTXMania.Instance.ConfigIni.bLogCreateRelease)\r
                                                        Trace.TraceInformation("サウンドを解放しました。({0})({1})", this.strコメント文, this.strファイル名);\r
                                        }\r
                                }\r
@@ -559,20 +559,20 @@ namespace DTXMania
                        public bool LeftPedal;\r
                        public bool LeftBassDrum;\r
 \r
-                       public bool this[E楽器パート inst]\r
+                       public bool this[EPart inst]\r
                        {\r
                                get\r
                                {\r
                                        bool ret = false;\r
-                                       if (inst == E楽器パート.DRUMS)\r
+                                       if (inst == EPart.Drums)\r
                                        {\r
                                                ret = this.Drums;\r
                                        }\r
-                                       else if (inst == E楽器パート.GUITAR)\r
+                                       else if (inst == EPart.Guitar)\r
                                        {\r
                                                ret = this.Guitar;\r
                                        }\r
-                                       else if (inst == E楽器パート.BASS)\r
+                                       else if (inst == EPart.Bass)\r
                                        {\r
                                                ret = this.Bass;\r
                                        }\r
index 2228a72..797908d 100644 (file)
@@ -31,7 +31,7 @@ namespace DTXMania
                        public int ClearCountGuitar;\r
                        public int ClearCountBass;\r
                        // #24459 2011.2.24 yyagi----------/\r
-                       public STDGBVALUE<ERANK> BestRank;\r
+                       public STDGBSValue<ERANK> BestRank;\r
                        // --------------------------------/\r
                        public int HistoryCount;\r
                        public string[] History;\r
@@ -43,9 +43,9 @@ namespace DTXMania
                [StructLayout(LayoutKind.Sequential)]\r
                public struct STセクション\r
                {\r
-                       public STDGBVALUE<CScoreIni.C演奏記録> HiScore;\r
-                       public STDGBVALUE<CScoreIni.C演奏記録> HiSkill;\r
-                       public STDGBVALUE<CScoreIni.C演奏記録> LastPlay;\r
+                       public STDGBSValue<CScoreIni.C演奏記録> HiScore;\r
+                       public STDGBSValue<CScoreIni.C演奏記録> HiSkill;\r
+                       public STDGBSValue<CScoreIni.C演奏記録> LastPlay;\r
                }\r
 \r
                public enum Eセクション種別 : int\r
@@ -63,7 +63,7 @@ namespace DTXMania
                        LastPlayBass = 8,   //\r
                }\r
 \r
-               public enum ERANK : int         // #24459 yyagi\r
+               public enum ERANK : int   // #24459 yyagi\r
                {\r
                        SS = 0,\r
                        S = 1,\r
@@ -77,16 +77,13 @@ namespace DTXMania
 \r
                public class C演奏記録\r
                {\r
-                       public STAUTOPLAY bAutoPlay;\r
+                       public STPadValue<bool> bAutoPlay;\r
                        public bool bDrums有効;\r
                        public bool bGuitar有効;\r
-                       public STDGBVALUE<bool> bHidden;\r
-                       public STDGBVALUE<bool> bLeft;\r
-                       public STDGBVALUE<bool> bLight;\r
-                       public STDGBVALUE<bool> bReverse;\r
+                       public STDGBSValue<bool> bLight;\r
+                       public STDGBSValue<bool> bReverse;\r
+                       public STDGBSValue<ESudHidInv> eSudHidInv;\r
                        public bool bSTAGEFAILED有効;\r
-                       public STDGBVALUE<bool> bSudden;\r
-                       public STDGBVALUE<EInvisible> eInvisible;\r
                        public bool bTight;\r
                        public bool b演奏にMIDI入力を使用した;\r
                        public bool b演奏にキーボードを使用した;\r
@@ -95,15 +92,15 @@ namespace DTXMania
                        public double dbゲーム型スキル値;\r
                        public double db演奏型スキル値;\r
                        public ECYGroup eCYGroup;\r
-                       public Eダークモード eDark;\r
+                       public EDark eDark;\r
                        public EFTGroup eFTGroup;\r
                        public EHHGroup eHHGroup;\r
-                       public E打ち分け時の再生の優先順位 eHitSoundPriorityCY;\r
-                       public E打ち分け時の再生の優先順位 eHitSoundPriorityFT;\r
-                       public E打ち分け時の再生の優先順位 eHitSoundPriorityHH;\r
-                       public STDGBVALUE<Eランダムモード> eRandom;\r
-                       public Eダメージレベル eダメージレベル;\r
-                       public STDGBVALUE<float> f譜面スクロール速度;\r
+                       public EHitSoundPriority eHitSoundPriorityCY;\r
+                       public EHitSoundPriority eHitSoundPriorityFT;\r
+                       public EHitSoundPriority eHitSoundPriorityHH;\r
+                       public STDGBSValue<ERandom> eRandom;\r
+                       public EDamage eダメージレベル;\r
+                       public STDGBSValue<float> f譜面スクロール速度;\r
                        public string Hash;\r
                        public int nGoodになる範囲ms;\r
                        public int nGood数;\r
@@ -126,72 +123,28 @@ namespace DTXMania
                        public int n全チップ数;\r
                        public string strDTXManiaのバージョン;\r
                        public bool レーン9モード;\r
-                       public int nRisky;              // #23559 2011.6.20 yyagi 0=OFF, 1-10=Risky\r
+                       public int nRisky;    // #23559 2011.6.20 yyagi 0=OFF, 1-10=Risky\r
                        public string 最終更新日時;\r
                        public bool bギターとベースを入れ替えた; // #35417 2015.08.30 chnmr0 add\r
 \r
                        public C演奏記録()\r
                        {\r
-                               this.bAutoPlay = new STAUTOPLAY();\r
-                               this.bAutoPlay.LC = false;\r
-                               this.bAutoPlay.HH = false;\r
-                               this.bAutoPlay.SD = false;\r
-                               this.bAutoPlay.BD = false;\r
-                               this.bAutoPlay.HT = false;\r
-                               this.bAutoPlay.LT = false;\r
-                               this.bAutoPlay.FT = false;\r
-                               this.bAutoPlay.CY = false;\r
-                               this.bAutoPlay.Guitar = false;\r
-                               this.bAutoPlay.Bass = false;\r
-                               this.bAutoPlay.GtR = false;\r
-                               this.bAutoPlay.GtG = false;\r
-                               this.bAutoPlay.GtB = false;\r
-                               this.bAutoPlay.GtPick = false;\r
-                               this.bAutoPlay.GtW = false;\r
-                               this.bAutoPlay.BsR = false;\r
-                               this.bAutoPlay.BsG = false;\r
-                               this.bAutoPlay.BsB = false;\r
-                               this.bAutoPlay.BsPick = false;\r
-                               this.bAutoPlay.BsW = false;\r
-\r
-                               this.bSudden = new STDGBVALUE<bool>();\r
-                               this.bSudden.Drums = false;\r
-                               this.bSudden.Guitar = false;\r
-                               this.bSudden.Bass = false;\r
-                               this.bHidden = new STDGBVALUE<bool>();\r
-                               this.bHidden.Drums = false;\r
-                               this.bHidden.Guitar = false;\r
-                               this.bHidden.Bass = false;\r
-                               this.eInvisible = new STDGBVALUE<EInvisible>();\r
-                               this.eInvisible.Drums = EInvisible.OFF;\r
-                               this.eInvisible.Guitar = EInvisible.OFF;\r
-                               this.eInvisible.Bass = EInvisible.OFF;\r
-                               this.bReverse = new STDGBVALUE<bool>();\r
-                               this.bReverse.Drums = false;\r
-                               this.bReverse.Guitar = false;\r
-                               this.bReverse.Bass = false;\r
-                               this.eRandom = new STDGBVALUE<Eランダムモード>();\r
-                               this.eRandom.Drums = Eランダムモード.OFF;\r
-                               this.eRandom.Guitar = Eランダムモード.OFF;\r
-                               this.eRandom.Bass = Eランダムモード.OFF;\r
-                               this.bLight = new STDGBVALUE<bool>();\r
-                               this.bLight.Drums = false;\r
-                               this.bLight.Guitar = false;\r
-                               this.bLight.Bass = false;\r
-                               this.bLeft = new STDGBVALUE<bool>();\r
-                               this.bLeft.Drums = false;\r
-                               this.bLeft.Guitar = false;\r
-                               this.bLeft.Bass = false;\r
-                               this.f譜面スクロール速度 = new STDGBVALUE<float>();\r
-                               this.f譜面スクロール速度.Drums = 1f;\r
-                               this.f譜面スクロール速度.Guitar = 1f;\r
-                               this.f譜面スクロール速度.Bass = 1f;\r
+                               this.bAutoPlay = new STPadValue<bool>();\r
+                               this.eSudHidInv = new STDGBSValue<ESudHidInv>();\r
+                               this.bReverse = new STDGBSValue<bool>();\r
+                               this.eRandom = new STDGBSValue<ERandom>();\r
+                               this.bLight = new STDGBSValue<bool>();\r
+                               this.f譜面スクロール速度 = new STDGBSValue<float>();\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
+                               {\r
+                                       f譜面スクロール速度[i] = 1f;\r
+                               }\r
                                this.n演奏速度分子 = 20;\r
                                this.n演奏速度分母 = 20;\r
                                this.bGuitar有効 = true;\r
                                this.bDrums有効 = true;\r
                                this.bSTAGEFAILED有効 = true;\r
-                               this.eダメージレベル = Eダメージレベル.普通;\r
+                               this.eダメージレベル = EDamage.Normal;\r
                                this.nPerfectになる範囲ms = 34;\r
                                this.nGreatになる範囲ms = 67;\r
                                this.nGoodになる範囲ms = 84;\r
@@ -200,7 +153,7 @@ namespace DTXMania
                                this.最終更新日時 = "";\r
                                this.Hash = "00000000000000000000000000000000";\r
                                this.レーン9モード = true;\r
-                               this.nRisky = 0;                                                                        // #23559 2011.6.20 yyagi\r
+                               this.nRisky = 0;                  // #23559 2011.6.20 yyagi\r
                                this.bギターとベースを入れ替えた = false; // #35417 2015.08.30 chnmr0 add\r
                        }\r
 \r
@@ -267,18 +220,18 @@ namespace DTXMania
                        stファイル.Name = "";\r
                        stファイル.Hash = "";\r
                        stファイル.History = new string[] { "", "", "", "", "" };\r
-                       stファイル.BestRank.Drums = ERANK.UNKNOWN;          // #24459 2011.2.24 yyagi\r
-                       stファイル.BestRank.Guitar = ERANK.UNKNOWN;         //\r
-                       stファイル.BestRank.Bass = ERANK.UNKNOWN;           //\r
+                       stファイル.BestRank.Drums = ERANK.UNKNOWN;    // #24459 2011.2.24 yyagi\r
+                       stファイル.BestRank.Guitar = ERANK.UNKNOWN;   //\r
+                       stファイル.BestRank.Bass = ERANK.UNKNOWN;   //\r
 \r
                        this.stセクション = new STセクション();\r
 \r
 \r
-                       stセクション.HiScore = new STDGBVALUE<C演奏記録>();\r
-                       stセクション.HiSkill = new STDGBVALUE<C演奏記録>();\r
-                       stセクション.LastPlay = new STDGBVALUE<C演奏記録>();\r
+                       stセクション.HiScore = new STDGBSValue<C演奏記録>();\r
+                       stセクション.HiSkill = new STDGBSValue<C演奏記録>();\r
+                       stセクション.LastPlay = new STDGBSValue<C演奏記録>();\r
 \r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; ++i)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
                        {\r
                                stセクション.HiScore[i] = new C演奏記録();\r
                                stセクション.HiSkill[i] = new C演奏記録();\r
@@ -307,7 +260,7 @@ namespace DTXMania
                /// <returns>正当である(整合性がある)場合は true。</returns>\r
                public bool b整合性がある(Eセクション種別 eセクション)\r
                {\r
-                       return true;    // オープンソース化に伴い、整合性チェックを無効化。(2010.10.21)\r
+                       return true;  // オープンソース化に伴い、整合性チェックを無効化。(2010.10.21)\r
                }\r
 \r
                /// <summary>\r
@@ -510,7 +463,7 @@ namespace DTXMania
                                                        }\r
                                                        continue;\r
                                                        #region [ File section ]\r
-                                               Label_01C7:\r
+                                                       Label_01C7:\r
                                                        if (item.Equals("Name"))\r
                                                        {\r
                                                                this.stファイル.Name = para;\r
@@ -589,7 +542,7 @@ namespace DTXMania
                                                        continue;\r
                                                        #endregion\r
                                                        #region [ Score section ]\r
-                                               Label_03B9:\r
+                                                       Label_03B9:\r
                                                        if (item.Equals("PlaySkill"))\r
                                                        {\r
                                                                c演奏記録.db演奏型スキル値 = (double)decimal.Parse(para);\r
@@ -628,13 +581,9 @@ namespace DTXMania
                                                        }\r
                                                        else if (item.Equals("AutoPlay"))\r
                                                        {\r
-                                                               // LCなし               LCあり               CYとRDが別           Gt/Bs autolane/pick\r
-                                                               if (para.Length == 9 || para.Length == 10 || para.Length == 11 || para.Length == 21)\r
+                                                               for (int i = 0; i < para.Length; i++)\r
                                                                {\r
-                                                                       for (int i = 0; i < para.Length; i++)\r
-                                                                       {\r
-                                                                               c演奏記録.bAutoPlay[i] = this.ONorOFF(para[i]);\r
-                                                                       }\r
+                                                                       c演奏記録.bAutoPlay[(EPad)i] = C変換.bONorOFF(para[i]);\r
                                                                }\r
                                                        }\r
                                                        else if (item.Equals("GBFlip"))\r
@@ -649,41 +598,17 @@ namespace DTXMania
                                                        {\r
                                                                c演奏記録.bTight = C変換.bONorOFF(para[0]);\r
                                                        }\r
-                                                       else if (item.Equals("SuddenDrums"))\r
-                                                       {\r
-                                                               c演奏記録.bSudden.Drums = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("SuddenGuitar"))\r
-                                                       {\r
-                                                               c演奏記録.bSudden.Guitar = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("SuddenBass"))\r
-                                                       {\r
-                                                               c演奏記録.bSudden.Bass = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("HiddenDrums"))\r
-                                                       {\r
-                                                               c演奏記録.bHidden.Drums = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("HiddenGuitar"))\r
-                                                       {\r
-                                                               c演奏記録.bHidden.Guitar = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("HiddenBass"))\r
-                                                       {\r
-                                                               c演奏記録.bHidden.Bass = C変換.bONorOFF(para[0]);\r
-                                                       }\r
-                                                       else if (item.Equals("InvisibleDrums"))\r
+                                                       else if (item.Equals("SudHidInvDrums"))\r
                                                        {\r
-                                                               c演奏記録.eInvisible.Drums = (EInvisible)int.Parse(para);\r
+                                                               c演奏記録.eSudHidInv.Drums = (ESudHidInv)int.Parse(para);\r
                                                        }\r
-                                                       else if (item.Equals("InvisibleGuitar"))\r
+                                                       else if (item.Equals("SudHidInvGuitar"))\r
                                                        {\r
-                                                               c演奏記録.eInvisible.Guitar = (EInvisible)int.Parse(para);\r
+                                                               c演奏記録.eSudHidInv.Guitar = (ESudHidInv)int.Parse(para);\r
                                                        }\r
-                                                       else if (item.Equals("InvisibleBass"))\r
+                                                       else if (item.Equals("SudHidInvBass"))\r
                                                        {\r
-                                                               c演奏記録.eInvisible.Bass = (EInvisible)int.Parse(para);\r
+                                                               c演奏記録.eSudHidInv.Bass = (ESudHidInv)int.Parse(para);\r
                                                        }\r
                                                        else if (item.Equals("ReverseDrums"))\r
                                                        {\r
@@ -705,24 +630,24 @@ namespace DTXMania
                                                                {\r
                                                                        switch (int.Parse(para))\r
                                                                        {\r
-                                                                               case (int)Eランダムモード.OFF:\r
+                                                                               case (int)ERandom.Off:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Guitar = Eランダムモード.OFF;\r
+                                                                                               c演奏記録.eRandom.Guitar = ERandom.Off;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.RANDOM:\r
+                                                                               case (int)ERandom.Random:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Guitar = Eランダムモード.RANDOM;\r
+                                                                                               c演奏記録.eRandom.Guitar = ERandom.Random;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.SUPERRANDOM:\r
+                                                                               case (int)ERandom.Super:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Guitar = Eランダムモード.SUPERRANDOM;\r
+                                                                                               c演奏記録.eRandom.Guitar = ERandom.Super;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.HYPERRANDOM:           // #25452 2011.6.20 yyagi\r
+                                                                               case (int)ERandom.Hyper:    // #25452 2011.6.20 yyagi\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Guitar = Eランダムモード.SUPERRANDOM;\r
+                                                                                               c演奏記録.eRandom.Guitar = ERandom.Super;\r
                                                                                                continue;\r
                                                                                        }\r
                                                                        }\r
@@ -734,24 +659,24 @@ namespace DTXMania
                                                                {\r
                                                                        switch (int.Parse(para))\r
                                                                        {\r
-                                                                               case (int)Eランダムモード.OFF:\r
+                                                                               case (int)ERandom.Off:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Bass = Eランダムモード.OFF;\r
+                                                                                               c演奏記録.eRandom.Bass = ERandom.Off;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.RANDOM:\r
+                                                                               case (int)ERandom.Random:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Bass = Eランダムモード.RANDOM;\r
+                                                                                               c演奏記録.eRandom.Bass = ERandom.Random;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.SUPERRANDOM:\r
+                                                                               case (int)ERandom.Super:\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Bass = Eランダムモード.SUPERRANDOM;\r
+                                                                                               c演奏記録.eRandom.Bass = ERandom.Super;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                               case (int)Eランダムモード.HYPERRANDOM:           // #25452 2011.6.20 yyagi\r
+                                                                               case (int)ERandom.Hyper:    // #25452 2011.6.20 yyagi\r
                                                                                        {\r
-                                                                                               c演奏記録.eRandom.Bass = Eランダムモード.SUPERRANDOM;\r
+                                                                                               c演奏記録.eRandom.Bass = ERandom.Super;\r
                                                                                                continue;\r
                                                                                        }\r
                                                                        }\r
@@ -770,18 +695,6 @@ namespace DTXMania
                                                                        c演奏記録.bLight.Bass = C変換.bONorOFF(para[0]);\r
                                                                }\r
                                                                #endregion\r
-                                                               #region [ LeftGuitar ]\r
-                                                               else if (item.Equals("LeftGuitar"))\r
-                                                               {\r
-                                                                       c演奏記録.bLeft.Guitar = C変換.bONorOFF(para[0]);\r
-                                                               }\r
-                                                               #endregion\r
-                                                               #region [ LeftBass ]\r
-                                                               else if (item.Equals("LeftBass"))\r
-                                                               {\r
-                                                                       c演奏記録.bLeft.Bass = C変換.bONorOFF(para[0]);\r
-                                                               }\r
-                                                               #endregion\r
                                                                else\r
                                                                {\r
                                                                        #region [ Dark ]\r
@@ -791,17 +704,17 @@ namespace DTXMania
                                                                                {\r
                                                                                        case 0:\r
                                                                                                {\r
-                                                                                                       c演奏記録.eDark = Eダークモード.OFF;\r
+                                                                                                       c演奏記録.eDark = EDark.Off;\r
                                                                                                        continue;\r
                                                                                                }\r
                                                                                        case 1:\r
                                                                                                {\r
-                                                                                                       c演奏記録.eDark = Eダークモード.HALF;\r
+                                                                                                       c演奏記録.eDark = EDark.Half;\r
                                                                                                        continue;\r
                                                                                                }\r
                                                                                        case 2:\r
                                                                                                {\r
-                                                                                                       c演奏記録.eDark = Eダークモード.FULL;\r
+                                                                                                       c演奏記録.eDark = EDark.Full;\r
                                                                                                        continue;\r
                                                                                                }\r
                                                                                }\r
@@ -846,22 +759,22 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHHGroup = EHHGroup.全部打ち分ける;\r
+                                                                                                               c演奏記録.eHHGroup = EHHGroup.None;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHHGroup = EHHGroup.ハイハットのみ打ち分ける;\r
+                                                                                                               c演奏記録.eHHGroup = EHHGroup.HO_HC;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 2:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHHGroup = EHHGroup.左シンバルのみ打ち分ける;\r
+                                                                                                               c演奏記録.eHHGroup = EHHGroup.LC_HH;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 3:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHHGroup = EHHGroup.全部共通;\r
+                                                                                                               c演奏記録.eHHGroup = EHHGroup.Group;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -875,12 +788,12 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eFTGroup = EFTGroup.打ち分ける;\r
+                                                                                                               c演奏記録.eFTGroup = EFTGroup.None;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eFTGroup = EFTGroup.共通;\r
+                                                                                                               c演奏記録.eFTGroup = EFTGroup.Group;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -894,12 +807,12 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eCYGroup = ECYGroup.打ち分ける;\r
+                                                                                                               c演奏記録.eCYGroup = ECYGroup.None;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eCYGroup = ECYGroup.共通;\r
+                                                                                                               c演奏記録.eCYGroup = ECYGroup.Group;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -913,12 +826,12 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityHH = E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityHH = EHitSoundPriority.Chip;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityHH = E打ち分け時の再生の優先順位.PadがChipより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityHH = EHitSoundPriority.Pad;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -932,12 +845,12 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityFT = E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityFT = EHitSoundPriority.Chip;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityFT = E打ち分け時の再生の優先順位.PadがChipより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityFT = EHitSoundPriority.Pad;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -951,12 +864,12 @@ namespace DTXMania
                                                                                        {\r
                                                                                                case 0:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityCY = E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityCY = EHitSoundPriority.Chip;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                                case 1:\r
                                                                                                        {\r
-                                                                                                               c演奏記録.eHitSoundPriorityCY = E打ち分け時の再生の優先順位.PadがChipより優先;\r
+                                                                                                               c演奏記録.eHitSoundPriorityCY = EHitSoundPriority.Pad;\r
                                                                                                                continue;\r
                                                                                                        }\r
                                                                                        }\r
@@ -990,17 +903,17 @@ namespace DTXMania
                                                                                                {\r
                                                                                                        case 0:\r
                                                                                                                {\r
-                                                                                                                       c演奏記録.eダメージレベル = Eダメージレベル.少ない;\r
+                                                                                                                       c演奏記録.eダメージレベル = EDamage.Easy;\r
                                                                                                                        continue;\r
                                                                                                                }\r
                                                                                                        case 1:\r
                                                                                                                {\r
-                                                                                                                       c演奏記録.eダメージレベル = Eダメージレベル.普通;\r
+                                                                                                                       c演奏記録.eダメージレベル = EDamage.Normal;\r
                                                                                                                        continue;\r
                                                                                                                }\r
                                                                                                        case 2:\r
                                                                                                                {\r
-                                                                                                                       c演奏記録.eダメージレベル = Eダメージレベル.大きい;\r
+                                                                                                                       c演奏記録.eダメージレベル = EDamage.Hard;\r
                                                                                                                        continue;\r
                                                                                                                }\r
                                                                                                }\r
@@ -1086,12 +999,12 @@ namespace DTXMania
                        C演奏記録 sect = null;\r
                        string strSect = "";\r
 \r
-                       if(esect == Eセクション種別.HiScoreDrums)\r
+                       if (esect == Eセクション種別.HiScoreDrums)\r
                        {\r
                                sect = this.stセクション.HiScore.Drums;\r
                                strSect = "HiScore.Drums";\r
                        }\r
-                       else if(esect == Eセクション種別.HiSkillDrums)\r
+                       else if (esect == Eセクション種別.HiSkillDrums)\r
                        {\r
                                sect = this.stセクション.HiSkill.Drums;\r
                                strSect = "HiSkill.Drums";\r
@@ -1132,7 +1045,7 @@ namespace DTXMania
                                strSect = "LastPlay.Bass";\r
                        }\r
 \r
-                       ifsect != null)\r
+                       if (sect != null)\r
                        {\r
                                writer.WriteLine("[{0}]", strSect);\r
                                writer.WriteLine("Score={0}", sect.nスコア);\r
@@ -1146,22 +1059,16 @@ namespace DTXMania
                                writer.WriteLine("MaxCombo={0}", sect.n最大コンボ数);\r
                                writer.WriteLine("TotalChips={0}", sect.n全チップ数);\r
                                writer.Write("AutoPlay=");\r
-                               for (int j = 0; j < (int)Eレーン.MAX; j++)\r
+                               for (EPad j = EPad.Min; j < EPad.Max; j++)\r
                                {\r
                                        writer.Write(sect.bAutoPlay[j] ? 1 : 0);\r
                                }\r
                                writer.WriteLine();\r
                                writer.WriteLine("GBFlip={0}", sect.bギターとベースを入れ替えた ? 1 : 0);\r
                                writer.WriteLine("Risky={0}", sect.nRisky);\r
-                               writer.WriteLine("SuddenDrums={0}", sect.bSudden.Drums ? 1 : 0);\r
-                               writer.WriteLine("SuddenGuitar={0}", sect.bSudden.Guitar ? 1 : 0);\r
-                               writer.WriteLine("SuddenBass={0}", sect.bSudden.Bass ? 1 : 0);\r
-                               writer.WriteLine("HiddenDrums={0}", sect.bHidden.Drums ? 1 : 0);\r
-                               writer.WriteLine("HiddenGuitar={0}", sect.bHidden.Guitar ? 1 : 0);\r
-                               writer.WriteLine("HiddenBass={0}", sect.bHidden.Bass ? 1 : 0);\r
-                               writer.WriteLine("InvisibleDrums={0}", (int)sect.eInvisible.Drums);\r
-                               writer.WriteLine("InvisibleGuitar={0}", (int)sect.eInvisible.Guitar);\r
-                               writer.WriteLine("InvisibleBass={0}", (int)sect.eInvisible.Bass);\r
+                               writer.WriteLine("SudHidInvDrums={0}", (int)sect.eSudHidInv.Drums);\r
+                               writer.WriteLine("SudHidInvGuitar={0}", (int)sect.eSudHidInv.Guitar);\r
+                               writer.WriteLine("SudHidInvBass={0}", (int)sect.eSudHidInv.Bass);\r
                                writer.WriteLine("ReverseDrums={0}", sect.bReverse.Drums ? 1 : 0);\r
                                writer.WriteLine("ReverseGuitar={0}", sect.bReverse.Guitar ? 1 : 0);\r
                                writer.WriteLine("ReverseBass={0}", sect.bReverse.Bass ? 1 : 0);\r
@@ -1170,8 +1077,6 @@ namespace DTXMania
                                writer.WriteLine("RandomBass={0}", (int)sect.eRandom.Bass);\r
                                writer.WriteLine("LightGuitar={0}", sect.bLight.Guitar ? 1 : 0);\r
                                writer.WriteLine("LightBass={0}", sect.bLight.Bass ? 1 : 0);\r
-                               writer.WriteLine("LeftGuitar={0}", sect.bLeft.Guitar ? 1 : 0);\r
-                               writer.WriteLine("LeftBass={0}", sect.bLeft.Bass ? 1 : 0);\r
                                writer.WriteLine("Dark={0}", (int)sect.eDark);\r
                                writer.WriteLine("ScrollSpeedDrums={0}", sect.f譜面スクロール速度.Drums);\r
                                writer.WriteLine("ScrollSpeedGuitar={0}", sect.f譜面スクロール速度.Guitar);\r
@@ -1219,9 +1124,9 @@ namespace DTXMania
                                writer.WriteLine("ClearCountDrums={0}", this.stファイル.ClearCountDrums);       // #23596 10.11.16 add ikanick\r
                                writer.WriteLine("ClearCountGuitars={0}", this.stファイル.ClearCountGuitar);    //\r
                                writer.WriteLine("ClearCountBass={0}", this.stファイル.ClearCountBass);         //\r
-                               writer.WriteLine("BestRankDrums={0}", this.stファイル.BestRank.Drums);              // #24459 2011.2.24 yyagi\r
-                               writer.WriteLine("BestRankGuitar={0}", this.stファイル.BestRank.Guitar);            //\r
-                               writer.WriteLine("BestRankBass={0}", this.stファイル.BestRank.Bass);                        //\r
+                               writer.WriteLine("BestRankDrums={0}", this.stファイル.BestRank.Drums);    // #24459 2011.2.24 yyagi\r
+                               writer.WriteLine("BestRankGuitar={0}", this.stファイル.BestRank.Guitar);    //\r
+                               writer.WriteLine("BestRankBass={0}", this.stファイル.BestRank.Bass);      //\r
                                writer.WriteLine("HistoryCount={0}", this.stファイル.HistoryCount);\r
                                writer.WriteLine("History0={0}", this.stファイル.History[0]);\r
                                writer.WriteLine("History1={0}", this.stファイル.History[1]);\r
@@ -1245,7 +1150,7 @@ namespace DTXMania
 \r
                internal static ERANK tランク値を計算して返す(C演奏記録 part)\r
                {\r
-                       if (part.b演奏にMIDI入力を使用した || part.b演奏にキーボードを使用した || part.b演奏にジョイパッドを使用した || part.b演奏にマウスを使用した)   // 2010.9.11\r
+                       if (part.b演奏にMIDI入力を使用した || part.b演奏にキーボードを使用した || part.b演奏にジョイパッドを使用した || part.b演奏にマウスを使用した) // 2010.9.11\r
                        {\r
                                int nTotal = part.nPerfect数 + part.nGreat数 + part.nGood数 + part.nPoor数 + part.nMiss数;\r
                                return tランク値を計算して返す(nTotal, part.nPerfect数, part.nGreat数, part.nGood数, part.nPoor数, part.nMiss数);\r
@@ -1292,19 +1197,19 @@ namespace DTXMania
                        return ERANK.E;\r
                }\r
 \r
-               internal static double tゲーム型スキルを計算して返す(int nLevel, int nTotal, int nPerfect, int nCombo, E楽器パート inst, STAUTOPLAY bAutoPlay)\r
+               internal static double tゲーム型スキルを計算して返す(int nLevel, int nTotal, int nPerfect, int nCombo, EPart inst)\r
                {\r
                        double ret;\r
                        if ((nTotal == 0) || ((nPerfect == 0) && (nCombo == 0)))\r
                                ret = 0.0;\r
 \r
                        ret = ((nLevel * ((nPerfect * 0.8 + nCombo * 0.2) / ((double)nTotal))) / 2.0);\r
-                       ret *= dbCalcReviseValForDrGtBsAutoLanes(inst, bAutoPlay);\r
+                       ret *= dbCalcReviseValForDrGtBsAutoLanes(inst);\r
 \r
                        return ret;\r
                }\r
 \r
-               internal static double t演奏型スキルを計算して返す(int nTotal, int nPerfect, int nGreat, int nGood, int nPoor, int nMiss, E楽器パート inst, STAUTOPLAY bAutoPlay)\r
+               internal static double t演奏型スキルを計算して返す(int nTotal, int nPerfect, int nGreat, int nGood, int nPoor, int nMiss, EPart inst, bool auto考慮)\r
                {\r
                        if (nTotal == 0)\r
                                return 0.0;\r
@@ -1313,26 +1218,29 @@ namespace DTXMania
                        double y = ((nPerfect * 1.0 + nGreat * 0.8 + nGood * 0.5 + nPoor * 0.2 + nMiss * 0.0 + nAuto * 0.0) * 100.0) / ((double)nTotal);\r
                        double ret = (100.0 * ((Math.Pow(1.03, y) - 1.0) / (Math.Pow(1.03, 100.0) - 1.0)));\r
 \r
-                       ret *= dbCalcReviseValForDrGtBsAutoLanes(inst, bAutoPlay);\r
+                       if (auto考慮)\r
+                       {\r
+                               ret *= dbCalcReviseValForDrGtBsAutoLanes(inst);\r
+                       }\r
                        return ret;\r
                }\r
 \r
-               internal static double dbCalcReviseValForDrGtBsAutoLanes(E楽器パート inst, STAUTOPLAY bAutoPlay)   // #28607 2012.6.7 yyagi\r
+               internal static double dbCalcReviseValForDrGtBsAutoLanes(EPart inst)  // #28607 2012.6.7 yyagi\r
                {\r
                        double ret = 1.0;\r
-\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(inst);\r
                        switch (inst)\r
                        {\r
                                #region [ Unknown ]\r
-                               case E楽器パート.UNKNOWN:\r
+                               case EPart.Unknown:\r
                                        throw new ArgumentException();\r
                                #endregion\r
                                #region [ Drums ]\r
-                               case E楽器パート.DRUMS:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである)\r
+                               case EPart.Drums:\r
+                                       if (!allauto)\r
                                        {\r
                                                #region [ Auto BD ]\r
-                                               if (bAutoPlay.BD)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BD)\r
                                                {\r
                                                        ret /= 2;\r
                                                }\r
@@ -1341,26 +1249,26 @@ namespace DTXMania
                                        break;\r
                                #endregion\r
                                #region [ Guitar ]\r
-                               case E楽器パート.GUITAR:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである)\r
+                               case EPart.Guitar:\r
+                                       if (!allauto)\r
                                        {\r
                                                #region [ Auto Pick ]\r
-                                               if (bAutoPlay.GtPick)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick)\r
                                                {\r
-                                                       ret /= 2;                        // AutoPick時、達成率を1/2にする\r
+                                                       ret /= 2;      // AutoPick時、達成率を1/2にする\r
                                                }\r
                                                #endregion\r
                                                #region [ Auto Neck ]\r
                                                int nAutoLanes = 0;\r
-                                               if (bAutoPlay.GtR)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
-                                               if (bAutoPlay.GtG)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtG)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
-                                               if (bAutoPlay.GtB)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtB)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
@@ -1370,26 +1278,26 @@ namespace DTXMania
                                        break;\r
                                #endregion\r
                                #region [ Bass ]\r
-                               case E楽器パート.BASS:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである)\r
+                               case EPart.Bass:\r
+                                       if (!allauto)\r
                                        {\r
                                                #region [ Auto Pick ]\r
-                                               if (bAutoPlay.BsPick)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick)\r
                                                {\r
-                                                       ret /= 2;                        // AutoPick時、達成率を1/2にする\r
+                                                       ret /= 2;      // AutoPick時、達成率を1/2にする\r
                                                }\r
                                                #endregion\r
                                                #region [ Auto lanes ]\r
                                                int nAutoLanes = 0;\r
-                                               if (bAutoPlay.BsR)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
-                                               if (bAutoPlay.BsG)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsG)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
-                                               if (bAutoPlay.BsB)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsB)\r
                                                {\r
                                                        nAutoLanes++;\r
                                                }\r
@@ -1397,100 +1305,29 @@ namespace DTXMania
                                                #endregion\r
                                        }\r
                                        break;\r
-                               #endregion\r
+                                       #endregion\r
                        }\r
                        return ret;\r
                }\r
 \r
-               internal static string t演奏セクションのMD5を求めて返す(C演奏記録 cc)\r
+               internal static STDGBSValue<bool> t更新条件を取得する()\r
                {\r
-                       StringBuilder builder = new StringBuilder();\r
-                       builder.Append(cc.nスコア.ToString());\r
-                       builder.Append(cc.dbゲーム型スキル値.ToString(".000000"));\r
-                       builder.Append(cc.db演奏型スキル値.ToString(".000000"));\r
-                       builder.Append(cc.nPerfect数);\r
-                       builder.Append(cc.nGreat数);\r
-                       builder.Append(cc.nGood数);\r
-                       builder.Append(cc.nPoor数);\r
-                       builder.Append(cc.nMiss数);\r
-                       builder.Append(cc.n最大コンボ数);\r
-                       builder.Append(cc.n全チップ数);\r
-                       for (int i = 0; i < 10; i++)\r
-                               builder.Append(boolToChar(cc.bAutoPlay[i]));\r
-                       builder.Append(boolToChar(cc.bTight));\r
-                       builder.Append(boolToChar(cc.bSudden.Drums));\r
-                       builder.Append(boolToChar(cc.bSudden.Guitar));\r
-                       builder.Append(boolToChar(cc.bSudden.Bass));\r
-                       builder.Append(boolToChar(cc.bHidden.Drums));\r
-                       builder.Append(boolToChar(cc.bHidden.Guitar));\r
-                       builder.Append(boolToChar(cc.bHidden.Bass));\r
-                       builder.Append((int)cc.eInvisible.Drums);\r
-                       builder.Append((int)cc.eInvisible.Guitar);\r
-                       builder.Append((int)cc.eInvisible.Bass);\r
-                       builder.Append(boolToChar(cc.bReverse.Drums));\r
-                       builder.Append(boolToChar(cc.bReverse.Guitar));\r
-                       builder.Append(boolToChar(cc.bReverse.Bass));\r
-                       builder.Append((int)cc.eRandom.Guitar);\r
-                       builder.Append((int)cc.eRandom.Bass);\r
-                       builder.Append(boolToChar(cc.bLight.Guitar));\r
-                       builder.Append(boolToChar(cc.bLight.Bass));\r
-                       builder.Append(boolToChar(cc.bLeft.Guitar));\r
-                       builder.Append(boolToChar(cc.bLeft.Bass));\r
-                       builder.Append((int)cc.eDark);\r
-                       builder.Append(cc.f譜面スクロール速度.Drums.ToString(".000000"));\r
-                       builder.Append(cc.f譜面スクロール速度.Guitar.ToString(".000000"));\r
-                       builder.Append(cc.f譜面スクロール速度.Bass.ToString(".000000"));\r
-                       builder.Append(cc.n演奏速度分子);\r
-                       builder.Append(cc.n演奏速度分母);\r
-                       builder.Append((int)cc.eHHGroup);\r
-                       builder.Append((int)cc.eFTGroup);\r
-                       builder.Append((int)cc.eCYGroup);\r
-                       builder.Append((int)cc.eHitSoundPriorityHH);\r
-                       builder.Append((int)cc.eHitSoundPriorityFT);\r
-                       builder.Append((int)cc.eHitSoundPriorityCY);\r
-                       builder.Append(boolToChar(cc.bGuitar有効));\r
-                       builder.Append(boolToChar(cc.bDrums有効));\r
-                       builder.Append(boolToChar(cc.bSTAGEFAILED有効));\r
-                       builder.Append((int)cc.eダメージレベル);\r
-                       builder.Append(boolToChar(cc.b演奏にキーボードを使用した));\r
-                       builder.Append(boolToChar(cc.b演奏にMIDI入力を使用した));\r
-                       builder.Append(boolToChar(cc.b演奏にジョイパッドを使用した));\r
-                       builder.Append(boolToChar(cc.b演奏にマウスを使用した));\r
-                       builder.Append(cc.nPerfectになる範囲ms);\r
-                       builder.Append(cc.nGreatになる範囲ms);\r
-                       builder.Append(cc.nGoodになる範囲ms);\r
-                       builder.Append(cc.nPoorになる範囲ms);\r
-                       builder.Append(cc.strDTXManiaのバージョン);\r
-                       builder.Append(cc.最終更新日時);\r
-\r
-                       byte[] bytes = Encoding.GetEncoding("utf-16").GetBytes(builder.ToString());\r
-                       StringBuilder builder2 = new StringBuilder(0x21);\r
+                       STDGBSValue<bool> ret = new STDGBSValue<bool>();\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
                        {\r
-                               MD5CryptoServiceProvider m = new MD5CryptoServiceProvider();\r
-                               byte[] buffer2 = m.ComputeHash(bytes);\r
-                               foreach (byte num2 in buffer2)\r
-                                       builder2.Append(num2.ToString("x2"));\r
+                               ret[i] = CDTXMania.Instance.ConfigIni.b楽器有効(i) && CDTXMania.Instance.DTX.bチップがある[i] && !CDTXMania.Instance.ConfigIni.bIsAutoPlay(i);\r
                        }\r
-                       return builder2.ToString();\r
-               }\r
-\r
-               internal static STDGBVALUE<bool> t更新条件を取得する()\r
-               {\r
-                       STDGBVALUE<bool> ret = new STDGBVALUE<bool>();\r
-                       ret.Drums = CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある.Drums && !CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである;\r
-                       ret.Guitar = CDTXMania.Instance.ConfigIni.bGuitar有効 && CDTXMania.Instance.DTX.bチップがある.Guitar && !CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである;\r
-                       ret.Bass = CDTXMania.Instance.ConfigIni.bGuitar有効 && CDTXMania.Instance.DTX.bチップがある.Bass && !CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである;\r
                        return ret;\r
                }\r
 \r
-               internal static ERANK t総合ランク値を計算して返す(STDGBVALUE<C演奏記録> record)\r
+               internal static ERANK t総合ランク値を計算して返す(STDGBSValue<C演奏記録> record)\r
                {\r
                        int nTotal = record.Drums.n全チップ数 + record.Guitar.n全チップ数 + record.Bass.n全チップ数;\r
-                       int nPerfect = record.Drums.nPerfect数_Auto含まない + record.Guitar.nPerfect数_Auto含まない + record.Bass.nPerfect数_Auto含まない;       // #24569 2011.3.1 yyagi: to calculate result rank without AUTO chips\r
-                       int nGreat = record.Drums.nGreat数_Auto含まない + record.Guitar.nGreat数_Auto含まない + record.Bass.nGreat数_Auto含まない;               //\r
-                       int nGood = record.Drums.nGood数_Auto含まない + record.Guitar.nGood数_Auto含まない + record.Bass.nGood数_Auto含まない;           //\r
-                       int nPoor = record.Drums.nPoor数_Auto含まない + record.Guitar.nPoor数_Auto含まない + record.Bass.nPoor数_Auto含まない;           //\r
-                       int nMiss = record.Drums.nMiss数_Auto含まない + record.Guitar.nMiss数_Auto含まない + record.Bass.nMiss数_Auto含まない;           //\r
+                       int nPerfect = record.Drums.nPerfect数_Auto含まない + record.Guitar.nPerfect数_Auto含まない + record.Bass.nPerfect数_Auto含まない; // #24569 2011.3.1 yyagi: to calculate result rank without AUTO chips\r
+                       int nGreat = record.Drums.nGreat数_Auto含まない + record.Guitar.nGreat数_Auto含まない + record.Bass.nGreat数_Auto含まない;   //\r
+                       int nGood = record.Drums.nGood数_Auto含まない + record.Guitar.nGood数_Auto含まない + record.Bass.nGood数_Auto含まない;   //\r
+                       int nPoor = record.Drums.nPoor数_Auto含まない + record.Guitar.nPoor数_Auto含まない + record.Bass.nPoor数_Auto含まない;   //\r
+                       int nMiss = record.Drums.nMiss数_Auto含まない + record.Guitar.nMiss数_Auto含まない + record.Bass.nMiss数_Auto含まない;   //\r
                        return tランク値を計算して返す(nTotal, nPerfect, nGreat, nGood, nPoor, nMiss);\r
                }\r
 \r
@@ -1498,6 +1335,7 @@ namespace DTXMania
 \r
                #region [ private ]\r
                //-----------------\r
+               /*\r
                private bool ONorOFF(char c)\r
                {\r
                        return (c != '0');\r
@@ -1510,6 +1348,7 @@ namespace DTXMania
                        }\r
                        return '1';\r
                }\r
+               */\r
                //-----------------\r
                #endregion\r
        }\r
index 2d8085e..f4ec1ed 100644 (file)
@@ -28,7 +28,7 @@ namespace DTXMania
                                {\r
                                        return this._file;\r
                                }\r
-                               set                                             // ここには来ない( Label[xx] にsetすると、結局Labelのgetが呼ばれるだけで、Labelのsetは呼ばれない)\r
+                               set           // ここには来ない( Label[xx] にsetすると、結局Labelのgetが呼ばれるだけで、Labelのsetは呼ばれない)\r
                                {\r
                                        this._file = value;\r
                                        this.b使用中 = true;\r
@@ -76,7 +76,7 @@ namespace DTXMania
                                {\r
                                        return this._label;\r
                                }\r
-                               set                                             // ここには来ない( Label[xx] にsetすると、結局Labelのgetが呼ばれるだけで、Labelのsetは呼ばれない)\r
+                               set           // ここには来ない( Label[xx] にsetすると、結局Labelのgetが呼ばれるだけで、Labelのsetは呼ばれない)\r
                                {\r
                                        this._label = value;\r
                                        this.b使用中 = true;\r
@@ -162,52 +162,52 @@ namespace DTXMania
                                                        else if (str.StartsWith("#L1FILE", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.File[0] = str.Substring(7).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L2FILE", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.File[1] = str.Substring(7).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L3FILE", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.File[2] = str.Substring(7).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L4FILE", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.File[3] = str.Substring(7).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L5FILE", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.File[4] = str.Substring(7).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L1LABEL", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.Label[0] = str.Substring(8).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L2LABEL", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.Label[1] = str.Substring(8).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L3LABEL", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.Label[2] = str.Substring(8).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L4LABEL", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.Label[3] = str.Substring(8).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                        else if (str.StartsWith("#L5LABEL", StringComparison.OrdinalIgnoreCase))\r
                                                        {\r
                                                                block.Label[4] = str.Substring(8).Trim(new char[] { ':', ' ', '\t' });\r
-                                                               block.b使用中 = true;                // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
+                                                               block.b使用中 = true;    // #28937 2012.7.7 yyagi; "get" accessor is called for T[] property. So b使用中 is not modified to set the property. I need to update it myself.\r
                                                        }\r
                                                }\r
                                                continue;\r
index e3b8d8c..f74c181 100644 (file)
@@ -45,14 +45,14 @@ namespace DTXMania
                        set;\r
                }\r
                [NonSerialized]\r
-               public List<Cスコア> listSongsDB;                                    // songs.dbから構築されるlist\r
-               public List<C曲リストノード> list曲ルート;                   // 起動時にフォルダ検索して構築されるlist\r
-               public bool bIsSuspending                                                       // 外部スレッドから、内部スレッドのsuspendを指示する時にtrueにする\r
-               {                                                                                                       // 再開時は、これをfalseにしてから、次のautoReset.Set()を実行する\r
+               public List<Cスコア> listSongsDB;          // songs.dbから構築されるlist\r
+               public List<C曲リストノード> list曲ルート;     // 起動時にフォルダ検索して構築されるlist\r
+               public bool bIsSuspending             // 外部スレッドから、内部スレッドのsuspendを指示する時にtrueにする\r
+               {                         // 再開時は、これをfalseにしてから、次のautoReset.Set()を実行する\r
                        get;\r
                        set;\r
                }\r
-               public bool bIsSlowdown                                                         // #PREMOVIE再生時に曲検索を遅くする\r
+               public bool bIsSlowdown               // #PREMOVIE再生時に曲検索を遅くする\r
                {\r
                        get;\r
                        set;\r
@@ -71,7 +71,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private int searchCount;                                                        // #PREMOVIE中は検索n回実行したら少しスリープする\r
+               private int searchCount;              // #PREMOVIE中は検索n回実行したら少しスリープする\r
 \r
                // コンストラクタ\r
 \r
@@ -81,8 +81,8 @@ namespace DTXMania
                        this.list曲ルート = new List<C曲リストノード>();\r
                        this.n検索された曲ノード数 = 0;\r
                        this.n検索されたスコア数 = 0;\r
-                       this.bIsSuspending = false;                                             // #27060\r
-                       this.autoReset = new AutoResetEvent(true);      // #27060\r
+                       this.bIsSuspending = false;           // #27060\r
+                       this.autoReset = new AutoResetEvent(true);  // #27060\r
                        this.searchCount = 0;\r
                }\r
 \r
@@ -143,7 +143,7 @@ namespace DTXMania
 \r
                        DirectoryInfo info = new DirectoryInfo(str基点フォルダ);\r
 \r
-                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                Trace.TraceInformation("基点フォルダ: " + str基点フォルダ);\r
 \r
                        #region [ a.フォルダ内に set.def が存在する場合 → set.def からノード作成]\r
@@ -153,14 +153,14 @@ namespace DTXMania
                        {\r
                                CSetDef def = new CSetDef(path);\r
                                new FileInfo(path);\r
-                               if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                               if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                {\r
                                        Trace.TraceInformation("set.def検出 : {0}", path);\r
                                        Trace.Indent();\r
                                }\r
                                try\r
                                {\r
-                                       SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                                       SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
                                        for (int i = 0; i < def.blocks.Count; i++)\r
                                        {\r
                                                CSetDef.CBlock block = def.blocks[i];\r
@@ -211,7 +211,7 @@ namespace DTXMania
                                                {\r
                                                        listノードリスト.Add(item);\r
                                                        this.n検索された曲ノード数++;\r
-                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                        {\r
                                                                StringBuilder builder = new StringBuilder(0x200);\r
                                                                builder.Append(string.Format("nID#{0:D3}", item.nID));\r
@@ -264,7 +264,7 @@ namespace DTXMania
                                }\r
                                finally\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                        {\r
                                                Trace.Unindent();\r
                                        }\r
@@ -279,7 +279,7 @@ namespace DTXMania
                        {\r
                                foreach (FileInfo fileinfo in info.GetFiles())\r
                                {\r
-                                       SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                                       SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
                                        string strExt = fileinfo.Extension.ToLower();\r
                                        if ((strExt.Equals(".dtx") || strExt.Equals(".gda")) || ((strExt.Equals(".g2d") || strExt.Equals(".bms")) || strExt.Equals(".bme")))\r
                                        {\r
@@ -306,7 +306,7 @@ namespace DTXMania
                                                this.n検索されたスコア数++;\r
                                                listノードリスト.Add(c曲リストノード);\r
                                                this.n検索された曲ノード数++;\r
-                                               if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                               if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                {\r
                                                        Trace.Indent();\r
                                                        try\r
@@ -343,7 +343,7 @@ namespace DTXMania
 \r
                        foreach (DirectoryInfo infoDir in info.GetDirectories())\r
                        {\r
-                               SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                               SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
 \r
                                #region [ a. "dtxfiles." で始まるフォルダの場合 ]\r
                                //-----------------------------\r
@@ -420,7 +420,7 @@ namespace DTXMania
                                                        {\r
                                                                // box.defに記載されているスキン情報をコピー。末尾に必ず\をつけておくこと。\r
                                                                string s = System.IO.Path.Combine(infoDir.FullName, boxdef.SkinPath);\r
-                                                               if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar)   // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
+                                                               if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
                                                                {\r
                                                                        s += System.IO.Path.DirectorySeparatorChar;\r
                                                                }\r
@@ -452,7 +452,7 @@ namespace DTXMania
                                                        c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
                                                }\r
                                        }\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                        {\r
                                                Trace.Indent();\r
                                                try\r
@@ -519,7 +519,7 @@ namespace DTXMania
                                        {\r
                                                // box.defに記載されているスキン情報をコピー。末尾に必ず\をつけておくこと。\r
                                                string s = System.IO.Path.Combine(infoDir.FullName, boxdef.SkinPath);\r
-                                               if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar)   // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
+                                               if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
                                                {\r
                                                        s += System.IO.Path.DirectorySeparatorChar;\r
                                                }\r
@@ -543,7 +543,7 @@ namespace DTXMania
                                        c曲リストノード.nGood範囲ms = boxdef.GoodRange;\r
                                        c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
                                        listノードリスト.Add(c曲リストノード);\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                        {\r
                                                Trace.TraceInformation("box.def検出 : {0}", infoDir.FullName + @"\box.def");\r
                                                Trace.Indent();\r
@@ -648,7 +648,7 @@ namespace DTXMania
                        {\r
                                while (enumerator.MoveNext())\r
                                {\r
-                                       SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                                       SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
 \r
                                        C曲リストノード node = enumerator.Current;\r
                                        if (node.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
@@ -664,7 +664,7 @@ namespace DTXMania
                                                        {\r
                                                                if (match == null)\r
                                                                {\r
-                                                                       match = delegate(Cスコア sc)\r
+                                                                       match = delegate (Cスコア sc)\r
                                                                        {\r
                                                                                return\r
                                                                                        (\r
@@ -679,7 +679,7 @@ namespace DTXMania
                                                                if (nMatched == -1)\r
                                                                {\r
                                                                        //Trace.TraceInformation( "songs.db に存在しません。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
-                                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                                        {\r
                                                                                Trace.TraceInformation("songs.db に存在しません。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
                                                                        }\r
@@ -688,7 +688,7 @@ namespace DTXMania
                                                                {\r
                                                                        node.arスコア[lv].譜面情報 = this.listSongsDB[nMatched].譜面情報;\r
                                                                        node.arスコア[lv].bSongDBにキャッシュがあった = true;\r
-                                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                                        {\r
                                                                                Trace.TraceInformation("songs.db から転記しました。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
                                                                        }\r
@@ -699,7 +699,7 @@ namespace DTXMania
                                                                                try\r
                                                                                {\r
                                                                                        CScoreIni scoreIni = new CScoreIni(strFileNameScoreIni);\r
-                                                                                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                                                                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                                                                        {\r
                                                                                                if (scoreIni.stセクション.HiSkill[i].b演奏にMIDI入力を使用した\r
                                                                                                        || scoreIni.stセクション.HiSkill[i].b演奏にキーボードを使用した\r
@@ -724,7 +724,7 @@ namespace DTXMania
                                                                                        {\r
                                                                                                node.arスコア[lv].譜面情報.演奏履歴[j] = scoreIni.stファイル.History[j];\r
                                                                                        }\r
-                                                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                                                        {\r
                                                                                                Trace.TraceInformation("演奏記録ファイルから HiSkill 情報と演奏履歴を取得しました。({0})", strFileNameScoreIni);\r
                                                                                        }\r
@@ -802,7 +802,7 @@ namespace DTXMania
                {\r
                        foreach (C曲リストノード c曲リストノード in ノードリスト)\r
                        {\r
-                               SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                               SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
 \r
                                if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
                                {\r
@@ -822,7 +822,7 @@ namespace DTXMania
                                                        {\r
                                                                try\r
                                                                {\r
-                                                                       CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス,false);//DTX ファイルのヘッダだけ読み込んでいたが、使用レーン数の集計の為全て読み込みに変更\r
+                                                                       CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, false);//DTX ファイルのヘッダだけ読み込んでいたが、使用レーン数の集計の為全て読み込みに変更\r
                                                                        c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;\r
@@ -837,7 +837,7 @@ namespace DTXMania
                                                                        c曲リストノード.arスコア[i].譜面情報.レベルを非表示にする = cdtx.HIDDENLEVEL;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.曲種別 = cdtx.e種別;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.Bpm = cdtx.BPM;\r
-                                                                       c曲リストノード.arスコア[i].譜面情報.Duration = 0;        //  (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\r
+                                                                       c曲リストノード.arスコア[i].譜面情報.Duration = 0;  //  (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.使用レーン数.Drums = cdtx.n使用レーン数.Drums;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.使用レーン数.Guitar = cdtx.n使用レーン数.Guitar;\r
                                                                        c曲リストノード.arスコア[i].譜面情報.使用レーン数.Bass = cdtx.n使用レーン数.Bass;\r
@@ -846,7 +846,7 @@ namespace DTXMania
                                                                        //Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
                                                                        #region [ 曲検索ログ出力 ]\r
                                                                        //-----------------\r
-                                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                                        {\r
                                                                                StringBuilder sb = new StringBuilder(0x400);\r
                                                                                sb.Append(string.Format("曲データファイルから譜面情報を転記しました。({0})", path));\r
@@ -958,7 +958,7 @@ namespace DTXMania
 \r
                                #region [ ログ出力 ]\r
                                //-----------------------------\r
-                               if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                               if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                {\r
                                        StringBuilder sb = new StringBuilder(0x100);\r
                                        sb.Append(string.Format("nID#{0:D3}", itemRandom.nID));\r
@@ -982,7 +982,7 @@ namespace DTXMania
                        // すべてのノードについて…\r
                        foreach (C曲リストノード c曲リストノード in ノードリスト)\r
                        {\r
-                               SlowOrSuspendSearchTask();              // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+                               SlowOrSuspendSearchTask();    // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
 \r
                                #region [ BOXノードなら子リストに <<BACK を入れ、子リストに後処理を適用する ]\r
                                //-----------------------------\r
@@ -1016,7 +1016,7 @@ namespace DTXMania
 \r
                                        #region [ ログ出力 ]\r
                                        //-----------------------------\r
-                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                        {\r
                                                StringBuilder sb = new StringBuilder(0x100);\r
                                                sb.Append(string.Format("nID#{0:D3}", itemBack.nID));\r
@@ -1050,7 +1050,7 @@ namespace DTXMania
                                                {\r
                                                        c曲リストノード.strタイトル = c曲リストノード.arスコア[j].譜面情報.タイトル;\r
 \r
-                                                       if (CDTXMania.Instance.ConfigIni.bLog曲検索ログ出力)\r
+                                                       if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
                                                                Trace.TraceInformation("タイトルを設定しました。(nID#{0:D3}, title={1})", c曲リストノード.nID, c曲リストノード.strタイトル);\r
 \r
                                                        break;\r
@@ -1165,7 +1165,7 @@ namespace DTXMania
                //-----------------\r
                public void t曲リストのソート1_絶対パス順(List<C曲リストノード> ノードリスト)\r
                {\r
-                       ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                       ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                        {\r
                                #region [ 共通処理 ]\r
                                if (n1 == n2)\r
@@ -1232,9 +1232,9 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               public void t曲リストのソート2_タイトル順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート2_タイトル順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
-                       ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                       ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                        {\r
                                if (n1 == n2)\r
                                {\r
@@ -1261,13 +1261,13 @@ namespace DTXMania
                /// <param name="ノードリスト"></param>\r
                /// <param name="part"></param>\r
                /// <param name="order">1=Ascend -1=Descend</param>\r
-               public void t曲リストのソート3_演奏回数の多い順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート3_演奏回数の多い順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        order = -order;\r
                        int nL12345 = (int)p[0];\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       if (part != EPart.Unknown)\r
                        {\r
-                               ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                               ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                                {\r
                                        #region [ 共通処理 ]\r
                                        if (n1 == n2)\r
@@ -1325,13 +1325,13 @@ namespace DTXMania
                                //                              }\r
                        }\r
                }\r
-               public void t曲リストのソート4_LEVEL順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート4_LEVEL順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        order = -order;\r
                        int nL12345 = (int)p[0];\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       if (part != EPart.Unknown)\r
                        {\r
-                               ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                               ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                                {\r
                                        #region [ 共通処理 ]\r
                                        if (n1 == n2)\r
@@ -1375,13 +1375,13 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               public void t曲リストのソート5_BestRank順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート5_BestRank順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        order = -order;\r
                        int nL12345 = (int)p[0];\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       if (part != EPart.Unknown)\r
                        {\r
-                               ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                               ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                                {\r
                                        #region [ 共通処理 ]\r
                                        if (n1 == n2)\r
@@ -1432,13 +1432,13 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               public void t曲リストのソート6_SkillPoint順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート6_SkillPoint順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        order = -order;\r
                        int nL12345 = (int)p[0];\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       if (part != EPart.Unknown)\r
                        {\r
-                               ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                               ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                                {\r
                                        #region [ 共通処理 ]\r
                                        if (n1 == n2)\r
@@ -1482,12 +1482,12 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               public void t曲リストのソート7_更新日時順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート7_更新日時順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        int nL12345 = (int)p[0];\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       if (part != EPart.Unknown)\r
                        {\r
-                               ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                               ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                                {\r
                                        #region [ 共通処理 ]\r
                                        if (n1 == n2)\r
@@ -1532,10 +1532,10 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               public void t曲リストのソート8_アーティスト名順(List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p)\r
+               public void t曲リストのソート8_アーティスト名順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
                {\r
                        int nL12345 = (int)p[0];\r
-                       ノードリスト.Sort(delegate(C曲リストノード n1, C曲リストノード n2)\r
+                       ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
                        {\r
                                #region [ 共通処理 ]\r
                                if (n1 == n2)\r
@@ -1594,13 +1594,13 @@ namespace DTXMania
                        // 事前チェック。\r
 \r
                        if (song == null)\r
-                               return n現在のアンカ難易度レベル;   // 曲がまったくないよ\r
+                               return n現在のアンカ難易度レベル; // 曲がまったくないよ\r
 \r
                        if (song.arスコア[n現在のアンカ難易度レベル] != null)\r
-                               return n現在のアンカ難易度レベル;   // 難易度ぴったりの曲があったよ\r
+                               return n現在のアンカ難易度レベル; // 難易度ぴったりの曲があったよ\r
 \r
                        if ((song.eノード種別 == C曲リストノード.Eノード種別.BOX) || (song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX))\r
-                               return 0;                                                               // BOX と BACKBOX は関係無いよ\r
+                               return 0;               // BOX と BACKBOX は関係無いよ\r
 \r
 \r
                        // 現在のアンカレベルから、難易度上向きに検索開始。\r
@@ -1610,9 +1610,9 @@ namespace DTXMania
                        for (int i = 0; i < 5; i++)\r
                        {\r
                                if (song.arスコア[n最も近いレベル] != null)\r
-                                       break;  // 曲があった。\r
+                                       break;  // 曲があった。\r
 \r
-                               n最も近いレベル = (n最も近いレベル + 1) % 5;      // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
+                               n最も近いレベル = (n最も近いレベル + 1) % 5;  // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
                        }\r
 \r
 \r
@@ -1628,9 +1628,9 @@ namespace DTXMania
                                for (int i = 0; i < 5; i++)\r
                                {\r
                                        if (song.arスコア[n最も近いレベル] != null)\r
-                                               break;  // 曲があった。\r
+                                               break;  // 曲があった。\r
 \r
-                                       n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5;        // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
+                                       n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5;  // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
                                }\r
                        }\r
 \r
@@ -1659,7 +1659,7 @@ namespace DTXMania
                                        {\r
                                                return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
                                        }\r
-                                       #endregion\r
+               #endregion\r
                                        double dBPMn1 = 0.0, dBPMn2 = 0.0;\r
                                        if ( n1.arスコア[ nL12345 ] != null )\r
                                        {\r
@@ -1700,8 +1700,8 @@ Debug.WriteLine( dBPM + ":" + c曲リストノード.strタイトル );
                        try\r
                        {\r
                                var ini = new CScoreIni(strScoreIniファイルパス);\r
-                               \r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; inst++)\r
+\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; inst++)\r
                                {\r
                                        //-----------------\r
                                        if (\r
@@ -1789,11 +1789,11 @@ Debug.WriteLine( dBPM + ":" + c曲リストノード.strタイトル );
                /// </summary>\r
                private void SlowOrSuspendSearchTask()\r
                {\r
-                       if (this.bIsSuspending)         // #27060 中断要求があったら、解除要求が来るまで待機\r
+                       if (this.bIsSuspending)   // #27060 中断要求があったら、解除要求が来るまで待機\r
                        {\r
                                autoReset.WaitOne();\r
                        }\r
-                       if (this.bIsSlowdown && ++this.searchCount > 10)                        // #27060 #PREMOVIE再生中は検索負荷を下げる\r
+                       if (this.bIsSlowdown && ++this.searchCount > 10)      // #27060 #PREMOVIE再生中は検索負荷を下げる\r
                        {\r
                                Thread.Sleep(100);\r
                                this.searchCount = 0;\r
index 6ffdcda..165ef3c 100644 (file)
@@ -58,12 +58,12 @@ namespace DTXMania
                        public string Premovie;\r
                        public string Presound;\r
                        public string Backgound;\r
-                       public STDGBVALUE<int> レベル;\r
-                       public STDGBVALUE<CScoreIni.ERANK> 最大ランク;\r
-                       public STDGBVALUE<double> 最大スキル;\r
-                       public STDGBVALUE<bool> フルコンボ;\r
-                       public STDGBVALUE<int> 演奏回数;\r
-                       public STDGBVALUE<int> 使用レーン数;\r
+                       public STDGBSValue<int> レベル;\r
+                       public STDGBSValue<CScoreIni.ERANK> 最大ランク;\r
+                       public STDGBSValue<double> 最大スキル;\r
+                       public STDGBSValue<bool> フルコンボ;\r
+                       public STDGBSValue<int> 演奏回数;\r
+                       public STDGBSValue<int> 使用レーン数;\r
                        public STHISTORY 演奏履歴;\r
                        public bool レベルを非表示にする;\r
                        public EDTX種別 曲種別;\r
@@ -161,13 +161,13 @@ namespace DTXMania
                        this.譜面情報.Premovie = "";\r
                        this.譜面情報.Presound = "";\r
                        this.譜面情報.Backgound = "";\r
-                       this.譜面情報.レベル = new STDGBVALUE<int>();\r
-                       this.譜面情報.最大ランク = new STDGBVALUE<CScoreIni.ERANK>();\r
+                       this.譜面情報.レベル = new STDGBSValue<int>();\r
+                       this.譜面情報.最大ランク = new STDGBSValue<CScoreIni.ERANK>();\r
                        this.譜面情報.最大ランク.Drums = CScoreIni.ERANK.UNKNOWN;\r
                        this.譜面情報.最大ランク.Guitar = CScoreIni.ERANK.UNKNOWN;\r
                        this.譜面情報.最大ランク.Bass = CScoreIni.ERANK.UNKNOWN;\r
-                       this.譜面情報.フルコンボ = new STDGBVALUE<bool>();\r
-                       this.譜面情報.演奏回数 = new STDGBVALUE<int>();\r
+                       this.譜面情報.フルコンボ = new STDGBSValue<bool>();\r
+                       this.譜面情報.演奏回数 = new STDGBSValue<int>();\r
                        this.譜面情報.演奏履歴 = new ST譜面情報.STHISTORY();\r
                        this.譜面情報.演奏履歴.行1 = "";\r
                        this.譜面情報.演奏履歴.行2 = "";\r
@@ -175,11 +175,11 @@ namespace DTXMania
                        this.譜面情報.演奏履歴.行4 = "";\r
                        this.譜面情報.演奏履歴.行5 = "";\r
                        this.譜面情報.レベルを非表示にする = false;\r
-                       this.譜面情報.最大スキル = new STDGBVALUE<double>();\r
+                       this.譜面情報.最大スキル = new STDGBSValue<double>();\r
                        this.譜面情報.曲種別 = EDTX種別.DTX;\r
                        this.譜面情報.Bpm = 120.0;\r
                        this.譜面情報.Duration = 0;\r
-                       this.譜面情報.使用レーン数 = new STDGBVALUE<int>();\r
+                       this.譜面情報.使用レーン数 = new STDGBSValue<int>();\r
                }\r
        }\r
 }\r
index b92bf1c..738ec64 100644 (file)
@@ -50,8 +50,8 @@ namespace DTXMania
                public Stack<int> stackランダム演奏番号 = new Stack<int>();\r
                public string strジャンル = "";\r
                public string strタイトル = "";\r
-               public string strBreadcrumbs = "";              // #27060 2011.2.27 yyagi; MUSIC BOXのパンくずリスト (曲リスト構造内の絶対位置捕捉のために使う)\r
-               public string strSkinPath = "";                 // #28195 2012.5.4 yyagi; box.defでのスキン切り替え対応\r
+               public string strBreadcrumbs = "";    // #27060 2011.2.27 yyagi; MUSIC BOXのパンくずリスト (曲リスト構造内の絶対位置捕捉のために使う)\r
+               public string strSkinPath = "";     // #28195 2012.5.4 yyagi; box.defでのスキン切り替え対応\r
 \r
                // コンストラクタ\r
 \r
index bde9d97..d43f643 100644 (file)
@@ -90,7 +90,7 @@ namespace DTXMania
                                        this.list進行文字列.Add("Release: " + CDTXMania.VERSION + " [" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "]");\r
 \r
                                        es = new CEnumSongs();\r
-                                       es.StartEnumFromCache();                                                                                // 曲リスト取得(別スレッドで実行される)\r
+                                       es.StartEnumFromCache();                    // 曲リスト取得(別スレッドで実行される)\r
                                        base.b初めての進行描画 = false;\r
                                        return 0;\r
                                }\r
@@ -158,9 +158,9 @@ namespace DTXMania
                                //-----------------\r
                                #endregion\r
 \r
-                               if (es != null && es.IsSongListEnumCompletelyDone)                                                      // 曲リスト作成が終わったら\r
+                               if (es != null && es.IsSongListEnumCompletelyDone)              // 曲リスト作成が終わったら\r
                                {\r
-                                       CDTXMania.Instance.Songs管理 = (es != null) ? es.Songs管理 : null;          // 最後に、曲リストを拾い上げる\r
+                                       CDTXMania.Instance.Songs管理 = (es != null) ? es.Songs管理 : null;    // 最後に、曲リストを拾い上げる\r
                                        return 1;\r
                                }\r
                        }\r
@@ -233,7 +233,7 @@ namespace DTXMania
                                        Trace.Unindent();\r
                                }\r
                                //-----------------------------\r
-                               #endregion\r
+               #endregion\r
 \r
                                if( CDTXMania.Instance.bコンパクトモード )\r
                                {\r
@@ -282,7 +282,7 @@ namespace DTXMania
                                        Trace.Unindent();\r
                                }\r
 \r
-                               #endregion\r
+               #endregion\r
 \r
                #region [ 1) songs.db の読み込み ]\r
                                //-----------------------------\r
@@ -325,7 +325,7 @@ namespace DTXMania
                                        Trace.Unindent();\r
                                }\r
                                //-----------------------------\r
-                               #endregion\r
+               #endregion\r
 \r
                        }\r
                        finally\r
index df9c01f..be95ef1 100644 (file)
@@ -48,7 +48,7 @@ namespace DTXMania
 \r
                        try\r
                        {\r
-                               this.ctNowEnumeratingSongs = new CCounter();    // 0, 1000, 17, CDTXMania.Instance.Timer );\r
+                               this.ctNowEnumeratingSongs = new CCounter();  // 0, 1000, 17, CDTXMania.Instance.Timer );\r
                                this.ctNowEnumeratingSongs.t開始(0, 100, 17, CDTXMania.Instance.Timer);\r
                        }\r
                        finally\r
@@ -88,7 +88,7 @@ namespace DTXMania
                        try\r
                        {\r
                                System.Drawing.Font ftMessage = new System.Drawing.Font("MS PGothic", 40 * 3f, FontStyle.Bold, GraphicsUnit.Pixel);\r
-                               string[] strMessage = \r
+                               string[] strMessage =\r
                                {\r
                                        "     曲データの一覧を\n       取得しています。\n   しばらくお待ちください。",\r
                                        " Now enumerating songs.\n         Please wait..."\r
index 3914841..fdf88fc 100644 (file)
@@ -13,16 +13,16 @@ using SampleFramework;
 \r
 namespace DTXMania\r
 {\r
-       internal class CEnumSongs                                                       // #27060 2011.2.7 yyagi 曲リストを取得するクラス\r
-       {                                                                                                       // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。\r
+       internal class CEnumSongs             // #27060 2011.2.7 yyagi 曲リストを取得するクラス\r
+       {                         // ファイルキャッシュ(songslist.db)からの取得と、ディスクからの取得を、この一つのクラスに集約。\r
 \r
-               public CSongs管理 Songs管理                                         // 曲の探索結果はこのSongs管理に読み込まれる\r
+               public CSongs管理 Songs管理           // 曲の探索結果はこのSongs管理に読み込まれる\r
                {\r
                        get;\r
                        private set;\r
                }\r
 \r
-               public bool IsSongListEnumCompletelyDone                // 曲リスト探索と、実際の曲リストへの反映が完了した?\r
+               public bool IsSongListEnumCompletelyDone    // 曲リスト探索と、実際の曲リストへの反映が完了した?\r
                {\r
                        get\r
                        {\r
@@ -40,14 +40,14 @@ namespace DTXMania
                                return thDTXFileEnumerate.IsAlive;\r
                        }\r
                }\r
-               public bool IsSongListEnumerated                                // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ?\r
+               public bool IsSongListEnumerated        // 曲リスト探索が完了したが、実際の曲リストへの反映はまだ?\r
                {\r
                        get\r
                        {\r
                                return (this.state == DTXEnumState.Enumeratad);\r
                        }\r
                }\r
-               public bool IsSongListEnumStarted                               // 曲リスト探索開始後?(探索完了も含む)\r
+               public bool IsSongListEnumStarted       // 曲リスト探索開始後?(探索完了も含む)\r
                {\r
                        get\r
                        {\r
@@ -57,9 +57,9 @@ namespace DTXMania
                public void SongListEnumCompletelyDone()\r
                {\r
                        this.state = DTXEnumState.CompletelyDone;\r
-                       this.Songs管理 = null;                                                // GCはOSに任せる\r
+                       this.Songs管理 = null;            // GCはOSに任せる\r
                }\r
-               public bool IsSlowdown                                                  // #PREMOVIE再生中は検索負荷を落とす\r
+               public bool IsSlowdown              // #PREMOVIE再生中は検索負荷を落とす\r
                {\r
                        get\r
                        {\r
@@ -91,8 +91,8 @@ namespace DTXMania
                        None,\r
                        Ongoing,\r
                        Suspended,\r
-                       Enumeratad,                             // 探索完了、現在の曲リストに未反映\r
-                       CompletelyDone                  // 探索完了、現在の曲リストに反映完了\r
+                       Enumeratad,       // 探索完了、現在の曲リストに未反映\r
+                       CompletelyDone      // 探索完了、現在の曲リストに反映完了\r
                }\r
                private DTXEnumState state = DTXEnumState.None;\r
 \r
@@ -144,7 +144,7 @@ namespace DTXMania
                                }\r
                                // this.autoReset = new AutoResetEvent( true );\r
 \r
-                               if (this.Songs管理 == null)           // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる\r
+                               if (this.Songs管理 == null)   // Enumerating Songs完了後、CONFIG画面から再スキャンしたときにこうなる\r
                                {\r
                                        this.Songs管理 = new CSongs管理();\r
                                }\r
@@ -179,7 +179,7 @@ namespace DTXMania
                {\r
                        if (this.state == DTXEnumState.Suspended)\r
                        {\r
-                               if ((this.thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested)) != 0)     //\r
+                               if ((this.thDTXFileEnumerate.ThreadState & (System.Threading.ThreadState.WaitSleepJoin | System.Threading.ThreadState.StopRequested)) != 0) //\r
                                {\r
                                        // this.thDTXFileEnumerate.Resume();    // obsoleteにつき使用中止\r
                                        this.Songs管理.bIsSuspending = false;\r
@@ -221,7 +221,7 @@ namespace DTXMania
                                thDTXFileEnumerate = null;\r
                                this.state = DTXEnumState.None;\r
 \r
-                               this.Songs管理 = null;                                        // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。)\r
+                               this.Songs管理 = null;          // Songs管理を再初期化する (途中まで作った曲リストの最後に、一から重複して追記することにならないようにする。)\r
                                this.Songs管理 = new CSongs管理();\r
                        }\r
                }\r
@@ -253,7 +253,7 @@ namespace DTXMania
                                        CDTXMania.Instance.Skin.bgm起動画面.t再生する();\r
                                        for (int i = 0; i < CDTXMania.Instance.Skin.nシステムサウンド数; i++)\r
                                        {\r
-                                               if (!CDTXMania.Instance.Skin[i].b排他)        // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
+                                               if (!CDTXMania.Instance.Skin[i].b排他)  // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
                                                {\r
                                                        CSkin.Cシステムサウンド cシステムサウンド = CDTXMania.Instance.Skin[i];\r
                                                        if (!CDTXMania.Instance.bコンパクトモード || cシステムサウンド.bCompact対象)\r
@@ -309,7 +309,7 @@ namespace DTXMania
                                        if (!CDTXMania.Instance.ConfigIni.bConfigIniがないかDTXManiaのバージョンが異なる)\r
                                        {\r
                                                CSongs管理 s = new CSongs管理();\r
-                                               s = Deserialize(strPathSongList);               // 直接this.Songs管理にdeserialize()結果を代入するのは避ける。nullにされてしまうことがあるため。\r
+                                               s = Deserialize(strPathSongList);   // 直接this.Songs管理にdeserialize()結果を代入するのは避ける。nullにされてしまうことがあるため。\r
                                                if (s != null)\r
                                                {\r
                                                        this.Songs管理 = s;\r
@@ -358,7 +358,7 @@ namespace DTXMania
                                                        Trace.TraceError("songs.db の読み込みに失敗しました。");\r
                                                }\r
 \r
-                                               int scores = (this.Songs管理 == null) ? 0 : this.Songs管理.nSongsDBから取得できたスコア数;       // 読み込み途中でアプリ終了した場合など、CDTXMania.Instance.Songs管理 がnullの場合があるので注意\r
+                                               int scores = (this.Songs管理 == null) ? 0 : this.Songs管理.nSongsDBから取得できたスコア数; // 読み込み途中でアプリ終了した場合など、CDTXMania.Instance.Songs管理 がnullの場合があるので注意\r
                                                Trace.TraceInformation("songs.db の読み込みを完了しました。[{0}スコア]", scores);\r
                                                lock (CDTXMania.Instance.stage起動.list進行文字列)\r
                                                {\r
@@ -387,7 +387,7 @@ namespace DTXMania
                                CDTXMania.Instance.stage起動.eフェーズID = CStage.Eフェーズ.起動7_完了;\r
                                TimeSpan span = (TimeSpan)(DateTime.Now - now);\r
                                Trace.TraceInformation("起動所要時間: {0}", span.ToString());\r
-                               lock (this)                                                     // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode.\r
+                               lock (this)             // #28700 2012.6.12 yyagi; state change must be in finally{} for exiting as of compact mode.\r
                                {\r
                                        state = DTXEnumState.CompletelyDone;\r
                                }\r
@@ -423,9 +423,9 @@ namespace DTXMania
 \r
                                try\r
                                {\r
-                                       if (!string.IsNullOrEmpty(CDTXMania.Instance.ConfigIni.str曲データ検索パス))\r
+                                       if (!string.IsNullOrEmpty(CDTXMania.Instance.ConfigIni.strSongDataPath))\r
                                        {\r
-                                               string[] strArray = CDTXMania.Instance.ConfigIni.str曲データ検索パス.Split(new char[] { ';' });\r
+                                               string[] strArray = CDTXMania.Instance.ConfigIni.strSongDataPath.Value.Split(new char[] { ';' });\r
                                                if (strArray.Length > 0)\r
                                                {\r
                                                        // 全パスについて…\r
@@ -434,7 +434,7 @@ namespace DTXMania
                                                                string path = str;\r
                                                                if (!Path.IsPathRooted(path))\r
                                                                {\r
-                                                                       path = CDTXMania.Instance.strEXEのあるフォルダ + str;    // 相対パスの場合、絶対パスに直す(2010.9.16)\r
+                                                                       path = CDTXMania.Instance.strEXEのあるフォルダ + str;  // 相対パスの場合、絶対パスに直す(2010.9.16)\r
                                                                }\r
 \r
                                                                if (!string.IsNullOrEmpty(path))\r
@@ -648,7 +648,7 @@ namespace DTXMania
                                {\r
                                        try\r
                                        {\r
-                                               File.Delete(strPathSongList);   // serializeに失敗したら、songs2.dbファイルを消しておく\r
+                                               File.Delete(strPathSongList); // serializeに失敗したら、songs2.dbファイルを消しておく\r
                                        }\r
                                        catch (Exception)\r
                                        {\r
index 96f94c1..ebb6a3b 100644 (file)
@@ -183,23 +183,25 @@ namespace DTXMania
                                #endregion\r
 \r
                                #region [ キー入力 ]\r
-                               if (base.eフェーズID == CStage.Eフェーズ.共通_通常状態            // 通常状態、かつ\r
-                                       && CDTXMania.Instance.act現在入力を占有中のプラグイン == null)    // プラグインの入力占有がない\r
+                               if (base.eフェーズID == CStage.Eフェーズ.共通_通常状態    // 通常状態、かつ\r
+                                       && CDTXMania.Instance.act現在入力を占有中のプラグイン == null)  // プラグインの入力占有がない\r
                                {\r
                                        if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)Key.Escape))\r
                                                return (int)E戻り値.EXIT;\r
 \r
                                        this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.HH), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))\r
+                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtR) || CDTXMania.Instance.Pad.b押されている(EPad.BsR), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
                                                this.tカーソルを上へ移動する();\r
 \r
                                        this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.BD), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))\r
+                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtB) || CDTXMania.Instance.Pad.b押されている(EPad.BsB), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.LT))\r
                                                this.tカーソルを下へ移動する();\r
 \r
-                                       if ((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
+                                       if ((CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+                                               (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
                                        {\r
                                                if ((this.n現在のカーソル行 == (int)E戻り値.GAMESTART - 1) && CDTXMania.Instance.Skin.soundゲーム開始音.b読み込み成功)\r
                                                {\r
@@ -231,7 +233,7 @@ namespace DTXMania
                                if (this.txメニュー != null)\r
                                {\r
                                        int MENU_ITEM_H = txMenuItem[0].szテクスチャサイズ.Height;\r
-                                       int x = (1920 - txメニュー.szテクスチャサイズ.Width) / 2;   // MENU_X;\r
+                                       int x = (1920 - txメニュー.szテクスチャサイズ.Width) / 2; // MENU_X;\r
                                        int y = MENU_Y + ((MENU_ITEM_H - MENU_H) / 2) + (this.n現在のカーソル行 * MENU_ITEM_H);\r
                                        if (this.ct上移動用.b進行中)\r
                                        {\r
@@ -297,7 +299,7 @@ namespace DTXMania
 \r
                                                        case (int)E戻り値.EXIT - 1:\r
                                                                return (int)E戻り値.EXIT;\r
-                                                       //return ( this.n現在のカーソル行 + 1 );\r
+                                                               //return ( this.n現在のカーソル行 + 1 );\r
                                                }\r
                                                break;\r
 \r
@@ -388,8 +390,8 @@ namespace DTXMania
                private CCounter ct上移動用;\r
                private int MENU_H = (int)(39 * 2.25);\r
                private int MENU_W = (int)(227 * 3);\r
-               private int MENU_X = 800;       //206;\r
-               private int MENU_Y = 500;       //203;\r
+               private int MENU_X = 800; //206;\r
+               private int MENU_Y = 500; //203;\r
                private int n現在のカーソル行;\r
                private CTexture txメニュー;\r
                private CTexture tx背景;\r
index 55c798a..707bb75 100644 (file)
@@ -10,8 +10,6 @@ namespace DTXMania
 {\r
        internal class CActConfigKeyAssign : CActivity\r
        {\r
-               // プロパティ\r
-\r
                public bool bキー入力待ちの最中である\r
                {\r
                        get\r
@@ -20,22 +18,15 @@ namespace DTXMania
                        }\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
-               public void t開始(EKeyConfigPart part, EKeyConfigPad pad, string strパッド名)\r
+               public void t開始(EPad pad, string strパッド名)\r
                {\r
-                       if (part != EKeyConfigPart.UNKNOWN)\r
+                       this.pad = pad;\r
+                       this.strパッド名 = strパッド名;\r
+                       for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
                        {\r
-                               this.part = part;\r
-                               this.pad = pad;\r
-                               this.strパッド名 = strパッド名;\r
-                               for (int i = 0; i < 0x10; i++)\r
-                               {\r
-                                       this.structReset用KeyAssign[i].入力デバイス = CDTXMania.Instance.ConfigIni.KeyAssign[(int)part][(int)pad][i].入力デバイス;\r
-                                       this.structReset用KeyAssign[i].ID = CDTXMania.Instance.ConfigIni.KeyAssign[(int)part][(int)pad][i].ID;\r
-                                       this.structReset用KeyAssign[i].コード = CDTXMania.Instance.ConfigIni.KeyAssign[(int)part][(int)pad][i].コード;\r
-                               }\r
+                               this.structReset用KeyAssign[i].InputDevice = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].入力デバイス;\r
+                               this.structReset用KeyAssign[i].ID = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].ID;\r
+                               this.structReset用KeyAssign[i].Code = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].コード;\r
                        }\r
                }\r
 \r
@@ -44,80 +35,95 @@ namespace DTXMania
                        if (!this.bキー入力待ち)\r
                        {\r
                                CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                               switch (this.n現在の選択行)\r
+                               if (ptr == CConfigXml.AssignableCodes - 2)\r
+                               {\r
+                                       for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].CopyFrom(this.structReset用KeyAssign[i]);\r
+                                       }\r
+                                       return;\r
+                               }\r
+                               else if (ptr == CConfigXml.AssignableCodes - 1)\r
                                {\r
-                                       case 0x10:\r
-                                               for (int i = 0; i < 0x10; i++)\r
-                                               {\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].入力デバイス = this.structReset用KeyAssign[i].入力デバイス;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].ID = this.structReset用KeyAssign[i].ID;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].コード = this.structReset用KeyAssign[i].コード;\r
-                                               }\r
-                                               return;\r
 \r
-                                       case 0x11:\r
-                                               CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
-                                               return;\r
+                                       CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
+                                       return;\r
                                }\r
                                this.bキー入力待ち = true;\r
                        }\r
                }\r
-               public void t次に移動()\r
+\r
+               public void OnNext()\r
                {\r
                        if (!this.bキー入力待ち)\r
                        {\r
                                CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                               this.n現在の選択行 = (this.n現在の選択行 + 1) % 0x12;\r
+                               ptr++;\r
+                               ptr %= CConfigXml.AssignableCodes;\r
                        }\r
                }\r
-               public void t前に移動()\r
+\r
+               public void OnPrevious()\r
                {\r
                        if (!this.bキー入力待ち)\r
                        {\r
                                CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                               this.n現在の選択行 = ((this.n現在の選択行 - 1) + 0x12) % 0x12;\r
+                               --ptr;\r
+                               ptr += CConfigXml.AssignableCodes;\r
+                               ptr %= CConfigXml.AssignableCodes;\r
                        }\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.part = EKeyConfigPart.UNKNOWN;\r
-                       this.pad = EKeyConfigPad.UNKNOWN;\r
-                       this.strパッド名 = "";\r
-                       this.n現在の選択行 = 0;\r
-                       this.bキー入力待ち = false;\r
-                       this.structReset用KeyAssign = new CConfigIni.CKeyAssign.STKEYASSIGN[0x10];\r
-                       base.On活性化();\r
+                       if (base.b活性化してない)\r
+                       {\r
+                               this.pad = EPad.Unknown;\r
+                               this.strパッド名 = "";\r
+                               this.ptr = 0;\r
+                               this.bキー入力待ち = false;\r
+                               this.structReset用KeyAssign = new CKeyAssign[CConfigXml.AssignableCodes - 2];\r
+                               for (int i = 0; i < this.structReset用KeyAssign.Length; ++i)\r
+                               {\r
+                                       structReset用KeyAssign[i] = new CKeyAssign(EInputDevice.Unknown, 0, 0);\r
+                               }\r
+\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txカーソル);\r
                                TextureFactory.tテクスチャの解放(ref this.txHitKeyダイアログ);\r
                                base.On非活性化();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));     // t項目リストの設定 の前に必要\r
+                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y)); // t項目リストの設定 の前に必要\r
                                this.txカーソル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"), false);\r
                                this.txHitKeyダイアログ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig hit key to assign dialog.png"), false);\r
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       TextureFactory.t安全にDisposeする(ref prvFont);\r
+                       if (base.b活性化してる)\r
+                       {\r
+                               TextureFactory.t安全にDisposeする(ref prvFont);\r
+                       }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                if (this.bキー入力待ち)\r
                                {\r
@@ -133,18 +139,17 @@ namespace DTXMania
                                                CDTXMania.Instance.Input管理.tポーリング(CDTXMania.Instance.bApplicationActive, false);\r
                                        }\r
                                }\r
-                               else if ((CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Delete) && (this.n現在の選択行 >= 0)) && (this.n現在の選択行 <= 15))\r
+                               else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Delete))\r
                                {\r
                                        CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.不明;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = 0;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][ptr].Reset();\r
                                }\r
+\r
                                if (this.txカーソル != null)\r
                                {\r
                                        int num = 20;\r
                                        int num2 = 0x144;\r
-                                       int num3 = 0x3e + (num * (this.n現在の選択行 + 1));\r
+                                       int num3 = 0x3e + (num * (ptr + 1));\r
                                        this.txカーソル.vc拡大縮小倍率 = new Vector3(1f, 0.75f, 1f);\r
                                        this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
                                        num2 += 0x10;\r
@@ -156,87 +161,84 @@ namespace DTXMania
                                        }\r
                                        this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
                                }\r
+\r
                                int num5 = 20;\r
                                int x = 0x134;\r
                                int y = 0x40;\r
-                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x, y, this.strパッド名, false, 0.75f );\r
-                               Bitmap bmpStr = prvFont.DrawPrivateFont(this.strパッド名, Color.White, Color.Black);\r
-                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+                               using (Bitmap bmpStr = prvFont.DrawPrivateFont(this.strパッド名, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
 \r
                                y += num5;\r
-                               CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad];\r
                                string strParam;\r
                                bool b強調;\r
-                               for (int i = 0; i < 0x10; i++)\r
+                               for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
                                {\r
-                                       switch (stkeyassignArray[i].入力デバイス)\r
+                                       COptionKeyAssign stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][i];\r
+                                       switch (stkeyassignArray.入力デバイス)\r
                                        {\r
-                                               case E入力デバイス.キーボード:\r
-                                                       this.tアサインコードの描画_Keyboard(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.Keyboard:\r
+                                                       this.tアサインコードの描画_Keyboard(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.MIDI入力:\r
-                                                       this.tアサインコードの描画_MidiIn(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.MIDIIn:\r
+                                                       this.tアサインコードの描画_MidiIn(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.ジョイパッド:\r
-                                                       this.tアサインコードの描画_Joypad(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.JoyPad:\r
+                                                       this.tアサインコードの描画_Joypad(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.マウス:\r
-                                                       this.tアサインコードの描画_Mouse(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.Mouse:\r
+                                                       this.tアサインコードの描画_Mouse(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
                                                default:\r
                                                        strParam = string.Format("{0,2}.", i + 1);\r
-                                                       b強調 = (this.n現在の選択行 == i);\r
-                                                       bmpStr = b強調 ?\r
-                                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                                                       txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                                                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                                                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                                                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                                                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 20, y, string.Format( "{0,2}.", i + 1 ), this.n現在の選択行 == i, 0.75f );\r
+                                                       b強調 = (ptr == i);\r
+                                                       using (Bitmap bmpStr = b強調 ?\r
+                                                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                                                       {\r
+                                                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                                               txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                                                       }\r
                                                        break;\r
                                        }\r
                                        y += num5;\r
                                }\r
-                               strParam = "Reset";\r
-                               b強調 = (this.n現在の選択行 == 0x10);\r
-                               bmpStr = b強調 ?\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                               txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+\r
+                               strParam = "Reset All Assign";\r
+                               b強調 = (ptr == CConfigXml.AssignableCodes - 2);\r
+                               using (Bitmap bmpStr = b強調 ?\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
+\r
                                y += num5;\r
                                strParam = "<< Returnto List";\r
-                               b強調 = (this.n現在の選択行 == 0x11);\r
-                               bmpStr = b強調 ?\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                               txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+                               b強調 = (ptr == CConfigXml.AssignableCodes - 1);\r
+                               using (Bitmap bmpStr = b強調 ?\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
 \r
-                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 20, y, "Reset", this.n現在の選択行 == 0x10, 0.75f );\r
-                               //y += num5;\r
-                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 20, y, "<< Returnto List", this.n現在の選択行 == 0x11, 0.75f );\r
-                               //y += num5;\r
                                if (this.bキー入力待ち && (this.txHitKeyダイアログ != null))\r
                                {\r
                                        this.txHitKeyダイアログ.t2D描画(CDTXMania.Instance.Device, 0x185 * Scale.X, 0xd7 * Scale.Y);\r
@@ -247,9 +249,6 @@ namespace DTXMania
 \r
 \r
                // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
                [StructLayout(LayoutKind.Sequential)]\r
                private struct STKEYLABEL\r
                {\r
@@ -263,21 +262,21 @@ namespace DTXMania
                }\r
 \r
                private bool bキー入力待ち;\r
-               private STKEYLABEL[] KeyLabel = new STKEYLABEL[] { \r
-                       new STKEYLABEL(0x35, "[ESC]"), new STKEYLABEL(1, "[ 1 ]"), new STKEYLABEL(2, "[ 2 ]"), new STKEYLABEL(3, "[ 3 ]"), new STKEYLABEL(4, "[ 4 ]"), new STKEYLABEL(5, "[ 5 ]"), new STKEYLABEL(6, "[ 6 ]"), new STKEYLABEL(7, "[ 7 ]"), new STKEYLABEL(8, "[ 8 ]"), new STKEYLABEL(9, "[ 9 ]"), new STKEYLABEL(0, "[ 0 ]"), new STKEYLABEL(0x53, "[ - ]"), new STKEYLABEL(0x34, "[ = ]"), new STKEYLABEL(0x2a, "[BSC]"), new STKEYLABEL(0x81, "[TAB]"), new STKEYLABEL(0x1a, "[ Q ]"), \r
-                       new STKEYLABEL(0x20, "[ W ]"), new STKEYLABEL(14, "[ E ]"), new STKEYLABEL(0x1b, "[ R ]"), new STKEYLABEL(0x1d, "[ T ]"), new STKEYLABEL(0x22, "[ Y ]"), new STKEYLABEL(30, "[ U ]"), new STKEYLABEL(0x12, "[ I ]"), new STKEYLABEL(0x18, "[ O ]"), new STKEYLABEL(0x19, "[ P ]"), new STKEYLABEL(0x4a, "[ [ ]"), new STKEYLABEL(0x73, "[ ] ]"), new STKEYLABEL(0x75, "[Enter]"), new STKEYLABEL(0x4b, "[L-Ctrl]"), new STKEYLABEL(10, "[ A ]"), new STKEYLABEL(0x1c, "[ S ]"), new STKEYLABEL(13, "[ D ]"), \r
-                       new STKEYLABEL(15, "[ F ]"), new STKEYLABEL(0x10, "[ G ]"), new STKEYLABEL(0x11, "[ H ]"), new STKEYLABEL(0x13, "[ J ]"), new STKEYLABEL(20, "[ K ]"), new STKEYLABEL(0x15, "[ L ]"), new STKEYLABEL(0x7b, "[ ; ]"), new STKEYLABEL(0x26, "[ ' ]"), new STKEYLABEL(0x45, "[ ` ]"), new STKEYLABEL(0x4e, "[L-Shift]"), new STKEYLABEL(0x2b, @"[ \]"), new STKEYLABEL(0x23, "[ Z ]"), new STKEYLABEL(0x21, "[ X ]"), new STKEYLABEL(12, "[ C ]"), new STKEYLABEL(0x1f, "[ V ]"), new STKEYLABEL(11, "[ B ]"), \r
-                       new STKEYLABEL(0x17, "[ N ]"), new STKEYLABEL(0x16, "[ M ]"), new STKEYLABEL(0x2f, "[ , ]"), new STKEYLABEL(0x6f, "[ . ]"), new STKEYLABEL(0x7c, "[ / ]"), new STKEYLABEL(120, "[R-Shift]"), new STKEYLABEL(0x6a, "[ * ]"), new STKEYLABEL(0x4d, "[L-Alt]"), new STKEYLABEL(0x7e, "[Space]"), new STKEYLABEL(0x2d, "[CAPS]"), new STKEYLABEL(0x36, "[F1]"), new STKEYLABEL(0x37, "[F2]"), new STKEYLABEL(0x38, "[F3]"), new STKEYLABEL(0x39, "[F4]"), new STKEYLABEL(0x3a, "[F5]"), new STKEYLABEL(0x3b, "[F6]"), \r
-                       new STKEYLABEL(60, "[F7]"), new STKEYLABEL(0x3d, "[F8]"), new STKEYLABEL(0x3e, "[F9]"), new STKEYLABEL(0x3f, "[F10]"), new STKEYLABEL(0x58, "[NumLock]"), new STKEYLABEL(0x7a, "[Scroll]"), new STKEYLABEL(0x60, "[NPad7]"), new STKEYLABEL(0x61, "[NPad8]"), new STKEYLABEL(0x62, "[NPad9]"), new STKEYLABEL(0x66, "[NPad-]"), new STKEYLABEL(0x5d, "[NPad4]"), new STKEYLABEL(0x5e, "[NPad5]"), new STKEYLABEL(0x5f, "[NPad6]"), new STKEYLABEL(0x68, "[NPad+]"), new STKEYLABEL(90, "[NPad1]"), new STKEYLABEL(0x5b, "[NPad2]"), \r
-                       new STKEYLABEL(0x5c, "[NPad3]"), new STKEYLABEL(0x59, "[NPad0]"), new STKEYLABEL(0x67, "[NPad.]"), new STKEYLABEL(0x40, "[F11]"), new STKEYLABEL(0x41, "[F12]"), new STKEYLABEL(0x42, "[F13]"), new STKEYLABEL(0x43, "[F14]"), new STKEYLABEL(0x44, "[F15]"), new STKEYLABEL(0x48, "[Kana]"), new STKEYLABEL(0x24, "[ ? ]"), new STKEYLABEL(0x30, "[Henkan]"), new STKEYLABEL(0x57, "[MuHenkan]"), new STKEYLABEL(0x8f, @"[ \ ]"), new STKEYLABEL(0x25, "[NPad.]"), new STKEYLABEL(0x65, "[NPad=]"), new STKEYLABEL(0x72, "[ ^ ]"), \r
-                       new STKEYLABEL(40, "[ @ ]"), new STKEYLABEL(0x2e, "[ : ]"), new STKEYLABEL(130, "[ _ ]"), new STKEYLABEL(0x49, "[Kanji]"), new STKEYLABEL(0x7f, "[Stop]"), new STKEYLABEL(0x29, "[AX]"), new STKEYLABEL(100, "[NPEnter]"), new STKEYLABEL(0x74, "[R-Ctrl]"), new STKEYLABEL(0x54, "[Mute]"), new STKEYLABEL(0x2c, "[Calc]"), new STKEYLABEL(0x70, "[PlayPause]"), new STKEYLABEL(0x52, "[MediaStop]"), new STKEYLABEL(0x85, "[Volume-]"), new STKEYLABEL(0x86, "[Volume+]"), new STKEYLABEL(0x8b, "[WebHome]"), new STKEYLABEL(0x63, "[NPad,]"), \r
-                       new STKEYLABEL(0x69, "[ / ]"), new STKEYLABEL(0x80, "[PrtScn]"), new STKEYLABEL(0x77, "[R-Alt]"), new STKEYLABEL(110, "[Pause]"), new STKEYLABEL(70, "[Home]"), new STKEYLABEL(0x84, "[Up]"), new STKEYLABEL(0x6d, "[PageUp]"), new STKEYLABEL(0x4c, "[Left]"), new STKEYLABEL(0x76, "[Right]"), new STKEYLABEL(0x33, "[End]"), new STKEYLABEL(50, "[Down]"), new STKEYLABEL(0x6c, "[PageDown]"), new STKEYLABEL(0x47, "[Insert]"), new STKEYLABEL(0x31, "[Delete]"), new STKEYLABEL(0x4f, "[L-Win]"), new STKEYLABEL(0x79, "[R-Win]"), \r
+               private STKEYLABEL[] KeyLabel = new STKEYLABEL[] {\r
+                       new STKEYLABEL(0x35, "[ESC]"), new STKEYLABEL(1, "[ 1 ]"), new STKEYLABEL(2, "[ 2 ]"), new STKEYLABEL(3, "[ 3 ]"), new STKEYLABEL(4, "[ 4 ]"), new STKEYLABEL(5, "[ 5 ]"), new STKEYLABEL(6, "[ 6 ]"), new STKEYLABEL(7, "[ 7 ]"), new STKEYLABEL(8, "[ 8 ]"), new STKEYLABEL(9, "[ 9 ]"), new STKEYLABEL(0, "[ 0 ]"), new STKEYLABEL(0x53, "[ - ]"), new STKEYLABEL(0x34, "[ = ]"), new STKEYLABEL(0x2a, "[BSC]"), new STKEYLABEL(0x81, "[TAB]"), new STKEYLABEL(0x1a, "[ Q ]"),\r
+                       new STKEYLABEL(0x20, "[ W ]"), new STKEYLABEL(14, "[ E ]"), new STKEYLABEL(0x1b, "[ R ]"), new STKEYLABEL(0x1d, "[ T ]"), new STKEYLABEL(0x22, "[ Y ]"), new STKEYLABEL(30, "[ U ]"), new STKEYLABEL(0x12, "[ I ]"), new STKEYLABEL(0x18, "[ O ]"), new STKEYLABEL(0x19, "[ P ]"), new STKEYLABEL(0x4a, "[ [ ]"), new STKEYLABEL(0x73, "[ ] ]"), new STKEYLABEL(0x75, "[Enter]"), new STKEYLABEL(0x4b, "[L-Ctrl]"), new STKEYLABEL(10, "[ A ]"), new STKEYLABEL(0x1c, "[ S ]"), new STKEYLABEL(13, "[ D ]"),\r
+                       new STKEYLABEL(15, "[ F ]"), new STKEYLABEL(0x10, "[ G ]"), new STKEYLABEL(0x11, "[ H ]"), new STKEYLABEL(0x13, "[ J ]"), new STKEYLABEL(20, "[ K ]"), new STKEYLABEL(0x15, "[ L ]"), new STKEYLABEL(0x7b, "[ ; ]"), new STKEYLABEL(0x26, "[ ' ]"), new STKEYLABEL(0x45, "[ ` ]"), new STKEYLABEL(0x4e, "[L-Shift]"), new STKEYLABEL(0x2b, @"[ \]"), new STKEYLABEL(0x23, "[ Z ]"), new STKEYLABEL(0x21, "[ X ]"), new STKEYLABEL(12, "[ C ]"), new STKEYLABEL(0x1f, "[ V ]"), new STKEYLABEL(11, "[ B ]"),\r
+                       new STKEYLABEL(0x17, "[ N ]"), new STKEYLABEL(0x16, "[ M ]"), new STKEYLABEL(0x2f, "[ , ]"), new STKEYLABEL(0x6f, "[ . ]"), new STKEYLABEL(0x7c, "[ / ]"), new STKEYLABEL(120, "[R-Shift]"), new STKEYLABEL(0x6a, "[ * ]"), new STKEYLABEL(0x4d, "[L-Alt]"), new STKEYLABEL(0x7e, "[Space]"), new STKEYLABEL(0x2d, "[CAPS]"), new STKEYLABEL(0x36, "[F1]"), new STKEYLABEL(0x37, "[F2]"), new STKEYLABEL(0x38, "[F3]"), new STKEYLABEL(0x39, "[F4]"), new STKEYLABEL(0x3a, "[F5]"), new STKEYLABEL(0x3b, "[F6]"),\r
+                       new STKEYLABEL(60, "[F7]"), new STKEYLABEL(0x3d, "[F8]"), new STKEYLABEL(0x3e, "[F9]"), new STKEYLABEL(0x3f, "[F10]"), new STKEYLABEL(0x58, "[NumLock]"), new STKEYLABEL(0x7a, "[Scroll]"), new STKEYLABEL(0x60, "[NPad7]"), new STKEYLABEL(0x61, "[NPad8]"), new STKEYLABEL(0x62, "[NPad9]"), new STKEYLABEL(0x66, "[NPad-]"), new STKEYLABEL(0x5d, "[NPad4]"), new STKEYLABEL(0x5e, "[NPad5]"), new STKEYLABEL(0x5f, "[NPad6]"), new STKEYLABEL(0x68, "[NPad+]"), new STKEYLABEL(90, "[NPad1]"), new STKEYLABEL(0x5b, "[NPad2]"),\r
+                       new STKEYLABEL(0x5c, "[NPad3]"), new STKEYLABEL(0x59, "[NPad0]"), new STKEYLABEL(0x67, "[NPad.]"), new STKEYLABEL(0x40, "[F11]"), new STKEYLABEL(0x41, "[F12]"), new STKEYLABEL(0x42, "[F13]"), new STKEYLABEL(0x43, "[F14]"), new STKEYLABEL(0x44, "[F15]"), new STKEYLABEL(0x48, "[Kana]"), new STKEYLABEL(0x24, "[ ? ]"), new STKEYLABEL(0x30, "[Henkan]"), new STKEYLABEL(0x57, "[MuHenkan]"), new STKEYLABEL(0x8f, @"[ \ ]"), new STKEYLABEL(0x25, "[NPad.]"), new STKEYLABEL(0x65, "[NPad=]"), new STKEYLABEL(0x72, "[ ^ ]"),\r
+                       new STKEYLABEL(40, "[ @ ]"), new STKEYLABEL(0x2e, "[ : ]"), new STKEYLABEL(130, "[ _ ]"), new STKEYLABEL(0x49, "[Kanji]"), new STKEYLABEL(0x7f, "[Stop]"), new STKEYLABEL(0x29, "[AX]"), new STKEYLABEL(100, "[NPEnter]"), new STKEYLABEL(0x74, "[R-Ctrl]"), new STKEYLABEL(0x54, "[Mute]"), new STKEYLABEL(0x2c, "[Calc]"), new STKEYLABEL(0x70, "[PlayPause]"), new STKEYLABEL(0x52, "[MediaStop]"), new STKEYLABEL(0x85, "[Volume-]"), new STKEYLABEL(0x86, "[Volume+]"), new STKEYLABEL(0x8b, "[WebHome]"), new STKEYLABEL(0x63, "[NPad,]"),\r
+                       new STKEYLABEL(0x69, "[ / ]"), new STKEYLABEL(0x80, "[PrtScn]"), new STKEYLABEL(0x77, "[R-Alt]"), new STKEYLABEL(110, "[Pause]"), new STKEYLABEL(70, "[Home]"), new STKEYLABEL(0x84, "[Up]"), new STKEYLABEL(0x6d, "[PageUp]"), new STKEYLABEL(0x4c, "[Left]"), new STKEYLABEL(0x76, "[Right]"), new STKEYLABEL(0x33, "[End]"), new STKEYLABEL(50, "[Down]"), new STKEYLABEL(0x6c, "[PageDown]"), new STKEYLABEL(0x47, "[Insert]"), new STKEYLABEL(0x31, "[Delete]"), new STKEYLABEL(0x4f, "[L-Win]"), new STKEYLABEL(0x79, "[R-Win]"),\r
                        new STKEYLABEL(0x27, "[APP]"), new STKEYLABEL(0x71, "[Power]"), new STKEYLABEL(0x7d, "[Sleep]"), new STKEYLABEL(0x87, "[Wake]")\r
                };\r
-               private int n現在の選択行;\r
-               private EKeyConfigPad pad;\r
-               private EKeyConfigPart part;\r
-               private CConfigIni.CKeyAssign.STKEYASSIGN[] structReset用KeyAssign;\r
+\r
+               private EPad pad;\r
+               int ptr;\r
+               private CKeyAssign[] structReset用KeyAssign;\r
                private string strパッド名;\r
                private CTexture txHitKeyダイアログ;\r
                private CTexture txカーソル;\r
@@ -313,11 +312,11 @@ namespace DTXMania
                                        break;\r
 \r
                                default:\r
-                                       if ((6 <= nCode) && (nCode < 6 + 128))                          // other buttons (128 types)\r
+                                       if ((6 <= nCode) && (nCode < 6 + 128))              // other buttons (128 types)\r
                                        {\r
                                                str = string.Format("Button{0}", nCode - 5);\r
                                        }\r
-                                       else if ((6 + 128 <= nCode) && (nCode < 6 + 128 + 8))           // POV HAT ( 8 types; 45 degrees per HATs)\r
+                                       else if ((6 + 128 <= nCode) && (nCode < 6 + 128 + 8))       // POV HAT ( 8 types; 45 degrees per HATs)\r
                                        {\r
                                                str = string.Format("POV {0}", (nCode - 6 - 128) * 45);\r
                                        }\r
@@ -327,17 +326,17 @@ namespace DTXMania
                                        }\r
                                        break;\r
                        }\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //                      CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Joypad #{1} ", line, nID ) + str, b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_Keyboard(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = null;\r
@@ -354,60 +353,60 @@ namespace DTXMania
                                str = string.Format("{0,2}. Key 0x{1:X2}", line, nCode);\r
                        }\r
 \r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x, y, str, b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_MidiIn(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = string.Format("{0,2}. MidiIn #{1} code.{2}", line, nID, nCode);\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. MidiIn #{1} code.{2}", line, nID, nCode ), b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_Mouse(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = string.Format("{0,2}. Mouse Button{1}", line, nCode);\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Mouse Button{1}", line, nCode ), b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private bool tキーチェックとアサイン_Joypad()\r
                {\r
                        foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
                        {\r
                                if (device.e入力デバイス種別 == E入力デバイス種別.Joystick)\r
                                {\r
-                                       for (int i = 0; i < 6 + 0x80 + 8; i++)          // +6 for Axis, +8 for HAT\r
+                                       for (int i = 0; i < 6 + 0x80 + 8; i++)      // +6 for Axis, +8 for HAT\r
                                        {\r
                                                if (device.bキーが押された(i))\r
                                                {\r
                                                        CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.ジョイパッド, device.ID, i);\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.ジョイパッド;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.JoyPad, device.ID, i);\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.JoyPad;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                                        return true;\r
                                                }\r
                                        }\r
@@ -415,6 +414,7 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_Keyboard()\r
                {\r
                        for (int i = 0; i < 0x100; i++)\r
@@ -428,15 +428,16 @@ namespace DTXMania
                                         CDTXMania.Instance.Input管理.Keyboard.bキーが押された(i))\r
                                {\r
                                        CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.キーボード, 0, i);\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.キーボード;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Keyboard, 0, i);\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.Keyboard;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = 0;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                        return true;\r
                                }\r
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_MidiIn()\r
                {\r
                        foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
@@ -448,10 +449,10 @@ namespace DTXMania
                                                if (device.bキーが押された(i))\r
                                                {\r
                                                        CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.MIDI入力, device.ID, i);\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.MIDI入力;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;\r
-                                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.MIDIIn, device.ID, i);\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.MIDIIn;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                                        return true;\r
                                                }\r
                                        }\r
@@ -459,21 +460,20 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_Mouse()\r
                {\r
                        for (int i = 0; i < 8; i++)\r
                        {\r
                                if (CDTXMania.Instance.Input管理.Mouse.bキーが押された(i))\r
                                {\r
-                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.マウス, 0, i);\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.マウス;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.Instance.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Mouse, 0, i);\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.Mouse;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = 0;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                }\r
                        }\r
                        return false;\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 755dddc..53d048f 100644 (file)
@@ -11,2024 +11,732 @@ namespace DTXMania
 {\r
        internal class CActConfigList : CActivity\r
        {\r
-               // プロパティ\r
-\r
-               public bool bIsKeyAssignSelected                // #24525 2011.3.15 yyagi\r
+               STDGBSValue<COptionLabel> ReturnToMenu;\r
+               STDGBSValue<COptionLabel> KeyAssignMenu;\r
+               STDGBSValue<COptionLabel> DisplayMenu;\r
+               COptionStringList skins;\r
+\r
+               bool b項目リスト側にフォーカスがある;\r
+               bool b要素値にフォーカス中;\r
+               CCounter ct三角矢印アニメ;\r
+               Eメニュー種別 eメニュー種別;\r
+               // #33689 2014.6.17 yyagi\r
+               bool InitialUseOSTimer;\r
+               ESoundDeviceTypeForConfig InitialSystemSoundType;\r
+               int InitialWASAPIBufferSizeMs;\r
+               int InitialASIODevice;\r
+               List<COptionBase> list項目リスト;\r
+               long nスクロール用タイマ値;\r
+               int n現在のスクロールカウンタ;\r
+               int n目標のスクロールカウンタ;\r
+               Point[] ptパネルの基本座標 = new Point[]\r
                {\r
-                       get\r
-                       {\r
-                               Eメニュー種別 e = this.eメニュー種別;\r
-                               if (e == Eメニュー種別.KeyAssignBass || e == Eメニュー種別.KeyAssignDrums ||\r
-                                       e == Eメニュー種別.KeyAssignGuitar || e == Eメニュー種別.KeyAssignSystem)\r
-                               {\r
-                                       return true;\r
-                               }\r
-                               else\r
-                               {\r
-                                       return false;\r
-                               }\r
-                       }\r
+                       new Point(0x12d, 3), new Point(0x12d, 0x35), new Point(0x12d, 0x67),\r
+                       new Point(0x12d, 0x99), new Point(0x114, 0xcb), new Point(0x12d, 0xfd),\r
+                       new Point(0x12d, 0x12f), new Point(0x12d, 0x161), new Point(0x12d, 0x193),\r
+                       new Point(0x12d, 0x1c5)\r
+               };\r
+               CTextureAf txその他項目行パネル;\r
+               CTexture tx三角矢印;\r
+               CTextureAf tx通常項目行パネル;\r
+               // #28195 2012.5.2 yyagi\r
+               CTexture txSkinSample;\r
+               string[] skinSubFolders;\r
+               string[] skinNames;\r
+               string skinInitial;\r
+               CPrivateFastFont prvFont;\r
+               private struct stMenuItemRight\r
+               {\r
+                       public CTexture txMenuItemRight;\r
+                       public int nParam;\r
+                       public string strParam;\r
+                       public CTexture txParam;\r
+                       public CTexture txParamColored;\r
                }\r
-               public bool bIsFocusingParameter                // #32059 2013.9.17 yyagi\r
+               stMenuItemRight[] listMenu;\r
+\r
+               /// <summary>\r
+               /// #32059 2013.9.17 yyagi\r
+               /// </summary>\r
+               public bool bIsFocusingParameter\r
                {\r
                        get\r
                        {\r
                                return b要素値にフォーカス中;\r
                        }\r
                }\r
+\r
                public bool b現在選択されている項目はReturnToMenuである\r
                {\r
                        get\r
                        {\r
-                               CItemBase currentItem = this.list項目リスト[this.n現在の選択項目];\r
-                               if (currentItem == this.iSystemReturnToMenu || currentItem == this.iDrumsReturnToMenu ||\r
-                                       currentItem == this.iGuitarReturnToMenu || currentItem == this.iBassReturnToMenu)\r
+                               COptionBase sel = this.list項目リスト[this.n現在の選択項目];\r
+                               bool ret = false;\r
+                               for (EPart i = EPart.Drums; i <= EPart.System; ++i)\r
                                {\r
-                                       return true;\r
-                               }\r
-                               else\r
-                               {\r
-                                       return false;\r
+                                       if (sel == ReturnToMenu[i])\r
+                                       {\r
+                                               ret = true;\r
+                                       }\r
                                }\r
+                               return ret;\r
                        }\r
                }\r
-               public CItemBase ib現在の選択項目\r
+\r
+               public bool b楽器またはシステム用メニューである\r
                {\r
                        get\r
                        {\r
-                               return this.list項目リスト[this.n現在の選択項目];\r
+                               return eメニュー種別 == Eメニュー種別.Bass || eメニュー種別 == Eメニュー種別.Drums || eメニュー種別 == Eメニュー種別.Guitar || eメニュー種別 == Eメニュー種別.System;\r
                        }\r
                }\r
-               public int n現在の選択項目;\r
-\r
-\r
-               // メソッド\r
-               #region [ t項目リストの設定_System() ]\r
-               public void t項目リストの設定_System()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iSystemReturnToMenu = new CItemBase("<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu.");\r
-                       this.list項目リスト.Add(this.iSystemReturnToMenu);\r
-\r
-                       this.iSystemReloadDTX = new CItemBase("Reload Songs", CItemBase.Eパネル種別.通常,\r
-                               "曲データの一覧情報を取得し直します。",\r
-                               "Reload song data.");\r
-                       this.list項目リスト.Add(this.iSystemReloadDTX);\r
-\r
-                       this.iCommonDark = new CItemList("Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eDark,\r
-                               "HALF: 背景、レーン、ゲージが表示されなくなります。\n" +\r
-                               "FULL: さらに小節線、拍線、判定ライン、パッドも表示されなくなります。",\r
-                               "OFF: all display parts are shown.\n" +\r
-                               "HALF: wallpaper, lanes and gauge are disappeared.\n" +\r
-                               "FULL: additionaly to HALF, bar/beat lines, hit bar, pads are disappeared.",\r
-                               new string[] { "OFF", "HALF", "FULL" });\r
-                       this.list項目リスト.Add(this.iCommonDark);\r
-\r
-                       this.iSystemRisky = new CItemInteger("Risky", 0, 10, CDTXMania.Instance.ConfigIni.nRisky,\r
-                               "Riskyモードの設定:\n" +\r
-                               "1以上の値にすると、その回数分のPoor/MissでFAILEDとなります。\n" +\r
-                               "0にすると無効になり、DamageLevelに従ったゲージ増減となります。\n" +\r
-                               "\n" +\r
-                               "なお、この設定は、StageFailedの設定と併用できます。",\r
-                               "Risky mode:\n" +\r
-                               "It means the Poor/Miss times to be FAILED.\n" +\r
-                               "Set 0 to disable Risky mode.");\r
-                       this.list項目リスト.Add(this.iSystemRisky);\r
-\r
-                       int nDGmode = (CDTXMania.Instance.ConfigIni.bGuitar有効 ? 2 : 0) + (CDTXMania.Instance.ConfigIni.bDrums有効 ? 1 : 0) - 1;\r
-                       this.iSystemGRmode = new CItemList("Drums & GR ", CItemBase.Eパネル種別.通常, nDGmode,\r
-                               "使用楽器の選択:\n" +\r
-                               "DrOnly: ドラムのみ有効にします。\n" +\r
-                               "GROnly: ギター/ベースのみの専用画面を用います。\n" +\r
-                               "Both: ドラムとギター/ベースの両方を有効にします。\n",\r
-                               "DrOnly: Only Drums is available.\n" +\r
-                               "GROnly: Only Guitar/Bass are available. You can play them in GR screen.\n" +\r
-                               "Both: Both Drums and Guitar/Bass are available.",\r
-                               new string[] { "DrOnly", "GROnly", "Both" });\r
-                       this.list項目リスト.Add(this.iSystemGRmode);\r
-\r
-                       this.iCommonPlaySpeed = new CItemInteger("PlaySpeed", 5, 40, CDTXMania.Instance.ConfigIni.n演奏速度,\r
-                               "曲の演奏速度を、速くしたり遅くしたりすることができます。\n" +\r
-                               "(※一部のサウンドカードでは正しく再生できない可能性があります。)\n" +\r
-                               "\n" +\r
-                               "TimeStretchがONのときに、演奏速度をx0.850以下にすると、チップのズレが大きくなります。",\r
-                               "It changes the song speed.\n" +\r
-                               "For example, you can play in half speed by setting PlaySpeed = 0.500 for your practice.\n" +\r
-                               "\n" +\r
-                               "Note: It also changes the songs' pitch. In case TimeStretch=ON and slower than x0.900, some sound lag occurs.");\r
-                       this.list項目リスト.Add(this.iCommonPlaySpeed);\r
-\r
-                       this.iSystemTimeStretch = new CItemToggle("TimeStretch", CDTXMania.Instance.ConfigIni.bTimeStretch,\r
-                               "演奏速度の変更方式:\n" +\r
-                               "ONにすると、演奏速度の変更を、周波数変更ではなくタイムストレッチで行います。\n" +\r
-                               "\n" +\r
-                               "タイムストレッチ使用時は、サウンド処理により多くのCPU性能を使用します。\n" +\r
-                               "また、演奏速度をx0.850以下にすると、チップのズレが大きくなります。",\r
-                               "The way to change the playing speed:\n" +\r
-                               "Turn ON to use time stretch to change the play speed." +\r
-                               "\n" +\r
-                               "TimeStretch uses more CPU power. And some sound lag occurs if PlaySpeed is slower than x0.900.");\r
-                       this.list項目リスト.Add(this.iSystemTimeStretch);\r
-\r
-                       this.iSystemFullscreen = new CItemToggle("Fullscreen", CDTXMania.Instance.ConfigIni.b全画面モード,\r
-                               "画面モード設定:\n" +\r
-                               "ON で全画面モード、OFF でウィンドウモードになります。",\r
-                               "Fullscreen mode or window mode.");\r
-                       this.list項目リスト.Add(this.iSystemFullscreen);\r
-                       this.iSystemStageFailed = new CItemToggle("StageFailed", CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効,\r
-                               "STAGE FAILED 有効:\n" +\r
-                               "ON にすると、ゲージがなくなった時に STAGE FAILED となり演奏が中断されます。\n" +\r
-                               "OFF の場合は、ゲージがなくなっても最後まで演奏できます。",\r
-                               "Turn OFF if you don't want to encount GAME OVER.");\r
-                       this.list項目リスト.Add(this.iSystemStageFailed);\r
-                       this.iSystemRandomFromSubBox = new CItemToggle("RandSubBox", CDTXMania.Instance.ConfigIni.bランダムセレクトで子BOXを検索対象とする,\r
-                               "子BOXをRANDOMの対象とする:\n" +\r
-                               "ON にすると、RANDOM SELECT 時に子BOXも選択対象とします。",\r
-                               "Turn ON to use child BOX (subfolders) at RANDOM SELECT.");\r
-                       this.list項目リスト.Add(this.iSystemRandomFromSubBox);\r
-\r
-\r
-                       this.iSystemAdjustWaves = new CItemToggle("AdjustWaves", CDTXMania.Instance.ConfigIni.bWave再生位置自動調整機能有効,\r
-                               "サウンド再生位置自動補正:\n" +\r
-                               "ハードウェアやOSに起因するサウンドのずれを強制的に補正します。\n" +\r
-                               "BGM のように再生時間の長い音声データが使用されている曲で効果があります。" +\r
-                               "\n" +\r
-                               "※ SoundTypeでDSound(DirectSound)を指定している場合にのみ有効です。WASAPI/ASIO使用時は効果がありません。",\r
-                               "Automatic wave playing position adjustment feature.\n" +\r
-                               "\n" +\r
-                               "If you turn it ON, it decrease the lag which comes from the difference of hardware/OS.\n" +\r
-                               "Usually, you should turn it ON.\n" +\r
-                               "\n" +\r
-                               "Note: This setting is effetive only when DSound(DirectSound) in SoundType is used.");\r
-                       this.list項目リスト.Add(this.iSystemAdjustWaves);\r
-\r
-\r
-                       this.iSystemVSyncWait = new CItemToggle("VSyncWait", CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う,\r
-                               "垂直帰線同期:\n" +\r
-                               "画面の描画をディスプレイの垂直帰線中に行なう場合には ON を指定します。\n" +\r
-                               "ON にすると、ガタつきのない滑らかな画面描画が実現されます。",\r
-                               "Turn ON to wait VSync (Vertical Synchronizing signal) at every drawings. (so FPS becomes 60)\n" +\r
-                               "\n" +\r
-                               "If you have enough CPU/GPU power, the scroll would become smooth.");\r
-                       this.list項目リスト.Add(this.iSystemVSyncWait);\r
-                       this.iSystemAVI = new CItemToggle("AVI", CDTXMania.Instance.ConfigIni.bAVI有効,\r
-                               "AVIの使用:\n" +\r
-                               "演奏中に動画(AVI)を再生する場合にON にします。\n" +\r
-                               "AVI の再生には、それなりのマシンパワーが必要とされます。",\r
-                               "To use AVI playback or not.");\r
-                       this.list項目リスト.Add(this.iSystemAVI);\r
-                       this.iSystemForceAVIFullscreen = new CItemToggle("FullAVI", CDTXMania.Instance.ConfigIni.bForceAVIFullscreen,\r
-                               "旧AVIの全画面表示:\n" +\r
-                               "旧仕様の動画(AVI)の表示を、強制的に全画面化します。\n" +\r
-                               "BGAと併用している場合は、表示がおかしくなります。",\r
-                               "Forcely show the legacy-spec AVI to fullscreen.\n" +\r
-                               "If the data contains both AVI and BGA, the screen will corrupt.");\r
-                       this.list項目リスト.Add(this.iSystemForceAVIFullscreen);\r
-                       this.iSystemBGA = new CItemToggle("BGA", CDTXMania.Instance.ConfigIni.bBGA有効,\r
-                               "BGAの使用:\n" +\r
-                               "演奏中に画像(BGA)を表示する場合にON にします。\n" +\r
-                               "BGA の再生には、それなりのマシンパワーが必要とされます。",\r
-                               "To draw BGA (back ground animations) or not.");\r
-                       this.list項目リスト.Add(this.iSystemBGA);\r
-                       this.iSystemPreviewSoundWait = new CItemInteger("PreSoundWait", 0, 0x2710, CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms,\r
-                               "プレビュー音演奏までの時間:\n" +\r
-                               "曲にカーソルが合わされてからプレビュー音が鳴り始めるまでの時間を指定します。\n" +\r
-                               "0 ~ 10000 [ms] が指定可能です。",\r
-                               "Delay time(ms) to start playing preview sound in SELECT MUSIC screen.\n" +\r
-                               "You can specify from 0ms to 10000ms.");\r
-                       this.list項目リスト.Add(this.iSystemPreviewSoundWait);\r
-                       this.iSystemPreviewImageWait = new CItemInteger("PreImageWait", 0, 0x2710, CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms,\r
-                               "プレビュー画像表示までの時間:\n" +\r
-                               "曲にカーソルが合わされてからプレビュー画像が表示されるまでの時間を指定します。\n" +\r
-                               "0 ~ 10000 [ms] が指定可能です。",\r
-                               "Delay time(ms) to show preview image in SELECT MUSIC screen.\n" +\r
-                               "You can specify from 0ms to 10000ms.");\r
-                       this.list項目リスト.Add(this.iSystemPreviewImageWait);\r
-                       this.iSystemDebugInfo = new CItemToggle("Debug Info", CDTXMania.Instance.ConfigIni.b演奏情報を表示する,\r
-                               "演奏情報の表示:\n" +\r
-                               "演奏中、BGA領域の下部に演奏情報(FPS、BPM、演奏時間など)を表示します。\n" +\r
-                               "また、小節線の横に小節番号が表示されるようになります。",\r
-                               "To show song informations on playing BGA area. (FPS, BPM, total time etc)\n" +\r
-                               "You can ON/OFF the indications by pushing [Del] while playing drums, guitar or bass.");\r
-                       this.list項目リスト.Add(this.iSystemDebugInfo);\r
-                       this.iSystemBGAlpha = new CItemInteger("BG Alpha", 0, 0xff, CDTXMania.Instance.ConfigIni.n背景の透過度,\r
-                               "背景画像の透明割合:\n" +\r
-                               "背景画像をDTXManiaのフレーム画像と合成する際の、背景画像の透明度を指定します。\n" +\r
-                               "0 が完全不透明で、255 が完全透明となります。",\r
-                               "The degree for transparing playing screen and wallpaper.\n" +\r
-                               "\n" +\r
-                               "0=no transparent, 255=completely transparency.");\r
-                       this.list項目リスト.Add(this.iSystemBGAlpha);\r
-                       this.iSystemBGMSound = new CItemToggle("BGM Sound", CDTXMania.Instance.ConfigIni.bBGM音を発声する,\r
-                               "BGMの再生:\n" +\r
-                               "これをOFFにすると、BGM を再生しなくなります。",\r
-                               "Turn OFF if you don't want to play BGM.");\r
-                       this.list項目リスト.Add(this.iSystemBGMSound);\r
-                       this.iSystemAudienceSound = new CItemToggle("Audience", CDTXMania.Instance.ConfigIni.b歓声を発声する,\r
-                               "歓声の再生:\n" +\r
-                               "これをOFFにすると、歓声を再生しなくなります。",\r
-                               "Turn ON if you want to be cheered at the end of fill-in zone.");\r
-                       this.list項目リスト.Add(this.iSystemAudienceSound);\r
-                       this.iSystemDamageLevel = new CItemList("DamageLevel", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eダメージレベル,\r
-                               "ゲージ減少割合:\n" +\r
-                               "Miss ヒット時のゲージの減少度合いを指定します。\n" +\r
-                               "Riskyが1以上の場合は無効となります。",\r
-                               "Damage level at missing (and recovering level) at playing.\n" +\r
-                               "This setting is ignored when Risky >= 1.",\r
-                               new string[] { "Small", "Normal", "Large" });\r
-                       this.list項目リスト.Add(this.iSystemDamageLevel);\r
-                       this.iSystemSaveScore = new CItemToggle("SaveScore", CDTXMania.Instance.ConfigIni.bScoreIniを出力する,\r
-                               "演奏記録の保存:\n" +\r
-                               "これを ON にすると、演奏記録を ~.score.ini ファイルに保存します。",\r
-                               "To save high-scores/skills, turn it ON.\n" +\r
-                               "Turn OFF in case your song data are in read-only media (CD-ROM etc).\n" +\r
-                               "Note that the score files also contain 'BGM Adjust' parameter.\n" +\r
-                               "So if you want to keep adjusting parameter, you need to set SaveScore=ON.");\r
-                       this.list項目リスト.Add(this.iSystemSaveScore);\r
-\r
-\r
-                       this.iSystemChipVolume = new CItemInteger("ChipVolume", 0, 100, CDTXMania.Instance.ConfigIni.n手動再生音量,\r
-                               "打音の音量:\n" +\r
-                               "入力に反応して再生されるチップの音量を指定します。\n" +\r
-                               "0 ~ 100 % の値が指定可能です。",\r
-                               "The volumes for chips you hit.\n" +\r
-                               "You can specify from 0 to 100%.");\r
-                       this.list項目リスト.Add(this.iSystemChipVolume);\r
-                       this.iSystemAutoChipVolume = new CItemInteger("AutoVolume", 0, 100, CDTXMania.Instance.ConfigIni.n自動再生音量,\r
-                               "自動再生音の音量:\n" +\r
-                               "自動的に再生されるチップの音量を指定します。\n" +\r
-                               "0 ~ 100 % の値が指定可能です。",\r
-                               "The volumes for AUTO chips.\n" +\r
-                               "You can specify from 0 to 100%.");\r
-                       this.list項目リスト.Add(this.iSystemAutoChipVolume);\r
-                       this.iSystemStoicMode = new CItemToggle("StoicMode", CDTXMania.Instance.ConfigIni.bストイックモード,\r
-                               "ストイック(禁欲)モード:\n" +\r
-                               "以下をまとめて表示ON/OFFします。\n" +\r
-                               "・プレビュー画像/動画\n" +\r
-                               "・リザルト画像/動画\n" +\r
-                               "・NowLoading画像\n" +\r
-                               "・演奏画面の背景画像\n" +\r
-                               "・BGA 画像 / AVI 動画\n" +\r
-                               "・グラフ画像",\r
-                               "Turn ON to disable drawing\n" +\r
-                               " * preview image / movie\n" +\r
-                               " * result image / movie\n" +\r
-                               " * nowloading image\n" +\r
-                               " * wallpaper (in playing screen)\n" +\r
-                               " * BGA / AVI (in playing screen)\n" +\r
-                               " * Graph bar");\r
-                       this.list項目リスト.Add(this.iSystemStoicMode);\r
-                       this.iSystemShowLag = new CItemList("ShowLagTime", CItemBase.Eパネル種別.通常, CDTXMania.Instance.ConfigIni.nShowLagType,\r
-                               "ズレ時間表示:\n" +\r
-                               "ジャストタイミングからのズレ時間(ms)を表示します。\n" +\r
-                               " OFF: ズレ時間を表示しません。\n" +\r
-                               " ON: ズレ時間を表示します。\n" +\r
-                               " GREAT-: PERFECT以外の時のみ表示します。",\r
-                               "About displaying the lag from the \"just timing\".\n" +\r
-                               " OFF: Don't show it.\n" +\r
-                               " ON: Show it.\n" +\r
-                               " GREAT-: Show it except you've gotten PERFECT.",\r
-                               new string[] { "OFF", "ON", "GREAT-" });\r
-                       this.list項目リスト.Add(this.iSystemShowLag);\r
-                       this.iSystemAutoResultCapture = new CItemToggle("Autosaveresult", CDTXMania.Instance.ConfigIni.bIsAutoResultCapture,\r
-                               "リザルト画像自動保存機能:\n" +\r
-                               "ONにすると、ハイスコア/ハイスキル時に、自動的にリザルト画像を曲データと同じフォルダに保存します。",\r
-                               "AutoSaveResult:\n" +\r
-                               "Turn ON to save your result screen image automatically when you get hiscore/hiskill.");\r
-                       this.list項目リスト.Add(this.iSystemAutoResultCapture);\r
-\r
-\r
-                       this.iSystemJudgeDispPriority = new CItemList("JudgePriority", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.e判定表示優先度,\r
-                               "判定文字列とコンボ表示の優先順位を指定します。\n" +\r
-                               "\n" +\r
-                               " Under: チップの下に表示します。\n" +\r
-                               " Over:  チップの上に表示します。",\r
-                               "The display prioity between chips and judge mark/combo.\n" +\r
-                               "\n" +\r
-                               " Under: Show them under the chips.\n" +\r
-                               " Over:  Show them over the chips.",\r
-                               new string[] { "Under", "Over" });\r
-                       this.list項目リスト.Add(this.iSystemJudgeDispPriority);\r
-\r
-                       this.iSystemBufferedInput = new CItemToggle("BufferedInput", CDTXMania.Instance.ConfigIni.bバッファ入力を行う,\r
-                               "バッファ入力モード:\n" +\r
-                               "ON にすると、FPS を超える入力解像度を実現します。\n" +\r
-                               "OFF にすると、入力解像度は FPS に等しくなります。",\r
-                               "To select joystick input method.\n" +\r
-                               "\n" +\r
-                               "ON to use buffer input. No lost/lags.\n" +\r
-                               "OFF to use realtime input. It may causes lost/lags for input.\n" +\r
-                               "Moreover, input frequency is synchronized with FPS.");\r
-                       this.list項目リスト.Add(this.iSystemBufferedInput);\r
-                       this.iLogOutputLog = new CItemToggle("TraceLog", CDTXMania.Instance.ConfigIni.bログ出力,\r
-                               "Traceログ出力:\n" +\r
-                               "DTXManiaLog.txt にログを出力します。\n" +\r
-                               "この設定の変更は、DTXMania の再起動後に有効となります。",\r
-                               "Turn ON to put debug log to DTXManiaLog.txt.\n" +\r
-                               "To take it effective, you need to re-open DTXMania.");\r
-                       this.list項目リスト.Add(this.iLogOutputLog);\r
-\r
-                       this.iSystemLoadsoundspeed = new CItemToggle("LoadSoundSpeed", CDTXMania.Instance.ConfigIni.b曲読み込みを高速化する,\r
-                               "曲読み込みを高速化する:\n" +\r
-                               "ON にすると、曲読み込み画面での1フレームあたりの\nチップ音読み込み数を増やします。\n高速になりますが、応答停止の時間が増加しやすくなります。\n" +\r
-                               "OFF にすると、低速ですが応答停止の時間が\n減少しやすくなります。\n\n",\r
-                               "Load sounds speed.\n" +\r
-                               "ON to High.\n" +\r
-                               "OFF to Low.");\r
-                       this.list項目リスト.Add(this.iSystemLoadsoundspeed);\r
-\r
-                       #region [ WASAPI / ASIO ]\r
-                       // #24820 2013.1.3 yyagi\r
-                       this.iSystemSoundType = new CItemList("SoundType", CItemList.Eパネル種別.通常, CDTXMania.Instance.ConfigIni.nSoundDeviceType,\r
-                               "サウンドの出力方式:\n" +\r
-                               "WASAPI, ASIO, DSound(DirectSound)の中からサウンド出力方式を選択します。\n" +\r
-                               "WASAPIはVista以降でのみ使用可能です。ASIOはXPでも使用可能ですが、対応機器でのみ使用できます。\n" +\r
-                               "WASAPIかASIOを指定することで、遅延の少ない演奏を楽しむことができます。\n" +\r
-                               "\n" +\r
-                               "※ 設定はCONFIGURATION画面の終了時に有効になります。",\r
-                               "Sound output type:\n" +\r
-                               "You can choose WASAPI, ASIO or DShow(DirectShow).\n" +\r
-                               "WASAPI can use only after Vista.\n" +\r
-                               "ASIO can use on XP or later OSs, but you need \"ASIO-supported\" sound device.\n" +\r
-                               "\n" +\r
-                               "You should use WASAPI or ASIO to decrease the sound lag.\n" +\r
-                               "\n" +\r
-                               "Note: Exit CONFIGURATION to make the setting take effect.",\r
-                               new string[] { "DSound", "ASIO", "WASAPI" });\r
-                       this.list項目リスト.Add(this.iSystemSoundType);\r
-\r
-                       // #24820 2013.1.15 yyagi\r
-                       this.iSystemWASAPIBufferSizeMs = new CItemInteger("WASAPI BufferSize", 0, 99999, CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
-                                       "WASAPI使用時のバッファサイズ:\n" +\r
-                               "\n" +\r
-                               //  "0~99999ms を指定可能です。\n" +\r
-                                       "0を指定すると、設定可能な最小のバッファサイズを自動設定します。" +\r
-                               "1以上を指定すると、その値以上で指定可能な最小のバッファサイズを自動設定します。\n" +\r
-                               "\n" +\r
-                                       "値を小さくするほど発音遅延が減少しますが、音割れや性能低下などの問題が発生する場合があります。" +\r
-                               "タブレットなど性能の低いPCを使う場合は、手動で大きめの値を指定してください。\n" +\r
-                               "\n" +\r
-                                       "※ 設定はCONFIGURATION画面の終了時に\n" +\r
-                               " 有効になります。",\r
-                                       "Sound buffer size for WASAPI:\n" +\r
-                                       "You can set from 0 to 99999ms.\n" +\r
-                                       "Set 0 to use a minimum buffer size automatically.\n" +\r
-                                       "Smaller value makes smaller lag, but it may cause sound troubles. " +\r
-                               "So if you use poor CPU PC (tablet etc), please specify a little bigger value.\n" +\r
-                                       "\n" +\r
-                                       "Note: Exit CONFIGURATION to make the setting take effect.");\r
-                       this.list項目リスト.Add(this.iSystemWASAPIBufferSizeMs);\r
-\r
-                       // #24820 2013.1.17 yyagi\r
-                       string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();\r
-                       this.iSystemASIODevice = new CItemList("ASIO device", CItemList.Eパネル種別.通常, CDTXMania.Instance.ConfigIni.nASIODevice,\r
-                               "ASIOデバイス:\n" +\r
-                               "ASIO使用時のサウンドデバイスを選択します。\n" +\r
-                               "\n" +\r
-                               "※ 設定はCONFIGURATION画面の終了時に有効になります。",\r
-                               "ASIO Sound Device:\n" +\r
-                               "Select the sound device to use under ASIO mode.\n" +\r
-                               "\n" +\r
-                               "Note: Exit CONFIGURATION to make the setting take effect.",\r
-                               asiodevs);\r
-                       this.list項目リスト.Add(this.iSystemASIODevice);\r
-\r
-                       // #24820 2013.1.3 yyagi\r
-                       //this.iSystemASIOBufferSizeMs = new CItemInteger("ASIOBuffSize", 0, 99999, CDTXMania.Instance.ConfigIni.nASIOBufferSizeMs,\r
-                       //    "ASIO使用時のバッファサイズ:\n" +\r
-                       //    "0~99999ms を指定可能です。\n" +\r
-                       //    "推奨値は0で、サウンドデバイスでの\n" +\r
-                       //    "設定値をそのまま使用します。\n" +\r
-                       //    "(サウンドデバイスのASIO設定は、\n" +\r
-                       //    " ASIO capsなどで行います)\n" +\r
-                       //    "値を小さくするほど発音ラグが\n" +\r
-                       //    "減少しますが、音割れや異常動作を\n" +\r
-                       //    "引き起こす場合があります。\n" +\r
-                       //    "\n" +\r
-                       //    "※ 設定はCONFIGURATION画面の\n" +\r
-                       //    " 終了時に有効になります。",\r
-                       //    "Sound buffer size for ASIO:\n" +\r
-                       //    "You can set from 0 to 99999ms.\n" +\r
-                       //    "You should set it to 0, to use\n" +\r
-                       //    "a default value specified to\n" +\r
-                       //    "the sound device.\n" +\r
-                       //    "Smaller value makes smaller lag,\n" +\r
-                       //    "but it may cause sound troubles.\n" +\r
-                       //    "\n" +\r
-                       //    "Note: Exit CONFIGURATION to make\n" +\r
-                       //    "     the setting take effect." );\r
-                       //this.list項目リスト.Add( this.iSystemASIOBufferSizeMs );\r
-\r
-                       // #33689 2014.6.17 yyagi\r
-                       this.iSystemSoundTimerType = new CItemToggle("UseOSTimer", CDTXMania.Instance.ConfigIni.bUseOSTimer,\r
-                               "OSタイマーを使用するかどうか:\n" +\r
-                               "演奏タイマーとして、DTXMania独自のタイマーを使うか、OS標準のタイマーを使うかを選択します。\n" +\r
-                               "OS標準タイマーを使うとスクロールが滑らかになりますが、演奏で音ズレが発生することがあります。(そのためAdjustWavesの効果が適用されます。)\n" +\r
-                               "\n" +\r
-                               "この指定はWASAPI/ASIO使用時のみ有効です。\n",\r
-                               "Use OS Timer or not:\n" +\r
-                               "If this settings is ON, DTXMania uses OS Standard timer. It brings smooth scroll, but may cause some sound lag.\n" +\r
-                               "(so AdjustWaves is also avilable)\n" +\r
-                               "\n" +\r
-                               "If OFF, DTXMania uses its original timer and the effect is vice versa.\n" +\r
-                               "\n" +\r
-                               "This settings is avilable only when you use WASAPI/ASIO.\n"\r
-                       );\r
-                       this.list項目リスト.Add(this.iSystemSoundTimerType);\r
-                       #endregion\r
-                       // #33700 2013.1.3 yyagi\r
-                       this.iSystemMasterVolume = new CItemInteger("MasterVolume", 0, 100, CDTXMania.Instance.ConfigIni.nMasterVolume,\r
-                               "マスターボリュームの設定:\n" +\r
-                               "全体の音量を設定します。\n" +\r
-                               "0が無音で、100が最大値です。\n" +\r
-                               "(WASAPI/ASIO時のみ有効です)",\r
-                               "Master Volume:\n" +\r
-                               "You can set 0 - 100.\n" +\r
-                               "\n" +\r
-                               "Note:\n" +\r
-                               "Only for WASAPI/ASIO mode.");\r
-                       this.list項目リスト.Add(this.iSystemMasterVolume);\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.Instance.ConfigIni.bUseBoxDefSkin,\r
-                               "Music boxスキンの利用:\n" +\r
-                               "特別なスキンが設定されたMusic boxに出入りしたときに、自動でスキンを切り替えるかどうかを設定します。\n",\r
-                               //"\n" +\r
-                               //"(Music Boxスキンは、box.defファイル\n" +\r
-                               //" で指定できます)\n",\r
-                               "Box skin:\n" +\r
-                               "Automatically change skin specified in box.def file.");\r
-                       this.list項目リスト.Add(this.iSystemUseBoxDefSkin);\r
-\r
-\r
-                       this.iSystemGoToKeyAssign = new CItemBase("System Keys", CItemBase.Eパネル種別.通常,\r
-                       "システムのキー入力に関する項目を設定します。",\r
-                       "Settings for the system key/pad inputs.");\r
-                       this.list項目リスト.Add(this.iSystemGoToKeyAssign);\r
-\r
-                       // #24074 2011.01.23 add ikanick\r
-                       this.iGraph = new CItemToggle("Graph", CDTXMania.Instance.ConfigIni.bGraph,\r
-                               "最高スキルと比較できるグラフを表示します。\n" +\r
-                               "オートプレイだと表示されません。",\r
-                               "To draw Graph or not.");\r
-                       this.list項目リスト.Add(this.iGraph);\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.System;\r
-               }\r
 \r
-               #endregion\r
-               #region [ t項目リストの設定_Drums() ]\r
-               public void t項目リストの設定_Drums()\r
+               public COptionBase ib現在の選択項目\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
-                       #region [ AutoPlay ]\r
-                       this.iDrumsAutoPlayAll = new CItemThreeState("AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全パッドの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all drums lanes at once.");\r
-                       this.list項目リスト.Add(this.iDrumsAutoPlayAll);\r
-\r
-                       this.iDrumsLeftCymbal = new CItemToggle("    LeftCymbal", CDTXMania.Instance.ConfigIni.bAutoPlay.LC,\r
-                               "左シンバルを自動で演奏します。",\r
-                               "To play LeftCymbal automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsLeftCymbal);\r
-\r
-                       this.iDrumsHiHat = new CItemToggle("    HiHat", CDTXMania.Instance.ConfigIni.bAutoPlay.HH,\r
-                               "ハイハットを自動で演奏します。\n" +\r
-                               "(クローズ、オープンとも)",\r
-                               "To play HiHat automatically.\n" +\r
-                               "(It effects to both HH-close and HH-open)");\r
-                       this.list項目リスト.Add(this.iDrumsHiHat);\r
-\r
-                       this.iDrumsSnare = new CItemToggle("    Snare", CDTXMania.Instance.ConfigIni.bAutoPlay.SD,\r
-                               "スネアを自動で演奏します。",\r
-                               "To play Snare automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsSnare);\r
-\r
-                       this.iDrumsBass = new CItemToggle("    BassDrum", CDTXMania.Instance.ConfigIni.bAutoPlay.BD,\r
-                               "バスドラムを自動で演奏します。",\r
-                               "To play Bass Drum automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsBass);\r
-\r
-                       this.iDrumsHighTom = new CItemToggle("    HighTom", CDTXMania.Instance.ConfigIni.bAutoPlay.HT,\r
-                               "ハイタムを自動で演奏します。",\r
-                               "To play High Tom automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsHighTom);\r
-\r
-                       this.iDrumsLowTom = new CItemToggle("    LowTom", CDTXMania.Instance.ConfigIni.bAutoPlay.LT,\r
-                               "ロータムを自動で演奏します。",\r
-                               "To play Low Tom automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsLowTom);\r
-\r
-                       this.iDrumsFloorTom = new CItemToggle("    FloorTom", CDTXMania.Instance.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.Instance.ConfigIni.bAutoPlay.CY,\r
-                               "右シンバルとライドシンバルを自動で演奏します。",\r
-                               "To play both right- and Ride-Cymbal automatically.");\r
-                       this.list項目リスト.Add(this.iDrumsCymbalRide);\r
-                       #endregion\r
-\r
-\r
-                       this.iDrumsScrollSpeed = new CItemInteger("ScrollSpeed", 0, 0x7cf, CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums,\r
-                               "演奏時のドラム譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 を指定可能です。",\r
-                               "To change the scroll speed for the 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
-                       #region [ SudHid ]\r
-                       this.iDrumsSudHid = new CItemList("Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue(E楽器パート.DRUMS),\r
-                               "ドラムチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Poor /\n" +\r
-                               "    Miss時にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Drums chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Poor/Miss.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" });\r
-                       this.list項目リスト.Add(this.iDrumsSudHid);\r
-                       #endregion\r
-                       //this.iDrumsSudden = new CItemToggle( "Sudden", CDTXMania.Instance.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.Instance.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.iDrumsInvisible = new CItemList( "Invisible", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.eInvisible.Drums,\r
-                       //    "ドラムチップの透明化\n" +\r
-                       //    "OFF: チップを常に表示します。\n" +\r
-                       //    "SEMI: 通常はチップを透明にしますが、\n" +\r
-                       //    "   Poor/Miss時はしばらく表示します。\n" +\r
-                       //    "FULL: チップを常に透明にします。\n" +\r
-                       //    "   暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "Invisible drums chip:\n" +\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "SEMI", "FULL" } );\r
-                       //this.list項目リスト.Add( this.iDrumsInvisible );\r
-\r
-                       //this.iDrumsLanePosition = new CItemList( "LanePosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.eドラムレーン表示位置,\r
-                       //    "ドラムのレーン表示位置を設定します。\n" +\r
-                       //    "LEFT(左側), またはCENTER(中央)を設定できます。",\r
-                       //    "Choose drums lane position.\n" +\r
-                       //    "You can choose LEFT or CENTER.",\r
-                       //    new string[] { "LEFT", "CENTER" } );\r
-                       //this.list項目リスト.Add( this.iDrumsLanePosition );\r
-\r
-                       this.iCommonDark = new CItemList("Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eDark,\r
-                               "HALF: 背景、レーン、ゲージが表示されなくなります。\n" +\r
-                               "FULL: さらに小節線、拍線、判定ライン、パッドも表示されなくなります。",\r
-                               "OFF: all display parts are shown.\n" +\r
-                               "HALF: wallpaper, lanes and gauge are disappeared.\n" +\r
-                               "FULL: additionaly to HALF, bar/beat 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.Instance.ConfigIni.bReverse.Drums,\r
-                               "ドラムチップが譜面の下から上に流れるようになります。",\r
-                               "The scroll way is reversed. Drums chips flow from the bottom to the top.");\r
-                       this.list項目リスト.Add(this.iDrumsReverse);\r
-\r
-                       this.iSystemRisky = new CItemInteger("Risky", 0, 10, CDTXMania.Instance.ConfigIni.nRisky,\r
-                               "Riskyモードの設定:\n" +\r
-                               "1以上の値にすると、その回数分のPoor/MissでFAILEDとなります。\n" +\r
-                               "0にすると無効になり、DamageLevelに従ったゲージ増減となります。\n" +\r
-                               "\n" +\r
-                               "なお、この設定は、StageFailedの設定と併用できます。",\r
-                               "Risky mode:\n" +\r
-                               "It means the Poor/Miss times to be FAILED.\n" +\r
-                               "Set 0 to disable Risky mode.");\r
-                       this.list項目リスト.Add(this.iSystemRisky);\r
-\r
-                       this.iDrumsTight = new CItemToggle("Tight", CDTXMania.Instance.ConfigIni.bTight,\r
-                               "ドラムチップのないところでパッドを叩くとミスになります。",\r
-                               "It becomes MISS to hit pad without chip.");\r
-                       this.list項目リスト.Add(this.iDrumsTight);\r
-\r
-                       #region [ Position ]\r
-\r
-                       #region [ DrumsLanePosition ]\r
-                       this.iDrumsLanePosition = new CItemList("LanePosition", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eドラムレーン表示位置,\r
-                               "ドラムレーンの位置を指定します。\n" +\r
-                               "\n" +\r
-                               "Left:   画面の左側にドラムレーンを表示します。\n" +\r
-                               "Center: 画面の中央にドラムレーンを表示します。\n",\r
-                               "The display position for Drums Lane." +\r
-                               "\n" +\r
-                               " Left:   Drums lanes are shown in the left of screen.\n" +\r
-                               " Center: Drums lanes are shown in the center of screen.",\r
-                               //"Note that it doesn't take effect at Autoplay ([Left] is forcely used).",\r
-                               new string[] { "Left", "Center" });\r
-                       this.list項目リスト.Add(this.iDrumsLanePosition);\r
-                       #endregion\r
-                       #region [ ComboPosition ]\r
-                       this.iDrumsComboPosition = new CItemList("ComboPosition", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.ドラムコンボ文字の表示位置,\r
-                               "演奏時のドラムコンボ文字列の位置を指定します。",\r
-                               "The display position for Drums Combo.",\r
-                               //"Note that it doesn't take effect at Autoplay ([Left] is forcely used).",\r
-                               new string[] { "Left", "Center", "Right", "OFF" });\r
-                       this.list項目リスト.Add(this.iDrumsComboPosition);\r
-                       #endregion\r
-                       #region [ Position ]\r
-                       this.iDrumsPosition = new CItemList("Position", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.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[] { "OFF", "P-A", "P-B" });\r
-                       this.list項目リスト.Add(this.iDrumsPosition);\r
-                       #endregion\r
-\r
-                       //this.iDrumsJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.e判定表示優先度.Drums,\r
-                       //    "判定文字列とコンボ表示の優先順位を\n" +\r
-                       //    "指定します。\n" +\r
-                       //    "\n" +\r
-                       //    " Under: チップの下に表示します。\n" +\r
-                       //    " Over:  チップの上に表示します。",\r
-                       //    "The display prioity between chips\n" +\r
-                       //    " and judge mark/combo.\n" +\r
-                       //    "\n" +\r
-                       //    " Under: Show them under the chips.\n" +\r
-                       //    " Over:  Show them over the chips.",\r
-                       //    new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iDrumsJudgeDispPriority );\r
-\r
-                       #endregion\r
-                       #region [ Group ]\r
-                       this.iSystemHHGroup = new CItemList("HH Group", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eHHGroup,\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
-                               "HH-0: LC|HC|HO;\n" +\r
-                               " 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 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.Instance.ConfigIni.eFTGroup,\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.Instance.ConfigIni.eCYGroup,\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.Instance.ConfigIni.eBDGroup,          // #27029 2012.1.4 from\r
-                               "バス数設定:\n" +\r
-                               "ハイハットペダルをバスとして利用する方法を指定します。\n" +\r
-                               "  BD-0 ... HP | BD\n" +\r
-                               "  BD-1 ... FP & BD\n" +\r
-                               "\n" +\r
-                               "注意:HitSound が OFF である場合は不具合が生じます。\n" +\r
-                               "また、BD-1 を選択している間はいくつかのオプションが変更できなくなります。",\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 HitSound OFF.\n" +\r
-                               "And you cannot change some options while using BD-1.",\r
-                               new string[] { "BD-0", "BD-1" });\r
-                       this.list項目リスト.Add(this.iSystemBDGroup);\r
-                       #endregion\r
-\r
-                       this.iSystemCymbalFree = new CItemToggle("CymbalFree", CDTXMania.Instance.ConfigIni.bシンバルフリー,\r
-                               "シンバルフリーモード:\n" +\r
-                               "左シンバル・右シンバルの区別をなくします。ライドシンバルまで区別をなくすか否かは、CYGroup に従います。\n",\r
-                               "Turn ON to group LC (left cymbal) and CY (right cymbal).\n" +\r
-                               "Whether RD (ride cymbal) is also grouped or not depends on the 'CY Group' setting.");\r
-                       this.list項目リスト.Add(this.iSystemCymbalFree);\r
-\r
-                       #region [ SoundPriority ]\r
-                       this.iSystemHitSoundPriorityHH = new CItemList("HH Priority", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "ハイハットレーン打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先\n" +\r
-                               "\n" +\r
-                               "※BD Group が BD-1 である場合、この項目は変更できません。\n",\r
-                               "To specify playing sound in case you're 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 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.Instance.ConfigIni.eHitSoundPriorityFT,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "フロアタム打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're 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.Instance.ConfigIni.eHitSoundPriorityCY,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "シンバルレーン打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're 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
-                       #endregion\r
-\r
-                       this.iSystemFillIn = new CItemToggle("FillIn", CDTXMania.Instance.ConfigIni.bフィルイン有効,\r
-                               "フィルインエフェクトの使用:\n" +\r
-                               "フィルイン区間の爆発パターンに特別のエフェクトを使用します。\n" +\r
-                               "フィルインエフェクトの描画にはそれなりのマシンパワーが必要とされます。",\r
-                               "To show bursting effects at the fill-in zone.");\r
-                       this.list項目リスト.Add(this.iSystemFillIn);\r
-\r
-                       this.iSystemHitSound = new CItemToggle("HitSound", CDTXMania.Instance.ConfigIni.bドラム打音を発声する,\r
-                               "打撃音の再生:\n" +\r
-                               "これをOFFにすると、パッドを叩いたときの音を再生しなくなります(ドラムのみ)。\n" +\r
-                               "電子ドラム本来の音色で演奏したい場合などにOFF にします。\n" +\r
-                               "\n" +\r
-                               "注意:BD Group が BD-1 である場合は不具合が生じます。\n",\r
-                               "Turn OFF if you don't want to play hitting chip sound.\n" +\r
-                               "It is useful to play with real/electric drums kit.\n" +\r
-                               "\n" +\r
-                               "Warning: You should not use BD Group BD-1 with HitSound OFF.\n");\r
-                       this.list項目リスト.Add(this.iSystemHitSound);\r
-\r
-                       this.iSystemSoundMonitorDrums = new CItemToggle("DrumsMonitor", CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums,\r
-                               "ドラム音モニタ:\n" +\r
-                               "ドラム音を他の音より大きめの音量で発声します。\n" +\r
-                               "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                               "To enhance the drums chip sound (except autoplay).");\r
-                       this.list項目リスト.Add(this.iSystemSoundMonitorDrums);\r
-\r
-                       this.iSystemMinComboDrums = new CItemInteger("D-MinCombo", 1, 0x1869f, CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Drums,\r
-                               "表示可能な最小コンボ数(ドラム):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the drums.\n" +\r
-                               "You can specify from 1 to 99999.");\r
-                       this.list項目リスト.Add(this.iSystemMinComboDrums);\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iDrumsInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums,\r
-                               "ドラムの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the drums input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value.");\r
-                       this.list項目リスト.Add(this.iDrumsInputAdjustTimeMs);\r
-\r
-                       this.iDrumsGoToKeyAssign = new CItemBase("Drums Keys", CItemBase.Eパネル種別.通常,\r
-                               "ドラムのキー入力に関する項目を設定します。",\r
-                               "Settings for the drums key/pad inputs.");\r
-                       this.list項目リスト.Add(this.iDrumsGoToKeyAssign);\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Drums;\r
-               }\r
-               #endregion\r
-               #region [ t項目リストの設定_Guitar() ]\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
-                       this.list項目リスト.Add(this.iGuitarReturnToMenu);\r
-\r
-                       #region [ AutoPlay ]\r
-                       this.iGuitarAutoPlayAll = new CItemThreeState("AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全ネック/ピックの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all guitar neck/pick at once.");\r
-                       this.list項目リスト.Add(this.iGuitarAutoPlayAll);\r
-                       this.iGuitarR = new CItemToggle("    R", CDTXMania.Instance.ConfigIni.bAutoPlay.GtR,\r
-                               "Rネックを自動で演奏します。",\r
-                               "To play R neck automatically.");\r
-                       this.list項目リスト.Add(this.iGuitarR);\r
-                       this.iGuitarG = new CItemToggle("    G", CDTXMania.Instance.ConfigIni.bAutoPlay.GtG,\r
-                               "Gネックを自動で演奏します。",\r
-                               "To play G neck automatically.");\r
-                       this.list項目リスト.Add(this.iGuitarG);\r
-                       this.iGuitarB = new CItemToggle("    B", CDTXMania.Instance.ConfigIni.bAutoPlay.GtB,\r
-                               "Bネックを自動で演奏します。",\r
-                               "To play B neck automatically.");\r
-                       this.list項目リスト.Add(this.iGuitarB);\r
-                       this.iGuitarPick = new CItemToggle("    Pick", CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick,\r
-                               "ピックを自動で演奏します。",\r
-                               "To play Pick automatically.");\r
-                       this.list項目リスト.Add(this.iGuitarPick);\r
-                       this.iGuitarW = new CItemToggle("    Wailing", CDTXMania.Instance.ConfigIni.bAutoPlay.GtW,\r
-                               "ウェイリングを自動で演奏します。",\r
-                               "To play wailing automatically.");\r
-                       this.list項目リスト.Add(this.iGuitarW);\r
-                       #endregion\r
-                       this.iGuitarScrollSpeed = new CItemInteger("ScrollSpeed", 0, 0x7cf, CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar,\r
-                               "演奏時のギター譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 までを指定可能です。",\r
-                               "To change the scroll speed for the guitar 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.iGuitarScrollSpeed);\r
-\r
-                       this.iGuitarSudHid = new CItemList("Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue(E楽器パート.GUITAR),\r
-                               "ギターチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Bad時\n" +\r
-                               "    にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Guitar chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Bad.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" });\r
-                       this.list項目リスト.Add(this.iGuitarSudHid);\r
-\r
-                       //this.iGuitarSudden = new CItemToggle( "Sudden", CDTXMania.Instance.ConfigIni.bSudden.Guitar,\r
-                       //    "ギターチップがヒットバー付近にくる\nまで表示されなくなります。",\r
-                       //    "Guitar chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );\r
-                       //this.list項目リスト.Add( this.iGuitarSudden );\r
-                       //this.iGuitarHidden = new CItemToggle( "Hidden", CDTXMania.Instance.ConfigIni.bHidden.Guitar,\r
-                       //    "ギターチップがヒットバー付近で表示\nされなくなります。",\r
-                       //    "Guitar chips are hidden by approaching\nto the hit bar. " );\r
-                       //this.list項目リスト.Add( this.iGuitarHidden );\r
-\r
-                       //this.iGuitarInvisible = new CItemList( "Invisible", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.eInvisible.Guitar,\r
-                       //    "ギターのチップを全く表示しなくなりま\n" +\r
-                       //    "す。暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "HALF", "ON" } );\r
-                       //this.list項目リスト.Add( this.iGuitarInvisible );\r
-\r
-                       this.iGuitarReverse = new CItemToggle("Reverse", CDTXMania.Instance.ConfigIni.bReverse.Guitar,\r
-                               "ギターチップが譜面の上から下に流れるようになります。",\r
-                               "The scroll way is reversed. Guitar chips flow from the top to the bottom.");\r
-                       this.list項目リスト.Add(this.iGuitarReverse);\r
-\r
-                       this.iSystemJudgePosGuitar = new CItemList("JudgePos", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.e判定位置.Guitar,\r
-                               "判定ライン表示位置:\n" +\r
-                               "判定ラインとRGBボタンが、少し下側に表示されるようになります。",\r
-                               "Judge Line position:\n" +\r
-                               "The judge line and RGB buttons will be displayed lower position.",\r
-                               new string[] { "Normal", "Lower" });\r
-                       this.list項目リスト.Add(this.iSystemJudgePosGuitar);\r
-\r
-                       this.iGuitarPosition = new CItemList("Position", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar,\r
-                               "ギターの判定文字の表示位置を指定します。\n" +\r
-                               " P-A: レーン上\n" +\r
-                               " P-B: 判定ラインの上\n" +\r
-                               " P-C: COMBO の下\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: over the hit bar.\n" +\r
-                               " P-C: under the COMBO indication.\n" +\r
-                               " OFF: no judgement mark.",\r
-                               new string[] { "OFF", "P-A", "P-B", "P-C" });\r
-                       this.list項目リスト.Add(this.iGuitarPosition);\r
-\r
-                       //this.iGuitarJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.e判定表示優先度.Guitar,\r
-                       //    "判定文字列とコンボ表示の優先順位を\n" +\r
-                       //    "指定します。\n" +\r
-                       //    "\n" +\r
-                       //    " Under: チップの下に表示します。\n" +\r
-                       //    " Over:  チップの上に表示します。",\r
-                       //    "The display prioity between chips\n" +\r
-                       //    " and judge mark/combo.\n" +\r
-                       //    "\n" +\r
-                       //    " Under: Show them under the chips.\n" +\r
-                       //    " Over:  Show them over the chips.",\r
-                       //    new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iGuitarJudgeDispPriority );\r
-\r
-                       this.iGuitarRandom = new CItemList("Random", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eRandom.Guitar,\r
-                               "ギターのチップがランダムに降ってきます。\n" +\r
-                               "  Part: 小節・レーン単位で交換\n" +\r
-                               "  Super: チップ単位で交換\n" +\r
-                               "  Hyper: 全部完全に変更",\r
-                               "Guitar chips come randomly.\n" +\r
-                               "\n" +\r
-                               "  Part: swapping lanes randomly for each measures.\n" +\r
-                               "  Super: swapping chip randomly\n" +\r
-                               "  Hyper: swapping randomly (number of lanes also changes)",\r
-                               new string[] { "OFF", "Part", "Super", "Hyper" });\r
-                       this.list項目リスト.Add(this.iGuitarRandom);\r
-                       this.iGuitarLight = new CItemToggle("Light", CDTXMania.Instance.ConfigIni.bLight.Guitar,\r
-                               "ギターチップのないところでピッキングしても BAD になりません。",\r
-                               "Even if you pick without any chips, it doesn't become BAD.");\r
-                       this.list項目リスト.Add(this.iGuitarLight);\r
-                       this.iGuitarLeft = new CItemToggle("Left", CDTXMania.Instance.ConfigIni.bLeft.Guitar,\r
-                               "ギターの RGB の並びが左右反転します。(左利きモード)",\r
-                               "Lane order 'R-G-B' becomes 'B-G-R' for lefty.");\r
-                       this.list項目リスト.Add(this.iGuitarLeft);\r
-\r
-                       this.iSystemSoundMonitorGuitar = new CItemToggle("GuitarMonitor", CDTXMania.Instance.ConfigIni.b演奏音を強調する.Guitar,\r
-                       "ギター音モニタ:\n" +\r
-                       "ギター音を他の音より大きめの音量で発声します。\n" +\r
-                       "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                       "To enhance the guitar chip sound (except autoplay).");\r
-                       this.list項目リスト.Add(this.iSystemSoundMonitorGuitar);\r
-                       this.iSystemMinComboGuitar = new CItemInteger("G-MinCombo", 1, 0x1869f, CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Guitar,\r
-                               "表示可能な最小コンボ数(ギター):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the guitar.\n" +\r
-                               "You can specify from 1 to 99999.");\r
-                       this.list項目リスト.Add(this.iSystemMinComboGuitar);\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iGuitarInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar,\r
-                               "ギターの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the guitar input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value.");\r
-                       this.list項目リスト.Add(this.iGuitarInputAdjustTimeMs);\r
-\r
-                       this.iGuitarGoToKeyAssign = new CItemBase("Guitar Keys", CItemBase.Eパネル種別.通常,\r
-                               "ギターのキー入力に関する項目を設定します。",\r
-                               "Settings for the guitar key/pad inputs.");\r
-                       this.list項目リスト.Add(this.iGuitarGoToKeyAssign);\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Guitar;\r
-               }\r
-               #endregion\r
-               #region [ t項目リストの設定_Bass() ]\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
-                       this.list項目リスト.Add(this.iBassReturnToMenu);\r
-\r
-                       #region [ AutoPlay ]\r
-                       this.iBassAutoPlayAll = new CItemThreeState("AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全ネック/ピックの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all bass neck/pick at once.");\r
-                       this.list項目リスト.Add(this.iBassAutoPlayAll);\r
-                       this.iBassR = new CItemToggle("    R", CDTXMania.Instance.ConfigIni.bAutoPlay.BsR,\r
-                               "Rネックを自動で演奏します。",\r
-                               "To play R neck automatically.");\r
-                       this.list項目リスト.Add(this.iBassR);\r
-                       this.iBassG = new CItemToggle("    G", CDTXMania.Instance.ConfigIni.bAutoPlay.BsG,\r
-                               "Gネックを自動で演奏します。",\r
-                               "To play G neck automatically.");\r
-                       this.list項目リスト.Add(this.iBassG);\r
-                       this.iBassB = new CItemToggle("    B", CDTXMania.Instance.ConfigIni.bAutoPlay.BsB,\r
-                               "Bネックを自動で演奏します。",\r
-                               "To play B neck automatically.");\r
-                       this.list項目リスト.Add(this.iBassB);\r
-                       this.iBassPick = new CItemToggle("    Pick", CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick,\r
-                               "ピックを自動で演奏します。",\r
-                               "To play Pick automatically.");\r
-                       this.list項目リスト.Add(this.iBassPick);\r
-                       this.iBassW = new CItemToggle("    Wailing", CDTXMania.Instance.ConfigIni.bAutoPlay.BsW,\r
-                               "ウェイリングを自動で演奏します。",\r
-                               "To play wailing automatically.");\r
-                       this.list項目リスト.Add(this.iBassW);\r
-                       #endregion\r
-\r
-                       this.iBassScrollSpeed = new CItemInteger("ScrollSpeed", 0, 0x7cf, CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass,\r
-                               "演奏時のベース譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 までを指定可能です。",\r
-                               "To change the scroll speed for the bass 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.iBassScrollSpeed);\r
-\r
-                       this.iBassSudHid = new CItemList("Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue(E楽器パート.BASS),\r
-                               "ベースチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Bad時\n" +\r
-                               "    にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Bass chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Bad.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" });\r
-                       this.list項目リスト.Add(this.iBassSudHid);\r
-\r
-                       //this.iBassSudden = new CItemToggle( "Sudden", CDTXMania.Instance.ConfigIni.bSudden.Bass,\r
-                       //    "ベースチップがヒットバー付近にくる\nまで表示されなくなります。",\r
-                       //    "Bass chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );\r
-                       //this.list項目リスト.Add( this.iBassSudden );\r
-                       //this.iBassHidden = new CItemToggle( "Hidden", CDTXMania.Instance.ConfigIni.bHidden.Bass,\r
-                       //    "ベースチップがヒットバー付近で表示\nされなくなります。",\r
-                       //    "Bass chips are hidden by approaching\nto the hit bar." );\r
-                       //this.list項目リスト.Add( this.iBassHidden );\r
-\r
-                       //this.iBassInvisible = new CItemList( "InvisibleBlindfold", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.eInvisible.Bass,\r
-                       //    "ベースのチップを全く表示しなくなりま\n" +\r
-                       //    "す。暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "HALF", "ON"} );\r
-                       //this.list項目リスト.Add( this.iBassInvisible );\r
-\r
-                       this.iBassReverse = new CItemToggle("Reverse", CDTXMania.Instance.ConfigIni.bReverse.Bass,\r
-                               "ベースチップが譜面の上から下に流れるようになります。",\r
-                               "The scroll way is reversed. Bass chips flow from the top to the bottom.");\r
-                       this.list項目リスト.Add(this.iBassReverse);\r
-\r
-                       this.iSystemJudgePosBass = new CItemList("JudgePos", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.e判定位置.Bass,\r
-                               "判定ライン表示位置:\n" +\r
-                               "判定ラインとRGBボタンが、少し下側に表示されるようになります。",\r
-                               "Judge Line position:\n" +\r
-                               "The judge line and RGB buttons will be displayed lower position.",\r
-                               new string[] { "Normal", "Lower" });\r
-                       this.list項目リスト.Add(this.iSystemJudgePosBass);\r
-\r
-                       this.iBassPosition = new CItemList("Position", CItemBase.Eパネル種別.通常,\r
-                               (int)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass,\r
-                               "ベースの判定文字の表示位置を指定します。\n" +\r
-                               " P-A: レーン上\n" +\r
-                               " P-B: 判定ラインの上\n" +\r
-                               " P-C: COMBO の下\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: over the hit bar.\n" +\r
-                               " P-C: under the COMBO indication.\n" +\r
-                               " OFF: no judgement mark.",\r
-                               new string[] { "OFF", "P-A", "P-B", "P-C" });\r
-                       this.list項目リスト.Add(this.iBassPosition);\r
-\r
-                       //this.iBassJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.Instance.ConfigIni.e判定表示優先度.Bass,\r
-                       //"判定文字列とコンボ表示の優先順位を\n" +\r
-                       //"指定します。\n" +\r
-                       //"\n" +\r
-                       //" Under: チップの下に表示します。\n" +\r
-                       //" Over:  チップの上に表示します。",\r
-                       //"The display prioity between chips\n" +\r
-                       //" and judge mark/combo.\n" +\r
-                       //"\n" +\r
-                       //" Under: Show them under the chips.\n" +\r
-                       //" Over:  Show them over the chips.",\r
-                       //new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iBassJudgeDispPriority );\r
-\r
-                       this.iBassRandom = new CItemList("Random", CItemBase.Eパネル種別.通常,\r
-                               (int)CDTXMania.Instance.ConfigIni.eRandom.Bass,\r
-                               "ベースのチップがランダムに降ってきます。\n" +\r
-                               "  Part: 小節・レーン単位で交換\n" +\r
-                               "  Super: チップ単位で交換\n" +\r
-                               "  Hyper: 全部完全に変更",\r
-                               "Bass chips come randomly.\n" +\r
-                               "\n" +\r
-                               "  Part: swapping lanes randomly for each measures.\n" +\r
-                               "  Super: swapping chip randomly\n" +\r
-                               "  Hyper: swapping randomly (number of lanes also changes)",\r
-                               new string[] { "OFF", "Part", "Super", "Hyper" });\r
-                       this.list項目リスト.Add(this.iBassRandom);\r
-                       this.iBassLight = new CItemToggle("Light", CDTXMania.Instance.ConfigIni.bLight.Bass,\r
-                               "ベースチップのないところでピッキングしても BAD になりません。",\r
-                               "Even if you pick without any chips, it doesn't become BAD.");\r
-                       this.list項目リスト.Add(this.iBassLight);\r
-                       this.iBassLeft = new CItemToggle("Left", CDTXMania.Instance.ConfigIni.bLeft.Bass,\r
-                               "ベースの RGB の並びが左右反転します。(左利きモード)",\r
-                               "Lane order 'R-G-B' becomes 'B-G-R' for lefty.");\r
-                       this.list項目リスト.Add(this.iBassLeft);\r
-\r
-                       this.iSystemSoundMonitorBass = new CItemToggle("BassMonitor", CDTXMania.Instance.ConfigIni.b演奏音を強調する.Bass,\r
-                       "ベース音モニタ:\n" +\r
-                       "ベース音を他の音より大きめの音量で発声します。\n" +\r
-                       "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                       "To enhance the bass chip sound (except autoplay).");\r
-                       this.list項目リスト.Add(this.iSystemSoundMonitorBass);\r
-\r
-                       this.iSystemMinComboBass = new CItemInteger("B-MinCombo", 1, 0x1869f, CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Bass,\r
-                               "表示可能な最小コンボ数(ベース):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the bass.\n" +\r
-                               "You can specify from 1 to 99999.");\r
-                       this.list項目リスト.Add(this.iSystemMinComboBass);\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iBassInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass,\r
-                               "ベースの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the bass input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value.");\r
-                       this.list項目リスト.Add(this.iBassInputAdjustTimeMs);\r
-\r
-                       this.iBassGoToKeyAssign = new CItemBase("Bass Keys", CItemBase.Eパネル種別.通常,\r
-                               "ベースのキー入力に関する項目を設定します。",\r
-                               "Settings for the bass key/pad inputs.");\r
-                       this.list項目リスト.Add(this.iBassGoToKeyAssign);\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Bass;\r
-               }\r
-               #endregion\r
-\r
-               /// <summary>Sud+Hidの初期値を返す</summary>\r
-               /// <param name="eInst"></param>\r
-               /// <returns>\r
-               /// 0: None\r
-               /// 1: Sudden\r
-               /// 2: Hidden\r
-               /// 3: Sud+Hid\r
-               /// 4: Semi-Invisible\r
-               /// 5: Full-Invisible\r
-               /// </returns>\r
-               private int getDefaultSudHidValue(E楽器パート eInst)\r
-               {\r
-                       int defvar;\r
-                       if (CDTXMania.Instance.ConfigIni.eInvisible[eInst] != EInvisible.OFF)\r
-                       {\r
-                               defvar = (int)CDTXMania.Instance.ConfigIni.eInvisible[eInst] + 3;\r
-                       }\r
-                       else\r
+                       get\r
                        {\r
-                               defvar = (CDTXMania.Instance.ConfigIni.bSudden[eInst] ? 1 : 0) +\r
-                                                (CDTXMania.Instance.ConfigIni.bHidden[eInst] ? 2 : 0);\r
+                               return this.list項目リスト[this.n現在の選択項目];\r
                        }\r
-                       return defvar;\r
                }\r
 \r
+               public int n現在の選択項目;\r
+\r
                /// <summary>\r
                /// ESC押下時の右メニュー描画\r
                /// </summary>\r
                public void tEsc押下()\r
                {\r
-                       if (this.b要素値にフォーカス中)               // #32059 2013.9.17 add yyagi\r
+                       if (this.b要素値にフォーカス中)\r
                        {\r
+                               // #32059 2013.9.17 add yyagi\r
                                this.b要素値にフォーカス中 = false;\r
                        }\r
 \r
                        if (this.eメニュー種別 == Eメニュー種別.KeyAssignSystem)\r
                        {\r
-                               t項目リストの設定_System();\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
                        else if (this.eメニュー種別 == Eメニュー種別.KeyAssignDrums)\r
                        {\r
-                               t項目リストの設定_Drums();\r
+                               t項目リストの設定(Eメニュー種別.Drums);\r
                        }\r
                        else if (this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar)\r
                        {\r
-                               t項目リストの設定_Guitar();\r
+                               t項目リストの設定(Eメニュー種別.Guitar);\r
                        }\r
                        else if (this.eメニュー種別 == Eメニュー種別.KeyAssignBass)\r
                        {\r
-                               t項目リストの設定_Bass();\r
+                               t項目リストの設定(Eメニュー種別.Bass);\r
                        }\r
-                       // これ以外なら何もしない\r
-               }\r
-               public void tEnter押下()\r
-               {\r
-                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                       if (this.b要素値にフォーカス中)\r
+                       if (this.eメニュー種別 == Eメニュー種別.DisplaySystem)\r
                        {\r
-                               this.b要素値にフォーカス中 = false;\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目].e種別 == CItemBase.E種別.整数)\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayDrums)\r
                        {\r
-                               this.b要素値にフォーカス中 = true;\r
+                               t項目リストの設定(Eメニュー種別.Drums);\r
                        }\r
-                       else if (this.b現在選択されている項目はReturnToMenuである)\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayGuitar)\r
                        {\r
-                               //this.tConfigIniへ記録する();\r
-                               //CONFIG中にスキン変化が発生すると面倒なので、一旦マスクした。\r
+                               t項目リストの設定(Eメニュー種別.Guitar);\r
                        }\r
-                       #region [ 個々のキーアサイン ]\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsLC)\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayBass)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.LC);\r
+                               t項目リストの設定(Eメニュー種別.Bass);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsHHC)\r
+               }\r
+\r
+               public bool tEnter押下()\r
+               {\r
+                       bool ret = false;\r
+                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+\r
+                       if (this.b要素値にフォーカス中)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.HH);\r
+                               this.b要素値にフォーカス中 = false;\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsHHO)\r
+                       else if (this.list項目リスト[this.n現在の選択項目] is COptionInteger)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.HHO);\r
+                               this.b要素値にフォーカス中 = true;\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsSD)\r
+                       else if (this.list項目リスト[this.n現在の選択項目] is IOptionList || this.list項目リスト[this.n現在の選択項目] is COptionBool)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.SD);\r
+                               this.list項目リスト[this.n現在の選択項目].OnNext();\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsBD)\r
+\r
+                       // #27029 2012.1.5 from\r
+                       if (\r
+                                       CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group &&\r
+                                       (\r
+                                       (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHHGroup ||\r
+                                        this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH)))\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.BD);\r
+                               // 変更禁止(何もしない)\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsHT)\r
+                       else\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.HT);\r
+                               if (b現在選択されている項目はReturnToMenuである && b楽器またはシステム用メニューである)\r
+                               {\r
+                                       ret = true;\r
+                               }\r
+                               this.list項目リスト[this.n現在の選択項目].OnEnter();\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsLT)\r
+                       return ret;\r
+               }\r
+\r
+               private void tGenerateSkinSample()\r
+               {\r
+                       string path = skinSubFolders[skins.Index];\r
+                       path = System.IO.Path.Combine(path, @"Graphics\ScreenTitle background.jpg");\r
+                       using (Bitmap bmSrc = new Bitmap(path))\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.LT);\r
+                               using (Bitmap bmDest = new Bitmap(bmSrc.Width / 4, bmSrc.Height / 4))\r
+                               {\r
+                                       using (Graphics g = Graphics.FromImage(bmDest))\r
+                                       {\r
+                                               g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
+                                               g.DrawImage(bmSrc, new Rectangle(0, 0, bmSrc.Width / 4, bmSrc.Height / 4),\r
+                                                               0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel);\r
+                                               TextureFactory.tテクスチャの解放(ref txSkinSample);\r
+                                               txSkinSample = TextureFactory.tテクスチャの生成(bmDest, false);\r
+                                       }\r
+                               }\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsFT)\r
+               }\r
+\r
+               // #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]\r
+               public void t項目リストの設定_Exit()\r
+               {\r
+                       CDTXMania.Instance.SaveConfig();\r
+                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
+               }\r
+\r
+               public void t項目リストの設定(Eメニュー種別 eMenu)\r
+               {\r
+                       this.list項目リスト.Clear();\r
+\r
+                       Func<EPad, string, string, COptionString> PadNotifier = (pad, lbl, expl) =>\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.FT);\r
-                       }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsCY)\r
+                               COptionString opt = new COptionString("");\r
+                               opt.Initialize(lbl, expl);\r
+                               opt.OnEnterDelegate = () =>\r
+                               {\r
+                                       CDTXMania.Instance.stageコンフィグ.tパッド選択通知(pad);\r
+                               };\r
+                               return opt;\r
+                       };\r
+\r
+                       if (eMenu == Eメニュー種別.DisplaySystem)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.CY);\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullScreen);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGA);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAVI);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullAVI);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bVSyncWait);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nBGAlpha);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nShowLagType);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eJudgePriority);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDebugInfo);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsRD)\r
+                       else if (eMenu == Eメニュー種別.DisplayDrums)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.RD);\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LC);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.SD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.FT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.CY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Drums);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsHP)                       // #27029 2012.1.4 from\r
-                       {                                                                                                                                                                                       //\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.DRUMS, EKeyConfigPad.HP); //\r
-                       }                                                                                                                                                                                       //\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarR)\r
+                       else if (eMenu == Eメニュー種別.DisplayGuitar)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.R);\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Guitar);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarG)\r
+                       else if (eMenu == Eメニュー種別.DisplayBass)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.G);\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Bass);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarB)\r
+                       else if (eMenu == Eメニュー種別.KeyAssignSystem)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.B);\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               list項目リスト.Add(PadNotifier(EPad.Capture, "Capture", Properties.Resources.strCfgKeyAssignキャプチャ説明));\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarPick)\r
+                       else if (eMenu == Eメニュー種別.KeyAssignDrums)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.Pick);\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               list項目リスト.Add(PadNotifier(EPad.LC, "LeftCymbal", Properties.Resources.strCfgKeyAssignLC));\r
+                               list項目リスト.Add(PadNotifier(EPad.HH, "HiHat(Close)", Properties.Resources.strCfgKeyAssignHH));\r
+                               list項目リスト.Add(PadNotifier(EPad.HHO, "HiHat(Open)", Properties.Resources.strCfgKeyAssignHHO));\r
+                               list項目リスト.Add(PadNotifier(EPad.SD, "Snare", Properties.Resources.strCfgKeyAssignSD));\r
+                               list項目リスト.Add(PadNotifier(EPad.BD, "Kick", Properties.Resources.strCfgKeyAssignBD));\r
+                               list項目リスト.Add(PadNotifier(EPad.HT, "HighTom", Properties.Resources.strCfgKeyAssignHT));\r
+                               list項目リスト.Add(PadNotifier(EPad.LT, "LowTom", Properties.Resources.strCfgKeyAssignLT));\r
+                               list項目リスト.Add(PadNotifier(EPad.FT, "FloorTom", Properties.Resources.strCfgKeyAssignFT));\r
+                               list項目リスト.Add(PadNotifier(EPad.CY, "Cymbal", Properties.Resources.strCfgKeyAssignCY));\r
+                               list項目リスト.Add(PadNotifier(EPad.RD, "RideCymbal", Properties.Resources.strCfgKeyAssignRD));\r
+                               list項目リスト.Add(PadNotifier(EPad.HP, "HiHatPedal", Properties.Resources.strCfgKeyAssignHP));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHHGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eFTGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eCYGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eBDGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bCymbalFree);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarWail)\r
+                       else if (eMenu == Eメニュー種別.KeyAssignGuitar)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.Wail);\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               list項目リスト.Add(PadNotifier(EPad.GtR, "R", Properties.Resources.strCfgKeyAssignGtR));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtG, "G", Properties.Resources.strCfgKeyAssignGtG));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtB, "B", Properties.Resources.strCfgKeyAssignGtB));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtPick, "Pick", Properties.Resources.strCfgKeyAssignGtPick));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtWail, "Wailing", Properties.Resources.strCfgKeyAssignGtWailing));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtDecide, "Decide", Properties.Resources.strCfgKeyAssignGtDecide));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtCancel, "Cancel", Properties.Resources.strCfgKeyAssignGtCancel));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarDecide)\r
+                       else if (eMenu == Eメニュー種別.KeyAssignBass)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.Decide);\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               list項目リスト.Add(PadNotifier(EPad.BsR, "R", Properties.Resources.strCfgKeyAssignBsR));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsG, "G", Properties.Resources.strCfgKeyAssignBsG));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsB, "B", Properties.Resources.strCfgKeyAssignBsB));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsPick, "Pick", Properties.Resources.strCfgKeyAssignBsPick));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsWail, "Wailing", Properties.Resources.strCfgKeyAssignBsWailing));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsDecide, "Decide", Properties.Resources.strCfgKeyAssignBsDecide));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsCancel, "Cancel", Properties.Resources.strCfgKeyAssignBsCancel));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarCancel)\r
+                       else if (eMenu == Eメニュー種別.System)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.GUITAR, EKeyConfigPad.Cancel);\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               COptionString enumsongs = new COptionString("");\r
+                               enumsongs.Initialize("EnumerateSongs", Properties.Resources.strCfgSysEnumSongs);\r
+                               list項目リスト.Add(enumsongs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDark);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nRisky);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eActiveInst);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTimeStretch);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStageFailed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bRandSubBox);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bWaveAdjust);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreSoundWeightMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreImageWeightMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGMPlay);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAudience);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDamageLevel);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bScoreIni);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nChipVolume);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nAutoVolume);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStoicMode);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bIsAutoResultCapture);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBufferedInput);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLog);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadSoundSpeed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSoundDeviceType);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.strASIODevice);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseOSTimer);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMasterVolume);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);\r
+                               list項目リスト.Add(skins);\r
+                               list項目リスト.Add(DisplayMenu.System);\r
+                               list項目リスト.Add(KeyAssignMenu.System);\r
+                               enumsongs.OnEnterDelegate = () =>\r
+                               {\r
+                                       if (CDTXMania.Instance.EnumSongs.IsEnumerating)\r
+                                       {\r
+                                               // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );\r
+                                               CDTXMania.Instance.EnumSongs.Abort();\r
+                                               CDTXMania.Instance.actEnumSongs.On非活性化();\r
+                                       }\r
+\r
+                                       CDTXMania.Instance.EnumSongs.StartEnumFromDisk();\r
+                                       CDTXMania.Instance.EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);\r
+                                       CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 = true;\r
+                                       CDTXMania.Instance.actEnumSongs.On活性化();\r
+                               };\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassR)\r
+                       else if (eMenu == Eメニュー種別.Drums)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.R);\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, AllAuto);\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LC);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HHO);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.SD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.FT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.CY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.RD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTight);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFillin);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDrumsHitSound);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
+                               list項目リスト.Add(DisplayMenu.Drums);\r
+                               list項目リスト.Add(KeyAssignMenu.Drums);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassG)\r
+                       else if (eMenu == Eメニュー種別.Guitar)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.G);\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Guitar, AllAuto);\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar);\r
+                               list項目リスト.Add(DisplayMenu.Guitar);\r
+                               list項目リスト.Add(KeyAssignMenu.Guitar);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassB)\r
+                       else if (eMenu == Eメニュー種別.Bass)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.B);\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Bass, AllAuto);\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass);\r
+                               list項目リスト.Add(DisplayMenu.Bass);\r
+                               list項目リスト.Add(KeyAssignMenu.Bass);\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassPick)\r
+                       OnListMenuの初期化();\r
+                       n現在の選択項目 = 0;\r
+                       eメニュー種別 = eMenu;\r
+               }\r
+\r
+               public void OnNext()\r
+               {\r
+                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                       if (b要素値にフォーカス中)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.Pick);\r
+                               list項目リスト[n現在の選択項目].OnPrevious();\r
+                               t要素値を上下に変更中の処理();\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassWail)\r
+                       else\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.Wail);\r
+                               n目標のスクロールカウンタ += 100;\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassDecide)\r
+               }\r
+\r
+               public void OnPrevious()\r
+               {\r
+                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                       if (b要素値にフォーカス中)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.Decide);\r
+                               list項目リスト[n現在の選択項目].OnNext();\r
+                               t要素値を上下に変更中の処理();\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassCancel)\r
+                       else\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.BASS, EKeyConfigPad.Cancel);\r
+                               n目標のスクロールカウンタ -= 100;\r
                        }\r
-                       else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignSystemCapture)\r
+               }\r
+\r
+               private void t要素値を上下に変更中の処理()\r
+               {\r
+                       if (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.nMasterVolume)\r
                        {\r
-                               CDTXMania.Instance.stageコンフィグ.tパッド選択通知(EKeyConfigPart.SYSTEM, EKeyConfigPad.Capture);\r
+                               // #33700 2014.4.26 yyagi\r
+                               CDTXMania.Instance.Sound管理.nMasterVolume = CDTXMania.Instance.ConfigIni.nMasterVolume;\r
                        }\r
-                       #endregion\r
-                       else\r
+               }\r
+\r
+               public override void On活性化()\r
+               {\r
+                       if (b活性化してない)\r
                        {\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
+                               this.list項目リスト = new List<COptionBase>();\r
+                               this.eメニュー種別 = Eメニュー種別.Unknown;\r
+                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));\r
+                               this.b要素値にフォーカス中 = false;\r
+                               this.n目標のスクロールカウンタ = 0;\r
+                               this.n現在のスクロールカウンタ = 0;\r
+                               this.nスクロール用タイマ値 = -1;\r
+                               this.ct三角矢印アニメ = new CCounter();\r
+\r
+                               DisplayMenu = new STDGBSValue<COptionLabel>();\r
+                               KeyAssignMenu = new STDGBSValue<COptionLabel>();\r
+                               ReturnToMenu = new STDGBSValue<COptionLabel>();\r
+                               for (EPart i = EPart.Drums; i <= EPart.System; ++i)\r
                                {\r
-                                       // 変更許可\r
-                                       this.list項目リスト[this.n現在の選択項目].tEnter押下();\r
+                                       DisplayMenu[i] = new COptionLabel("Display Options", "");\r
+                                       KeyAssignMenu[i] = new COptionLabel("Input Options", "");\r
+                                       ReturnToMenu[i] = new COptionLabel("<< Return to Menu", "");\r
                                }\r
 \r
-\r
-                               // Enter押下後の後処理\r
-\r
-                               if (this.list項目リスト[this.n現在の選択項目] == this.iSystemFullscreen)\r
+                               DisplayMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       CDTXMania.Instance.b次のタイミングで全画面_ウィンドウ切り替えを行う = true;\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemVSyncWait)\r
+                                       t項目リストの設定(Eメニュー種別.DisplayDrums);\r
+                               };\r
+                               DisplayMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;\r
-                                       CDTXMania.Instance.b次のタイミングで垂直帰線同期切り替えを行う = true;\r
-                               }\r
-                               #region [ AutoPlay #23886 2012.5.8 yyagi ]\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iDrumsAutoPlayAll)\r
+                                       t項目リストの設定(Eメニュー種別.DisplayGuitar);\r
+                               };\r
+                               DisplayMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のドラムパッドのAutoを切り替える(this.iDrumsAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON);\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iGuitarAutoPlayAll)\r
+                                       t項目リストの設定(Eメニュー種別.DisplayBass);\r
+                               };\r
+                               DisplayMenu.System.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のギターパッドのAutoを切り替える(this.iGuitarAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON);\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iBassAutoPlayAll)\r
+                                       t項目リストの設定(Eメニュー種別.DisplaySystem);\r
+                               };\r
+\r
+                               KeyAssignMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のベースパッドのAutoを切り替える(this.iBassAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON);\r
-                               }\r
-                               #endregion\r
-                               #region [ キーアサインへの遷移と脱出 ]\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemGoToKeyAssign)                    // #24609 2011.4.12 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignDrums);\r
+                               };\r
+                               KeyAssignMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_KeyAssignSystem();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignSystemReturnToMenu)    // #24609 2011.4.12 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignGuitar);\r
+                               };\r
+                               KeyAssignMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_System();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iDrumsGoToKeyAssign)                             // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignBass);\r
+                               };\r
+                               KeyAssignMenu.System.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_KeyAssignDrums();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignDrumsReturnToMenu)             // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignSystem);\r
+                               };\r
+\r
+                               ReturnToMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_Drums();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iGuitarGoToKeyAssign)                    // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Drums);\r
+                               };\r
+                               ReturnToMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_KeyAssignGuitar();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignGuitarReturnToMenu)    // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Guitar);\r
+                               };\r
+                               ReturnToMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_Guitar();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iBassGoToKeyAssign)                              // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Bass);\r
+                               };\r
+                               ReturnToMenu.System.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定_KeyAssignBass();\r
-                               }\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iKeyAssignBassReturnToMenu)              // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.System);\r
+                               };\r
+\r
+                               #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
+                               int ns = (CDTXMania.Instance.Skin.strSystemSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strSystemSkinSubfolders.Length;\r
+                               int nb = (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strBoxDefSkinSubfolders.Length;\r
+\r
+                               skinSubFolders = new string[ns + nb];\r
+                               skinInitial = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);\r
+                               int initIdx = 0;\r
+                               for (int i = 0; i < ns; i++)\r
                                {\r
-                                       t項目リストの設定_Bass();\r
+                                       skinSubFolders[i] = CDTXMania.Instance.Skin.strSystemSkinSubfolders[i];\r
                                }\r
-                               #endregion\r
-                               #region [ BDGroup #27029 2012.1.4 from ]\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemBDGroup)                                  // #27029 2012.1.4 from\r
+                               for (int i = 0; i < nb; i++)\r
                                {\r
-                                       if (this.iSystemBDGroup.n現在選択されている項目番号 == (int)EBDGroup.どっちもBD)\r
-                                       {\r
-                                               // #27029 2012.1.5 from: 変更前の状態をバックアップする。\r
-                                               CDTXMania.Instance.ConfigIni.BackupOf1BD = new CConfigIni.CBackupOf1BD()\r
-                                               {\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.Instance.ConfigIni.BackupOf1BD.eHHGroup;\r
-                                               this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int)CDTXMania.Instance.ConfigIni.BackupOf1BD.eHitSoundPriorityHH;\r
-\r
-                                               CDTXMania.Instance.ConfigIni.BackupOf1BD = null;\r
-                                       }\r
+                                       skinSubFolders[ns + i] = CDTXMania.Instance.Skin.strBoxDefSkinSubfolders[i];\r
                                }\r
-                               #endregion\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemUseBoxDefSkin)                    // #28195 2012.5.6 yyagi\r
+                               Array.Sort(skinSubFolders);\r
+                               skinNames = CSkin.GetSkinName(skinSubFolders);\r
+                               initIdx = Array.BinarySearch(skinSubFolders, skinInitial);\r
+                               if (initIdx < 0)\r
                                {\r
-                                       CSkin.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;\r
+                                       initIdx = 0;\r
                                }\r
-                               #region [ スキン項目でEnterを押下した場合に限り、スキンの縮小サンプルを生成する。]\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemSkinSubfolder)                    // #28195 2012.5.2 yyagi\r
+                               skins = new COptionStringList(skinNames[initIdx]);\r
+                               skins.Initialize("Skin", Properties.Resources.strCfgSysSkin, skinNames);\r
+\r
+                               skins.OnEnterDelegate = () =>\r
                                {\r
+                                       CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(skinSubFolders[skins.Index], true);\r
+                                       CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath.Value = skinSubFolders[skins.Index];\r
                                        tGenerateSkinSample();\r
-                               }\r
+                               };\r
                                #endregion\r
-                               #region [ 曲データ一覧の再読み込み ]\r
-                               else if (this.list項目リスト[this.n現在の選択項目] == this.iSystemReloadDTX)                                // #32081 2013.10.21 yyagi\r
-                               {\r
-                                       if (CDTXMania.Instance.EnumSongs.IsEnumerating)\r
-                                       {\r
-                                               // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );\r
-                                               CDTXMania.Instance.EnumSongs.Abort();\r
-                                               CDTXMania.Instance.actEnumSongs.On非活性化();\r
-                                       }\r
 \r
-                                       CDTXMania.Instance.EnumSongs.StartEnumFromDisk();\r
-                                       CDTXMania.Instance.EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);\r
-                                       CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 = true;\r
-                                       CDTXMania.Instance.actEnumSongs.On活性化();\r
-                               }\r
-                               #endregion\r
+                               // CONFIG脱出時にこの値から変更されているようなら\r
+                               // サウンドデバイスを再構築する\r
+                               this.InitialSystemSoundType = CDTXMania.Instance.ConfigIni.nSoundDeviceType;\r
+                               this.InitialWASAPIBufferSizeMs = CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs;\r
+                               this.InitialASIODevice = CDTXMania.Instance.ConfigIni.strASIODevice.Index;\r
+                               this.InitialUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
+\r
+                               // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、\r
+                               this.t項目リストの設定(Eメニュー種別.Bass);\r
+                               // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。\r
+                               this.t項目リストの設定(Eメニュー種別.Guitar);\r
+                               this.t項目リストの設定(Eメニュー種別.Drums);\r
+                               // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。\r
+                               this.t項目リストの設定(Eメニュー種別.System);\r
+\r
+                               base.On活性化();\r
                        }\r
                }\r
 \r
-               private void tGenerateSkinSample()\r
+               public override void On非活性化()\r
                {\r
-                       nSkinIndex = ((CItemList)this.list項目リスト[this.n現在の選択項目]).n現在選択されている項目番号;\r
-                       if (nSkinSampleIndex != nSkinIndex)\r
+                       if (b活性化してる)\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
-                                       TextureFactory.t安全にDisposeする(ref txSkinSample1);\r
-                               }\r
-                               txSkinSample1 = TextureFactory.tテクスチャの生成(bmDest, false);\r
-                               g.Dispose();\r
-                               bmDest.Dispose();\r
-                               bmSrc.Dispose();\r
-                               nSkinSampleIndex = nSkinIndex;\r
-                       }\r
-               }\r
+                               CDTXMania.Instance.SaveConfig();\r
+                               this.list項目リスト.Clear();\r
+                               this.ct三角矢印アニメ = null;\r
 \r
-               #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]\r
-               public void t項目リストの設定_Exit()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
-               }\r
-               public void t項目リストの設定_KeyAssignSystem()\r
-               {\r
-                       //this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignSystemReturnToMenu = new CItemBase("<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu.");\r
-                       this.list項目リスト.Add(this.iKeyAssignSystemReturnToMenu);\r
-                       this.iKeyAssignSystemCapture = new CItemBase("Capture",\r
-                               "キャプチャキー設定:\n" +\r
-                               "画面キャプチャのキーの割り当てを設定します。",\r
-                               "Capture key assign:\n" +\r
-                               "To assign key for screen capture.\n" +\r
-                               "(You can assign keyboard only. You can't use pads to capture screenshot.)");\r
-                       this.list項目リスト.Add(this.iKeyAssignSystemCapture);\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignSystem;\r
-               }\r
-               public void t項目リストの設定_KeyAssignDrums()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               OnListMenuの解放();\r
+                               prvFont.Dispose();\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignDrumsReturnToMenu = new CItemBase("<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsReturnToMenu);\r
-                       this.iKeyAssignDrumsLC = new CItemBase("LeftCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "左シンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for LeftCymbal button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsLC);\r
-                       this.iKeyAssignDrumsHHC = new CItemBase("HiHat(Close)",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイハット(クローズ)へのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HiHat(Close) button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsHHC);\r
-                       this.iKeyAssignDrumsHHO = new CItemBase("HiHat(Open)",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイハット(オープン)へのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HiHat(Open) button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsHHO);\r
-                       this.iKeyAssignDrumsSD = new CItemBase("Snare",\r
-                               "ドラムのキー設定:\n" +\r
-                               "スネアへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for Snare button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsSD);\r
-                       this.iKeyAssignDrumsBD = new CItemBase("Bass",\r
-                               "ドラムのキー設定:\n" +\r
-                               "バスドラムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for Bass button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsBD);\r
-                       this.iKeyAssignDrumsHT = new CItemBase("HighTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイタムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HighTom button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsHT);\r
-                       this.iKeyAssignDrumsLT = new CItemBase("LowTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ロータムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for LowTom button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsLT);\r
-                       this.iKeyAssignDrumsFT = new CItemBase("FloorTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "フロアタムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for FloorTom button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsFT);\r
-                       this.iKeyAssignDrumsCY = new CItemBase("RightCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "右シンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for RightCymbal button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsCY);\r
-                       this.iKeyAssignDrumsRD = new CItemBase("RideCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ライドシンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for RideCymbal button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsRD);\r
-                       this.iKeyAssignDrumsHP = new CItemBase("HiHatPedal",                                                                    // #27029 2012.1.4 from\r
-                               "ドラムのキー設定:\n" +                                                                                                                       //\r
-                               "ハイハットのフットペダルへのキーの割り当てを設定します。",                                                 //\r
-                               "Drums key assign:\n" +                                                                                                                         //\r
-                               "To assign key/pads for HiHatPedal button.");                                                                           //\r
-                       this.list項目リスト.Add(this.iKeyAssignDrumsHP);                                                                           //\r
+                               base.On非活性化();\r
+                               #region [ Skin変更 ]\r
+                               if (CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) != this.skinInitial)\r
+                               {\r
+                                       CDTXMania.Instance.stageChangeSkin.tChangeSkinMain();   // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
+                               }\r
+                               #endregion\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignDrums;\r
-               }\r
-               public void t項目リストの設定_KeyAssignGuitar()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
+                               // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。\r
+                               #region [ サウンドデバイス変更 ]\r
+                               if (InitialSystemSoundType != CDTXMania.Instance.ConfigIni.nSoundDeviceType ||\r
+                                               InitialWASAPIBufferSizeMs != CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs ||\r
+                                               InitialASIODevice != CDTXMania.Instance.ConfigIni.strASIODevice.Index ||\r
+                                               InitialUseOSTimer != CDTXMania.Instance.ConfigIni.bUseOSTimer)\r
+                               {\r
+                                       ESoundDeviceType soundDeviceType;\r
+                                       switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType.Value)\r
+                                       {\r
+                                               case ESoundDeviceTypeForConfig.DSound:\r
+                                                       soundDeviceType = ESoundDeviceType.DirectSound;\r
+                                                       break;\r
+                                               case ESoundDeviceTypeForConfig.ASIO:\r
+                                                       soundDeviceType = ESoundDeviceType.ASIO;\r
+                                                       break;\r
+                                               case ESoundDeviceTypeForConfig.WASAPI:\r
+                                                       soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
+                                                       break;\r
+                                               default:\r
+                                                       soundDeviceType = ESoundDeviceType.Unknown;\r
+                                                       break;\r
+                                       }\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignGuitarReturnToMenu = new CItemBase("<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarReturnToMenu);\r
-                       this.iKeyAssignGuitarR = new CItemBase("R",\r
-                               "ギターのキー設定:\n" +\r
-                               "Rボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for R button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarR);\r
-                       this.iKeyAssignGuitarG = new CItemBase("G",\r
-                               "ギターのキー設定:\n" +\r
-                               "Gボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for G button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarG);\r
-                       this.iKeyAssignGuitarB = new CItemBase("B",\r
-                               "ギターのキー設定:\n" +\r
-                               "Bボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for B button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarB);\r
-                       this.iKeyAssignGuitarPick = new CItemBase("Pick",\r
-                               "ギターのキー設定:\n" +\r
-                               "ピックボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for Pick button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarPick);\r
-                       this.iKeyAssignGuitarWail = new CItemBase("Wailing",\r
-                               "ギターのキー設定:\n" +\r
-                               "Wailingボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\nTo assign key/pads for Wailing button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarWail);\r
-                       this.iKeyAssignGuitarDecide = new CItemBase("Decide",\r
-                               "ギターのキー設定:\n" +\r
-                               "決定ボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\nTo assign key/pads for Decide button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarDecide);\r
-                       this.iKeyAssignGuitarCancel = new CItemBase("Cancel",\r
-                               "ギターのキー設定:\n" +\r
-                               "キャンセルボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for Cancel button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignGuitarCancel);\r
+                                       CDTXMania.Instance.Sound管理.t初期化(\r
+                                                       soundDeviceType,\r
+                                                       CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
+                                                       0,\r
+                                                       CDTXMania.Instance.ConfigIni.strASIODevice.Index,\r
+                                                       CDTXMania.Instance.ConfigIni.bUseOSTimer);\r
+                                       CDTXMania.Instance.ShowWindowTitleWithSoundType();\r
+                               }\r
+                               #endregion\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignGuitar;\r
-               }\r
-               public void t項目リストの設定_KeyAssignBass()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               #region [ サウンドのタイムストレッチモード変更 ]\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignBassReturnToMenu = new CItemBase("<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassReturnToMenu);\r
-                       this.iKeyAssignBassR = new CItemBase("R",\r
-                               "ベースのキー設定:\n" +\r
-                               "Rボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for R button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassR);\r
-                       this.iKeyAssignBassG = new CItemBase("G",\r
-                               "ベースのキー設定:\n" +\r
-                               "Gボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for G button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassG);\r
-                       this.iKeyAssignBassB = new CItemBase("B",\r
-                               "ベースのキー設定:\n" +\r
-                               "Bボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for B button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassB);\r
-                       this.iKeyAssignBassPick = new CItemBase("Pick",\r
-                               "ベースのキー設定:\n" +\r
-                               "ピックボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Pick button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassPick);\r
-                       this.iKeyAssignBassWail = new CItemBase("Wailing",\r
-                               "ベースのキー設定:\n" +\r
-                               "Wailingボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Wailing button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassWail);\r
-                       this.iKeyAssignBassDecide = new CItemBase("Decide",\r
-                               "ベースのキー設定:\n" +\r
-                               "決定ボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Decide button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassDecide);\r
-                       this.iKeyAssignBassCancel = new CItemBase("Cancel",\r
-                               "ベースのキー設定:\n" +\r
-                               "キャンセルボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Cancel button.");\r
-                       this.list項目リスト.Add(this.iKeyAssignBassCancel);\r
+                               FDK.CSound管理.bIsTimeStretch = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignBass;\r
-               }\r
-               #endregion\r
-               public void t次に移動()\r
-               {\r
-                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                       if (this.b要素値にフォーカス中)\r
-                       {\r
-                               this.list項目リスト[this.n現在の選択項目].t項目値を前へ移動();\r
-                               t要素値を上下に変更中の処理();\r
-                       }\r
-                       else\r
-                       {\r
-                               this.n目標のスクロールカウンタ += 100;\r
-                       }\r
-               }\r
-               public void t前に移動()\r
-               {\r
-                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
-                       if (this.b要素値にフォーカス中)\r
-                       {\r
-                               this.list項目リスト[this.n現在の選択項目].t項目値を次へ移動();\r
-                               t要素値を上下に変更中の処理();\r
-                       }\r
-                       else\r
-                       {\r
-                               this.n目標のスクロールカウンタ -= 100;\r
-                       }\r
-               }\r
-               private void t要素値を上下に変更中の処理()\r
-               {\r
-                       if (this.list項目リスト[this.n現在の選択項目] == this.iSystemMasterVolume)                          // #33700 2014.4.26 yyagi\r
-                       {\r
-                               CDTXMania.Instance.Sound管理.nMasterVolume = this.iSystemMasterVolume.n現在の値;\r
+                               #endregion\r
                        }\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
-               public override void On活性化()\r
+               public override void OnManagedリソースの作成()\r
                {\r
-                       if (this.b活性化してる)\r
-                               return;\r
-\r
-                       this.list項目リスト = new List<CItemBase>();\r
-                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
-\r
-                       #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
-                       int ns = (CDTXMania.Instance.Skin.strSystemSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strSystemSkinSubfolders.Length;\r
-                       int nb = (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strBoxDefSkinSubfolders.Length;\r
-                       skinSubFolders = new string[ns + nb];\r
-                       for (int i = 0; i < ns; i++)\r
+                       if (b活性化してる)\r
                        {\r
-                               skinSubFolders[i] = CDTXMania.Instance.Skin.strSystemSkinSubfolders[i];\r
+                               this.tx通常項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox.png"), false);\r
+                               this.txその他項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox other.png"), false);\r
+                               this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);\r
+                               // スキン選択時に動的に設定するため、ここでは初期化しない\r
+                               this.txSkinSample = null;\r
+                               base.OnManagedリソースの作成();\r
                        }\r
-                       for (int i = 0; i < nb; i++)\r
-                       {\r
-                               skinSubFolders[ns + i] = CDTXMania.Instance.Skin.strBoxDefSkinSubfolders[i];\r
-                       }\r
-                       skinSubFolder_org = CDTXMania.Instance.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.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));     // t項目リストの設定 の前に必要\r
-                       //                      this.listMenu = new List<stMenuItemRight>();\r
-\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
-                       this.iSystemSoundType_initial = this.iSystemSoundType.n現在選択されている項目番号; // CONFIGに入ったときの値を保持しておく\r
-                       this.iSystemWASAPIBufferSizeMs_initial = this.iSystemWASAPIBufferSizeMs.n現在の値;                          // CONFIG脱出時にこの値から変更されているようなら\r
-                       // this.iSystemASIOBufferSizeMs_initial = this.iSystemASIOBufferSizeMs.n現在の値;                           // サウンドデバイスを再構築する\r
-                       this.iSystemASIODevice_initial = this.iSystemASIODevice.n現在選択されている項目番号;       //\r
-                       this.iSystemSoundTimerType_initial = this.iSystemSoundTimerType.GetIndex();                             //\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
-                       OnListMenuの解放();\r
-                       prvFont.Dispose();\r
 \r
-                       base.On非活性化();\r
-                       #region [ Skin変更 ]\r
-                       if (CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) != this.skinSubFolder_org)\r
-                       {\r
-                               CDTXMania.Instance.stageChangeSkin.tChangeSkinMain();   // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
-                       }\r
-                       #endregion\r
-\r
-                       // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
-                       // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。\r
-                       #region [ サウンドデバイス変更 ]\r
-                       if (this.iSystemSoundType_initial != this.iSystemSoundType.n現在選択されている項目番号 ||\r
-                               this.iSystemWASAPIBufferSizeMs_initial != this.iSystemWASAPIBufferSizeMs.n現在の値 ||\r
-                               // this.iSystemASIOBufferSizeMs_initial != this.iSystemASIOBufferSizeMs.n現在の値 ||\r
-                               this.iSystemASIODevice_initial != this.iSystemASIODevice.n現在選択されている項目番号 ||\r
-                               this.iSystemSoundTimerType_initial != this.iSystemSoundTimerType.GetIndex())\r
-                       {\r
-                               ESoundDeviceType soundDeviceType;\r
-                               switch (this.iSystemSoundType.n現在選択されている項目番号)\r
-                               {\r
-                                       case 0:\r
-                                               soundDeviceType = ESoundDeviceType.DirectSound;\r
-                                               break;\r
-                                       case 1:\r
-                                               soundDeviceType = ESoundDeviceType.ASIO;\r
-                                               break;\r
-                                       case 2:\r
-                                               soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
-                                               break;\r
-                                       default:\r
-                                               soundDeviceType = ESoundDeviceType.Unknown;\r
-                                               break;\r
-                               }\r
-\r
-                               CDTXMania.Instance.Sound管理.t初期化(soundDeviceType,\r
-                                                                               this.iSystemWASAPIBufferSizeMs.n現在の値,\r
-                                                                               0,\r
-                                       // this.iSystemASIOBufferSizeMs.n現在の値,\r
-                                                                               this.iSystemASIODevice.n現在選択されている項目番号,\r
-                                                                               this.iSystemSoundTimerType.bON);\r
-                               CDTXMania.Instance.ShowWindowTitleWithSoundType();\r
-                       }\r
-                       #endregion\r
-                       #region [ サウンドのタイムストレッチモード変更 ]\r
-                       FDK.CSound管理.bIsTimeStretch = this.iSystemTimeStretch.bON;\r
-                       #endregion\r
-               }\r
-               public override void OnManagedリソースの作成()\r
-               {\r
-                       if (this.b活性化してない)\r
-                               return;\r
-\r
-                       this.tx通常項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox.png"), false);\r
-                       this.txその他項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox other.png"), false);\r
-                       this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);\r
-                       this.txSkinSample1 = null;              // スキン選択時に動的に設定するため、ここでは初期化しない\r
-                       base.OnManagedリソースの作成();\r
-               }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (this.b活性化してない)\r
-                               return;\r
-\r
-                       TextureFactory.tテクスチャの解放(ref this.txSkinSample1);\r
-                       TextureFactory.tテクスチャの解放(ref this.tx通常項目行パネル);\r
-                       TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);\r
-                       TextureFactory.tテクスチャの解放(ref this.tx三角矢印);\r
+                       if (b活性化してる)\r
+                       {\r
+                               TextureFactory.tテクスチャの解放(ref this.txSkinSample);\r
+                               TextureFactory.tテクスチャの解放(ref this.tx通常項目行パネル);\r
+                               TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);\r
+                               TextureFactory.tテクスチャの解放(ref this.tx三角矢印);\r
 \r
-                       base.OnManagedリソースの解放();\r
+                               base.OnManagedリソースの解放();\r
+                       }\r
                }\r
 \r
                private void OnListMenuの初期化()\r
@@ -2046,577 +754,305 @@ namespace DTXMania
                        {\r
                                for (int i = 0; i < listMenu.Length; i++)\r
                                {\r
-                                       if (listMenu[i].txParam != null)\r
-                                       {\r
-                                               listMenu[i].txParam.Dispose();\r
-                                       }\r
-                                       if (listMenu[i].txMenuItemRight != null)\r
-                                       {\r
-                                               listMenu[i].txMenuItemRight.Dispose();\r
-                                       }\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txParam);\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txParamColored);\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txMenuItemRight);\r
                                }\r
                                this.listMenu = null;\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
                        throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
                }\r
+\r
                public int t進行描画(bool b項目リスト側にフォーカスがある)\r
                {\r
-                       if (this.b活性化してない)\r
-                               return 0;\r
-\r
-                       // 進行\r
-\r
-                       #region [ 初めての進行描画 ]\r
-                       //-----------------\r
-                       if (base.b初めての進行描画)\r
-                       {\r
-                               this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               this.ct三角矢印アニメ.t開始(0, 9, 50, CDTXMania.Instance.Timer);\r
-\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       //-----------------\r
-                       #endregion\r
-\r
-                       this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;           // 記憶\r
-\r
-                       #region [ 項目スクロールの進行 ]\r
-                       //-----------------\r
-                       long n現在時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
-                       if (n現在時刻 < this.nスクロール用タイマ値) this.nスクロール用タイマ値 = n現在時刻;\r
-\r
-                       const int INTERVAL = 2; // [ms]\r
-                       while ((n現在時刻 - this.nスクロール用タイマ値) >= INTERVAL)\r
+                       if (this.b活性化してる)\r
                        {\r
-                               int n目標項目までのスクロール量 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));\r
-                               int n加速度 = 0;\r
-\r
-                               #region [ n加速度の決定;目標まで遠いほど加速する。]\r
+                               #region [ 初めての進行描画 ]\r
                                //-----------------\r
-                               if (n目標項目までのスクロール量 <= 100)\r
-                               {\r
-                                       n加速度 = 2;\r
-                               }\r
-                               else if (n目標項目までのスクロール量 <= 300)\r
-                               {\r
-                                       n加速度 = 3;\r
-                               }\r
-                               else if (n目標項目までのスクロール量 <= 500)\r
+                               if (base.b初めての進行描画)\r
                                {\r
-                                       n加速度 = 4;\r
-                               }\r
-                               else\r
-                               {\r
-                                       n加速度 = 8;\r
+                                       this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;\r
+                                       this.ct三角矢印アニメ.t開始(0, 9, 50, CDTXMania.Instance.Timer);\r
+\r
+                                       base.b初めての進行描画 = false;\r
                                }\r
                                //-----------------\r
                                #endregion\r
-                               #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]\r
+\r
+                               this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;       // 記憶\r
+\r
+                               #region [ 項目スクロールの進行 ]\r
                                //-----------------\r
-                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
+                               long n現在時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
+                               if (n現在時刻 < this.nスクロール用タイマ値) this.nスクロール用タイマ値 = n現在時刻;\r
+\r
+                               const int INTERVAL = 2; // [ms]\r
+                               while ((n現在時刻 - this.nスクロール用タイマ値) >= INTERVAL)\r
                                {\r
-                                       this.n現在のスクロールカウンタ += n加速度;\r
-                                       if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\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
-                                               // 目標を超えたら目標値で停止。\r
-                                               this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               n加速度 = 2;\r
                                        }\r
-                               }\r
-                               else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
-                               {\r
-                                       this.n現在のスクロールカウンタ -= n加速度;\r
+                                       else if (n目標項目までのスクロール量 <= 300)\r
+                                       {\r
+                                               n加速度 = 3;\r
+                                       }\r
+                                       else if (n目標項目までのスクロール量 <= 500)\r
+                                       {\r
+                                               n加速度 = 4;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               n加速度 = 8;\r
+                                       }\r
+                                       //-----------------\r
+                                       #endregion\r
+                                       #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]\r
+                                       //-----------------\r
                                        if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
                                        {\r
-                                               // 目標を超えたら目標値で停止。\r
-                                               this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               this.n現在のスクロールカウンタ += n加速度;\r
+                                               if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
+                                               {\r
+                                                       // 目標を超えたら目標値で停止。\r
+                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               }\r
+                                       }\r
+                                       else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
+                                       {\r
+                                               this.n現在のスクロールカウンタ -= n加速度;\r
+                                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
+                                               {\r
+                                                       // 目標を超えたら目標値で停止。\r
+                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               }\r
                                        }\r
-                               }\r
-                               //-----------------\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
+                                       #endregion\r
+                                       #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]\r
+                                       //-----------------\r
+                                       if (this.n現在のスクロールカウンタ >= 100)\r
                                        {\r
-                                               CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               this.n現在の選択項目 = this.t次の項目(this.n現在の選択項目);\r
+                                               this.n現在のスクロールカウンタ -= 100;\r
+                                               this.n目標のスクロールカウンタ -= 100;\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                               {\r
+                                                       CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               }\r
                                        }\r
-                               }\r
-                               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
+                                       else if (this.n現在のスクロールカウンタ <= -100)\r
                                        {\r
-                                               CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               this.n現在の選択項目 = this.t前の項目(this.n現在の選択項目);\r
+                                               this.n現在のスクロールカウンタ += 100;\r
+                                               this.n目標のスクロールカウンタ += 100;\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                               {\r
+                                                       CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               }\r
                                        }\r
+                                       //-----------------\r
+                                       #endregion\r
+\r
+                                       this.nスクロール用タイマ値 += INTERVAL;\r
                                }\r
                                //-----------------\r
                                #endregion\r
 \r
-                               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
+                               #region [ ▲印アニメの進行 ]\r
+                               if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
+                               {\r
+                                       this.ct三角矢印アニメ.t進行Loop();\r
+                               }\r
+                               #endregion\r
 \r
-                       // 描画\r
 \r
-                       this.ptパネルの基本座標[4].X = this.b項目リスト側にフォーカスがある ? 276 : 301;         // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。\r
+                               // 描画\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
+                               this.ptパネルの基本座標[4].X = this.b項目リスト側にフォーカスがある ? 276 : 301;\r
 \r
-                       for (int n行番号 = -4; n行番号 < 6; n行番号++)         // n行番号 == 0 がフォーカスされている項目パネル。\r
-                       {\r
-                               #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
+                               #region [ 計11個の項目パネルを描画する。]\r
                                //-----------------\r
-                               if (((n行番号 == -4) && (this.n現在のスクロールカウンタ > 0)) ||         // 上に飛び出そうとしている\r
-                                       ((n行番号 == +5) && (this.n現在のスクロールカウンタ < 0)))               // 下に飛び出そうとしている\r
+                               int nItem = this.n現在の選択項目;\r
+                               for (int i = 0; i < 4; i++)\r
                                {\r
-                                       nItem = this.t次の項目(nItem);\r
-                                       continue;\r
+                                       nItem = this.t前の項目(nItem);\r
                                }\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
+                               for (int n行番号 = -4; n行番号 < 6; n行番号++)\r
                                {\r
-                                       case CItemBase.Eパネル種別.通常:\r
+                                       // n行番号 == 0 がフォーカスされている項目パネル。\r
+                                       #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
+                                       if (((n行番号 == -4) && (this.n現在のスクロールカウンタ > 0)) ||\r
+                                                       ((n行番号 == +5) && (this.n現在のスクロールカウンタ < 0)))\r
+                                       {\r
+                                               nItem = this.t次の項目(nItem);\r
+                                               continue;\r
+                                       }\r
+                                       #endregion\r
+\r
+                                       int n移動元の行の基本位置 = n行番号 + 4;\r
+                                       int n移動先の行の基本位置 = (this.n現在のスクロールカウンタ <= 0) ? ((n移動元の行の基本位置 + 1) % 10) : (((n移動元の行の基本位置 - 1) + 10) % 10);\r
+                                       int x = this.ptパネルの基本座標[n移動元の行の基本位置].X + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].X - this.ptパネルの基本座標[n移動元の行の基本位置].X) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
+                                       int y = this.ptパネルの基本座標[n移動元の行の基本位置].Y + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].Y - this.ptパネルの基本座標[n移動元の行の基本位置].Y) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
+\r
+                                       #region [ 現在の行の項目パネル枠を描画。]\r
+                                       if (this.list項目リスト[nItem].type == EOptionType.Normal)\r
+                                       {\r
                                                if (this.tx通常項目行パネル != null)\r
+                                               {\r
                                                        this.tx通常項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
-                                               break;\r
-\r
-                                       case CItemBase.Eパネル種別.その他:\r
+                                               }\r
+                                       }\r
+                                       else if (this.list項目リスト[nItem].type == EOptionType.Other)\r
+                                       {\r
                                                if (this.txその他項目行パネル != null)\r
-                                                       this.txその他項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
-                                               break;\r
-                               }\r
-                               //-----------------\r
-                               #endregion\r
-                               #region [ 現在の行の項目名を描画。]\r
-                               //-----------------\r
-                               if (listMenu[nItem].txMenuItemRight != null)    // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用\r
-                               {\r
-                                       listMenu[nItem].txMenuItemRight.t2D描画(CDTXMania.Instance.Device, (x + 0x12) * Scale.X, (y + 12) * Scale.Y - 20);\r
-                               }\r
-                               else\r
-                               {\r
-                                       Bitmap bmpItem = prvFont.DrawPrivateFont(this.list項目リスト[nItem].str項目名, Color.White, Color.Black);\r
-                                       listMenu[nItem].txMenuItemRight = TextureFactory.tテクスチャの生成(bmpItem);\r
-                                       //                                      ctItem.t2D描画( CDTXMania.Instance.app.Device, ( x + 0x12 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );\r
-                                       //                                      TextureFactory.tテクスチャの解放( ref ctItem );\r
-                                       TextureFactory.t安全にDisposeする(ref bmpItem);\r
-                               }\r
-                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );\r
-                               //-----------------\r
-                               #endregion\r
-                               #region [ 現在の行の項目の要素を描画。]\r
-                               //-----------------\r
-                               string strParam = null;\r
-                               bool b強調 = false;\r
-                               switch (this.list項目リスト[nItem].e種別)\r
-                               {\r
-                                       case CItemBase.E種別.ONorOFFトグル:\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
-                                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );\r
-                                               strParam = ((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
-                                                               strParam = "ON";\r
-                                                               break;\r
-\r
-                                                       case CItemThreeState.E状態.不定:\r
-                                                               strParam = "- -";\r
-                                                               break;\r
-\r
-                                                       default:\r
-                                                               strParam = "OFF";\r
-                                                               break;\r
+                                                       this.txその他項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
                                                }\r
-                                               //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "ON" );\r
-                                               break;\r
-                                       //-----------------\r
-                                               #endregion\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
+                                       #region [ 現在の行の項目名を描画。]\r
+                                       if (listMenu[nItem].txMenuItemRight != null)\r
+                                       {\r
+                                               // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用\r
+                                               listMenu[nItem].txMenuItemRight.t2D描画(CDTXMania.Instance.Device, (x + 0x12) * Scale.X, (y + 12) * Scale.Y - 20);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               using (Bitmap bmpItem = prvFont.DrawPrivateFont(this.list項目リスト[nItem].label, Color.White, Color.Black))\r
                                                {\r
-                                                       double d = ((double)((CItemInteger)this.list項目リスト[nItem]).n現在の値) / 20.0;\r
-                                                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, d.ToString( "0.000" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = d.ToString("0.000");\r
+                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txMenuItemRight);\r
+                                                       listMenu[nItem].txMenuItemRight = TextureFactory.tテクスチャの生成(bmpItem);\r
                                                }\r
-                                               else if (this.list項目リスト[nItem] == this.iDrumsScrollSpeed || this.list項目リスト[nItem] == this.iGuitarScrollSpeed || this.list項目リスト[nItem] == this.iBassScrollSpeed)\r
+                                       }\r
+                                       #endregion\r
+\r
+                                       #region [ 現在の行の項目の要素を描画。]\r
+                                       string strParam = this.list項目リスト[nItem].ToString();\r
+                                       //bool b強調 = false;\r
+\r
+                                       #region [ 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。 #28195 2012.5.2 yyagi ]\r
+                                       if (this.list項目リスト[this.n現在の選択項目] == skins)\r
+                                       {\r
+                                               if (txSkinSample == null)\r
                                                {\r
-                                                       float f = (((CItemInteger)this.list項目リスト[nItem]).n現在の値 + 1) * 0.5f;\r
-                                                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, f.ToString( "x0.0" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = f.ToString("x0.0");\r
+                                                       tGenerateSkinSample();\r
                                                }\r
-                                               else\r
+                                               if (txSkinSample != null)\r
                                                {\r
-                                                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = ((CItemInteger)this.list項目リスト[nItem]).n現在の値.ToString();\r
+                                                       txSkinSample.t2D描画(CDTXMania.Instance.Device, 56 * Scale.X, 300 * Scale.Y);\r
                                                }\r
-                                               b強調 = (n行番号 == 0) && this.b要素値にフォーカス中;\r
-                                               break;\r
-                                       //-----------------\r
-                                               #endregion\r
-\r
-                                       case CItemBase.E種別.リスト:       // #28195 2012.5.2 yyagi: add Skin supports\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
+                                       }\r
+                                       #endregion\r
+\r
+                                       #endregion\r
+                                       int nIndex = this.list項目リスト[nItem].Index;\r
+                                       bool bColored = list項目リスト[nItem] is COptionInteger && n行番号 == 0 && b要素値にフォーカス中;\r
+                                       if (listMenu[nItem].nParam != nIndex ||\r
+                                               (listMenu[nItem].txParam == null) ||\r
+                                               (bColored && listMenu[nItem].txParamColored == null))\r
+                                       {\r
+                                               listMenu[nItem].nParam = nIndex;\r
+                                               listMenu[nItem].strParam = this.list項目リスト[nItem].ToString();\r
+                                               using (Bitmap bmpStr = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
                                                {\r
-                                                       CItemList list = (CItemList)this.list項目リスト[nItem];\r
-                                                       //CDTXMania.Instance.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );\r
-                                                       strParam = list.list項目値[list.n現在選択されている項目番号];\r
-\r
-                                                       #region [ 必要な場合に、Skinのサンプルを生成・描画する。#28195 2012.5.2 yyagi ]\r
-                                                       if (this.list項目リスト[this.n現在の選択項目] == this.iSystemSkinSubfolder)\r
+                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParam);\r
+                                                       listMenu[nItem].txParam = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                                       if (bColored)\r
                                                        {\r
-                                                               tGenerateSkinSample();          // 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。\r
-                                                               if (txSkinSample1 != null)\r
+                                                               using (Bitmap bmpStrColored = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed))\r
                                                                {\r
-                                                                       txSkinSample1.t2D描画(CDTXMania.Instance.Device, 56 * Scale.X, 300 * Scale.Y);\r
+                                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParamColored);\r
+                                                                       listMenu[nItem].txParamColored = TextureFactory.tテクスチャの生成(bmpStrColored, false);\r
                                                                }\r
                                                        }\r
-                                                       #endregion\r
-                                                       break;\r
                                                }\r
-                                       //-----------------\r
-                                               #endregion\r
-                               }\r
-                               if (b強調)\r
-                               {\r
-                                       Bitmap bmpStr = b強調 ?\r
-                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
-                                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                               }\r
-                               else\r
-                               {\r
-                                       int nIndex = this.list項目リスト[nItem].GetIndex();\r
-                                       if (listMenu[nItem].nParam != nIndex || listMenu[nItem].txParam == null)\r
-                                       {\r
-                                               stMenuItemRight stm = listMenu[nItem];\r
-                                               stm.nParam = nIndex;\r
-                                               object o = this.list項目リスト[nItem].obj現在値();\r
-                                               stm.strParam = (o == null) ? "" : o.ToString();\r
-\r
-                                               Bitmap bmpStr =\r
-                                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                                               stm.txParam = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+                                       }\r
 \r
-                                               listMenu[nItem] = stm;\r
+                                       if (bColored)\r
+                                       {\r
+                                               listMenu[nItem].txParamColored.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               listMenu[nItem].txParam.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
                                        }\r
-                                       listMenu[nItem].txParam.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
+                                       nItem = this.t次の項目(nItem);\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
+                               #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]\r
+                               if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
+                               {\r
+                                       int x;\r
+                                       int y_upper;\r
+                                       int y_lower;\r
 \r
-                               // 位置決定。\r
+                                       // 位置決定。\r
 \r
-                               if (this.b要素値にフォーカス中)\r
-                               {\r
-                                       x = 528;        // 要素値の上下あたり。\r
-                                       y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
-                                       y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
-                               }\r
-                               else\r
-                               {\r
-                                       x = 276;        // 項目名の上下あたり。\r
-                                       y_upper = 186 - this.ct三角矢印アニメ.n現在の値;\r
-                                       y_lower = 254 + this.ct三角矢印アニメ.n現在の値;\r
-                               }\r
+                                       if (this.b要素値にフォーカス中)\r
+                                       {\r
+                                               // 要素値の上下あたり。\r
+                                               x = 528;\r
+                                               y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
+                                               y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               // 項目名の上下あたり。\r
+                                               x = 276;\r
+                                               y_upper = 186 - this.ct三角矢印アニメ.n現在の値;\r
+                                               y_lower = 254 + this.ct三角矢印アニメ.n現在の値;\r
+                                       }\r
 \r
-                               // 描画。\r
+                                       // 描画。\r
 \r
-                               if (this.tx三角矢印 != null)\r
-                               {\r
-                                       this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y_upper * Scale.Y, new Rectangle(0, 0, (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
-                                       this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y_lower * Scale.Y, new Rectangle(0, (int)(16 * Scale.Y), (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
+                                       if (this.tx三角矢印 != null)\r
+                                       {\r
+                                               this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
+                                                       y_upper * Scale.Y,\r
+                                                       new Rectangle(0, 0, (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
+                                               this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
+                                                       y_lower * Scale.Y,\r
+                                                       new Rectangle(0, (int)(16 * Scale.Y), (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
+                                       }\r
                                }\r
+                               #endregion\r
                        }\r
-                       //-----------------\r
-                       #endregion\r
                        return 0;\r
                }\r
 \r
 \r
                // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private enum Eメニュー種別\r
+               internal enum Eメニュー種別\r
                {\r
                        System,\r
                        Drums,\r
                        Guitar,\r
                        Bass,\r
-                       KeyAssignSystem,                // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン\r
+                       // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン\r
+                       KeyAssignSystem,\r
                        KeyAssignDrums,\r
                        KeyAssignGuitar,\r
                        KeyAssignBass,\r
+                       DisplaySystem,\r
+                       DisplayDrums,\r
+                       DisplayGuitar,\r
+                       DisplayBass,\r
                        Unknown\r
-\r
-               }\r
-\r
-               private bool b項目リスト側にフォーカスがある;\r
-               private bool b要素値にフォーカス中;\r
-               private CCounter ct三角矢印アニメ;\r
-               private Eメニュー種別 eメニュー種別;\r
-               #region [ キーコンフィグ ]\r
-               private CItemBase iKeyAssignSystemCapture;                      // #24609\r
-               private CItemBase iKeyAssignSystemReturnToMenu;         // #24609\r
-               private CItemBase iKeyAssignBassB;\r
-               private CItemBase iKeyAssignBassCancel;\r
-               private CItemBase iKeyAssignBassDecide;\r
-               private CItemBase iKeyAssignBassG;\r
-               private CItemBase iKeyAssignBassPick;\r
-               private CItemBase iKeyAssignBassR;\r
-               private CItemBase iKeyAssignBassReturnToMenu;\r
-               private CItemBase iKeyAssignBassWail;\r
-               private CItemBase iKeyAssignDrumsBD;\r
-               private CItemBase iKeyAssignDrumsCY;\r
-               private CItemBase iKeyAssignDrumsFT;\r
-               private CItemBase iKeyAssignDrumsHHC;\r
-               private CItemBase iKeyAssignDrumsHHO;\r
-               private CItemBase iKeyAssignDrumsHT;\r
-               private CItemBase iKeyAssignDrumsLC;\r
-               private CItemBase iKeyAssignDrumsLT;\r
-               private CItemBase iKeyAssignDrumsRD;\r
-               private CItemBase iKeyAssignDrumsReturnToMenu;\r
-               private CItemBase iKeyAssignDrumsSD;\r
-               private CItemBase iKeyAssignDrumsHP;    // #27029 2012.1.4 from\r
-               private CItemBase iKeyAssignGuitarB;\r
-               private CItemBase iKeyAssignGuitarCancel;\r
-               private CItemBase iKeyAssignGuitarDecide;\r
-               private CItemBase iKeyAssignGuitarG;\r
-               private CItemBase iKeyAssignGuitarPick;\r
-               private CItemBase iKeyAssignGuitarR;\r
-               private CItemBase iKeyAssignGuitarReturnToMenu;\r
-               private CItemBase iKeyAssignGuitarWail;\r
-               #endregion\r
-               private CItemToggle iLogOutputLog;\r
-               private CItemToggle iSystemAdjustWaves;\r
-               private CItemToggle iSystemAudienceSound;\r
-               private CItemInteger iSystemAutoChipVolume;\r
-               private CItemToggle iSystemAVI;\r
-               private CItemToggle iSystemForceAVIFullscreen;\r
-               private CItemToggle iSystemBGA;\r
-               //              private CItemToggle iSystemGraph; #24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行\r
-               private CItemInteger iSystemBGAlpha;\r
-               private CItemToggle iSystemBGMSound;\r
-               private CItemInteger iSystemChipVolume;\r
-               private CItemList iSystemCYGroup;\r
-               private CItemToggle iSystemCymbalFree;\r
-               private CItemList iSystemDamageLevel;\r
-               private CItemToggle iSystemDebugInfo;\r
-               //              private CItemToggle iSystemDrums;\r
-               private CItemToggle iSystemFillIn;\r
-               private CItemList iSystemFTGroup;\r
-               private CItemToggle iSystemFullscreen;\r
-               //              private CItemToggle iSystemGuitar;\r
-               private CItemList iSystemHHGroup;\r
-               private CItemList iSystemBDGroup;               // #27029 2012.1.4 from\r
-               private CItemToggle iSystemHitSound;\r
-               private CItemList iSystemHitSoundPriorityCY;\r
-               private CItemList iSystemHitSoundPriorityFT;\r
-               private CItemList iSystemHitSoundPriorityHH;\r
-               private CItemInteger iSystemMinComboBass;\r
-               private CItemInteger iSystemMinComboDrums;\r
-               private CItemInteger iSystemMinComboGuitar;\r
-               private CItemInteger iSystemPreviewImageWait;\r
-               private CItemInteger iSystemPreviewSoundWait;\r
-               private CItemToggle iSystemRandomFromSubBox;\r
-               private CItemBase iSystemReturnToMenu;\r
-               private CItemToggle iSystemSaveScore;\r
-               private CItemToggle iSystemSoundMonitorBass;\r
-               private CItemToggle iSystemSoundMonitorDrums;\r
-               private CItemToggle iSystemSoundMonitorGuitar;\r
-               private CItemToggle iSystemStageFailed;\r
-               private CItemToggle iSystemStoicMode;\r
-               private CItemToggle iSystemVSyncWait;\r
-               private CItemList iSystemShowLag;                                       // #25370 2011.6.3 yyagi\r
-               private CItemToggle iSystemAutoResultCapture;           // #25399 2011.6.9 yyagi\r
-               private CItemToggle iSystemBufferedInput;\r
-               private CItemInteger iSystemRisky;                                      // #23559 2011.7.27 yyagi\r
-               private CItemList iSystemSoundType;                                     // #24820 2013.1.3 yyagi\r
-               private CItemInteger iSystemWASAPIBufferSizeMs;         // #24820 2013.1.15 yyagi\r
-               //              private CItemInteger iSystemASIOBufferSizeMs;           // #24820 2013.1.3 yyagi\r
-               private CItemList iSystemASIODevice;                            // #24820 2013.1.17 yyagi\r
-\r
-               private int iSystemSoundType_initial;\r
-               private int iSystemWASAPIBufferSizeMs_initial;\r
-               //              private int iSystemASIOBufferSizeMs_initial;\r
-               private int iSystemASIODevice_initial;\r
-               private CItemToggle iSystemSoundTimerType;                      // #33689 2014.6.17 yyagi\r
-               private int iSystemSoundTimerType_initial;                      // #33689 2014.6.17 yyagi\r
-\r
-               private CItemToggle iSystemTimeStretch;                         // #23664 2013.2.24 yyagi\r
-               private CItemList iSystemJudgePosGuitar;                        // #33891 2014.6.26 yyagi\r
-               private CItemList iSystemJudgePosBass;                          // #33891 2014.6.26 yyagi\r
-\r
-               //private CItemList iDrumsJudgeDispPriority;    //\r
-               //private CItemList iGuitarJudgeDispPriority;   //\r
-               //private CItemList iBassJudgeDispPriority;             //\r
-               private CItemList iSystemJudgeDispPriority;\r
-\r
-               private List<CItemBase> list項目リスト;\r
-               private long nスクロール用タイマ値;\r
-               private int n現在のスクロールカウンタ;\r
-               private int n目標のスクロールカウンタ;\r
-               private Point[] ptパネルの基本座標 = new Point[] { new Point(0x12d, 3), new Point(0x12d, 0x35), new Point(0x12d, 0x67), new Point(0x12d, 0x99), new Point(0x114, 0xcb), new Point(0x12d, 0xfd), new Point(0x12d, 0x12f), new Point(0x12d, 0x161), new Point(0x12d, 0x193), new Point(0x12d, 0x1c5) };\r
-               private CTextureAf txその他項目行パネル;\r
-               private CTexture tx三角矢印;\r
-               private CTextureAf tx通常項目行パネル;\r
-\r
-               private CPrivateFastFont prvFont;\r
-               //private List<string> list項目リスト_str最終描画名;\r
-               private struct stMenuItemRight\r
-               {\r
-                       //      public string strMenuItem;\r
-                       public CTexture txMenuItemRight;\r
-                       public int nParam;\r
-                       public string strParam;\r
-                       public CTexture txParam;\r
                }\r
-               private stMenuItemRight[] listMenu;\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
-               private CItemBase iSystemGoToKeyAssign;         // #24609\r
-\r
-               private CItemList iSystemGRmode;\r
-\r
-               //private CItemToggle iBassAutoPlay;\r
-               private CItemThreeState iBassAutoPlayAll;                       // #23886 2012.5.8 yyagi\r
-               private CItemToggle iBassR;                                                     //\r
-               private CItemToggle iBassG;                                                     //\r
-               private CItemToggle iBassB;                                                     //\r
-               private CItemToggle iBassPick;                                          //\r
-               private CItemToggle iBassW;                                                     //\r
-\r
-               //private CItemToggle iBassHidden;\r
-               private CItemToggle iBassLeft;\r
-               private CItemToggle iBassLight;\r
-               private CItemList iBassPosition;\r
-               private CItemList iBassRandom;\r
-               private CItemBase iBassReturnToMenu;\r
-               private CItemToggle iBassReverse;\r
-               private CItemInteger iBassScrollSpeed;\r
-               //private CItemToggle iBassSudden;\r
-               private CItemList iCommonDark;\r
-               private CItemInteger iCommonPlaySpeed;\r
-               //              private CItemBase iCommonReturnToMenu;\r
-\r
-               private CItemThreeState iDrumsAutoPlayAll;\r
-               private CItemToggle iDrumsBass;\r
-               private CItemList iDrumsComboPosition;\r
-               private CItemToggle iDrumsCymbalRide;\r
-               private CItemToggle iDrumsFloorTom;\r
-               //private CItemToggle iDrumsHidden;\r
-               private CItemToggle iDrumsHighTom;\r
-               private CItemToggle iDrumsHiHat;\r
-               private CItemToggle iDrumsLeftCymbal;\r
-               private CItemToggle iDrumsLowTom;\r
-               private CItemList iDrumsPosition;\r
-               private CItemBase iDrumsReturnToMenu;\r
-               private CItemToggle iDrumsReverse;\r
-               private CItemInteger iDrumsScrollSpeed;\r
-               private CItemToggle iDrumsSnare;\r
-               //private CItemToggle iDrumsSudden;\r
-               private CItemToggle iDrumsTight;\r
-               private CItemToggle iGraph;        // #24074 2011.01.23 add ikanick\r
-               private CItemList iDrumsLanePosition;\r
-\r
-               //private CItemToggle iGuitarAutoPlay;\r
-               private CItemThreeState iGuitarAutoPlayAll;                     // #23886 2012.5.8 yyagi\r
-               private CItemToggle iGuitarR;                                           //\r
-               private CItemToggle iGuitarG;                                           //\r
-               private CItemToggle iGuitarB;                                           //\r
-               private CItemToggle iGuitarPick;                                        //\r
-               private CItemToggle iGuitarW;                                           //\r
-\r
-               //private CItemToggle iGuitarHidden;\r
-               private CItemToggle iGuitarLeft;\r
-               private CItemToggle iGuitarLight;\r
-               private CItemList iGuitarPosition;\r
-               private CItemList iGuitarRandom;\r
-               private CItemBase iGuitarReturnToMenu;\r
-               private CItemToggle iGuitarReverse;\r
-               private CItemInteger iGuitarScrollSpeed;\r
-               //private CItemToggle iGuitarSudden;\r
-               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
-               private CItemList iDrumsSudHid;                                         // #32072 2013.9.20 yyagi\r
-               private CItemList iGuitarSudHid;                                        // #32072 2013.9.20 yyagi\r
-               private CItemList iBassSudHid;                                          // #32072 2013.9.20 yyagi\r
-               private CItemBase iSystemReloadDTX;                                     // #32081 2013.10.21 yyagi\r
-               private CItemInteger iSystemMasterVolume;                       // #33700 2014.4.26 yyagi\r
-               private CItemToggle iSystemLoadsoundspeed;                      // #36046 2016.2.21 ikanick\r
 \r
                private int t前の項目(int nItem)\r
                {\r
@@ -2626,6 +1062,7 @@ namespace DTXMania
                        }\r
                        return nItem;\r
                }\r
+\r
                private int t次の項目(int nItem)\r
                {\r
                        if (++nItem >= this.list項目リスト.Count)\r
@@ -2634,216 +1071,5 @@ namespace DTXMania
                        }\r
                        return nItem;\r
                }\r
-               private void t全部のドラムパッドのAutoを切り替える(bool bAutoON)\r
-               {\r
-                       this.iDrumsLeftCymbal.bON = this.iDrumsHiHat.bON = this.iDrumsSnare.bON = this.iDrumsBass.bON = this.iDrumsHighTom.bON = this.iDrumsLowTom.bON = this.iDrumsFloorTom.bON = this.iDrumsCymbalRide.bON = bAutoON;\r
-               }\r
-               private void t全部のギターパッドのAutoを切り替える(bool bAutoON)\r
-               {\r
-                       this.iGuitarR.bON = this.iGuitarG.bON = this.iGuitarB.bON = this.iGuitarPick.bON = this.iGuitarW.bON = bAutoON;\r
-               }\r
-               private void t全部のベースパッドのAutoを切り替える(bool bAutoON)\r
-               {\r
-                       this.iBassR.bON = this.iBassG.bON = this.iBassB.bON = this.iBassPick.bON = this.iBassW.bON = bAutoON;\r
-               }\r
-               private void tConfigIniへ記録する()\r
-               {\r
-                       switch (this.eメニュー種別)\r
-                       {\r
-                               case Eメニュー種別.System:\r
-                                       this.tConfigIniへ記録する_System();\r
-                                       this.tConfigIniへ記録する_KeyAssignSystem();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Drums:\r
-                                       this.tConfigIniへ記録する_Drums();\r
-                                       this.tConfigIniへ記録する_KeyAssignDrums();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Guitar:\r
-                                       this.tConfigIniへ記録する_Guitar();\r
-                                       this.tConfigIniへ記録する_KeyAssignGuitar();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Bass:\r
-                                       this.tConfigIniへ記録する_Bass();\r
-                                       this.tConfigIniへ記録する_KeyAssignBass();\r
-                                       return;\r
-                       }\r
-               }\r
-               private void tConfigIniへ記録する_KeyAssignBass()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する_KeyAssignDrums()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する_KeyAssignGuitar()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する_KeyAssignSystem()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する_System()\r
-               {\r
-                       CDTXMania.Instance.ConfigIni.eDark = (Eダークモード)this.iCommonDark.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.n演奏速度 = this.iCommonPlaySpeed.n現在の値;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bGuitar有効 = (((this.iSystemGRmode.n現在選択されている項目番号 + 1) / 2) == 1);\r
-                       //this.iSystemGuitar.bON;\r
-                       CDTXMania.Instance.ConfigIni.bDrums有効 = (((this.iSystemGRmode.n現在選択されている項目番号 + 1) % 2) == 1);\r
-                       //this.iSystemDrums.bON;\r
-\r
-                       CDTXMania.Instance.ConfigIni.b全画面モード = this.iSystemFullscreen.bON;\r
-                       CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 = this.iSystemStageFailed.bON;\r
-                       CDTXMania.Instance.ConfigIni.bランダムセレクトで子BOXを検索対象とする = this.iSystemRandomFromSubBox.bON;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bWave再生位置自動調整機能有効 = this.iSystemAdjustWaves.bON;\r
-                       CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;\r
-                       CDTXMania.Instance.ConfigIni.bバッファ入力を行う = this.iSystemBufferedInput.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAVI有効 = this.iSystemAVI.bON;\r
-                       CDTXMania.Instance.ConfigIni.bForceAVIFullscreen = this.iSystemForceAVIFullscreen.bON;\r
-                       CDTXMania.Instance.ConfigIni.bBGA有効 = this.iSystemBGA.bON;\r
-                       //                      CDTXMania.Instance.ConfigIni.bGraph有効 = this.iSystemGraph.bON;#24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行\r
-                       CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = this.iSystemPreviewSoundWait.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = this.iSystemPreviewImageWait.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = this.iSystemDebugInfo.bON;\r
-                       CDTXMania.Instance.ConfigIni.n背景の透過度 = this.iSystemBGAlpha.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.bBGM音を発声する = this.iSystemBGMSound.bON;\r
-                       CDTXMania.Instance.ConfigIni.b歓声を発声する = this.iSystemAudienceSound.bON;\r
-                       CDTXMania.Instance.ConfigIni.eダメージレベル = (Eダメージレベル)this.iSystemDamageLevel.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.bScoreIniを出力する = this.iSystemSaveScore.bON;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bログ出力 = this.iLogOutputLog.bON;\r
-                       CDTXMania.Instance.ConfigIni.n手動再生音量 = this.iSystemChipVolume.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.n自動再生音量 = this.iSystemAutoChipVolume.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.bストイックモード = this.iSystemStoicMode.bON;\r
-\r
-                       CDTXMania.Instance.ConfigIni.nShowLagType = this.iSystemShowLag.n現在選択されている項目番号;                               // #25370 2011.6.3 yyagi\r
-                       CDTXMania.Instance.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON;                                  // #25399 2011.6.9 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                                                          // #23559 2011.7.27 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderFullName = skinSubFolders[nSkinIndex];                               // #28195 2012.5.2 yyagi\r
-                       CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderFullName, true);\r
-                       CDTXMania.Instance.ConfigIni.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;                                                            // #28195 2012.5.6 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.nSoundDeviceType = this.iSystemSoundType.n現在選択されている項目番号;         // #24820 2013.1.3 yyagi\r
-                       CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs = this.iSystemWASAPIBufferSizeMs.n現在の値;                                // #24820 2013.1.15 yyagi\r
-                       //                      CDTXMania.Instance.ConfigIni.nASIOBufferSizeMs = this.iSystemASIOBufferSizeMs.n現在の値;                                    // #24820 2013.1.3 yyagi\r
-                       CDTXMania.Instance.ConfigIni.nASIODevice = this.iSystemASIODevice.n現在選択されている項目番号;                     // #24820 2013.1.17 yyagi\r
-                       CDTXMania.Instance.ConfigIni.bUseOSTimer = this.iSystemSoundTimerType.bON;                                                              // #33689 2014.6.17 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.bTimeStretch = this.iSystemTimeStretch.bON;                                                                        // #23664 2013.2.24 yyagi\r
-                       //Trace.TraceInformation( "saved" );\r
-                       //Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) );\r
-                       //Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
-                       //Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
-                       CDTXMania.Instance.ConfigIni.nMasterVolume = this.iSystemMasterVolume.n現在の値;                                                    // #33700 2014.4.26 yyagi\r
-                       CDTXMania.Instance.ConfigIni.e判定表示優先度 = (E判定表示優先度)this.iSystemJudgeDispPriority.n現在選択されている項目番号;\r
-\r
-                       CDTXMania.Instance.ConfigIni.b曲読み込みを高速化する = this.iSystemLoadsoundspeed.bON;// #36046 2016.2.21 ikanick\r
-                       CDTXMania.Instance.ConfigIni.bGraph = this.iGraph.bON;// #24074 2011.01.23 add ikanick\r
-\r
-               }\r
-               private void tConfigIniへ記録する_Bass()\r
-               {\r
-                       //CDTXMania.Instance.ConfigIni.bAutoPlay.Bass = this.iBassAutoPlay.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsR = this.iBassR.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsG = this.iBassG.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsB = this.iBassB.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick = this.iBassPick.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsW = this.iBassW.bON;\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass = this.iBassScrollSpeed.n現在の値;\r
-                       // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bSudden.Bass = (this.iBassSudHid.n現在選択されている項目番号 == 1 || this.iBassSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bHidden.Bass = (this.iBassSudHid.n現在選択されている項目番号 == 2 || this.iBassSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       if (this.iBassSudHid.n現在選択されている項目番号 == 4) CDTXMania.Instance.ConfigIni.eInvisible.Bass = EInvisible.SEMI;     // "S-Invisible"\r
-                       else if (this.iBassSudHid.n現在選択されている項目番号 == 5) CDTXMania.Instance.ConfigIni.eInvisible.Bass = EInvisible.FULL;        // "F-Invisible"\r
-                       else CDTXMania.Instance.ConfigIni.eInvisible.Bass = EInvisible.OFF;\r
-                       CDTXMania.Instance.ConfigIni.bReverse.Bass = this.iBassReverse.bON;\r
-                       CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass = (E判定文字表示位置)this.iBassPosition.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eRandom.Bass = (Eランダムモード)this.iBassRandom.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.bLight.Bass = this.iBassLight.bON;\r
-                       CDTXMania.Instance.ConfigIni.bLeft.Bass = this.iBassLeft.bON;\r
-                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass = this.iBassInputAdjustTimeMs.n現在の値;               // #23580 2011.1.3 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON;\r
-                       CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.e判定位置.Bass = (E判定位置)this.iSystemJudgePosBass.n現在選択されている項目番号;                                     // #33891 2014.6.26 yyagi\r
-                       //CDTXMania.Instance.ConfigIni.e判定表示優先度.Bass = (E判定表示優先度) this.iBassJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               private void tConfigIniへ記録する_Drums()\r
-               {\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LC = this.iDrumsLeftCymbal.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HH = this.iDrumsHiHat.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.SD = this.iDrumsSnare.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BD = this.iDrumsBass.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HT = this.iDrumsHighTom.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LT = this.iDrumsLowTom.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.FT = this.iDrumsFloorTom.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.CY = this.iDrumsCymbalRide.bON;\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = this.iDrumsScrollSpeed.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置)this.iDrumsComboPosition.n現在選択されている項目番号;\r
-                       // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bSudden.Drums = (this.iDrumsSudHid.n現在選択されている項目番号 == 1 || this.iDrumsSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bHidden.Drums = (this.iDrumsSudHid.n現在選択されている項目番号 == 2 || this.iDrumsSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       if (this.iDrumsSudHid.n現在選択されている項目番号 == 4) CDTXMania.Instance.ConfigIni.eInvisible.Drums = EInvisible.SEMI;   // "S-Invisible"\r
-                       else if (this.iDrumsSudHid.n現在選択されている項目番号 == 5) CDTXMania.Instance.ConfigIni.eInvisible.Drums = EInvisible.FULL;      // "F-Invisible"\r
-                       else CDTXMania.Instance.ConfigIni.eInvisible.Drums = EInvisible.OFF;\r
-                       CDTXMania.Instance.ConfigIni.bReverse.Drums = this.iDrumsReverse.bON;\r
-                       CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums = (E判定文字表示位置)this.iDrumsPosition.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.bTight = this.iDrumsTight.bON;\r
-                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums = this.iDrumsInputAdjustTimeMs.n現在の値;             // #23580 2011.1.3 yyagi\r
-                       \r
-                       CDTXMania.Instance.ConfigIni.eHHGroup = (EHHGroup)this.iSystemHHGroup.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eFTGroup = (EFTGroup)this.iSystemFTGroup.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eCYGroup = (ECYGroup)this.iSystemCYGroup.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eBDGroup = (EBDGroup)this.iSystemBDGroup.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位)this.iSystemHitSoundPriorityHH.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位)this.iSystemHitSoundPriorityFT.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位)this.iSystemHitSoundPriorityCY.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.bフィルイン有効 = this.iSystemFillIn.bON;\r
-                       CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums = this.iSystemSoundMonitorDrums.bON;\r
-                       CDTXMania.Instance.ConfigIni.bドラム打音を発声する = this.iSystemHitSound.bON;\r
-                       CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Drums = this.iSystemMinComboDrums.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.bシンバルフリー = this.iSystemCymbalFree.bON;\r
-\r
-                       CDTXMania.Instance.ConfigIni.eDark = (Eダークモード)this.iCommonDark.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                          // #23559 2911.7.27 yyagi\r
-                       //CDTXMania.Instance.ConfigIni.e判定表示優先度.Drums = (E判定表示優先度) this.iDrumsJudgeDispPriority.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 = (Eドラムレーン表示位置)this.iDrumsLanePosition.n現在選択されている項目番号;\r
-               }\r
-               private void tConfigIniへ記録する_Guitar()\r
-               {\r
-                       //CDTXMania.Instance.ConfigIni.bAutoPlay.Guitar = this.iGuitarAutoPlay.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtR = this.iGuitarR.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtG = this.iGuitarG.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtB = this.iGuitarB.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick = this.iGuitarPick.bON;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtW = this.iGuitarW.bON;\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar = this.iGuitarScrollSpeed.n現在の値;\r
-                       // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bSudden.Guitar = (this.iGuitarSudHid.n現在選択されている項目番号 == 1 || this.iGuitarSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.Instance.ConfigIni.bHidden.Guitar = (this.iGuitarSudHid.n現在選択されている項目番号 == 2 || this.iGuitarSudHid.n現在選択されている項目番号 == 3) ? true : false;\r
-                       if (this.iGuitarSudHid.n現在選択されている項目番号 == 4) CDTXMania.Instance.ConfigIni.eInvisible.Guitar = EInvisible.SEMI; // "S-Invisible"\r
-                       else if (this.iGuitarSudHid.n現在選択されている項目番号 == 5) CDTXMania.Instance.ConfigIni.eInvisible.Guitar = EInvisible.FULL;    // "F-Invisible"\r
-                       else CDTXMania.Instance.ConfigIni.eInvisible.Guitar = EInvisible.OFF;\r
-                       CDTXMania.Instance.ConfigIni.bReverse.Guitar = this.iGuitarReverse.bON;\r
-                       CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar = (E判定文字表示位置)this.iGuitarPosition.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.eRandom.Guitar = (Eランダムモード)this.iGuitarRandom.n現在選択されている項目番号;\r
-                       CDTXMania.Instance.ConfigIni.bLight.Guitar = this.iGuitarLight.bON;\r
-                       CDTXMania.Instance.ConfigIni.bLeft.Guitar = this.iGuitarLeft.bON;\r
-                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar = this.iGuitarInputAdjustTimeMs.n現在の値;   // #23580 2011.1.3 yyagi\r
-\r
-                       CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数.Guitar = this.iSystemMinComboGuitar.n現在の値;\r
-                       CDTXMania.Instance.ConfigIni.b演奏音を強調する.Guitar = this.iSystemSoundMonitorGuitar.bON;\r
-                       CDTXMania.Instance.ConfigIni.e判定位置.Guitar = (E判定位置)this.iSystemJudgePosGuitar.n現在選択されている項目番号;                                 // #33891 2014.6.26 yyagi\r
-                       //CDTXMania.Instance.ConfigIni.e判定表示優先度.Guitar = (E判定表示優先度) this.iGuitarJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
diff --git a/DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs b/DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs
new file mode 100644 (file)
index 0000000..c7bcd88
--- /dev/null
@@ -0,0 +1,1108 @@
+using System.Collections.Generic;\r
+using System.Threading;\r
+using System.Runtime.Serialization;\r
+using System;\r
+using FDK;\r
+\r
+namespace DTXMania\r
+{\r
+       /// <summary>\r
+       /// DataContract はフィールドまたはプロパティを XML にシリアライズできます。\r
+       /// DataMember が付いているメンバだけがシリアライズされます。シリアライズ可能な型については MSDN を参照してください。\r
+       /// DataMember が付いていないメンバはデシリアライズ時に別途指定される既定値になります。\r
+       /// これらは OnDeserialized 属性がついたメソッドで処理します。\r
+       /// \r
+       /// ---- 重要 ----\r
+       /// ・新しいバージョンで EnumMember, DataMember の 変数名を変更しないでください。\r
+       ///   変更しても以前の値を保持したい場合は Name プロパティ (EnumMember の場合 Value プロパティ) に前の名前を入力してください。\r
+       ///   (例 : [DataMember(Name="old_hoge")]。\r
+       /// ・DataMember の 型を変更しないでください。\r
+       /// ・使用しなくなった DataMember を削除しないでください。\r
+       /// ・デシリアライズで例外が起きた場合 Config.xml はリセットされます。\r
+       ///  \r
+       /// ---- 新しくオプションを追加する場合 ----\r
+       /// ・変数名は原則英語としてください。\r
+       /// ・DTXMania の新しいバージョンで DataMember を追加する場合 Order 属性値を設定してください。\r
+       ///  値は他の DataMember の Order 値の中でもっとも大きい値 +1 (無い場合 1 あるいは DTXMania のバージョン) としてください。\r
+       ///  (例: [DataMember(Order=1 / Order=105 etc.. )]public OptionInteger new_hoge;\r
+       ///  異なる DataMember が同じ Order 値を持っていても構いません。\r
+       /// ・DataMember に関連する型には原則 DataContract が必要です (enum など)。\r
+       ///  これがないと正しくシリアライズ / デシリアライズできません。\r
+       /// ・メンバは Deserializing メソッドでインスタンスを生成してください。\r
+       /// ・DefaultDeserializer で説明文や制約を設定 (Initialize メソッド) してください。\r
+       ///  ラベルや説明文は xml には書き出されませんので、デシリアライズ後にこの処理が必要です。\r
+       ///  このとき Initialize しようとしている値が null でないかチェックして、\r
+       ///  null であれば必ず Deserializing メソッド内と同様にインスタンスを生成してください。\r
+       /// ・CActConfigList で新しく追加した項目を list に追加してください。\r
+       /// </summary>\r
+       [DataContract]\r
+       public class CConfigXml : IExtensibleDataObject\r
+       {\r
+               public static readonly int AssignableCodes = 16;\r
+\r
+               /// <summary>\r
+               /// ExtensibleDataObject はラウンドトリップを有効にします。\r
+               /// 前のバージョンの DTXMania で新しい Config.xml を読み込んだ時でも\r
+               /// デシリアライズされなかったメンバの情報は失われません。\r
+               /// </summary>\r
+               private ExtensionDataObject extobj;\r
+               public ExtensionDataObject ExtensionData\r
+               {\r
+                       get\r
+                       {\r
+                               return extobj;\r
+                       }\r
+                       set\r
+                       {\r
+                               extobj = value;\r
+                       }\r
+               }\r
+\r
+               [DataMember]\r
+               public COptionBool bFullAVI;\r
+               [DataMember]\r
+               public COptionBool bAVI;\r
+               [DataMember]\r
+               public COptionBool bBGA;\r
+               [DataMember]\r
+               public COptionBool bBGMPlay;\r
+               [DataMember]\r
+               public COptionBool bLog;\r
+               [DataMember]\r
+               public COptionBool bLogDTX;\r
+               [DataMember]\r
+               public COptionBool bLogEnumerateSongs;\r
+               [DataMember]\r
+               public COptionBool bLogCreateRelease;\r
+               [DataMember]\r
+               public COptionEnum<EJudgeDisplayPriority> eJudgePriority;\r
+               [DataMember]\r
+               public COptionBool bScoreIni;\r
+               [DataMember]\r
+               public COptionBool bStageFailed;\r
+               [DataMember]\r
+               // #29500 2012.9.11 kairera0467 TIGHTモード\r
+               public COptionBool bTight;\r
+               [DataMember]\r
+               public COptionBool bWaveAdjust;\r
+               [DataMember]\r
+               public COptionBool bCymbalFree;\r
+               [DataMember]\r
+               public COptionBool bStoicMode;\r
+               [DataMember]\r
+               public COptionBool bDrumsHitSound;\r
+               [DataMember]\r
+               public COptionBool bFillin;\r
+               [DataMember]\r
+               public COptionBool bRandSubBox;\r
+               [DataMember]\r
+               public COptionBool bDebugInfo;\r
+               [DataMember]\r
+               public COptionBool bAudience;\r
+               [DataMember]\r
+               public COptionBool bVSyncWait;\r
+               [DataMember]\r
+               public COptionBool bItalicFontSongSelect;\r
+               [DataMember]\r
+               public COptionBool bBoldFontSongSelect;\r
+               [DataMember]\r
+               public COptionBool bFullScreen;\r
+               [DataMember]\r
+               public COptionBool bViewerVSyncWait;\r
+               [DataMember]\r
+               public COptionBool bViewerShowDebugStatus;\r
+               [DataMember]\r
+               public COptionBool bViewerTimeStretch;\r
+               [DataMember]\r
+               public COptionBool bViewerDrumsActive;\r
+               [DataMember]\r
+               public COptionBool bViewerGuitarActive;\r
+               [DataMember]\r
+               public COptionBool bBufferedInput;\r
+               [DataMember]\r
+               // #25399 2011.6.9 yyagi リザルト画像自動保存機能ON/OFF\r
+               public COptionBool bIsAutoResultCapture;\r
+               [DataMember]\r
+               // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可)\r
+               public COptionBool bIsEnabledSystemMenu;\r
+               [DataMember]\r
+               // #28195 2012.5.6 yyagi box.defによるスキン切替機能を使用するか否か\r
+               public COptionBool bUseBoxDefSkin;\r
+               public bool bConfigIniが存在している;\r
+               [DataMember]\r
+               public COptionBool bLoadSoundSpeed;\r
+               [DataMember]\r
+               // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可\r
+               public COptionBool bIsAllowedDoubleClickFullscreen;\r
+               [DataMember]\r
+               // #33689 2014.6.6 yyagi 演奏タイマーの種類,初期値はfalse (FDKのタイマー。FROM氏考案の独自タイマー)\r
+               public COptionBool bUseOSTimer;\r
+               [DataMember]\r
+               // #24820\r
+               public COptionBool bDynamicBassMixerManagement;\r
+               [DataMember]\r
+               // #23664 2013.2.24 yyagi ピッチ変更無しで再生速度を変更するかどうか,初期値はfalse (再生速度変更を、ピッチ変更にて行う)\r
+               public COptionBool bTimeStretch;\r
+\r
+\r
+               [DataMember]\r
+               public COptionInteger nBGAlpha;\r
+               [DataMember]\r
+               public Coordinates.CRect rcWindow;\r
+               [DataMember]\r
+               public Coordinates.CRect rcViewerWindow;\r
+               [DataMember]\r
+               public COptionInteger nMasterVolume;\r
+               [DataMember]\r
+               public COptionInteger nSleepUnfocusMs;\r
+               [DataMember]\r
+               public COptionInteger nSleepPerFrameMs;\r
+               [DataMember]\r
+               public COptionInteger nPlaySpeed;\r
+               [DataMember]\r
+               public COptionInteger nPreSoundWeightMs;\r
+               [DataMember]\r
+               public COptionInteger nPreImageWeightMs;\r
+               [DataMember]\r
+               public COptionInteger nAutoVolume;\r
+               [DataMember]\r
+               public COptionInteger nChipVolume;\r
+               [DataMember]\r
+               public COptionInteger nFontSizeDotSongSelect;\r
+               [DataMember]\r
+               // #23559 2011.6.20 yyagi Riskyでの残ミス数。0で閉店\r
+               public COptionInteger nRisky;\r
+               [DataMember]\r
+               // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップ再表示期間\r
+               public COptionInteger nChipDisplayTimeMs;\r
+               [DataMember]\r
+               // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップフェードアウト時間\r
+               public COptionInteger nChipFadeoutTimeMs;\r
+               [DataMember]\r
+               // #28228 2012.5.1 yyagi レーン毎の最大同時発音数 \r
+               // #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。\r
+               // #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。\r
+               public COptionInteger nPoliphonicSounds;\r
+               [DataMember]\r
+               // #24820 2013.1.15 yyagi WASAPIのバッファサイズ 初期値は50(0で自動設定)\r
+               public COptionInteger nWASAPIBufferSizeMs;\r
+\r
+\r
+               [DataMember]\r
+               public COptionEnum<ECYGroup> eCYGroup;\r
+               [DataMember]\r
+               public COptionEnum<EDark> eDark;\r
+               [DataMember]\r
+               public COptionEnum<EFTGroup> eFTGroup;\r
+               [DataMember]\r
+               public COptionEnum<EHHGroup> eHHGroup;\r
+               [DataMember]\r
+               // #27029 2012.1.4 from HHPedalとBassPedalのグルーピング\r
+               public COptionEnum<EBDGroup> eBDGroup;\r
+               [DataMember]\r
+               public COptionEnum<EHitSoundPriority> eHitSoundPriorityCY;\r
+               [DataMember]\r
+               public COptionEnum<EHitSoundPriority> eHitSoundPriorityFT;\r
+               [DataMember]\r
+               public COptionEnum<EHitSoundPriority> eHitSoundPriorityHH;\r
+               [DataMember]\r
+               public COptionEnum<EActiveInstrument> eActiveInst;\r
+               [DataMember]\r
+               // #25370 2011.6.3 yyagi ズレ時間表示\r
+               public COptionEnum<EShowLagType> nShowLagType;\r
+               [DataMember]\r
+               // #24820 2012.12.23 yyagi 初期値はACM | #31927 2013.8.25 yyagi OSにより初期値変更\r
+               // 出力サウンドデバイス(0=ACM(にしたいが設計がきつそうならDirectShow), 1=ASIO, 2=WASAPI)\r
+               public COptionEnum<ESoundDeviceTypeForConfig> nSoundDeviceType;\r
+               [DataMember]\r
+               // #27029 2012.1.5 from:\r
+               // BDGroup が FP|BD→FP&BD に変化した際に自動変化するパラメータの値のバックアップ。FP&BD→FP|BD の時に元に戻す。\r
+               // これらのバックアップ値は、BDGroup が FP&BD 状態の時にのみ Config.ini に出力され、BDGroup が FP|BD に戻ったら Config.ini から消える。\r
+               public COptionEnum<EHHGroup> Backup1BDHHGroup;\r
+               [DataMember]\r
+               public COptionEnum<EHitSoundPriority> Backup1BDPriotiry;\r
+               [DataMember]\r
+               public COptionEnum<EDamage> eDamageLevel;\r
+\r
+               [DataMember]\r
+               public COptionString strDTXManiaVersion;\r
+               [DataMember]\r
+               public COptionString strSongDataPath;\r
+               [DataMember]\r
+               public COptionString strFontSongSelect;\r
+               [DataMember]\r
+               // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名\r
+               public COptionString strSystemSkinSubfolderPath;\r
+\r
+               [DataMember]\r
+               // #24820 2013.1.17 yyagi ASIOデバイス\r
+               public COptionStringList strASIODevice;\r
+\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bLight;\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bReverse;\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bGraph;\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bEmphasizePlaySound;\r
+               [DataMember]\r
+               public STDGBSValue<COptionEnum<EAutoGhostData>> eAutoGhost;\r
+               [DataMember]\r
+               public STDGBSValue<COptionEnum<ETargetGhostData>> eTargetGhost;\r
+               [DataMember]\r
+               public STDGBSValue<COptionEnum<ERandom>> eRandom;\r
+               [DataMember]\r
+               public STDGBSValue<COptionEnum<ESudHidInv>> eSudHidInv;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> nMinComboDisp;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> nScrollSpeed;\r
+               [DataMember]\r
+               // #23580\r
+               public STDGBSValue<COptionInteger> nInputAdjustTimeMs;\r
+               [DataMember]\r
+               // #31602\r
+               public STDGBSValue<COptionInteger> nJudgeLinePosOffset;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> nViewerScrollSpeed;\r
+               [DataMember]\r
+               // #31602\r
+               public STDGBSValue<COptionFloat> fJudgeLinePosOffsetBase;\r
+\r
+               [DataMember]\r
+               public COptionPadBool bAutoPlay;\r
+\r
+               [DataMember]\r
+               // #23857 2011.1.31 yyagi VelocityMin\r
+               public STPadValue<COptionInteger> nVelocityMin;\r
+               [DataMember]\r
+               public STPadValue<COptionKeyAssign[]> KeyAssign;\r
+               [DataMember]\r
+               public STJudgeValue<COptionInteger> nHitRange;\r
+               [DataMember]\r
+               public COptionDictionary<int, string> dicJoystick;\r
+\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bDisplayCombo;\r
+               [DataMember]\r
+               public STDGBSValue<COptionBool> bDisplayJudge;\r
+\r
+               /// <summary>\r
+               /// 楽器左端座標。ここを基準に各パーツを配置する。\r
+               /// </summary>\r
+               [DataMember]\r
+               public STDGBSValue<STInstValue<COptionInteger>> cdInstX;\r
+               [DataMember]\r
+               public STInstValue<COptionInteger> cdDebugX;\r
+               [DataMember]\r
+               public STInstValue<COptionInteger> cdDebugY;\r
+               [DataMember]\r
+               public STInstValue<COptionInteger> cdMovieX;\r
+               [DataMember]\r
+               public STInstValue<COptionInteger> cdMovieY;\r
+               [DataMember]\r
+               public STDGBSValue<STInstValue<COptionInteger>> cdComboX;\r
+               [DataMember]\r
+               public STDGBSValue<STInstValue<COptionInteger>> cdComboY;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> cdJudgeLineY;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> cdJudgeY;\r
+               [DataMember]\r
+               public STLaneValue<COptionInteger> cdLaneOrder;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> nSuddenFrom;\r
+               [DataMember]\r
+               public STDGBSValue<COptionInteger> nHiddenFrom;\r
+\r
+\r
+               public int GetLaneX(ELane e)\r
+               {\r
+                       EPart p = EPart.Drums;\r
+                       ELane start = ELane.DrumsLaneMin;\r
+                       ELane end = ELane.DrumsLaneMax;\r
+                       if (e >= ELane.GuitarLaneMin && e < ELane.GuitarLaneMax)\r
+                       {\r
+                               p = EPart.Guitar;\r
+                               start = ELane.GuitarLaneMin;\r
+                               end = ELane.GuitarLaneMax;\r
+                       }\r
+                       if (e >= ELane.BassLaneMin && e < ELane.BassLaneMax)\r
+                       {\r
+                               p = EPart.Bass;\r
+                               start = ELane.BassLaneMin;\r
+                               end = ELane.BassLaneMax;\r
+                       }\r
+                       int ret = cdInstX[p][eActiveInst];\r
+                       int order = cdLaneOrder[e];\r
+                       for (ELane t = start; t < end; ++t)\r
+                       {\r
+                               if (cdLaneOrder[t] < order)\r
+                               {\r
+                                       ret += GetLaneW(t);\r
+                               }\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public int GetLaneW(ELane e)\r
+               {\r
+                       switch (e)\r
+                       {\r
+                               case ELane.LC:\r
+                               case ELane.CY:\r
+                                       return 85;\r
+                               case ELane.BD:\r
+                                       return 99;\r
+                       }\r
+                       return 72;\r
+               }\r
+\r
+               public void AdjustLaneOrders(EPart p)\r
+               {\r
+                       ELane min = ELane.DrumsLaneMin;\r
+                       ELane max = ELane.DrumsLaneMax;\r
+                       if (p == EPart.Guitar)\r
+                       {\r
+                               min = ELane.GuitarLaneMin;\r
+                               max = ELane.GuitarLaneMax;\r
+                       }\r
+                       else if (p == EPart.Bass)\r
+                       {\r
+                               min = ELane.BassLaneMin;\r
+                               max = ELane.BassLaneMax;\r
+                       }\r
+\r
+                       bool[] used = new bool[max - min];\r
+                       for (ELane t = min; t < max; ++t)\r
+                       {\r
+                               used[cdLaneOrder[t]] = true;\r
+                       }\r
+                       for (int i = 0; i < used.Length; ++i)\r
+                       {\r
+                               if (!used[i])\r
+                               {\r
+                                       for (ELane t = min; t < max; ++t)\r
+                                       {\r
+                                               for (ELane t2 = t + 1; t2 < max; ++t2)\r
+                                               {\r
+                                                       if (cdLaneOrder[t].Value == cdLaneOrder[t2].Value)\r
+                                                       {\r
+                                                               cdLaneOrder[t].Value = (int)(min + i);\r
+                                                               used[i] = true;\r
+                                                               break;\r
+                                                       }\r
+                                               }\r
+                                               if (used[i])\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               [OnDeserializing]\r
+               public void Deserializing(StreamingContext sc)\r
+               {\r
+                       // #xxxxx 2011.11.27 yyagi add\r
+                       // #23568 2010.11.04 ikanick add\r
+                       // #34069 2014.7.23 yyagi 初回起動時のwindow sizeは、CDTXMania側で設定する(-> 1280x720にする)\r
+                       // #30675 2013.02.04 ikanick add\r
+                       // #23580 2011.1.3 yyagi\r
+                       // #31602 2013.6.23 yyagi\r
+                       //this.strDTXManiaのバージョン = "Unknown";\r
+\r
+                       // bool\r
+                       bFullScreen = new COptionBool(false);\r
+                       bVSyncWait = new COptionBool(true);\r
+                       bStageFailed = new COptionBool(true);\r
+                       bFullAVI = new COptionBool(false);\r
+                       bAVI = new COptionBool(true);\r
+                       bBGA = new COptionBool(true);\r
+                       bFillin = new COptionBool(true);\r
+                       bLogDTX = new COptionBool(true);\r
+                       bLogEnumerateSongs = new COptionBool(true);\r
+                       bLogCreateRelease = new COptionBool(true);\r
+                       bCymbalFree = new COptionBool(false);\r
+                       bStoicMode = new COptionBool(false);\r
+                       bItalicFontSongSelect = new COptionBool(false);\r
+                       bWaveAdjust = new COptionBool(true);\r
+                       bBGMPlay = new COptionBool(true);\r
+                       bDrumsHitSound = new COptionBool(true);\r
+                       bAudience = new COptionBool(true);\r
+                       bScoreIni = new COptionBool(true);\r
+                       bRandSubBox = new COptionBool(true);\r
+                       bBoldFontSongSelect = new COptionBool(true);\r
+                       bDebugInfo = new COptionBool(false);\r
+                       bLog = new COptionBool(true);\r
+                       bAutoPlay = new COptionPadBool();\r
+                       for (EPad pad = EPad.Min; pad < EPad.Max; ++pad)\r
+                       {\r
+                               bAutoPlay[pad] = new COptionBool(false);\r
+                       }\r
+                       bViewerVSyncWait = new COptionBool(true);\r
+                       bViewerShowDebugStatus = new COptionBool(true);\r
+                       bViewerTimeStretch = new COptionBool(false);\r
+                       bViewerDrumsActive = new COptionBool(true);\r
+                       bViewerGuitarActive = new COptionBool(true);\r
+                       bLoadSoundSpeed = new COptionBool(true);\r
+                       bIsAutoResultCapture = new COptionBool(false);\r
+                       bBufferedInput = new COptionBool(true);\r
+                       bIsAllowedDoubleClickFullscreen = new COptionBool(true);\r
+                       bIsEnabledSystemMenu = new COptionBool(true);\r
+                       bUseBoxDefSkin = new COptionBool(true);\r
+                       bTight = new COptionBool(false);\r
+                       bUseOSTimer = new COptionBool(false);\r
+                       bDynamicBassMixerManagement = new COptionBool(true);\r
+                       bTimeStretch = new COptionBool(false);\r
+                       nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI : ESoundDeviceTypeForConfig.DSound);\r
+\r
+                       // string\r
+                       strSongDataPath = new COptionString(@".\");\r
+                       strFontSongSelect = new COptionString("MS PGothic");\r
+                       strDTXManiaVersion = new COptionString(CDTXMania.VERSION);\r
+                       strSystemSkinSubfolderPath = new COptionString("");\r
+\r
+                       // enum\r
+                       eDamageLevel = new COptionEnum<EDamage>(EDamage.Normal);\r
+                       eJudgePriority = new COptionEnum<EJudgeDisplayPriority>(EJudgeDisplayPriority.Under);\r
+                       eCYGroup = new COptionEnum<ECYGroup>(ECYGroup.None);\r
+                       eDark = new COptionEnum<EDark>(EDark.Off);\r
+                       eFTGroup = new COptionEnum<EFTGroup>(EFTGroup.None);\r
+                       eHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);\r
+                       eBDGroup = new COptionEnum<EBDGroup>(EBDGroup.None);\r
+                       Backup1BDHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);\r
+                       Backup1BDPriotiry = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
+                       eHitSoundPriorityCY = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
+                       eHitSoundPriorityFT = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
+                       eHitSoundPriorityHH = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
+                       eJudgePriority = new COptionEnum<EJudgeDisplayPriority>(EJudgeDisplayPriority.Under);\r
+                       eActiveInst = new COptionEnum<EActiveInstrument>(EActiveInstrument.Both);\r
+                       nShowLagType = new COptionEnum<EShowLagType>(EShowLagType.Off);\r
+\r
+                       // integer\r
+                       rcWindow = new Coordinates.CRect(100, 100, 1280, 720);\r
+                       nSleepPerFrameMs = new COptionInteger(-1);\r
+                       nSleepUnfocusMs = new COptionInteger(1);\r
+                       nBGAlpha = new COptionInteger(200);\r
+                       nPreSoundWeightMs = new COptionInteger(1000);\r
+                       nPreImageWeightMs = new COptionInteger(100);\r
+                       nFontSizeDotSongSelect = new COptionInteger(20);\r
+                       nAutoVolume = new COptionInteger(80);\r
+                       nChipVolume = new COptionInteger(100);\r
+                       nPlaySpeed = new COptionInteger(20);\r
+\r
+                       nHitRange = new STJudgeValue<COptionInteger>();\r
+                       nHitRange.Perfect = new COptionInteger(34);\r
+                       nHitRange.Great = new COptionInteger(67);\r
+                       nHitRange.Good = new COptionInteger(84);\r
+                       nHitRange.Poor = new COptionInteger(117);\r
+\r
+                       nVelocityMin = new STPadValue<COptionInteger>();\r
+                       for (EPad pad = EPad.Min; pad < EPad.Max; ++pad)\r
+                       {\r
+                               nVelocityMin[pad] = new COptionInteger(0);\r
+                       }\r
+                       nVelocityMin.HH.Value = 20;\r
+                       nRisky = new COptionInteger(0);\r
+                       nWASAPIBufferSizeMs = new COptionInteger(50);\r
+                       nChipDisplayTimeMs = new COptionInteger(3000);\r
+                       nChipFadeoutTimeMs = new COptionInteger(2000);\r
+                       rcViewerWindow = new Coordinates.CRect(100, 100, 1280, 720);\r
+                       nMasterVolume = new COptionInteger(100);\r
+                       nPoliphonicSounds = new COptionInteger(4);\r
+\r
+                       // dgb\r
+                       bEmphasizePlaySound = new STDGBSValue<COptionBool>();\r
+                       bReverse = new STDGBSValue<COptionBool>();\r
+                       bLight = new STDGBSValue<COptionBool>();\r
+                       bGraph = new STDGBSValue<COptionBool>();\r
+                       bDisplayCombo = new STDGBSValue<COptionBool>();\r
+                       bDisplayJudge = new STDGBSValue<COptionBool>();\r
+\r
+                       nScrollSpeed = new STDGBSValue<COptionInteger>();\r
+                       nMinComboDisp = new STDGBSValue<COptionInteger>();\r
+                       nInputAdjustTimeMs = new STDGBSValue<COptionInteger>();\r
+                       nJudgeLinePosOffset = new STDGBSValue<COptionInteger>();\r
+                       nSuddenFrom = new STDGBSValue<COptionInteger>();\r
+                       nHiddenFrom = new STDGBSValue<COptionInteger>();\r
+\r
+                       eRandom = new STDGBSValue<COptionEnum<ERandom>>();\r
+                       eAutoGhost = new STDGBSValue<COptionEnum<EAutoGhostData>>();\r
+                       eTargetGhost = new STDGBSValue<COptionEnum<ETargetGhostData>>();\r
+                       eSudHidInv = new STDGBSValue<COptionEnum<ESudHidInv>>();\r
+\r
+\r
+                       for (EPart i = EPart.Drums; i <= EPart.Unknown; i++)\r
+                       {\r
+                               bEmphasizePlaySound[i] = new COptionBool(true);\r
+                               bReverse[i] = new COptionBool(false);\r
+                               eRandom[i] = new COptionEnum<ERandom>(ERandom.Off);\r
+                               bLight[i] = new COptionBool(false);\r
+                               bGraph[i] = new COptionBool(false);\r
+                               bDisplayJudge[i] = new COptionBool(true);\r
+                               bDisplayCombo[i] = new COptionBool(true);\r
+\r
+                               nScrollSpeed[i] = new COptionInteger(1);\r
+                               nInputAdjustTimeMs[i] = new COptionInteger(0);\r
+                               nJudgeLinePosOffset[i] = new COptionInteger(0);\r
+                               nViewerScrollSpeed[i] = new COptionInteger(1);\r
+                               nMinComboDisp[i] = new COptionInteger(2);\r
+                               nSuddenFrom[i] = new COptionInteger(450); // +100 FI\r
+                               nHiddenFrom[i] = new COptionInteger(225); // +100 FO\r
+\r
+                               eAutoGhost[i] = new COptionEnum<EAutoGhostData>(EAutoGhostData.Perfect);\r
+                               eTargetGhost[i] = new COptionEnum<ETargetGhostData>(ETargetGhostData.None);\r
+                               eSudHidInv[i] = new COptionEnum<ESudHidInv>(ESudHidInv.Off);\r
+\r
+                               fJudgeLinePosOffsetBase[i] = new COptionFloat(0f);\r
+                       }\r
+\r
+                       dicJoystick = new COptionDictionary<int, string>();\r
+                       dicJoystick.Value = new Dictionary<int, string>(10);\r
+\r
+                       string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();\r
+                       strASIODevice = new COptionStringList(asiodevs.Length > 0 ? asiodevs[0] : null);\r
+\r
+\r
+                       cdInstX = new STDGBSValue<STInstValue<COptionInteger>>();\r
+                       cdInstX.Drums = new STInstValue<COptionInteger>();\r
+                       cdInstX.Drums.DrOnly = new COptionInteger(SampleFramework.GameWindowSize.Width / 2 - 314);\r
+                       cdInstX.Guitar = new STInstValue<COptionInteger>();\r
+                       cdInstX.Guitar.GBOnly = new COptionInteger(480 - 72 * 4);\r
+                       cdInstX.Bass = new STInstValue<COptionInteger>();\r
+                       cdInstX.Bass.GBOnly = new COptionInteger(SampleFramework.GameWindowSize.Width - 480);\r
+                       cdInstX.Drums.Both = new COptionInteger(cdInstX.Drums.DrOnly);\r
+                       cdInstX.Guitar.Both = new COptionInteger(cdInstX.Guitar.GBOnly);\r
+                       cdInstX.Bass.Both = new COptionInteger(cdInstX.Bass.GBOnly);\r
+\r
+                       cdDebugX = new STInstValue<COptionInteger>();\r
+                       cdDebugX.DrOnly = new COptionInteger(450 * 3);\r
+                       cdDebugX.Both = new COptionInteger(450 * 3);\r
+                       cdDebugX.GBOnly = new COptionInteger(cdInstX.Drums.DrOnly);\r
+\r
+                       cdDebugY = new STInstValue<COptionInteger>();\r
+                       cdDebugY.Both = new COptionInteger(700);\r
+                       cdDebugY.DrOnly = new COptionInteger(700);\r
+                       cdDebugY.GBOnly = new COptionInteger(700);\r
+\r
+                       cdMovieX = new STInstValue<COptionInteger>();\r
+                       cdMovieX.Both = new COptionInteger(619 + 682);\r
+                       cdMovieX.DrOnly = new COptionInteger(619 + 682);\r
+                       cdMovieX.GBOnly = new COptionInteger(682);\r
+\r
+                       cdMovieY = new STInstValue<COptionInteger>();\r
+                       cdMovieY.Both = new COptionInteger(128);\r
+                       cdMovieY.DrOnly = new COptionInteger(128);\r
+                       cdMovieY.GBOnly = new COptionInteger(128);\r
+\r
+                       cdComboX = new STDGBSValue<STInstValue<COptionInteger>>();\r
+                       cdComboX.Drums = new STInstValue<COptionInteger>();\r
+                       cdComboX.Drums.Both = new COptionInteger(cdInstX.Drums.Both + (72 * 5 + 85 * 2 + 99) / 2);\r
+                       cdComboX.Drums.DrOnly = new COptionInteger(cdInstX.Drums.DrOnly + (72 * 5 + 85 * 2 + 99) / 2);\r
+                       cdComboX.Guitar = new STInstValue<COptionInteger>();\r
+                       cdComboX.Guitar.Both = new COptionInteger(cdInstX.Guitar.Both + 72 * 2);\r
+                       cdComboX.Guitar.GBOnly = new COptionInteger(cdInstX.Guitar.GBOnly + 72 * 2);\r
+                       cdComboX.Bass = new STInstValue<COptionInteger>();\r
+                       cdComboX.Bass.Both = new COptionInteger(cdInstX.Bass.Both + 72 * 2);\r
+                       cdComboX.Bass.GBOnly = new COptionInteger(cdInstX.Bass.GBOnly + 72 * 2);\r
+\r
+                       cdComboY = new STDGBSValue<STInstValue<COptionInteger>>();\r
+                       cdComboY.Drums = new STInstValue<COptionInteger>();\r
+                       cdComboY.Drums.Both = new COptionInteger(100);\r
+                       cdComboY.Drums.DrOnly = new COptionInteger(100);\r
+                       cdComboY.Guitar = new STInstValue<COptionInteger>();\r
+                       cdComboY.Guitar.Both = new COptionInteger(700);\r
+                       cdComboY.Guitar.GBOnly = new COptionInteger(700);\r
+                       cdComboY.Bass = new STInstValue<COptionInteger>();\r
+                       cdComboY.Bass.Both = new COptionInteger(700);\r
+                       cdComboY.Bass.GBOnly = new COptionInteger(700);\r
+\r
+                       cdJudgeLineY = new STDGBSValue<COptionInteger>();\r
+                       cdJudgeLineY.Drums = new COptionInteger(942);\r
+                       cdJudgeLineY.Guitar = new COptionInteger(138);\r
+                       cdJudgeLineY.Bass = new COptionInteger(138);\r
+\r
+                       cdJudgeY = new STDGBSValue<COptionInteger>();\r
+                       cdJudgeY.Drums = new COptionInteger(350);\r
+                       cdJudgeY.Guitar = new COptionInteger(600);\r
+                       cdJudgeY.Bass = new COptionInteger(600);\r
+\r
+                       cdLaneOrder = new STLaneValue<COptionInteger>();\r
+                       for (ELane lane = ELane.DrumsLaneMin; lane < ELane.BassLaneMax; ++lane)\r
+                       {\r
+                               cdLaneOrder[lane] = new COptionInteger(0);\r
+                       }\r
+\r
+                       cdLaneOrder.HH.Value = 1;\r
+                       cdLaneOrder.SD.Value = 2;\r
+                       cdLaneOrder.BD.Value = 3;\r
+                       cdLaneOrder.HT.Value = 4;\r
+                       cdLaneOrder.LT.Value = 5;\r
+                       cdLaneOrder.FT.Value = 6;\r
+                       cdLaneOrder.CY.Value = 7;\r
+\r
+                       cdLaneOrder.GtG.Value = 1;\r
+                       cdLaneOrder.GtB.Value = 2;\r
+                       cdLaneOrder.GtW.Value = 3;\r
+\r
+                       cdLaneOrder.BsG.Value = 1;\r
+                       cdLaneOrder.BsR.Value = 2;\r
+                       cdLaneOrder.BsW.Value = 3;\r
+\r
+                       bConfigIniが存在している = System.IO.File.Exists(CDTXMania.Instance.strEXEのあるフォルダ + "Config.xml");\r
+                       ClearKeyAssign();\r
+               }\r
+\r
+               /// <summary>\r
+               /// 保存する必要がない値はここで設定してください。\r
+               /// 設定しない場合 DataMember 以外のメンバはすべてその型の規定値になります。\r
+               /// </summary>\r
+               /// <param name="sc">ストリーミングコンテキスト。使用しません。</param>\r
+               [OnDeserialized]\r
+               public void DefaultDeserializer(StreamingContext sc)\r
+               {\r
+                       // ラベル・説明文・上下限値\r
+                       bFullScreen.Initialize("FullScreen", Properties.Resources.strCfgSysFullScreen);\r
+                       bVSyncWait.Initialize("VSyncWait", Properties.Resources.strCfgSysVSync);\r
+                       bStageFailed.Initialize("StageFailed", Properties.Resources.strCfgSysStageFailed);\r
+                       bFullAVI.Initialize("FullAVI", Properties.Resources.strCfgSysFullAVI);\r
+                       bAVI.Initialize("AVI", Properties.Resources.strCfgSysAVI);\r
+                       bBGA.Initialize("BGA", Properties.Resources.strCfgSysBGA);\r
+                       bLog.Initialize("Log", Properties.Resources.strCfgSysLog);\r
+                       bStoicMode.Initialize("Stoic", Properties.Resources.strCfgSysStoic);\r
+                       bWaveAdjust.Initialize("AdjustWaves", Properties.Resources.strCfgSysAdjustWaves);\r
+                       bBGMPlay.Initialize("BGM", Properties.Resources.strCfgSysBGM);\r
+                       bAudience.Initialize("Audience", Properties.Resources.strCfgSysAudience);\r
+                       bScoreIni.Initialize("SaveRecord", Properties.Resources.strCfgSysSaveScoreIni);\r
+                       bRandSubBox.Initialize("RandSubBox", Properties.Resources.strCfgSysRandSubBox);\r
+                       bAutoPlay.HH.Initialize("HiHat(Close)", Properties.Resources.strCfgDrAutoHHC);\r
+                       bAutoPlay.HHO.Initialize("HiHat(Open)", Properties.Resources.strCfgDrAutoHHO);\r
+                       bAutoPlay.SD.Initialize("Snare", Properties.Resources.strCfgDrAutoSD);\r
+                       bAutoPlay.BD.Initialize("Kick", Properties.Resources.strCfgDrAutoBD);\r
+                       bAutoPlay.HT.Initialize("HighTom", Properties.Resources.strCfgDrAutoHT);\r
+                       bAutoPlay.LT.Initialize("LowTom", Properties.Resources.strCfgDrAutoLT);\r
+                       bAutoPlay.FT.Initialize("FloorTom", Properties.Resources.strCfgDrAutoFT);\r
+                       bAutoPlay.CY.Initialize("Cymbal", Properties.Resources.strCfgAutoCY);\r
+                       bAutoPlay.RD.Initialize("RideCymbal", Properties.Resources.strCfgAutoRD);\r
+                       bAutoPlay.LC.Initialize("LeftCymbal", Properties.Resources.strCfgAutoLCY);\r
+                       bAutoPlay.GtR.Initialize("R", Properties.Resources.strCfgGtAutoR);\r
+                       bAutoPlay.GtG.Initialize("G", Properties.Resources.strCfgGtAutoG);\r
+                       bAutoPlay.GtB.Initialize("B", Properties.Resources.strCfgGtAutoB);\r
+                       bAutoPlay.GtPick.Initialize("Pick", Properties.Resources.strCfgGtAutoPick);\r
+                       bAutoPlay.GtWail.Initialize("Wailing", Properties.Resources.strCfgGtAutoWailing);\r
+                       bAutoPlay.BsR.Initialize("R", Properties.Resources.strCfgBsAutoR);\r
+                       bAutoPlay.BsG.Initialize("G", Properties.Resources.strCfgBsAutoG);\r
+                       bAutoPlay.BsB.Initialize("B", Properties.Resources.strCfgBsAutoB);\r
+                       bAutoPlay.BsPick.Initialize("Pick", Properties.Resources.strCfgBsAutoPick);\r
+                       bAutoPlay.BsWail.Initialize("Wailing", Properties.Resources.strCfgBsAutoWailing);\r
+                       bLoadSoundSpeed.Initialize("SoundLoadLimiter", Properties.Resources.strCfgSysSoundLoadLimiter);\r
+                       bIsAutoResultCapture.Initialize("AutoResultCapture", Properties.Resources.strCfgSysAutoResultCapture);\r
+                       bBufferedInput.Initialize("BufferingInput", Properties.Resources.strCfgSysBufferingInput);\r
+                       bUseBoxDefSkin.Initialize("UseBoxSkin", Properties.Resources.strCfgSysUseBoxDefSkin);\r
+                       bUseOSTimer.Initialize("UseOSTimer", Properties.Resources.strCfgSysUseOSTimer);\r
+                       bTimeStretch.Initialize("TimeStretch", Properties.Resources.strCfgSysTimeStretch);\r
+\r
+                       bCymbalFree.Initialize("CymbalFree", Properties.Resources.strCfgDrCymbalFree);\r
+                       bDrumsHitSound.Initialize("DrumsChipSound", Properties.Resources.strCfgDrChipSound);\r
+                       bFillin.Initialize("Fillin", Properties.Resources.strCfgDrFillin);\r
+                       bTight.Initialize("Tight", Properties.Resources.strCfgDrTight);\r
+\r
+                       bItalicFontSongSelect.Initialize("", "");\r
+                       bBoldFontSongSelect.Initialize("", "");\r
+                       bLogDTX.Initialize("", "");\r
+                       bLogEnumerateSongs.Initialize("", "");\r
+                       bLogCreateRelease.Initialize("", "");\r
+                       bViewerVSyncWait.Initialize("", "");\r
+                       bViewerShowDebugStatus.Initialize("", "");\r
+                       bViewerTimeStretch.Initialize("", "");\r
+                       bViewerDrumsActive.Initialize("", "");\r
+                       bViewerGuitarActive.Initialize("", "");\r
+                       bIsAllowedDoubleClickFullscreen.Initialize("", "");\r
+                       bIsEnabledSystemMenu.Initialize("", "");\r
+                       bDynamicBassMixerManagement.Initialize("", "");\r
+                       bDebugInfo.Initialize("DebugInfo", Properties.Resources.strCfgSysDebugInfo);\r
+\r
+                       // enum\r
+                       nSoundDeviceType.Initialize("SoundDevice", Properties.Resources.strCfgSysSoundDeviceType, typeof(ESoundDeviceTypeForConfig));\r
+                       eDamageLevel.Initialize("DamageLevel", Properties.Resources.strCfgSysDamageLevel, typeof(EDamage));\r
+                       eJudgePriority.Initialize("JudgePriority", Properties.Resources.strCfgSysJudgePriority, typeof(EJudgeDisplayPriority));\r
+                       eCYGroup.Initialize("CY Grouping", Properties.Resources.strCfgDrCYGroup, typeof(ECYGroup));\r
+                       eDark.Initialize("Dark", Properties.Resources.strCfgSysDark, typeof(EDark));\r
+                       eFTGroup.Initialize("FT Grouping", Properties.Resources.strCfgDrFTGroup, typeof(EFTGroup));\r
+                       eHHGroup.Initialize("HH Grouping", Properties.Resources.strCfgDrHHGroup, typeof(EHHGroup));\r
+                       eBDGroup.Initialize("BD Grouping", Properties.Resources.strCfgDrBDGroup, typeof(EBDGroup));\r
+                       Backup1BDHHGroup.Initialize("", "", typeof(EHHGroup));\r
+                       Backup1BDPriotiry.Initialize("", "", typeof(EHitSoundPriority));\r
+                       eHitSoundPriorityCY.Initialize("CY Priority", Properties.Resources.strCfgDrCYPriority, typeof(EHitSoundPriority));\r
+                       eHitSoundPriorityFT.Initialize("FT Priority", Properties.Resources.strCfgDrFTPriority, typeof(EHitSoundPriority));\r
+                       eHitSoundPriorityHH.Initialize("HH Priority", Properties.Resources.strCfgDrHHPriority, typeof(EHitSoundPriority));\r
+                       eJudgePriority.Initialize("Judge Priority", Properties.Resources.strCfgSysJudgePriority, typeof(EJudgeDisplayPriority));\r
+                       eActiveInst.Initialize("PlayMode", Properties.Resources.strCfgSysPlayMode, typeof(EActiveInstrument));\r
+                       nShowLagType.Initialize("ShowLagType", Properties.Resources.strCfgSysShowLagType, typeof(EShowLagType));\r
+\r
+                       // integer\r
+                       nSleepPerFrameMs.Initialize("", "");\r
+                       nSleepUnfocusMs.Initialize("", "");\r
+                       nBGAlpha.Initialize("BGAlpha", Properties.Resources.strCfgSysBGAAlpha, 0, 255);\r
+                       nPreSoundWeightMs.Initialize("PreSoundWait", Properties.Resources.strCfgSysPreSoundWait, 0, 10001);\r
+                       nPreImageWeightMs.Initialize("PreImageWait", Properties.Resources.strCfgSysPreImageWait, 0, 10001);\r
+                       nFontSizeDotSongSelect.Initialize("", "", 5);\r
+                       nAutoVolume.Initialize("AutoVolume", Properties.Resources.strCfgSysAutoVolume, 0, 101);\r
+                       nChipVolume.Initialize("ChipVolume", Properties.Resources.strCfgSysChipVolume, 0, 101);\r
+                       nPlaySpeed.Initialize("PlaySpeed", Properties.Resources.strCfgSysPlaySpeed, 5, 41);\r
+                       nPlaySpeed.ValueFormatter = (x) =>\r
+                       {\r
+                               return "x" + (x / 20f).ToString("0.000");\r
+                       };\r
+                       nHitRange.Perfect.Initialize("", "", 0);\r
+                       nHitRange.Great.Initialize("", "", 0);\r
+                       nHitRange.Good.Initialize("", "", 0);\r
+                       nHitRange.Poor.Initialize("", "", 0);\r
+                       nVelocityMin.LC.Initialize("", "", 0, 128);\r
+                       nVelocityMin.HH.Initialize("", "", 0, 128);\r
+                       nVelocityMin.SD.Initialize("", "", 0, 128);\r
+                       nVelocityMin.BD.Initialize("", "", 0, 128);\r
+                       nVelocityMin.HT.Initialize("", "", 0, 128);\r
+                       nVelocityMin.LT.Initialize("", "", 0, 128);\r
+                       nVelocityMin.FT.Initialize("", "", 0, 128);\r
+                       nVelocityMin.CY.Initialize("", "", 0, 128);\r
+                       nVelocityMin.RD.Initialize("", "", 0, 128);\r
+                       nRisky.Initialize("Risky", Properties.Resources.strCfgSysRisky, 0, 31);\r
+                       nWASAPIBufferSizeMs.Initialize("WASAPIBufSize", Properties.Resources.strCfgSysWASAPIBufSize, 0, 100001);\r
+                       nChipDisplayTimeMs.Initialize("", "", 0);\r
+                       nChipFadeoutTimeMs.Initialize("", "", 0);\r
+\r
+                       nMasterVolume.Initialize("MasterVolume", Properties.Resources.strCfgSysMasterVolume, 0, 101);\r
+                       nPoliphonicSounds.Initialize("", "", 1, 11);\r
+\r
+                       // dgb\r
+                       for (EPart i = EPart.Drums; i <= EPart.Unknown; i++)\r
+                       {\r
+                               bEmphasizePlaySound[i].Initialize("ChipSoundMonitor", Properties.Resources.strCfgDgbChipSoundMonitor);\r
+                               bReverse[i].Initialize("Reverse", Properties.Resources.strCfgDgbReverse);\r
+                               eRandom[i].Initialize("Random", Properties.Resources.strCfgDgbRandom, typeof(ERandom));\r
+                               bLight[i].Initialize("Light", Properties.Resources.strCfgDgbLight);\r
+                               bDisplayCombo[i].Initialize("DisplayCombo", Properties.Resources.strCfgDgbDisplayCombo);\r
+                               bDisplayJudge[i].Initialize("DisplayJudge", Properties.Resources.strCfgDgbDisplayJudge);\r
+                               bGraph[i].Initialize("Graph", Properties.Resources.strCfgDgbDisplayGraph);\r
+                               nScrollSpeed[i].Initialize("ScrollSpeed", Properties.Resources.strCfgDgbScrollSpeed, 1, 101);\r
+                               nScrollSpeed[i].ValueFormatter = (x) =>\r
+                                       {\r
+                                               return "x" + (x * 0.5f).ToString("0.0");\r
+                                       };\r
+                               nInputAdjustTimeMs[i].Initialize("InputAdjust", Properties.Resources.strCfgDgbInputAdjust, -99, 100);\r
+                               nJudgeLinePosOffset[i].Initialize("", "", -SampleFramework.GameWindowSize.Height, SampleFramework.GameWindowSize.Height + 1);\r
+                               nViewerScrollSpeed[i].Initialize("", "", 1, 101);\r
+                               nMinComboDisp[i].Initialize("MinComboDisp", Properties.Resources.strCfgDgbMinComboDisp, 2, 100001);\r
+                               nSuddenFrom[i].Initialize("SudFrom", Properties.Resources.strCfgDgbSuddenFrom, 0, SampleFramework.GameWindowSize.Height + 1);\r
+                               nHiddenFrom[i].Initialize("HidFrom", Properties.Resources.strCfgDgbHiddenFrom, 0, SampleFramework.GameWindowSize.Height + 1);\r
+                               eAutoGhost[i].Initialize("AutoGhost", Properties.Resources.strCfgDgbAutoGhost, typeof(EAutoGhostData));\r
+                               eTargetGhost[i].Initialize("TargetGhost", Properties.Resources.strCfgDgbTargetGhost, typeof(ETargetGhostData));\r
+                               eSudHidInv[i].Initialize("SudHidInv", Properties.Resources.strCfgDgbSudHidInv, typeof(ESudHidInv));\r
+\r
+                               fJudgeLinePosOffsetBase[i].Initialize("", "");\r
+                       }\r
+\r
+                       string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();\r
+                       strASIODevice.Initialize("ASIODevice", Properties.Resources.strCfgSysASIODevice, asiodevs);\r
+\r
+                       int crdStep = 10;\r
+                       cdInstX.Drums.Both.Initialize("DrumsX(Both)", Properties.Resources.strCfgDispDrumsXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdInstX.Drums.DrOnly.Initialize("DrumsX(Dr)", Properties.Resources.strCfgDispDrumsXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdInstX.Guitar.Both.Initialize("GuitarX(Both)", Properties.Resources.strCfgDispGuitarXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdInstX.Guitar.GBOnly.Initialize("GuitarX(GB)", Properties.Resources.strCfgDispGuitarXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdInstX.Bass.Both.Initialize("BassX(Both)", Properties.Resources.strCfgDispBassXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdInstX.Bass.GBOnly.Initialize("BassX(GB)", Properties.Resources.strCfgDispBassXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+\r
+                       cdDebugX.DrOnly.Initialize("DebugX(Dr)", Properties.Resources.strCfgDispDebugXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdDebugX.Both.Initialize("DebugX(Both)", Properties.Resources.strCfgDispDebugXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdDebugX.GBOnly.Initialize("DebugX(GB)", Properties.Resources.strCfgDispDebugXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdDebugY.DrOnly.Initialize("DebugY(Dr)", Properties.Resources.strCfgDispDebugYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdDebugY.Both.Initialize("DebugY(Both)", Properties.Resources.strCfgDispDebugYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdDebugY.GBOnly.Initialize("DebugY(GB)", Properties.Resources.strCfgDispDebugYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+\r
+                       cdMovieX.DrOnly.Initialize("MovieX(Dr)", Properties.Resources.strCfgDispMovieXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdMovieX.Both.Initialize("MovieX(Both)", Properties.Resources.strCfgDispMovieXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdMovieX.GBOnly.Initialize("MovieX(GB)", Properties.Resources.strCfgDispMovieXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdMovieY.DrOnly.Initialize("MovieY(Dr)", Properties.Resources.strCfgDispMovieYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdMovieY.Both.Initialize("MovieY(Both)", Properties.Resources.strCfgDispMovieYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdMovieY.GBOnly.Initialize("MovieY(GB)", Properties.Resources.strCfgDispMovieYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+\r
+                       cdComboX.Drums.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispDrComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdComboX.Drums.DrOnly.Initialize("ComboX(Dr)", Properties.Resources.strCfgDispDrComboXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdComboX.Guitar.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispGtComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdComboX.Guitar.GBOnly.Initialize("ComboX(GB)", Properties.Resources.strCfgDispGtComboXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdComboX.Bass.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispBsComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+                       cdComboX.Bass.GBOnly.Initialize("ComboX(GB)", Properties.Resources.strCfgDispBsComboXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);\r
+\r
+                       cdComboY.Drums.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispDrComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdComboY.Drums.DrOnly.Initialize("ComboY(Dr)", Properties.Resources.strCfgDispDrComboYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdComboY.Guitar.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispGtComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdComboY.Guitar.GBOnly.Initialize("ComboY(GB)", Properties.Resources.strCfgDispGtComboYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdComboY.Bass.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispBsComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdComboY.Bass.GBOnly.Initialize("ComboY(GB)", Properties.Resources.strCfgDispBsComboYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+\r
+                       cdJudgeLineY.Drums.Initialize("JudgeLine", Properties.Resources.strCfgDispDrJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdJudgeLineY.Guitar.Initialize("JudgeLine", Properties.Resources.strCfgDispGtJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdJudgeLineY.Bass.Initialize("JudgeLine", Properties.Resources.strCfgDispBsJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+\r
+                       cdJudgeY.Drums.Initialize("Judge", Properties.Resources.strCfgDispDrJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdJudgeY.Guitar.Initialize("Judge", Properties.Resources.strCfgDispGtJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+                       cdJudgeY.Bass.Initialize("Judge", Properties.Resources.strCfgDispBsJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);\r
+\r
+                       cdLaneOrder.LC.Initialize("LC Order", Properties.Resources.strCfgDispLaneOrderLC, 0, 8);\r
+                       cdLaneOrder.HH.Initialize("HH Order", Properties.Resources.strCfgDispLaneOrderHH, 0, 8);\r
+                       cdLaneOrder.SD.Initialize("SD Order", Properties.Resources.strCfgDispLaneOrderSD, 0, 8);\r
+                       cdLaneOrder.BD.Initialize("BD Order", Properties.Resources.strCfgDispLaneOrderBD, 0, 8);\r
+                       cdLaneOrder.HT.Initialize("HT Order", Properties.Resources.strCfgDispLaneOrderHT, 0, 8);\r
+                       cdLaneOrder.LT.Initialize("LT Order", Properties.Resources.strCfgDispLaneOrderLT, 0, 8);\r
+                       cdLaneOrder.FT.Initialize("FT Order", Properties.Resources.strCfgDispLaneOrderFT, 0, 8);\r
+                       cdLaneOrder.CY.Initialize("CY Order", Properties.Resources.strCfgDispLaneOrderCY, 0, 8);\r
+\r
+                       cdLaneOrder.GtR.Initialize("R Order", Properties.Resources.strCfgDispLaneOrderGtR, 0, 4);\r
+                       cdLaneOrder.GtG.Initialize("G Order", Properties.Resources.strCfgDispLaneOrderGtG, 0, 4);\r
+                       cdLaneOrder.GtB.Initialize("B Order", Properties.Resources.strCfgDispLaneOrderGtB, 0, 4);\r
+                       cdLaneOrder.GtW.Initialize("W Order", Properties.Resources.strCfgDispLaneOrderGtW, 0, 4);\r
+\r
+                       cdLaneOrder.BsR.Initialize("R Order", Properties.Resources.strCfgDispLaneOrderBsR, 0, 4);\r
+                       cdLaneOrder.BsG.Initialize("G Order", Properties.Resources.strCfgDispLaneOrderBsG, 0, 4);\r
+                       cdLaneOrder.BsB.Initialize("B Order", Properties.Resources.strCfgDispLaneOrderBsB, 0, 4);\r
+                       cdLaneOrder.BsW.Initialize("W Order", Properties.Resources.strCfgDispLaneOrderBsW, 0, 4);\r
+\r
+                       SetEnterDelegates();\r
+               }\r
+\r
+               public CConfigXml()\r
+               {\r
+                       Deserializing(new StreamingContext());\r
+                       DefaultDeserializer(new StreamingContext());\r
+               }\r
+\r
+               public void SetEnterDelegates()\r
+               {\r
+                       bFullScreen.OnEnterDelegate = () =>\r
+                       {\r
+                               CDTXMania.Instance.b次のタイミングで全画面_ウィンドウ切り替えを行う = true;\r
+                       };\r
+\r
+                       // Vsync\r
+                       bVSyncWait.OnEnterDelegate = () =>\r
+                       {\r
+                               CDTXMania.Instance.b次のタイミングで垂直帰線同期切り替えを行う = true;\r
+                       };\r
+\r
+                       eBDGroup.OnEnterDelegate = () =>\r
+                       {\r
+                               //BD group\r
+                               if (eBDGroup == EBDGroup.Group)\r
+                               {\r
+                                       // #27029 2012.1.5 from: 変更前の状態をバックアップする。\r
+                                       Backup1BDHHGroup.Value = eHHGroup;\r
+                                       Backup1BDPriotiry.Value = eHitSoundPriorityHH;\r
+\r
+                                       // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし\r
+                                       if (eHHGroup == EHHGroup.None)\r
+                                       {\r
+                                               eHHGroup.Value = EHHGroup.LC_HH;\r
+                                       }\r
+                                       if (eHHGroup == EHHGroup.HO_HC)\r
+                                       {\r
+                                               eHHGroup.Value = EHHGroup.Group;\r
+                                       }\r
+\r
+                                       // HH Priority ... C>P → 変更なし / P>C → C>P\r
+                                       if (eHitSoundPriorityHH == EHitSoundPriority.Pad)\r
+                                       {\r
+                                               eHitSoundPriorityHH.Value = EHitSoundPriority.Chip;\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       eHHGroup = Backup1BDHHGroup;\r
+                                       eHitSoundPriorityHH = Backup1BDPriotiry;\r
+                               }\r
+                       };\r
+\r
+                       bUseBoxDefSkin.OnEnterDelegate = () =>\r
+                       {\r
+                               CSkin.bUseBoxDefSkin = bUseBoxDefSkin;\r
+                       };\r
+               }\r
+\r
+\r
+               public bool bConfigIniがないかDTXManiaのバージョンが異なる\r
+               {\r
+                       get\r
+                       {\r
+                               return (!bConfigIniが存在している || !CDTXMania.VERSION.Equals(strDTXManiaVersion));\r
+                       }\r
+               }\r
+\r
+               public bool bEnterがキー割り当てのどこにも使用されていない\r
+               {\r
+                       get\r
+                       {\r
+                               for (EPad j = EPad.Min; j < EPad.Max; j++)\r
+                               {\r
+                                       for (int k = 0; k < AssignableCodes; k++)\r
+                                       {\r
+                                               if ((KeyAssign[j][k].入力デバイス == EInputDevice.Keyboard) &&\r
+                                                               (KeyAssign[j][k].コード == (int)SlimDX.DirectInput.Key.Return))\r
+                                               {\r
+                                                       return false;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               return true;\r
+                       }\r
+               }\r
+\r
+               public bool bウィンドウモード\r
+               {\r
+                       get\r
+                       {\r
+                               return !this.bFullScreen;\r
+                       }\r
+                       set\r
+                       {\r
+                               this.bFullScreen.Value = !value;\r
+                       }\r
+               }\r
+\r
+               public bool bGuitar有効\r
+               {\r
+                       get\r
+                       {\r
+                               return eActiveInst == EActiveInstrument.GBOnly || eActiveInst == EActiveInstrument.Both;\r
+                       }\r
+               }\r
+\r
+               public bool bDrums有効\r
+               {\r
+                       get\r
+                       {\r
+                               return eActiveInst == EActiveInstrument.DrOnly || eActiveInst == EActiveInstrument.Both;\r
+                       }\r
+               }\r
+\r
+               public bool b楽器有効(EPart inst)\r
+               {\r
+                       if (inst == EPart.Drums)\r
+                       {\r
+                               return bDrums有効;\r
+                       }\r
+                       else if (inst == EPart.Guitar || inst == EPart.Bass)\r
+                       {\r
+                               return bGuitar有効;\r
+                       }\r
+                       return false;\r
+               }\r
+\r
+               public bool bIsAutoPlay(EPart inst)\r
+               {\r
+                       bool ret = false;\r
+                       if (inst == EPart.Drums)\r
+                       {\r
+                               ret = bAutoPlay.IsAllTrue(EPart.Drums);\r
+                       }\r
+                       else if (inst == EPart.Guitar)\r
+                       {\r
+                               ret = bAutoPlay.IsAllTrue(EPart.Guitar);\r
+                       }\r
+                       else if (inst == EPart.Bass)\r
+                       {\r
+                               ret = bAutoPlay.IsAllTrue(EPart.Bass);\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public bool b演奏情報を表示する\r
+               {\r
+                       get\r
+                       {\r
+                               return this.bDebugInfo;\r
+                       }\r
+                       set\r
+                       {\r
+                               this.bDebugInfo.Value = value;\r
+                       }\r
+               }\r
+\r
+               // #24063 2011.1.16 yyagi ギターとベースの切り替え\r
+               public bool bIsSwappedGuitarBass\r
+               {\r
+                       get;\r
+                       set;\r
+               }\r
+\r
+               // #24415 2011.2.21 yyagi FLIP中にalt-f4終了で、AUTOフラグがswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ\r
+               public bool bIsSwappedGuitarBass_AutoFlagsAreSwapped\r
+               {\r
+                       get;\r
+                       set;\r
+               }\r
+\r
+               // #35417 2015.8.18 yyagi FLIP中にalt-f4終了で、演奏設定がswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ\r
+               public bool bIsSwappedGuitarBass_PlaySettingsAreSwapped\r
+               {\r
+                       get;\r
+                       set;\r
+               }\r
+\r
+               public void SwapGuitarBassInfos_AutoFlags()\r
+               {\r
+                       Func<EPad, EPad, bool> AutoSwapper = (x, y) =>\r
+                       {\r
+                               bool t = bAutoPlay[y];\r
+                               bAutoPlay[y].Value = bAutoPlay[x];\r
+                               bAutoPlay[x].Value = t;\r
+                               return true;\r
+                       };\r
+\r
+                       AutoSwapper(EPad.GtR, EPad.BsR);\r
+                       AutoSwapper(EPad.GtG, EPad.BsG);\r
+                       AutoSwapper(EPad.GtB, EPad.BsB);\r
+                       AutoSwapper(EPad.GtWail, EPad.BsWail);\r
+                       AutoSwapper(EPad.GtPick, EPad.BsPick);\r
+\r
+                       bIsSwappedGuitarBass_AutoFlagsAreSwapped = !bIsSwappedGuitarBass_AutoFlagsAreSwapped;\r
+               }\r
+\r
+               public void t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice DeviceType, int nID, int nCode)\r
+               {\r
+                       for (EPad j = EPad.Min; j < EPad.Max; j++)\r
+                       {\r
+                               for (int k = 0; k < AssignableCodes; k++)\r
+                               {\r
+                                       if (((KeyAssign[j][k].入力デバイス == DeviceType) &&\r
+                                                       (KeyAssign[j][k].ID == nID)) &&\r
+                                                       (KeyAssign[j][k].コード == nCode))\r
+                                       {\r
+                                               for (int m = k; m < AssignableCodes - 1; m++)\r
+                                               {\r
+                                                       KeyAssign[j][m].CopyFrom(KeyAssign[j][m + 1].Value);\r
+                                               }\r
+                                               KeyAssign[j][AssignableCodes - 1].Reset();\r
+                                               k--;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               private void ClearKeyAssign()\r
+               {\r
+                       KeyAssign = new STPadValue<COptionKeyAssign[]>();\r
+                       for (EPad j = EPad.Min; j < EPad.Max; ++j)\r
+                       {\r
+                               KeyAssign[j] = new COptionKeyAssign[AssignableCodes];\r
+                               for (int k = 0; k < AssignableCodes; ++k)\r
+                               {\r
+                                       KeyAssign[j][k] = new COptionKeyAssign();\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
diff --git a/DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/COption.cs b/DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/COption.cs
new file mode 100644 (file)
index 0000000..584cbdc
--- /dev/null
@@ -0,0 +1,697 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using System.Threading.Tasks;\r
+using System.Runtime.Serialization;\r
+using FDK;\r
+\r
+namespace DTXMania\r
+{\r
+       public delegate void VoidFunc();\r
+\r
+       /// <summary>\r
+       /// Option 基底クラス。\r
+       /// 注意:値の参照は Value プロパティを使ってください。\r
+       /// 一部のクラスは暗黙的な型変換を実装していますが、\r
+       /// オプションクラスインスタンス同士の等価比較には気をつけてください。\r
+       /// </summary>\r
+       [DataContract]\r
+       public abstract class COptionBase\r
+       {\r
+               public EOptionType type;\r
+               /// <summary>\r
+               /// コンフィグ画面におけるこの項目を表す文字列。\r
+               /// </summary>\r
+               public string label;\r
+\r
+               /// <summary>\r
+               /// 説明。Properties.Resources から取得してください。\r
+               /// </summary>\r
+               public string explanation;\r
+\r
+               /// <summary>\r
+               /// OnEnter で用いる動作。たとえば、この値によってほかのオプションに制約を与える場合などに\r
+               /// その処理を登録しておけば、値の確定後実行されます。\r
+               /// </summary>\r
+               public VoidFunc OnEnterDelegate;\r
+\r
+               /// <summary>\r
+               /// 決定動作。OnEnterDelegate メンバに動作を登録します。\r
+               /// </summary>\r
+               public void OnEnter()\r
+               {\r
+                       if (OnEnterDelegate != null)\r
+                       {\r
+                               OnEnterDelegate();\r
+                       }\r
+               }\r
+\r
+               /// <summary>\r
+               /// 前の項目値動作。順序付け可能な値からなるオプションは相応に実装する必要があります。\r
+               /// </summary>\r
+               public virtual void OnPrevious()\r
+               {\r
+               }\r
+\r
+               /// <summary>\r
+               /// アイテムインデックス。\r
+               /// </summary>\r
+               public virtual int Index\r
+               {\r
+                       get\r
+                       {\r
+                               return 0;\r
+                       }\r
+                       set\r
+                       {\r
+\r
+                       }\r
+               }\r
+\r
+               /// <summary>\r
+               /// OnPrevious の逆順序用。\r
+               /// </summary>\r
+               public virtual void OnNext()\r
+               {\r
+               }\r
+       }\r
+\r
+       /// <summary>\r
+       /// Option 基底クラス。\r
+       /// DataContract により XML へのシリアライズ、XML からのデシリアライズが可能です。\r
+       /// </summary>\r
+       /// <typeparam name="T">このオプションの型。</typeparam>\r
+       [DataContract]\r
+       public abstract class COption<T> : COptionBase\r
+       {\r
+               [DataMember]\r
+               protected T val;\r
+\r
+               public virtual T Value\r
+               {\r
+                       get\r
+                       {\r
+                               return val;\r
+                       }\r
+                       set\r
+                       {\r
+                               val = value;\r
+                       }\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionBool : COption<bool>\r
+       {\r
+               public static implicit operator bool (COptionBool b)\r
+               {\r
+                       return b.Value;\r
+               }\r
+\r
+               public override int Index\r
+               {\r
+                       get\r
+                       {\r
+                               return val ? 1 : 0;\r
+                       }\r
+               }\r
+\r
+               public COptionBool(bool init)\r
+               {\r
+                       val = init;\r
+               }\r
+\r
+               public override void OnNext()\r
+               {\r
+                       OnPrevious();\r
+               }\r
+\r
+               public override void OnPrevious()\r
+               {\r
+                       val = !val;\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return val ? "On" : "Off";\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionInteger : COption<int>\r
+       {\r
+               public int nStep;\r
+               private int nMin;\r
+               private int nMax;\r
+\r
+               public static implicit operator int (COptionInteger n)\r
+               {\r
+                       return n.Value;\r
+               }\r
+\r
+               public override int Index\r
+               {\r
+                       get\r
+                       {\r
+                               return val;\r
+                       }\r
+               }\r
+\r
+               public COptionInteger(int init)\r
+               {\r
+                       nMin = int.MinValue;\r
+                       nMax = int.MaxValue;\r
+                       val = init;\r
+               }\r
+\r
+               public override int Value\r
+               {\r
+                       get\r
+                       {\r
+                               return base.Value;\r
+                       }\r
+\r
+                       set\r
+                       {\r
+                               base.Value = value;\r
+                               LimitValue();\r
+                       }\r
+               }\r
+\r
+               private void LimitValue()\r
+               {\r
+                       if (val >= nMax)\r
+                       {\r
+                               val = nMax - 1;\r
+                       }\r
+                       if (val < nMin)\r
+                       {\r
+                               val = nMin;\r
+                       }\r
+               }\r
+\r
+               public override void OnNext()\r
+               {\r
+                       val+=nStep;\r
+                       LimitValue();\r
+               }\r
+\r
+               public override void OnPrevious()\r
+               {\r
+                       val-=nStep;\r
+                       LimitValue();\r
+               }\r
+\r
+               public Converter<int, string> ValueFormatter;\r
+\r
+               public override string ToString()\r
+               {\r
+                       string ret = "";\r
+                       if (ValueFormatter != null)\r
+                       {\r
+                               ret = ValueFormatter(val);\r
+                       }\r
+                       else\r
+                       {\r
+                               ret = val.ToString();\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl, int min = int.MinValue, int max = int.MaxValue, int step = 1)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+                       nMin = min;\r
+                       nMax = max;\r
+                       nStep = step;\r
+               }\r
+       }\r
+\r
+       public interface IOptionList\r
+       {\r
+\r
+       }\r
+\r
+       [DataContract]\r
+       public abstract class COptionList<T> : COption<T>, IOptionList\r
+       {\r
+               protected T[] vals;\r
+               protected int ptr;\r
+               public int Length { get; protected set; }\r
+\r
+               public T this[int idx]\r
+               {\r
+                       get\r
+                       {\r
+                               return vals[idx];\r
+                       }\r
+               }\r
+\r
+               public override T Value\r
+               {\r
+                       get\r
+                       {\r
+                               return base.Value;\r
+                       }\r
+\r
+                       set\r
+                       {\r
+                               base.Value = value;\r
+                               for (int i = 0; i < Length; ++i)\r
+                               {\r
+                                       if (vals[i].Equals(value))\r
+                                       {\r
+                                               ptr = i;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               public override int Index\r
+               {\r
+                       get\r
+                       {\r
+                               return ptr;\r
+                       }\r
+                       set\r
+                       {\r
+                               ptr = value;\r
+                               if (ptr >= Length) ptr = Length - 1;\r
+                               if (ptr < 0) ptr = 0;\r
+                       }\r
+               }\r
+\r
+               public override void OnNext()\r
+               {\r
+                       ++ptr;\r
+                       if (ptr >= Length)\r
+                       {\r
+                               ptr = 0;\r
+                       }\r
+                       val = vals[ptr];\r
+               }\r
+\r
+               public override void OnPrevious()\r
+               {\r
+                       --ptr;\r
+                       if (ptr < 0)\r
+                       {\r
+                               ptr = Length - 1;\r
+                       }\r
+                       val = vals[ptr];\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return val.ToString();\r
+               }\r
+\r
+       }\r
+\r
+\r
+       /// <summary>\r
+       /// 列挙定数用オプションアイテム。\r
+       /// </summary>\r
+       /// <typeparam name="E">\r
+       /// 列挙型。ただし、列挙型以外を渡してもコンパイル時エラーとならないので注意してください。(where 制約不可)\r
+       /// また E のメンバに負の値を持つメンバを入れると意図した順番になりません。</typeparam>\r
+       [DataContract]\r
+       public class COptionEnum<E> : COptionList<E> where E : struct\r
+       {\r
+               public static implicit operator E(COptionEnum<E> e)\r
+               {\r
+                       return e.Value;\r
+               }\r
+\r
+               /// <summary>\r
+               /// リフレクションから列挙定数の集合を取得し、内部ポインタでまわします。\r
+               /// ※実行時型情報の扱いは基本的に重いので注意してください。\r
+               /// </summary>\r
+               public COptionEnum(E init)\r
+               {\r
+                       val = init;\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl, Type type)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+\r
+                       Length = type.GetEnumValues().Length;\r
+                       vals = new E[Length];\r
+                       int initptr = -1;\r
+                       ptr = 0;\r
+                       foreach (E t in typeof(E).GetEnumValues())\r
+                       {\r
+                               if (t.Equals(val))\r
+                               {\r
+                                       initptr = ptr;\r
+                               }\r
+                               vals[ptr] = t;\r
+                               ++ptr;\r
+                       }\r
+                       if (initptr == -1)\r
+                       {\r
+                               val = vals[0];\r
+                               ptr = 0;\r
+                       }\r
+                       else\r
+                       {\r
+                               ptr = initptr;\r
+                       }\r
+               }\r
+\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionString : COption<string>\r
+       {\r
+               public static implicit operator string (COptionString s)\r
+               {\r
+                       return s.Value;\r
+               }\r
+\r
+               public COptionString(string init)\r
+               {\r
+                       val = init;\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return val;\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionStringList : COptionList<string>\r
+       {\r
+               public COptionStringList(string init)\r
+               {\r
+                       val = init;\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl, string[] initvals)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+\r
+                       Length = initvals.Length;\r
+                       vals = new string[Length];\r
+                       int initptr = -1;\r
+                       ptr = 0;\r
+                       foreach (var t in initvals)\r
+                       {\r
+                               if (t == val)\r
+                               {\r
+                                       initptr = ptr;\r
+                               }\r
+                               vals[ptr] = t;\r
+                               ++ptr;\r
+                       }\r
+\r
+                       if (initptr == -1)\r
+                       {\r
+                               val = vals[0];\r
+                               ptr = 0;\r
+                       }\r
+                       else\r
+                       {\r
+                               ptr = initptr;\r
+                       }\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionFloat : COption<float>\r
+       {\r
+               public static implicit operator float (COptionFloat f)\r
+               {\r
+                       return f.Value;\r
+               }\r
+\r
+               public COptionFloat(float init)\r
+               {\r
+                       val = init;\r
+               }\r
+\r
+               public void Initialize(string lbl, string expl)\r
+               {\r
+                       label = lbl;\r
+                       explanation = expl;\r
+               }\r
+\r
+               public override string ToString()\r
+               {\r
+                       return val.ToString();\r
+               }\r
+       }\r
+\r
+       public class COptionLabel : COptionString\r
+       {\r
+               public COptionLabel(string lbl, string expl)\r
+                       : base("")\r
+               {\r
+                       type = EOptionType.Other;\r
+                       label = lbl;\r
+                       explanation = expl;\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionDictionary<K, V> : COption<Dictionary<K, V>>\r
+       {\r
+               public V this[K t]\r
+               {\r
+                       get\r
+                       {\r
+                               return Value[t];\r
+                       }\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionKeyAssign : COption<CKeyAssign>\r
+       {\r
+               public EInputDevice 入力デバイス\r
+               {\r
+                       get\r
+                       {\r
+                               return Value.InputDevice;\r
+                       }\r
+                       set\r
+                       {\r
+                               Value.InputDevice = value;\r
+                       }\r
+               }\r
+\r
+               public int ID\r
+               {\r
+                       get\r
+                       {\r
+                               return Value.ID;\r
+                       }\r
+                       set\r
+                       {\r
+                               Value.ID = value;\r
+                       }\r
+               }\r
+\r
+               public int コード\r
+               {\r
+                       get\r
+                       {\r
+                               return Value.Code;\r
+                       }\r
+                       set\r
+                       {\r
+                               Value.Code = value;\r
+                       }\r
+               }\r
+\r
+               public COptionKeyAssign()\r
+               {\r
+                       val = new CKeyAssign(EInputDevice.Unknown, 0, 0);\r
+               }\r
+\r
+               public void Reset()\r
+               {\r
+                       Value.InputDevice = EInputDevice.Unknown;\r
+                       Value.ID = 0;\r
+                       Value.Code = 0;\r
+               }\r
+\r
+               public void CopyFrom(CKeyAssign t)\r
+               {\r
+                       Value.InputDevice = t.InputDevice;\r
+                       Value.ID = t.ID;\r
+                       Value.Code = t.Code;\r
+               }\r
+       }\r
+\r
+       [DataContract]\r
+       public class COptionPadBool : STPadValue<COptionBool>\r
+       {\r
+               private bool DetermineAssignValue(EThreeState state)\r
+               {\r
+                       return state == EThreeState.On ? true : state == EThreeState.Off ? false : false;\r
+               }\r
+\r
+               public bool bIsAutoHH\r
+               {\r
+                       get\r
+                       {\r
+                               return !LC && HH && !SD && !BD && !HT && !LT && !FT && !CY && !RD && HHO;\r
+                       }\r
+               }\r
+\r
+               public bool bIsAutoBD\r
+               {\r
+                       get\r
+                       {\r
+                               return !LC && !HH && !SD && BD && !HT && !LT && !FT && !CY && !RD && !HHO;\r
+                       }\r
+               }\r
+\r
+               public bool bIsAutoNeck(EPart e)\r
+               {\r
+                       bool ret = false;\r
+                       if (e == EPart.Guitar)\r
+                       {\r
+                               ret = GtR && GtG && GtB && !GtPick;\r
+                       }\r
+                       else if (e == EPart.Bass)\r
+                       {\r
+                               ret = BsR && BsG && BsB && !BsPick;\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public bool bIsAutoPick(EPart e)\r
+               {\r
+                       bool ret = false;\r
+                       if (e == EPart.Guitar)\r
+                       {\r
+                               ret = !GtR && !GtG && !GtB && GtPick;\r
+                       }\r
+                       else if (e == EPart.Bass)\r
+                       {\r
+                               ret = !BsR && !BsG && !BsB && BsPick;\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public void SetAutoHH()\r
+               {\r
+                       Set(EPart.Drums, EThreeState.Off);\r
+                       HH.Value = true;\r
+               }\r
+\r
+               public void SetAutoBD()\r
+               {\r
+                       Set(EPart.Drums, EThreeState.Off);\r
+                       BD.Value = true;\r
+               }\r
+\r
+               public void SetAutoPick(EPart e)\r
+               {\r
+                       Set(e, EThreeState.Off);\r
+                       if (e == EPart.Drums)\r
+                       {\r
+                               GtPick.Value = true;\r
+                       }\r
+                       else if (e == EPart.Bass)\r
+                       {\r
+                               BsPick.Value = true;\r
+                       }\r
+               }\r
+\r
+               public void SetAutoNeck(EPart e)\r
+               {\r
+                       Set(e, EThreeState.Off);\r
+                       if (e == EPart.Drums)\r
+                       {\r
+                               GtR.Value = true;\r
+                               GtG.Value = true;\r
+                               GtB.Value = true;\r
+                       }\r
+                       else if (e == EPart.Bass)\r
+                       {\r
+                               BsR.Value = true;\r
+                               BsG.Value = true;\r
+                               BsB.Value = true;\r
+                       }\r
+               }\r
+\r
+               public void Set(EPart e, EThreeState state)\r
+               {\r
+                       bool val = DetermineAssignValue(state);\r
+                       if (EThreeState.X != state)\r
+                       {\r
+                               if (e == EPart.Drums)\r
+                               {\r
+                                       LC.Value = HH.Value = HHO.Value = SD.Value =\r
+                                                       BD.Value = HT.Value = LT.Value = FT.Value = CY.Value = RD.Value = val;\r
+                               }\r
+                               else if (e == EPart.Guitar)\r
+                               {\r
+                                       GtR.Value = GtG.Value = GtB.Value = GtPick.Value = GtWail.Value = val;\r
+                               }\r
+                               else if (e == EPart.Bass)\r
+                               {\r
+                                       BsR.Value = BsG.Value = BsB.Value = BsPick.Value = BsWail.Value = val;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               public bool IsAllFalse(EPart x)\r
+               {\r
+                       bool ret = false;\r
+                       if (x == EPart.Guitar)\r
+                       {\r
+                               ret = !GtR && !GtG && !GtB && !GtPick && !GtWail;\r
+                       }\r
+                       else if (x == EPart.Bass)\r
+                       {\r
+                               ret = !BsR && !BsG && !BsB && !BsPick && !BsWail;\r
+                       }\r
+                       else if (x == EPart.Drums)\r
+                       {\r
+                               ret = !LC && !HH && !SD && !BD && !HT && !LT && !FT && !CY && !RD && !HHO;\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               public bool IsAllTrue(EPart x)\r
+               {\r
+                       bool ret = false;\r
+                       if (x == EPart.Guitar)\r
+                       {\r
+                               ret = GtR && GtG && GtB && GtPick && GtWail;\r
+                       }\r
+                       else if (x == EPart.Bass)\r
+                       {\r
+                               ret = BsR && BsG && BsB && BsPick && BsWail;\r
+                       }\r
+                       else if (x == EPart.Drums)\r
+                       {\r
+                               ret = LC && HH && SD && BD && HT && LT && FT && CY && RD && HHO;\r
+                       }\r
+                       return ret;\r
+               }\r
+       }\r
+\r
+}\r
index a372650..1689fec 100644 (file)
@@ -6,118 +6,196 @@ using System.Runtime.InteropServices;
 using System.Drawing;\r
 using System.Diagnostics;\r
 using FDK;\r
+using System.Runtime.Serialization;\r
+using System.Threading;\r
 \r
 namespace DTXMania\r
 {\r
+\r
        internal class CStageコンフィグ : CStage\r
        {\r
-               // プロパティ\r
+               CActFIFOWhite actFIFO;\r
+               CActConfigKeyAssign actKeyAssign;\r
+               CActConfigList actList;\r
+               CActオプションパネル actオプションパネル;\r
+               bool bメニューにフォーカス中;\r
+               STキー反復用カウンタ ctキー反復用;\r
+               const int DESC_H = 0x80;\r
+               const int DESC_W = 220;\r
+               EItemPanelモード eItemPanelモード;\r
+               Font ftフォント;\r
+               int n現在のメニュー番号;\r
+               CTexture txMenuカーソル;\r
+               CTextureAf tx下部パネル;\r
+               CTextureAf tx上部パネル;\r
+               CTexture tx説明文パネル;\r
+               CTexture tx背景;\r
+               CPrivateFastFont prvFont;\r
+               CTexture[,] txMenuItemLeft;\r
+               STDGBSValue<float> fDisplayLagTimeBaseMs;\r
+\r
+               enum EItemPanelモード\r
+               {\r
+                       パッド一覧,\r
+                       キーコード一覧\r
+               }\r
+\r
+               [StructLayout(LayoutKind.Sequential)]\r
+               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
-               //public CActDFPFont actFont { get; private set; }\r
+                                               case 1:\r
+                                                       this.Down = value;\r
+                                                       return;\r
 \r
+                                               case 2:\r
+                                                       this.R = value;\r
+                                                       return;\r
 \r
-               // コンストラクタ\r
+                                               case 3:\r
+                                                       this.B = value;\r
+                                                       return;\r
+                                       }\r
+                                       throw new IndexOutOfRangeException();\r
+                               }\r
+                       }\r
+               }\r
 \r
                public CStageコンフィグ()\r
                {\r
-                       //CActDFPFont font;\r
-                       base.eステージID = CStage.Eステージ.コンフィグ;\r
-                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
-                       //this.actFont = font = new CActDFPFont();\r
-                       //base.list子Activities.Add( font );\r
-                       base.list子Activities.Add(this.actFIFO = new CActFIFOWhite());\r
-                       base.list子Activities.Add(this.actList = new CActConfigList());\r
-                       base.list子Activities.Add(this.actKeyAssign = new CActConfigKeyAssign());\r
-                       base.list子Activities.Add(this.actオプションパネル = new CActオプションパネル());\r
-                       base.b活性化してない = true;\r
+                       eステージID = CStage.Eステージ.コンフィグ;\r
+                       eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+                       list子Activities.Add(actFIFO = new CActFIFOWhite());\r
+                       list子Activities.Add(actList = new CActConfigList());\r
+                       list子Activities.Add(actKeyAssign = new CActConfigKeyAssign());\r
+                       list子Activities.Add(actオプションパネル =\r
+                               new CActオプションパネル(EOptionPanelDirection.Horizontal));\r
+                       b活性化してない = true;\r
                }\r
 \r
+               public void tアサイン完了通知()\r
+               {\r
+                       this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
+               }\r
 \r
-               // メソッド\r
-\r
-               public void tアサイン完了通知()                                                                                                                 // CONFIGにのみ存在\r
-               {                                                                                                                                                                               //\r
-                       this.eItemPanelモード = EItemPanelモード.パッド一覧;                                                         //\r
-               }                                                                                                                                                                               //\r
-               public void tパッド選択通知(EKeyConfigPart part, EKeyConfigPad pad)                                                      //\r
-               {                                                                                                                                                                               //\r
-                       this.actKeyAssign.t開始(part, pad, this.actList.ib現在の選択項目.str項目名);                //\r
-                       this.eItemPanelモード = EItemPanelモード.キーコード一覧;                                                   //\r
-               }                                                                                                                                                                               //\r
-               public void t項目変更通知()                                                                                                                               // OPTIONと共通\r
-               {                                                                                                                                                                               //\r
-                       this.t説明文パネルに現在選択されている項目の説明を描画する();                                         //\r
-               }                                                                                                                                                                               //\r
+               public void tパッド選択通知(EPad pad)\r
+               {\r
+                       this.actKeyAssign.t開始(pad, this.actList.ib現在の選択項目.label);\r
+                       this.eItemPanelモード = EItemPanelモード.キーコード一覧;\r
+               }\r
 \r
+               public void t項目変更通知()\r
+               {\r
+                       this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+               }\r
 \r
-               // CStage 実装\r
 \r
                public override void On活性化()\r
                {\r
-                       Trace.TraceInformation("コンフィグステージを活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
-                       {\r
-                               this.n現在のメニュー番号 = 0;                                                                                                  //\r
-                               this.ftフォント = new Font("MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);                    //\r
-                               for (int i = 0; i < 4; i++)                                                                                                     //\r
-                               {                                                                                                                                                               //\r
-                                       this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.Instance.Timer);                    //\r
-                               }                                                                                                                                                               //\r
-                               this.bメニューにフォーカス中 = true;                                                                                 // ここまでOPTIONと共通\r
-                               this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
-\r
-                               fDisplayLagTimeBaseMs.Drums = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1);\r
-                               fDisplayLagTimeBaseMs.Guitar = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar + 1);\r
-                               fDisplayLagTimeBaseMs.Bass = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass + 1);\r
-                       }\r
-                       finally\r
+                       if (base.b活性化してない)\r
                        {\r
-                               Trace.TraceInformation("コンフィグステージの活性化を完了しました。");\r
-                               Trace.Unindent();\r
+                               Trace.TraceInformation("コンフィグステージを活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
+                               {\r
+                                       this.n現在のメニュー番号 = 0;\r
+                                       this.ftフォント = new Font("MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);            //\r
+                                       for (int i = 0; i < 4; i++)\r
+                                       {\r
+                                               this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.Instance.Timer);\r
+                                       }\r
+                                       this.bメニューにフォーカス中 = true;\r
+                                       // ここまでOPTIONと共通\r
+                                       this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
+\r
+                                       fDisplayLagTimeBaseMs = new STDGBSValue<float>();\r
+                                       for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
+                                       {\r
+                                               fDisplayLagTimeBaseMs[i] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[i] /\r
+                                                               (CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1);\r
+                                       }\r
+                                       actオプションパネル.Pos = CDTXMania.Instance.Coordinates.OptionPanelSelect;\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.TraceInformation("コンフィグステージの活性化を完了しました。");\r
+                                       Trace.Unindent();\r
+                               }\r
+                               base.On活性化();\r
                        }\r
-                       base.On活性化();             // 2011.3.14 yyagi: On活性化()をtryの中から外に移動\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       Trace.TraceInformation("コンフィグステージを非活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
+                       if (base.b活性化してる)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.t書き出し(CDTXMania.Instance.strEXEのあるフォルダ + "Config.ini");      // CONFIGだけ\r
-                               if (this.ftフォント != null)                                                                                                        // 以下OPTIONと共通\r
+                               Trace.TraceInformation("コンフィグステージを非活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
                                {\r
-                                       this.ftフォント.Dispose();\r
-                                       this.ftフォント = null;\r
+                                       CDTXMania.Instance.SaveConfig();\r
+                                       TextureFactory.t安全にDisposeする(ref this.ftフォント);\r
+                                       for (int i = 0; i < 4; i++)\r
+                                       {\r
+                                               this.ctキー反復用[i] = null;\r
+                                       }\r
+\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = (int)(fDisplayLagTimeBaseMs.Drums * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1));\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value = (int)(fDisplayLagTimeBaseMs.Guitar * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar + 1));\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = (int)(fDisplayLagTimeBaseMs.Bass * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass + 1));\r
+\r
+                                       base.On非活性化();\r
                                }\r
-                               for (int i = 0; i < 4; i++)\r
+                               catch (UnauthorizedAccessException e)\r
                                {\r
-                                       this.ctキー反復用[i] = null;\r
+                                       Trace.TraceError(e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい");\r
+                               }\r
+                               catch (Exception e)\r
+                               {\r
+                                       Trace.TraceError(e.Message);\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.TraceInformation("コンフィグステージの非活性化を完了しました。");\r
+                                       Trace.Unindent();\r
                                }\r
-\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums = (int)(fDisplayLagTimeBaseMs.Drums * (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1));\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar = (int)(fDisplayLagTimeBaseMs.Guitar * (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar + 1));\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass = (int)(fDisplayLagTimeBaseMs.Bass * (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass + 1));\r
-\r
-                               base.On非活性化();\r
-                       }\r
-                       catch (UnauthorizedAccessException e)\r
-                       {\r
-                               Trace.TraceError(e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい");\r
-                       }\r
-                       catch (Exception e)\r
-                       {\r
-                               Trace.TraceError(e.Message);\r
-                       }\r
-                       finally\r
-                       {\r
-                               Trace.TraceInformation("コンフィグステージの非活性化を完了しました。");\r
-                               Trace.Unindent();\r
                        }\r
                }\r
-               public override void OnManagedリソースの作成()                                                                                   // OPTIONと画像以外共通\r
+\r
+               public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.tx背景 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig background.jpg"), false);\r
                                this.tx上部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig header panel.png"), true);\r
@@ -148,9 +226,10 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
-               public override void OnManagedリソースの解放()                                                                                   // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)\r
+\r
+               public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx背景);\r
                                TextureFactory.tテクスチャの解放(ref this.tx上部パネル);\r
@@ -160,354 +239,263 @@ namespace DTXMania
                                prvFont.Dispose();\r
                                for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)\r
                                {\r
-                                       txMenuItemLeft[i, 0].Dispose();\r
-                                       txMenuItemLeft[i, 0] = null;\r
-                                       txMenuItemLeft[i, 1].Dispose();\r
-                                       txMenuItemLeft[i, 1] = null;\r
+                                       TextureFactory.tテクスチャの解放(ref txMenuItemLeft[i, 0]);\r
+                                       TextureFactory.tテクスチャの解放(ref txMenuItemLeft[i, 1]);\r
                                }\r
                                txMenuItemLeft = null;\r
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してない)\r
-                               return 0;\r
-\r
-                       if (base.b初めての進行描画)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
-                               this.actFIFO.tフェードイン開始();\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
+                               if (base.b初めての進行描画)\r
+                               {\r
+                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
+                                       this.actFIFO.tフェードイン開始();\r
+                                       base.b初めての進行描画 = false;\r
+                               }\r
 \r
-                       // 描画\r
-\r
-                       #region [ 背景 ]\r
-                       //---------------------\r
-                       if (this.tx背景 != null)\r
-                               this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ メニューカーソル ]\r
-                       //---------------------\r
-                       if (this.txMenuカーソル != null)\r
-                       {\r
-                               Rectangle rectangle;\r
-                               this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;\r
-                               int x = (int)(0x37 * Scale.X);\r
-                               int y = (int)((0x61 + (this.n現在のメニュー番号 * 0x19)) * Scale.Y);\r
-                               int num3 = (int)(170 * Scale.X);\r
-                               this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
-                               this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, (x + num3) - 0x10 * Scale.X, y, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
-                               x += (int)(0x10 * Scale.X);\r
-                               for (num3 -= (int)(0x20 * Scale.X); num3 > 0; num3 -= rectangle.Width)\r
+                               // 描画\r
+                               if (this.tx背景 != null)\r
                                {\r
-                                       rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
-                                       if (num3 < (int)(0x10 * Scale.X))\r
-                                       {\r
-                                               rectangle.Width -= (int)(0x10 * Scale.X) - num3;\r
-                                       }\r
-                                       this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, rectangle);\r
-                                       x += rectangle.Width;\r
+                                       this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
                                }\r
-                       }\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ メニュー ]\r
-                       //---------------------\r
-                       int menuY = (int)(100 * Scale.Y) - 20;\r
-                       int stepY = (int)(25 * Scale.Y);\r
-                       for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)\r
-                       {\r
-                               //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?\r
-                               //      prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :\r
-                               //      prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );\r
-                               //txMenuItemLeft = TextureFactory.tテクスチャの生成( bmpStr, false );\r
-                               int flag = (this.n現在のメニュー番号 == i) ? 1 : 0;\r
-                               int num4 = txMenuItemLeft[i, flag].sz画像サイズ.Width;\r
-                               txMenuItemLeft[i, flag].t2D描画(CDTXMania.Instance.Device, 0x8a * Scale.X - (num4 / 2), menuY); //55\r
-                               //txMenuItem.Dispose();\r
-                               menuY += stepY;\r
-                       }\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ 説明文パネル ]\r
-                       //---------------------\r
-                       if (this.tx説明文パネル != null)\r
-                               this.tx説明文パネル.t2D描画(CDTXMania.Instance.Device, 0x1d * Scale.X, 0xf8 * Scale.Y);\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ アイテム ]\r
-                       //---------------------\r
-                       switch (this.eItemPanelモード)\r
-                       {\r
-                               case EItemPanelモード.パッド一覧:\r
-                                       this.actList.t進行描画(!this.bメニューにフォーカス中);\r
-                                       break;\r
 \r
-                               case EItemPanelモード.キーコード一覧:\r
-                                       this.actKeyAssign.On進行描画();\r
-                                       break;\r
-                       }\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ 上部パネル ]\r
-                       //---------------------\r
-                       if (this.tx上部パネル != null)\r
-                               this.tx上部パネル.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ 下部パネル ]\r
-                       //---------------------\r
-                       if (this.tx下部パネル != null)\r
-                               this.tx下部パネル.t2D描画(CDTXMania.Instance.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height);\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ オプションパネル ]\r
-                       //---------------------\r
-                       this.actオプションパネル.On進行描画();\r
-                       //---------------------\r
-                       #endregion\r
-                       #region [ フェードイン・アウト ]\r
-                       //---------------------\r
-                       switch (base.eフェーズID)\r
-                       {\r
-                               case CStage.Eフェーズ.共通_フェードイン:\r
-                                       if (this.actFIFO.On進行描画() != 0)\r
+                               #region [ メニューカーソル ]\r
+                               if (this.txMenuカーソル != null)\r
+                               {\r
+                                       Rectangle rectangle;\r
+                                       this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;\r
+                                       int x = (int)(0x37 * Scale.X);\r
+                                       int y = (int)((0x61 + (this.n現在のメニュー番号 * 0x19)) * Scale.Y);\r
+                                       int num3 = (int)(170 * Scale.X);\r
+                                       this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+                                       this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, (x + num3) - 0x10 * Scale.X, y, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+                                       x += (int)(0x10 * Scale.X);\r
+                                       for (num3 -= (int)(0x20 * Scale.X); num3 > 0; num3 -= rectangle.Width)\r
                                        {\r
-                                               CDTXMania.Instance.Skin.bgmコンフィグ画面.t再生する();\r
-                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+                                               rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
+                                               if (num3 < (int)(0x10 * Scale.X))\r
+                                               {\r
+                                                       rectangle.Width -= (int)(0x10 * Scale.X) - num3;\r
+                                               }\r
+                                               this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, rectangle);\r
+                                               x += rectangle.Width;\r
                                        }\r
-                                       break;\r
+                               }\r
+                               #endregion\r
 \r
-                               case CStage.Eフェーズ.共通_フェードアウト:\r
-                                       if (this.actFIFO.On進行描画() == 0)\r
-                                       {\r
+                               #region [ メニュー ]\r
+                               int menuY = (int)(100 * Scale.Y) - 20;\r
+                               int stepY = (int)(25 * Scale.Y);\r
+                               for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)\r
+                               {\r
+                                       //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?\r
+                                       //      prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :\r
+                                       //      prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );\r
+                                       //txMenuItemLeft = TextureFactory.tテクスチャの生成( bmpStr, false );\r
+                                       int flag = (this.n現在のメニュー番号 == i) ? 1 : 0;\r
+                                       int num4 = txMenuItemLeft[i, flag].sz画像サイズ.Width;\r
+                                       txMenuItemLeft[i, flag].t2D描画(CDTXMania.Instance.Device, 0x8a * Scale.X - (num4 / 2), menuY); //55\r
+                                                                                                                                                                                                                                                                                                                                                                                                                               //txMenuItem.Dispose();\r
+                                       menuY += stepY;\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ 説明文パネル ]\r
+                               if (this.tx説明文パネル != null)\r
+                               {\r
+                                       this.tx説明文パネル.t2D描画(CDTXMania.Instance.Device, 0x1d * Scale.X, 0xf8 * Scale.Y);\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ アイテム ]\r
+                               switch (this.eItemPanelモード)\r
+                               {\r
+                                       case EItemPanelモード.パッド一覧:\r
+                                               this.actList.t進行描画(!this.bメニューにフォーカス中);\r
                                                break;\r
-                                       }\r
-                                       return 1;\r
-                       }\r
-                       //---------------------\r
-                       #endregion\r
-\r
-                       #region [ Enumerating Songs ]\r
-                       // CActEnumSongs側で表示する\r
-                       #endregion\r
-\r
-                       // キー入力\r
-                       #region [ キー入力 ]\r
-                       if ((base.eフェーズID != CStage.Eフェーズ.共通_通常状態)\r
-                               || this.actKeyAssign.bキー入力待ちの最中である\r
-                               || CDTXMania.Instance.act現在入力を占有中のプラグイン != null)\r
-                               return 0;\r
-\r
-                       // 曲データの一覧取得中は、キー入力を無効化する\r
-                       if (!CDTXMania.Instance.EnumSongs.IsEnumerating || CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 != true)\r
-                       {\r
-                               if ((CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT)) || CDTXMania.Instance.Pad.b押されたGB(Eパッド.FT))\r
+\r
+                                       case EItemPanelモード.キーコード一覧:\r
+                                               this.actKeyAssign.On進行描画();\r
+                                               break;\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ 上部パネル ]\r
+                               if (this.tx上部パネル != null)\r
                                {\r
-                                       CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                       if (!this.bメニューにフォーカス中)\r
-                                       {\r
-                                               if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
+                                       this.tx上部パネル.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ 下部パネル ]\r
+                               if (this.tx下部パネル != null)\r
+                               {\r
+                                       this.tx下部パネル.t2D描画(CDTXMania.Instance.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height);\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ オプションパネル ]\r
+                               this.actオプションパネル.On進行描画();\r
+                               #endregion\r
+\r
+                               #region [ フェードイン・アウト ]\r
+                               switch (base.eフェーズID)\r
+                               {\r
+                                       case CStage.Eフェーズ.共通_フェードイン:\r
+                                               if (this.actFIFO.On進行描画() != 0)\r
                                                {\r
-                                                       CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
-                                                       return 0;\r
+                                                       CDTXMania.Instance.Skin.bgmコンフィグ画面.t再生する();\r
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
                                                }\r
-                                               if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter)   // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+                                               break;\r
+\r
+                                       case CStage.Eフェーズ.共通_フェードアウト:\r
+                                               if (this.actFIFO.On進行描画() == 0)\r
                                                {\r
-                                                       this.bメニューにフォーカス中 = true;\r
+                                                       break;\r
                                                }\r
-                                               this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
-                                               this.actList.tEsc押下();                                                              // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.actFIFO.tフェードアウト開始();\r
-                                               base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
-                                       }\r
+                                               return 1;\r
                                }\r
-                               #region [ ← ]\r
-                               else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow)) // 左カーソルキー\r
+                               #endregion\r
+\r
+                               // キー入力\r
+                               #region [ キー入力 ]\r
+                               if ((base.eフェーズID != CStage.Eフェーズ.共通_通常状態)\r
+                                               || this.actKeyAssign.bキー入力待ちの最中である\r
+                                               || CDTXMania.Instance.act現在入力を占有中のプラグイン != null)\r
                                {\r
-                                       if (!this.bメニューにフォーカス中)\r
+                                       return 0;\r
+                               }\r
+\r
+                               // 曲データの一覧取得中は、キー入力を無効化する\r
+                               if (!CDTXMania.Instance.EnumSongs.IsEnumerating || !CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得)\r
+                               {\r
+                                       if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.Instance.Pad.bCancelPadIsPressedDGB())\r
                                        {\r
-                                               if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
-                                               {\r
-                                                       //キーコンフィグ画面中は、[←]押下に反応させない\r
-                                                       return 0;\r
-                                               }\r
-                                               if (this.actList.bIsFocusingParameter)\r
+                                               CDTXMania.Instance.Skin.sound取消音.t再生する();\r
+                                               if (!this.bメニューにフォーカス中)\r
                                                {\r
-                                                       // パラメータを増減している最中も、[←]押下に反応させない\r
-                                                       return 0;\r
+                                                       if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
+                                                       {\r
+                                                               CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
+                                                               return 0;\r
+                                                       }\r
+                                                       if (this.actList.b楽器またはシステム用メニューである && !this.actList.bIsFocusingParameter)   // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+                                                       {\r
+                                                               this.bメニューにフォーカス中 = true;\r
+                                                       }\r
+                                                       this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
+                                                       this.actList.tEsc押下();                              // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
                                                }\r
-                                               if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter)   // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+                                               else\r
                                                {\r
-                                                       this.bメニューにフォーカス中 = true;\r
+                                                       this.actFIFO.tフェードアウト開始();\r
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                }\r
-                                               CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                               this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
-                                               this.actList.tEsc押下();                                                              // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
                                        }\r
-                               }\r
-                               #endregion\r
-                               else if ((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
-                               {\r
-                                       #region [ EXIT ]\r
-                                       if (this.n現在のメニュー番号 == 4)\r
+                                       #region [ ← ]\r
+                                       else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))   // 左カーソルキー\r
                                        {\r
-                                               CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                               this.actFIFO.tフェードアウト開始();\r
-                                               base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+                                               if (!this.bメニューにフォーカス中)\r
+                                               {\r
+                                                       if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
+                                                       {\r
+                                                               // キーコンフィグ画面中は、[←]押下に反応させない\r
+                                                               return 0;\r
+                                                       }\r
+                                                       if (this.actList.bIsFocusingParameter)\r
+                                                       {\r
+                                                               // パラメータを増減している最中も、[←]押下に反応させない\r
+                                                               return 0;\r
+                                                       }\r
+                                                       // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+                                                       if (this.actList.b楽器またはシステム用メニューである && !this.actList.bIsFocusingParameter)\r
+                                                       {\r
+                                                               this.bメニューにフォーカス中 = true;\r
+                                                       }\r
+                                                       CDTXMania.Instance.Skin.sound取消音.t再生する();\r
+                                                       this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
+                                                       // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
+                                                       this.actList.tEsc押下();\r
+                                               }\r
                                        }\r
                                        #endregion\r
-                                       else if (this.bメニューにフォーカス中)\r
-                                       {\r
-                                               CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                               this.bメニューにフォーカス中 = false;\r
-                                               this.t説明文パネルに現在選択されている項目の説明を描画する();\r
-                                       }\r
-                                       else\r
+                                       else if (\r
+                                               (CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+                                               (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
                                        {\r
-                                               switch (this.eItemPanelモード)\r
+                                               #region [ EXIT ]\r
+                                               if (this.n現在のメニュー番号 == 4)\r
                                                {\r
-                                                       case EItemPanelモード.パッド一覧:\r
-                                                               bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected;    // #24525 2011.3.15 yyagi\r
-                                                               this.actList.tEnter押下();\r
-                                                               if (this.actList.b現在選択されている項目はReturnToMenuである)\r
-                                                               {\r
-                                                                       this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
-                                                                       if (bIsKeyAssignSelectedBeforeHitEnter == false)                                                        // #24525 2011.3.15 yyagi\r
+                                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                                       this.actFIFO.tフェードアウト開始();\r
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+                                               }\r
+                                               #endregion\r
+                                               else if (this.bメニューにフォーカス中)\r
+                                               {\r
+                                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                                       this.bメニューにフォーカス中 = false;\r
+                                                       this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       switch (this.eItemPanelモード)\r
+                                                       {\r
+                                                               case EItemPanelモード.パッド一覧:\r
+                                                                       if (this.actList.tEnter押下())\r
                                                                        {\r
-                                                                               this.bメニューにフォーカス中 = true;\r
+                                                                               bメニューにフォーカス中 = true;\r
                                                                        }\r
-                                                               }\r
-                                                               break;\r
+                                                                       break;\r
 \r
-                                                       case EItemPanelモード.キーコード一覧:\r
-                                                               this.actKeyAssign.tEnter押下();\r
-                                                               break;\r
+                                                               case EItemPanelモード.キーコード一覧:\r
+                                                                       this.actKeyAssign.tEnter押下();\r
+                                                                       break;\r
+                                                       }\r
                                                }\r
                                        }\r
-                               }\r
-                               #region [ → ]\r
-                               else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))        // 右カーソルキー\r
-                               {\r
-                                       #region [ EXIT ]\r
-                                       if (this.n現在のメニュー番号 == 4)\r
+                                       #region [ → ]\r
+                                       else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))  // 右カーソルキー\r
                                        {\r
-                                               // 何もしない\r
+                                               #region [ EXIT ]\r
+                                               if (this.n現在のメニュー番号 == 4)\r
+                                               {\r
+                                                       // 何もしない\r
+                                               }\r
+                                               #endregion\r
+                                               else if (this.bメニューにフォーカス中)\r
+                                               {\r
+                                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                                       this.bメニューにフォーカス中 = false;\r
+                                                       this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+                                               }\r
                                        }\r
                                        #endregion\r
-                                       else if (this.bメニューにフォーカス中)\r
+                                       this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtR) || CDTXMania.Instance.Pad.b押されている(EPad.BsR), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
                                        {\r
-                                               CDTXMania.Instance.Skin.sound決定音.t再生する();\r
-                                               this.bメニューにフォーカス中 = false;\r
-                                               this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+                                               this.tカーソルを上へ移動する();\r
                                        }\r
-                               }\r
-                               #endregion\r
-                               this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                               this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.HH), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                               if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))\r
-                               {\r
-                                       this.tカーソルを上へ移動する();\r
-                               }\r
-                               this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                               this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.BD), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                               if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))\r
-                               {\r
-                                       this.tカーソルを下へ移動する();\r
-                               }\r
-                       }\r
-                       #endregion\r
-                       return 0;\r
-               }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private enum EItemPanelモード\r
-               {\r
-                       パッド一覧,\r
-                       キーコード一覧\r
-               }\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
+                                       this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtB) || CDTXMania.Instance.Pad.b押されている(EPad.BsB), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.LT))\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
+                                               this.tカーソルを下へ移動する();\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
+                               #endregion\r
                        }\r
+                       return 0;\r
                }\r
 \r
-               private CActFIFOWhite actFIFO;\r
-               private CActConfigKeyAssign actKeyAssign;\r
-               private CActConfigList actList;\r
-               private CActオプションパネル actオプションパネル;\r
-               private bool bメニューにフォーカス中;\r
-               private STキー反復用カウンタ ctキー反復用;\r
-               private const int DESC_H = 0x80;\r
-               private const int DESC_W = 220;\r
-               private EItemPanelモード eItemPanelモード;\r
-               private Font ftフォント;\r
-               private int n現在のメニュー番号;\r
-               private CTexture txMenuカーソル;\r
-               private CTextureAf tx下部パネル;\r
-               private CTextureAf tx上部パネル;\r
-               private CTexture tx説明文パネル;\r
-               private CTexture tx背景;\r
-               private CPrivateFastFont prvFont;\r
-               private CTexture[,] txMenuItemLeft;\r
-               private STDGBVALUE<float> fDisplayLagTimeBaseMs;\r
 \r
                private void tカーソルを下へ移動する()\r
                {\r
@@ -516,11 +504,11 @@ namespace DTXMania
                                switch (this.eItemPanelモード)\r
                                {\r
                                        case EItemPanelモード.パッド一覧:\r
-                                               this.actList.t次に移動();\r
+                                               this.actList.OnNext();\r
                                                return;\r
 \r
                                        case EItemPanelモード.キーコード一覧:\r
-                                               this.actKeyAssign.t次に移動();\r
+                                               this.actKeyAssign.OnNext();\r
                                                return;\r
                                }\r
                        }\r
@@ -531,31 +519,19 @@ namespace DTXMania
                                switch (this.n現在のメニュー番号)\r
                                {\r
                                        case 0:\r
-                                               this.actList.t項目リストの設定_System();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.System);\r
                                                break;\r
 \r
-                                       //case 1:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignDrums();\r
-                                       //    break;\r
-\r
-                                       //case 2:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignGuitar();\r
-                                       //    break;\r
-\r
-                                       //case 3:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignBass();\r
-                                       //    break;\r
-\r
                                        case 1:\r
-                                               this.actList.t項目リストの設定_Drums();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Drums);\r
                                                break;\r
 \r
                                        case 2:\r
-                                               this.actList.t項目リストの設定_Guitar();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Guitar);\r
                                                break;\r
 \r
                                        case 3:\r
-                                               this.actList.t項目リストの設定_Bass();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Bass);\r
                                                break;\r
 \r
                                        case 4:\r
@@ -565,6 +541,7 @@ namespace DTXMania
                                this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
                        }\r
                }\r
+\r
                private void tカーソルを上へ移動する()\r
                {\r
                        if (!this.bメニューにフォーカス中)\r
@@ -572,11 +549,11 @@ namespace DTXMania
                                switch (this.eItemPanelモード)\r
                                {\r
                                        case EItemPanelモード.パッド一覧:\r
-                                               this.actList.t前に移動();\r
+                                               this.actList.OnPrevious();\r
                                                return;\r
 \r
                                        case EItemPanelモード.キーコード一覧:\r
-                                               this.actKeyAssign.t前に移動();\r
+                                               this.actKeyAssign.OnPrevious();\r
                                                return;\r
                                }\r
                        }\r
@@ -587,30 +564,19 @@ namespace DTXMania
                                switch (this.n現在のメニュー番号)\r
                                {\r
                                        case 0:\r
-                                               this.actList.t項目リストの設定_System();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.System);\r
                                                break;\r
 \r
-                                       //case 1:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignDrums();\r
-                                       //    break;\r
-\r
-                                       //case 2:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignGuitar();\r
-                                       //    break;\r
-\r
-                                       //case 3:\r
-                                       //    this.actList.t項目リストの設定・KeyAssignBass();\r
-                                       //    break;\r
                                        case 1:\r
-                                               this.actList.t項目リストの設定_Drums();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Drums);\r
                                                break;\r
 \r
                                        case 2:\r
-                                               this.actList.t項目リストの設定_Guitar();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Guitar);\r
                                                break;\r
 \r
                                        case 3:\r
-                                               this.actList.t項目リストの設定_Bass();\r
+                                               this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Bass);\r
                                                break;\r
 \r
                                        case 4:\r
@@ -620,78 +586,80 @@ namespace DTXMania
                                this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
                        }\r
                }\r
+\r
                private void t説明文パネルに現在選択されているメニューの説明を描画する()\r
                {\r
-                       try\r
+                       using (Bitmap image = new Bitmap((int)(220 * 2 * Scale.X), (int)(192 * 2 * Scale.Y)))\r
                        {\r
-                               var image = new Bitmap((int)(220 * 2 * Scale.X), (int)(192 * 2 * Scale.Y));             // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
-                               var graphics = Graphics.FromImage(image);\r
-                               graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
-\r
-                               string[,] str = new string[2, 2];\r
-                               switch (this.n現在のメニュー番号)\r
+                               // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
+                               using (Graphics graphics = Graphics.FromImage(image))\r
                                {\r
-                                       case 0:\r
-                                               str[0, 0] = "システムに関係する項目を設定します。";\r
-                                               str[0, 1] = "";\r
-                                               str[1, 0] = "Settings for an overall systems.";\r
-                                               break;\r
+                                       graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
 \r
-                                       //case 1:\r
-                                       //    str[0, 0] = "ドラムのキー入力に関する項目を設";\r
-                                       //    str[0, 1] = "定します。";\r
-                                       //    str[1, 0] = "Settings for the drums key/pad inputs.";\r
-                                       //    str[1, 1] = "";\r
-                                       //    break;\r
-\r
-                                       //case 2:\r
-                                       //    str[0, 0] = "ギターのキー入力に関する項目を設";\r
-                                       //    str[0, 1] = "定します。";\r
-                                       //    str[1, 0] = "Settings for the guitar key/pad inputs.";\r
-                                       //    str[1, 1] = "";\r
-                                       //    break;\r
-\r
-                                       //case 3:\r
-                                       //    str[0, 0] = "ベースのキー入力に関する項目を設";\r
-                                       //    str[0, 1] = "定します。";\r
-                                       //    str[1, 0] = "Settings for the bass key/pad inputs.";\r
-                                       //    str[1, 1] = "";\r
-                                       //    break;\r
-                                       case 1:\r
-                                               str[0, 0] = "ドラムの演奏に関する項目を設定します。";\r
-                                               str[0, 1] = "";\r
-                                               str[1, 0] = "Settings to play the drums.";\r
-                                               str[1, 1] = "";\r
-                                               break;\r
-\r
-                                       case 2:\r
-                                               str[0, 0] = "ギターの演奏に関する項目を設定します。";\r
-                                               str[0, 1] = "";\r
-                                               str[1, 0] = "Settings to play the guitar.";\r
-                                               str[1, 1] = "";\r
-                                               break;\r
+                                       string[,] str = new string[2, 2];\r
+                                       switch (this.n現在のメニュー番号)\r
+                                       {\r
+                                               case 0:\r
+                                                       str[0, 0] = "システムに関係する項目を設定します。";\r
+                                                       str[0, 1] = "";\r
+                                                       str[1, 0] = "Settings for an overall systems.";\r
+                                                       break;\r
+\r
+                                               //case 1:\r
+                                               //    str[0, 0] = "ドラムのキー入力に関する項目を設";\r
+                                               //    str[0, 1] = "定します。";\r
+                                               //    str[1, 0] = "Settings for the drums key/pad inputs.";\r
+                                               //    str[1, 1] = "";\r
+                                               //    break;\r
+\r
+                                               //case 2:\r
+                                               //    str[0, 0] = "ギターのキー入力に関する項目を設";\r
+                                               //    str[0, 1] = "定します。";\r
+                                               //    str[1, 0] = "Settings for the guitar key/pad inputs.";\r
+                                               //    str[1, 1] = "";\r
+                                               //    break;\r
+\r
+                                               //case 3:\r
+                                               //    str[0, 0] = "ベースのキー入力に関する項目を設";\r
+                                               //    str[0, 1] = "定します。";\r
+                                               //    str[1, 0] = "Settings for the bass key/pad inputs.";\r
+                                               //    str[1, 1] = "";\r
+                                               //    break;\r
+                                               case 1:\r
+                                                       str[0, 0] = "ドラムの演奏に関する項目を設定します。";\r
+                                                       str[0, 1] = "";\r
+                                                       str[1, 0] = "Settings to play the drums.";\r
+                                                       str[1, 1] = "";\r
+                                                       break;\r
 \r
-                                       case 3:\r
-                                               str[0, 0] = "ベースの演奏に関する項目を設定します。";\r
-                                               str[0, 1] = "";\r
-                                               str[1, 0] = "Settings to play the bass.";\r
-                                               str[1, 1] = "";\r
-                                               break;\r
+                                               case 2:\r
+                                                       str[0, 0] = "ギターの演奏に関する項目を設定します。";\r
+                                                       str[0, 1] = "";\r
+                                                       str[1, 0] = "Settings to play the guitar.";\r
+                                                       str[1, 1] = "";\r
+                                                       break;\r
 \r
-                                       case 4:\r
-                                               str[0, 0] = "設定を保存し、コンフィグ画面を終了します。";\r
-                                               str[0, 1] = "";\r
-                                               str[1, 0] = "Save the settings and exit from\nCONFIGURATION menu.";\r
-                                               str[1, 1] = "";\r
-                                               break;\r
-                               }\r
+                                               case 3:\r
+                                                       str[0, 0] = "ベースの演奏に関する項目を設定します。";\r
+                                                       str[0, 1] = "";\r
+                                                       str[1, 0] = "Settings to play the bass.";\r
+                                                       str[1, 1] = "";\r
+                                                       break;\r
+\r
+                                               case 4:\r
+                                                       str[0, 0] = "設定を保存し、コンフィグ画面を終了します。";\r
+                                                       str[0, 1] = "";\r
+                                                       str[1, 0] = "Save the settings and exit from\nCONFIGURATION menu.";\r
+                                                       str[1, 1] = "";\r
+                                                       break;\r
+                                       }\r
 \r
-                               int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
-                               for (int i = 0; i < 2; i++)\r
-                               {\r
-                                       graphics.DrawString(str[c, i], this.ftフォント, Brushes.White, new PointF(4f * Scale.X, (i * 30) * Scale.Y));\r
+                                       int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
+                                       for (int i = 0; i < 2; i++)\r
+                                       {\r
+                                               graphics.DrawString(str[c, i], this.ftフォント, Brushes.White, new PointF(4f * Scale.X, (i * 30) * Scale.Y));\r
+                                       }\r
                                }\r
-                               graphics.Dispose();\r
                                if (this.tx説明文パネル != null)\r
                                {\r
                                        this.tx説明文パネル.Dispose();\r
@@ -699,34 +667,23 @@ namespace DTXMania
                                this.tx説明文パネル = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
                                // this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
                                // this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
-                               image.Dispose();\r
-                       }\r
-                       catch (CTextureCreateFailedException)\r
-                       {\r
-                               Trace.TraceError("説明文テクスチャの作成に失敗しました。");\r
-                               this.tx説明文パネル = null;\r
                        }\r
                }\r
+\r
                private void t説明文パネルに現在選択されている項目の説明を描画する()\r
                {\r
-                       try\r
+                       using (Bitmap image = new Bitmap((int)(220 * Scale.X), (int)(192 * Scale.Y)))\r
                        {\r
-                               var image = new Bitmap((int)(220 * Scale.X), (int)(192 * Scale.Y));             // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)\r
-                               var graphics = Graphics.FromImage(image);\r
-                               graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
-\r
-                               CItemBase item = this.actList.ib現在の選択項目;\r
-                               if ((item.str説明文 != null) && (item.str説明文.Length > 0))\r
+                               // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)\r
+                               using (Graphics graphics = Graphics.FromImage(image))\r
                                {\r
-                                       //int num = 0;\r
-                                       //foreach( string str in item.str説明文.Split( new char[] { '\n' } ) )\r
-                                       //{\r
-                                       //    graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, (float) num * Scale.Y ) );\r
-                                       //    num += 30;\r
-                                       //}\r
-                                       graphics.DrawString(item.str説明文, this.ftフォント, Brushes.White, new RectangleF(4f * Scale.X, (float)0 * Scale.Y, 630, 430));\r
+                                       graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
+                                       COptionBase item = this.actList.ib現在の選択項目;\r
+                                       if (!string.IsNullOrEmpty(item.explanation))\r
+                                       {\r
+                                               graphics.DrawString(item.explanation, this.ftフォント, Brushes.White, new RectangleF(4f * Scale.X, (float)0 * Scale.Y, 630, 430));\r
+                                       }\r
                                }\r
-                               graphics.Dispose();\r
                                if (this.tx説明文パネル != null)\r
                                {\r
                                        this.tx説明文パネル.Dispose();\r
@@ -734,15 +691,7 @@ namespace DTXMania
                                this.tx説明文パネル = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
                                //this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
                                //this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
-                               image.Dispose();\r
-                       }\r
-                       catch (CTextureCreateFailedException)\r
-                       {\r
-                               Trace.TraceError("説明文パネルテクスチャの作成に失敗しました。");\r
-                               this.tx説明文パネル = null;\r
                        }\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 438a6b9..0c73b3d 100644 (file)
@@ -177,7 +177,7 @@ namespace DTXMania
                                }\r
                                if (this.txArtist != null)\r
                                {\r
-                                       int x = (int)(SampleFramework.GameWindowSize.Width - (6 + 12) * Scale.X) - ((int)(this.txArtist.szテクスチャサイズ.Width * this.txArtist.vc拡大縮小倍率.X));              // #27648 2012.3.14 yyagi: -12 for scrollbar\r
+                                       int x = (int)(SampleFramework.GameWindowSize.Width - (6 + 12) * Scale.X) - ((int)(this.txArtist.szテクスチャサイズ.Width * this.txArtist.vc拡大縮小倍率.X));    // #27648 2012.3.14 yyagi: -12 for scrollbar\r
                                        int y = (int)(231 * Scale.Y);\r
                                        this.txArtist.t2D描画(CDTXMania.Instance.Device, x, y);\r
                                }\r
index edb5f3b..4a33338 100644 (file)
@@ -38,7 +38,7 @@ namespace DTXMania
                        {\r
                                string[,] infofiles = {         // #25381 2011.6.4 yyagi\r
                                   { @"Graphics\ScreenSelect information 1.png", @"Graphics\ScreenSelect information 2.png" },\r
-                                  { @"Graphics\ScreenSelect information 1e.png", @"Graphics\ScreenSelect information 2e.png" }\r
+                                        { @"Graphics\ScreenSelect information 1e.png", @"Graphics\ScreenSelect information 2e.png" }\r
                                };\r
                                int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
                                this.txInfo[0] = TextureFactory.tテクスチャの生成(CSkin.Path(infofiles[c, 0]), false);\r
@@ -68,7 +68,7 @@ namespace DTXMania
                                if (this.ctスクロール用.b終了値に達した)\r
                                {\r
                                        this.n画像Index上 = this.n画像Index下;\r
-                                       this.n画像Index下 = (this.n画像Index下 + 1) % stInfo.GetLength(0);                //8;\r
+                                       this.n画像Index下 = (this.n画像Index下 + 1) % stInfo.GetLength(0);    //8;\r
                                        this.ctスクロール用.n現在の値 = 0;\r
                                }\r
                                int n現在の値 = this.ctスクロール用.n現在の値;\r
index c1b06fd..17b7033 100644 (file)
@@ -13,18 +13,17 @@ namespace DTXMania
 {\r
        internal class CActSelectPopupMenu : CActivity\r
        {\r
-\r
                // プロパティ\r
-\r
-\r
                public int GetIndex(int pos)\r
                {\r
-                       return lciMenuItems[pos].cItem.GetIndex();\r
+                       return lciMenuItems[pos].cItem.Index;\r
                }\r
-               public object GetObj現在値(int pos)\r
+\r
+               public COptionBase GetObj現在値(int pos)\r
                {\r
-                       return lciMenuItems[pos].cItem.obj現在値();\r
+                       return lciMenuItems[pos].cItem;\r
                }\r
+\r
                public bool bGotoDetailConfig\r
                {\r
                        get;\r
@@ -32,16 +31,18 @@ namespace DTXMania
                }\r
 \r
                /// <summary>\r
-               /// ソートメニュー機能を使用中かどうか。外部からこれをtrueにすると、ソートメニューが出現する。falseにすると消える。\r
+               /// ポップアップメニュー機能を使用中かどうか。\r
+               /// 外部からこれをtrueにすると、ポップアップメニューが出現する。falseにすると消える。\r
                /// </summary>\r
                public bool bIsActivePopupMenu\r
                {\r
                        get;\r
                        private set;\r
                }\r
-               public virtual void tActivatePopupMenu(E楽器パート einst)\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
+                       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
@@ -52,20 +53,14 @@ namespace DTXMania
                        this.bIsActivePopupMenu = false;\r
                }\r
 \r
-\r
-               public void Initialize(List<CItemBase> menulist, bool showAllItems, string title)\r
-               {\r
-                       Initialize(menulist, showAllItems, title, 0);\r
-               }\r
-\r
-               public void Initialize(List<CItemBase> menulist, bool showAllItems, string title, int defaultPos)\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 CItemBase();\r
-                       stqMenuTitle.cItem.str項目名 = title;\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
@@ -73,7 +68,7 @@ namespace DTXMania
                        {\r
                                stQuickMenuItem stqm = new stQuickMenuItem();\r
                                stqm.cItem = menulist[i];\r
-                               stqm.txName = TextureFactory.tテクスチャの生成(prvFont.DrawPrivateFont(menulist[i].str項目名, Color.White, Color.Black), false);\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
@@ -91,53 +86,29 @@ namespace DTXMania
 \r
                                if (this.n現在の選択行 != lciMenuItems.Length - 1)\r
                                {\r
-                                       if (lciMenuItems[n現在の選択行].cItem.e種別 == CItemBase.E種別.リスト ||\r
-                                                lciMenuItems[n現在の選択行].cItem.e種別 == CItemBase.E種別.ONorOFFトグル ||\r
-                                                lciMenuItems[n現在の選択行].cItem.e種別 == CItemBase.E種別.ONorOFFor不定スリーステート)\r
-                                       {\r
-                                               lciMenuItems[n現在の選択行].cItem.t項目値を次へ移動();\r
-                                       }\r
-                                       else if (lciMenuItems[n現在の選択行].cItem.e種別 == CItemBase.E種別.整数)\r
-                                       {\r
-                                               bIsSelectingIntItem = !bIsSelectingIntItem;             // 選択状態/選択解除状態を反転する\r
-                                       }\r
-                                       else if (lciMenuItems[n現在の選択行].cItem.e種別 == CItemBase.E種別.切替リスト)\r
+                                       if (lciMenuItems[n現在の選択行].cItem is IOptionList ||\r
+                                                       lciMenuItems[n現在の選択行].cItem is COptionBool)\r
                                        {\r
-                                               // 特に何もしない\r
+                                               lciMenuItems[n現在の選択行].cItem.OnNext();\r
                                        }\r
-                                       else\r
+                                       else if (lciMenuItems[n現在の選択行].cItem is COptionInteger)\r
                                        {\r
-                                               throw new ArgumentException();\r
+                                               bIsSelectingIntItem = !bIsSelectingIntItem;     // 選択状態/選択解除状態を反転する\r
                                        }\r
                                        nItemSelecting = n現在の選択行;\r
                                }\r
-                               tEnter押下Main((int)lciMenuItems[n現在の選択行].cItem.GetIndex());\r
-\r
+                               lciMenuItems[n現在の選択行].cItem.OnEnter();\r
                                this.bキー入力待ち = true;\r
                        }\r
                }\r
 \r
                /// <summary>\r
-               /// Decide押下時の処理を、継承先で記述する。\r
-               /// </summary>\r
-               /// <param name="val">CItemBaseの現在の設定値のindex</param>\r
-               public virtual void tEnter押下Main(int val)\r
-               {\r
-               }\r
-               /// <summary>\r
-               /// Cancel押下時の追加処理があれば、継承先で記述する。\r
-               /// </summary>\r
-               public virtual void tCancel()\r
-               {\r
-               }\r
-               /// <summary>\r
                /// 追加の描画処理。必要に応じて、継承先で記述する。\r
                /// </summary>\r
                public virtual void t進行描画sub()\r
                {\r
                }\r
 \r
-\r
                public void t次に移動()\r
                {\r
                        if (this.bキー入力待ち)\r
@@ -145,7 +116,8 @@ namespace DTXMania
                                CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
                                if (bIsSelectingIntItem)\r
                                {\r
-                                       lciMenuItems[n現在の選択行].cItem.t項目値を前へ移動();            // 項目移動と数値上下は方向が逆になるので注意\r
+                                       // 項目移動と数値上下は方向が逆になるので注意\r
+                                       lciMenuItems[n現在の選択行].cItem.OnPrevious();\r
                                }\r
                                else\r
                                {\r
@@ -163,7 +135,8 @@ namespace DTXMania
                                CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
                                if (bIsSelectingIntItem)\r
                                {\r
-                                       lciMenuItems[n現在の選択行].cItem.t項目値を次へ移動();            // 項目移動と数値上下は方向が逆になるので注意\r
+                                       // 項目移動と数値上下は方向が逆になるので注意\r
+                                       lciMenuItems[n現在の選択行].cItem.OnNext();\r
                                }\r
                                else\r
                                {\r
@@ -175,11 +148,9 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       //              this.n現在の選択行 = 0;\r
+                       this.n現在の選択行 = 0;\r
                        this.bキー入力待ち = true;\r
                        for (int i = 0; i < 4; i++)\r
                        {\r
@@ -188,44 +159,26 @@ namespace DTXMania
                        base.b活性化してない = true;\r
 \r
                        this.bIsActivePopupMenu = false;\r
-                       //                      this.font = new CActDFPFont();\r
-                       //                      base.list子Activities.Add( this.font );\r
                        nItemSelecting = -1;\r
 \r
 \r
                        base.On活性化();\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
                        if (!base.b活性化してない)\r
                        {\r
-                               //                              base.list子Activities.Remove( this.font );\r
-                               //                              this.font.On非活性化();\r
-                               //                              this.font = null;\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
-\r
-                               // 解放はGCに任せてみる\r
-                               //if ( lciMenuItems != null )\r
-                               //{\r
-                               //    for ( int i = 0; i < lciMenuItems.Length; i++ )\r
-                               //    {\r
-                               //        lciMenuItems[ i ].cItem = null;\r
-                               //        TextureFactory.tテクスチャの解放( ref lciMenuItems[ i ].txName );\r
-                               //        lciMenuItems[ i ].txName = null;\r
-                               //    }\r
-                               //    lciMenuItems = null;\r
-                               //}\r
-                               //TextureFactory.tテクスチャの解放( ref txMenuTitle );\r
-\r
                                base.On非活性化();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -243,6 +196,7 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -266,20 +220,21 @@ namespace DTXMania
                                {\r
                                        #region [ Shift-F1: CONFIG画面 ]\r
                                        if ((CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)) &&\r
-                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1))\r
-                                       {       // [SHIFT] + [F1] CONFIG\r
+                                                       CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1))\r
+                                       {\r
+                                               // [SHIFT] + [F1] CONFIG\r
                                                CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                               tCancel();\r
+                                               // tCancel();\r
                                                this.bGotoDetailConfig = true;\r
                                        }\r
                                        #endregion\r
                                        #region [ キー入力: キャンセル ]\r
                                        else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape)\r
-                                               || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT)\r
-                                               || CDTXMania.Instance.Pad.b押されたGB(Eパッド.Cancel))\r
-                                       {       // キャンセル\r
+                                                       || CDTXMania.Instance.Pad.bCancelPadIsPressedDGB())\r
+                                       {\r
+                                               // キャンセル\r
                                                CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                               tCancel();\r
+                                               // tCancel();\r
                                                this.bIsActivePopupMenu = false;\r
                                        }\r
                                        #endregion\r
@@ -287,56 +242,56 @@ namespace DTXMania
                                        #region [ キー入力: 決定 ]\r
                                        // E楽器パート eInst = E楽器パート.UNKNOWN;\r
                                        ESortAction eAction = ESortAction.END;\r
-                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.GUITAR, Eパッド.Decide))\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.GtDecide))\r
                                        {\r
-                                               eInst = E楽器パート.GUITAR;\r
+                                               eInst = EPart.Guitar;\r
                                                eAction = ESortAction.Decide;\r
                                        }\r
-                                       else if (CDTXMania.Instance.Pad.b押された(E楽器パート.BASS, Eパッド.Decide))\r
+                                       else if (CDTXMania.Instance.Pad.b押された(EPad.BsDecide))\r
                                        {\r
-                                               eInst = E楽器パート.BASS;\r
+                                               eInst = EPart.Bass;\r
                                                eAction = ESortAction.Decide;\r
                                        }\r
                                        else if (\r
-                                               CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide) // #24756 2011.4.1 yyagi: Add condition "Drum-Decide" to enable CY in Sort Menu.\r
-                                               || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)\r
-                                               || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC)\r
-                                               || (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)))\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)SlimDX.DirectInput.Key.Return)))\r
                                        {\r
-                                               eInst = E楽器パート.DRUMS;\r
+                                               eInst = EPart.Drums;\r
                                                eAction = ESortAction.Decide;\r
                                        }\r
-                                       if (eAction == ESortAction.Decide)      // 決定\r
+                                       if (eAction == ESortAction.Decide)  // 決定\r
                                        {\r
                                                this.tEnter押下();\r
                                        }\r
                                        #endregion\r
                                        #region [ キー入力: 前に移動 ]\r
                                        this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.t前に移動));\r
-                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.R), new CCounter.DGキー処理(this.t前に移動));\r
-                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))\r
+                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtR) || CDTXMania.Instance.Pad.b押されている(EPad.BsR), new CCounter.DGキー処理(this.t前に移動));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
                                        {\r
                                                this.t前に移動();\r
                                        }\r
                                        #endregion\r
                                        #region [ キー入力: 次に移動 ]\r
                                        this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.t次に移動));\r
-                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.B), new CCounter.DGキー処理(this.t次に移動));\r
-                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))\r
+                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtB) || CDTXMania.Instance.Pad.b押されている(EPad.BsB), new CCounter.DGキー処理(this.t次に移動));\r
+                                       if (CDTXMania.Instance.Pad.b押された(EPad.LT))\r
                                        {\r
                                                this.t次に移動();\r
                                        }\r
                                        #endregion\r
                                }\r
-                               #region [ ポップアップメニュー 背景描画 ]\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 [ ã\82½ã\83¼ã\83\88ã\83¡ã\83\8bã\83¥ã\83¼ã\82¿ã\82¤ã\83\88ã\83«æ\8f\8fç\94» ]\r
+                               #region [ タイトル描画 ]\r
                                int x = (int)(240 * Scale.X), y = (int)(16 * Scale.Y);\r
-                               stqMenuTitle.txName.t2D描画(CDTXMania.Instance.Device, x, y);                                         //font.t文字列描画( x, y, strMenuTitle, false, 1.0f );\r
+                               stqMenuTitle.txName.t2D描画(CDTXMania.Instance.Device, x, y);\r
                                #endregion\r
                                #region [ カーソル描画 ]\r
                                if (this.txCursor != null)\r
@@ -347,7 +302,7 @@ namespace DTXMania
                                        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 + 3; j++)\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
@@ -355,11 +310,10 @@ namespace DTXMania
                                        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 [ ã\82½ã\83¼ã\83\88å\80\99è£\9c文字列描画 ]\r
+                               #region [ ã\83ªã\82¹ã\83\88å\80¤文字列描画 ]\r
                                for (int i = 0; i < lciMenuItems.Length; i++)\r
                                {\r
                                        bool bItemBold = (i == nItemSelecting && !bShowAllItems) ? true : false;\r
-                                       //font.t文字列描画( 190, 80 + i * 32, lciMenuItems[i].cItem.str項目名, bItemBold, 1.0f );\r
                                        if (lciMenuItems[i].txName != null)\r
                                        {\r
                                                int height = lciMenuItems[i].rectName.Height;\r
@@ -369,33 +323,15 @@ namespace DTXMania
                                        bool bValueBold = (bItemBold || (i == nItemSelecting && bIsSelectingIntItem)) ? true : false;\r
                                        if (bItemBold || bShowAllItems)\r
                                        {\r
-                                               string s;\r
-                                               switch (lciMenuItems[i].cItem.str項目名)\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
-                                                       case "PlaySpeed":\r
-                                                               {\r
-                                                                       double d = (double)((int)lciMenuItems[i].cItem.obj現在値() / 20.0);\r
-                                                                       s = "x" + d.ToString("0.000");\r
-                                                               }\r
-                                                               break;\r
-                                                       case "ScrollSpeed":\r
-                                                               {\r
-                                                                       double d = (double)((((int)lciMenuItems[i].cItem.obj現在値()) + 1) / 2.0);\r
-                                                                       s = "x" + d.ToString("0.0");\r
-                                                               }\r
-                                                               break;\r
-\r
-                                                       default:\r
-                                                               s = lciMenuItems[i].cItem.obj現在値().ToString();\r
-                                                               break;\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
-                                               //font.t文字列描画( (int)(340 * Scale.X), (int)(80 + i * 32), s, bValueBold, 1.0f * Scale.Y);\r
-                                               Bitmap bmpStr = bValueBold ?\r
-                                                       prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                                       prvFont.DrawPrivateFont(s, Color.White, Color.Black);\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
                                #endregion\r
@@ -413,15 +349,14 @@ namespace DTXMania
                private bool bキー入力待ち;\r
 \r
                internal int n現在の選択行;\r
-               internal E楽器パート eInst = E楽器パート.UNKNOWN;\r
+               internal EPart eInst = EPart.Unknown;\r
 \r
                private CTexture txPopupMenuBackground;\r
                private CTexture txCursor;\r
-               //private CActDFPFont font;\r
 \r
                internal struct stQuickMenuItem\r
                {\r
-                       internal CItemBase cItem;\r
+                       internal COptionBase cItem;\r
                        internal CTexture txName;\r
                        internal Rectangle rectName;\r
                }\r
@@ -489,7 +424,9 @@ namespace DTXMania
                {\r
                        Cancel, Decide, Previous, Next, END\r
                }\r
-               private int nItemSelecting;             // 「n現在の選択行」とは別に設ける。sortでメニュー表示直後にアイテムの中身を表示しないようにするため\r
+               // 「n現在の選択行」とは別に設ける。sortでメニュー表示直後にアイテムの中身を表示しないようにするため\r
+               private int nItemSelecting;\r
+\r
                //-----------------\r
                #endregion\r
        }\r
index f7177bb..8a64b8f 100644 (file)
@@ -20,11 +20,11 @@ namespace DTXMania
                }\r
                public void t選択曲が変更された()\r
                {\r
-                       this.ct遅延表示 = new CCounter(-CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms, 100, 1, CDTXMania.Instance.Timer);\r
+                       this.ct遅延表示 = new CCounter(-CDTXMania.Instance.ConfigIni.nPreImageWeightMs, 100, 1, CDTXMania.Instance.Timer);\r
                        this.b新しいプレビューファイルを読み込んだ = false;\r
                }\r
 \r
-               public bool bIsPlayingPremovie          // #27060\r
+               public bool bIsPlayingPremovie    // #27060\r
                {\r
                        get\r
                        {\r
@@ -239,7 +239,7 @@ namespace DTXMania
                        }\r
                        //this.pAVIBmp = IntPtr.Zero;\r
                        //this.nAVI再生開始時刻 = -1;\r
-                       if (!CDTXMania.Instance.ConfigIni.bストイックモード)\r
+                       if (!CDTXMania.Instance.ConfigIni.bStoicMode)\r
                        {\r
                                if (this.tプレビュー動画の指定があれば構築する())\r
                                {\r
@@ -289,7 +289,7 @@ namespace DTXMania
                private bool tプレビュー動画の指定があれば構築する()\r
                {\r
                        Cスコア cスコア = CDTXMania.Instance.stage選曲.r現在選択中のスコア;\r
-                       if ((CDTXMania.Instance.ConfigIni.bAVI有効 && (cスコア != null)) && !string.IsNullOrEmpty(cスコア.譜面情報.Premovie))\r
+                       if ((CDTXMania.Instance.ConfigIni.bAVI && (cスコア != null)) && !string.IsNullOrEmpty(cスコア.譜面情報.Premovie))\r
                        {\r
                                string filename = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Premovie;\r
                                if (filename.Equals(this.str現在のファイル名))\r
@@ -309,9 +309,9 @@ namespace DTXMania
                                }\r
                                try\r
                                {\r
-                                       this.rAVI = new CDTX.CAVI(00, this.str現在のファイル名, "", CDTXMania.Instance.ConfigIni.n演奏速度);\r
+                                       this.rAVI = new CDTX.CAVI(00, this.str現在のファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
                                        this.rAVI.OnDeviceCreated();\r
-                                       this.actAVI.Start(Ech定義.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
+                                       this.actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
                                }\r
                                catch (Exception e)\r
                                {\r
@@ -404,7 +404,7 @@ namespace DTXMania
                                                        {\r
                                                                str = cスコア.譜面情報.ジャンル;\r
                                                        }\r
-#if false      // #32644 2013.12.21 yyagi "Unknown"なジャンル表示を削除。DTX/BMSなどの種別表示もしない。\r
+#if false  // #32644 2013.12.21 yyagi "Unknown"なジャンル表示を削除。DTX/BMSなどの種別表示もしない。\r
                                                        else\r
                                                        {\r
                                                                switch( cスコア.譜面情報.曲種別 )\r
@@ -550,7 +550,7 @@ namespace DTXMania
 \r
                                if (this.rAVI != null)\r
                                {\r
-                                       this.actAVI.t進行描画(x, y, 612, 605);\r
+                                       actAVI.t進行描画(x, y, 612, 605);\r
                                        return;\r
                                }\r
 \r
@@ -568,8 +568,8 @@ namespace DTXMania
                                        this.r表示するプレビュー画像.vc拡大縮小倍率.X = cmg.magX;\r
                                        this.r表示するプレビュー画像.vc拡大縮小倍率.Y = cmg.magY;\r
 \r
-                                       x += (int)((612 - width * cmg.magX ) / 2 );\r
-                                       y += (int)((605 - height * cmg.magY ) / 2 );\r
+                                       x += (int)((612 - width * cmg.magX) / 2);\r
+                                       y += (int)((605 - height * cmg.magY) / 2);\r
                                        this.r表示するプレビュー画像.n透明度 = (int)(255f * num3);\r
                                        this.r表示するプレビュー画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
                                }\r
index 97c266b..39cf9e3 100644 (file)
@@ -33,7 +33,7 @@ namespace DTXMania
                                this.tBGMフェードイン開始();\r
                                if ((cスコア.譜面情報.Presound != null) && (cスコア.譜面情報.Presound.Length > 0))\r
                                {\r
-                                       this.ct再生待ちウェイト = new CCounter(0, CDTXMania.Instance.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms, 1, CDTXMania.Instance.Timer);\r
+                                       this.ct再生待ちウェイト = new CCounter(0, CDTXMania.Instance.ConfigIni.nPreSoundWeightMs, 1, CDTXMania.Instance.Timer);\r
                                }\r
                        }\r
                }\r
@@ -123,7 +123,7 @@ namespace DTXMania
                                try\r
                                {\r
                                        this.sound = CDTXMania.Instance.Sound管理.tサウンドを生成する(strPreviewFilename);\r
-                                       this.sound.n音量 = 80;        // CDTXMania.Instance.ConfigIni.n自動再生音量;                    // #25217 changed preview volume from AutoVolume\r
+                                       this.sound.n音量 = 80;  // CDTXMania.Instance.ConfigIni.n自動再生音量;                  // #25217 changed preview volume from AutoVolume\r
                                        this.sound.t再生を開始する(true);\r
                                        this.str現在のファイル名 = strPreviewFilename;\r
                                        this.tBGMフェードアウト開始();\r
index bd0cbd6..13c2a8e 100644 (file)
@@ -11,7 +11,13 @@ namespace DTXMania
 {\r
        internal class CActSelectQuickConfig : CActSelectPopupMenu\r
        {\r
-               private readonly string QuickCfgTitle = "Quick Config";\r
+               readonly string QuickCfgTitle = "Quick Config";\r
+               COptionStringList QTarget;\r
+               COptionStringList QAuto;\r
+               List<COptionBase> lci;\r
+               Font ft表示用フォント;\r
+               CTexture txパネル本体;\r
+               CTexture tx文字列パネル;\r
 \r
                public CActSelectQuickConfig()\r
                {\r
@@ -34,233 +40,165 @@ namespace DTXMania
                        •More... \r
                        •EXIT \r
                        */\r
-                       lci = new STDGBVALUE<List<CItemBase>> [3];\r
-                       // この画面に来る度に、メニューを作り直す。\r
-                       for (int nConfSet = 0; nConfSet < 3; nConfSet++)\r
+                       QTarget = new COptionStringList("Drums");\r
+                       QTarget.Initialize("Target", "", new string[] { "Drums", "Guitar", "Bass" });\r
+                       QTarget.OnEnterDelegate = () =>\r
                        {\r
-                               lci[nConfSet] = new STDGBVALUE<List<CItemBase>>();\r
-                               // ConfSet用の3つ分の枠。\r
-                               for (E楽器パート nInst = E楽器パート.DRUMS; nInst <= E楽器パート.BASS; nInst++)\r
+                               EPart nCurrentTarget = 0;\r
+                               if (QTarget.Index == 0)\r
                                {\r
-                                       // Drum/Guitar/Bassで3つ分、枠を作っておく\r
-                                       lci[nConfSet][nInst] = MakeListCItemBase(nConfSet, nInst);\r
+                                       nCurrentTarget = EPart.Drums;\r
                                }\r
-                       }\r
+                               else if (QTarget.Index == 1)\r
+                               {\r
+                                       nCurrentTarget = EPart.Guitar;\r
+                               }\r
+                               else if (QTarget.Index == 2)\r
+                               {\r
+                                       nCurrentTarget = EPart.Bass;\r
+                               }\r
+                               lci = MakeListCItemBase(nCurrentTarget);\r
+                               // eInst = (E楽器パート) nCurrentTarget;\r
+                               // ここではeInstは変えない。メニューを開いたタイミングでのみeInstを使う\r
+                               Initialize(lci, true, QuickCfgTitle, n現在の選択行);\r
+                               MakeAutoPanel();\r
+                       };\r
+                       lci = MakeListCItemBase(EPart.Drums);\r
                        // ConfSet=0, nInst=Drums\r
-                       base.Initialize(lci[nCurrentConfigSet][nCurrentTarget], true, QuickCfgTitle, 2);\r
+                       base.Initialize(lci, true, QuickCfgTitle, 2);\r
                }\r
 \r
-               private List<CItemBase> MakeListCItemBase(int nConfigSet, E楽器パート nInst)\r
+               private List<COptionBase> MakeListCItemBase(EPart nInst)\r
                {\r
-                       List<CItemBase> l = new List<CItemBase>();\r
+                       List<COptionBase> ret = new List<COptionBase>();\r
 \r
-                       #region [ 共通 Target/AutoMode/AutoLane ]\r
-                       l.Add(new CSwitchItemList("Target", CItemBase.Eパネル種別.通常, (int)nInst, "", "", new string[] { "Drums", "Guitar", "Bass" }));\r
-                       STDGBVALUE<int> automode = tConfigureAuto_DefaultSettings();\r
-                       if (nInst == E楽器パート.DRUMS)\r
+                       QAuto = new COptionStringList("Custom");\r
+                       if (nInst == EPart.Drums)\r
                        {\r
-                               l.Add(new CItemList("Auto Mode", CItemBase.Eパネル種別.通常, automode[nInst], "", "", new string[] { "All Auto", "Auto HH", "Auto BD", "Custom", "OFF" }));\r
+                               string[] items_dr = new string[] { "All On", "Auto HH", "Auto BD", "Custom", "All Off" };\r
+                               int dr_init_idx = 3;\r
+                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllTrue(EPart.Drums))\r
+                               {\r
+                                       dr_init_idx = 0;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoHH)\r
+                               {\r
+                                       dr_init_idx = 1;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoBD)\r
+                               {\r
+                                       dr_init_idx = 2;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllFalse(EPart.Drums))\r
+                               {\r
+                                       dr_init_idx = 4;\r
+                               }\r
+                               QAuto.Initialize("Auto", "", items_dr);\r
+                               QAuto.Index = dr_init_idx;\r
+                               QAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       if (QAuto.Value == "All On")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, EThreeState.On);\r
+                                       }\r
+                                       else if (QAuto.Value == "All Off")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, EThreeState.Off);\r
+                                       }\r
+                                       else if (QAuto.Value == "Auto HH")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoHH();\r
+                                       }\r
+                                       else if (QAuto.Value == "Auto BD")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoBD();\r
+                                       }\r
+                                       MakeAutoPanel();\r
+                               };\r
                        }\r
-                       else\r
+                       else if (nInst == EPart.Guitar || nInst == EPart.Bass)\r
                        {\r
-                               l.Add(new CItemList("Auto Mode", CItemBase.Eパネル種別.通常, automode[nInst], "", "", new string[] { "All Auto", "Auto Neck", "Auto Pick", "Custom", "OFF" }));\r
+                               string[] items_gt = new string[] { "All On", "Auto Pick", "Auto Neck", "Custom", "All Off" };\r
+                               // 初期値の決定\r
+                               int gt_init_idx = 3;\r
+                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllTrue(nInst))\r
+                               {\r
+                                       gt_init_idx = 0;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoPick(nInst))\r
+                               {\r
+                                       gt_init_idx = 1;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.bIsAutoNeck(nInst))\r
+                               {\r
+                                       gt_init_idx = 2;\r
+                               }\r
+                               else if (CDTXMania.Instance.ConfigIni.bAutoPlay.IsAllFalse(nInst))\r
+                               {\r
+                                       gt_init_idx = 4;\r
+                               }\r
+                               QAuto.Initialize("Auto", "", items_gt);\r
+                               QAuto.Index = gt_init_idx;\r
+                               QAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       if (QAuto.Value == "All On")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.On);\r
+                                       }\r
+                                       else if (QAuto.Value == "All Off")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.Off);\r
+                                       }\r
+                                       else if (QAuto.Value == "Auto Neck")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoNeck(nInst);\r
+                                       }\r
+                                       else if (QAuto.Value == "Auto Pick")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.SetAutoPick(nInst);\r
+                                       }\r
+                                       else if (QAuto.Value == "All Off")\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.bAutoPlay.Set(nInst, EThreeState.Off);\r
+                                       }\r
+                                       MakeAutoPanel();\r
+                               };\r
                        }\r
-                       #endregion\r
-                       #region [ 個別 ScrollSpeed ]\r
-                       l.Add(new CItemInteger("ScrollSpeed", 0, 1999, CDTXMania.Instance.ConfigIni.n譜面スクロール速度[nInst],\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
-                       #endregion\r
-                       #region [ 共通 Dark/Risky/PlaySpeed ]\r
-                       l.Add(new CItemList("Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.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
-                       l.Add(new CItemInteger("Risky", 0, 10, CDTXMania.Instance.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
-                       l.Add(new CItemInteger("PlaySpeed", 5, 40, CDTXMania.Instance.ConfigIni.n演奏速度,\r
-                               "曲の演奏速度を、速くしたり遅くした\n" +\r
-                               "りすることができます。\n" +\r
-                               "(※一部のサウンドカードでは正しく\n" +\r
-                               "再生できない可能性があります。)",\r
-                               "It changes the song speed.\n" +\r
-                               "For example, you can play in half\n" +\r
-                               " speed by setting PlaySpeed = 0.500\n" +\r
-                               " for your practice.\n" +\r
-                               "Note: It also changes the songs' pitch."));\r
-                       #endregion\r
-                       #region [ 個別 Sud/Hid ]\r
-                       int nSuddenHidden;\r
-                       if (CDTXMania.Instance.ConfigIni.eInvisible[nInst] != EInvisible.OFF)\r
+\r
+                       COptionLabel more = new COptionLabel("More", "");\r
+                       more.OnEnterDelegate = () =>\r
                        {\r
-                               nSuddenHidden = (int)CDTXMania.Instance.ConfigIni.eInvisible[nInst] + 3;\r
-                       }\r
-                       else\r
+                               bGotoDetailConfig = true;\r
+                               tDeativatePopupMenu();\r
+                       };\r
+\r
+                       COptionLabel tret = new COptionLabel("Return", "");\r
+                       tret.OnEnterDelegate = () =>\r
                        {\r
-                               nSuddenHidden = ((CDTXMania.Instance.ConfigIni.bHidden[nInst]) ? 2 : 0) + ((CDTXMania.Instance.ConfigIni.bSudden[nInst]) ? 1 : 0);\r
-                       }\r
-                       l.Add(new CItemList("Sud/Hid", CItemBase.Eパネル種別.通常, nSuddenHidden, "", "",\r
-                               new string[] { "None", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" }));\r
-                       #endregion\r
-                       #region [ 個別 Ghost ]\r
-                       l.Add(new CItemList("AUTO Ghost", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eAutoGhost[nInst],\r
-                                       "AUTOプレーのゴーストを指定します。\n",\r
-                                       "Specify Play Ghost data.\n",\r
-                                       new string[] { "Perfect", "Last Play", "Hi Skill", "Hi Score", "Online" }\r
-                                       ));\r
-                       l.Add(new CItemList("Target Ghost", CItemBase.Eパネル種別.通常, (int)CDTXMania.Instance.ConfigIni.eTargetGhost[nInst],\r
-                                       "ターゲットゴーストを指定します。\n",\r
-                                       "Specify Target Ghost data.\n",\r
-                                       new string[] { "None", "Perfect", "Last Play", "Hi Skill", "Hi Score", "Online" }\r
-                                       ));\r
-                       #endregion\r
-                       #region [ 共通 SET切り替え/More/Return ]\r
-                       l.Add(new CSwitchItemList("Config Set", CItemBase.Eパネル種別.通常, nCurrentConfigSet, "", "", new string[] { "SET-1", "SET-2", "SET-3" }));\r
-                       l.Add(new CSwitchItemList("More...", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "" }));\r
-                       l.Add(new CSwitchItemList("Return", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "", "" }));\r
-                       #endregion\r
+                               tDeativatePopupMenu();\r
+                       };\r
 \r
-                       return l;\r
-               }\r
+                       ret.Add(QTarget);\r
+                       ret.Add(QAuto);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed[nInst]);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.eDark);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.nRisky);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.eSudHidInv[nInst]);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.eAutoGhost[nInst]);\r
+                       ret.Add(CDTXMania.Instance.ConfigIni.eTargetGhost[nInst]);\r
+                       ret.Add(more);\r
+                       ret.Add(tret);\r
 \r
-               /// <summary>\r
-               /// 簡易CONFIGのAUTO設定値の初期値を、ConfigIniクラスから取得・推測する\r
-               /// </summary>\r
-               /// <returns>Drums,Guitar,BassのAutoMode値のリスト</returns>\r
-               private STDGBVALUE<int> tConfigureAuto_DefaultSettings()\r
-               {\r
-                       STDGBVALUE<int> ret = new STDGBVALUE<int>();\r
-                       int automode;\r
-                       #region [ Drums ]\r
-                       // "All Auto", "Auto HH", "Auto BD", "Custom", "OFF"\r
-                       if (CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである)\r
-                       {\r
-                               automode = 0;   // All Auto\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.LC == false && CDTXMania.Instance.ConfigIni.bAutoPlay.HH == true &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BD == false && CDTXMania.Instance.ConfigIni.bAutoPlay.SD == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.HT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.LT == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.FT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.CY == false)\r
-                       {\r
-                               automode = 1;   // Auto HH\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.LC == false && CDTXMania.Instance.ConfigIni.bAutoPlay.HH == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BD == true && CDTXMania.Instance.ConfigIni.bAutoPlay.SD == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.HT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.LT == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.FT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.CY == false)\r
-                       {\r
-                               automode = 2;   // Auto BD\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.LC == false && CDTXMania.Instance.ConfigIni.bAutoPlay.HH == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BD == false && CDTXMania.Instance.ConfigIni.bAutoPlay.SD == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.HT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.LT == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.FT == false && CDTXMania.Instance.ConfigIni.bAutoPlay.CY == false)\r
-                       {\r
-                               automode = 4;   // OFF\r
-                       }\r
-                       else\r
-                       {\r
-                               automode = 3;   // Custom\r
-                       }\r
-                       ret.Drums = automode;\r
-                       #endregion\r
-                       #region [ Guitar ]\r
-                       // "OFF", "ON" \r
-                       //                      l.Add( ( CDTXMania.Instance.ConfigIni.bAutoPlay.Guitar == true ) ? 1 : 0 );\r
-                       //                      l.Add( ( CDTXMania.Instance.ConfigIni.bAutoPlay.Bass   == true ) ? 1 : 0 );\r
-                       if (CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである)\r
-                       {\r
-                               automode = 0;   // All Auto\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR == true && CDTXMania.Instance.ConfigIni.bAutoPlay.GtG == true &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtB == true && CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtW == false)\r
-                       {\r
-                               automode = 1;   // Auto Neck\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR == false && CDTXMania.Instance.ConfigIni.bAutoPlay.GtG == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtB == false && CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick == true &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtW == false)\r
-                       {\r
-                               automode = 2;   // Auto Pick\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR == false && CDTXMania.Instance.ConfigIni.bAutoPlay.GtG == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtB == false && CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtW == false)\r
-                       {\r
-                               automode = 4;   // OFF\r
-                       }\r
-                       else\r
-                       {\r
-                               automode = 3;   // Custom\r
-                       }\r
-                       ret.Guitar = automode;\r
-                       #endregion\r
-                       #region [ Bass ]\r
-                       if (CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである)\r
-                       {\r
-                               automode = 0;   // All Auto\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR == true && CDTXMania.Instance.ConfigIni.bAutoPlay.BsG == true &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsB == true && CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsW == false)\r
-                       {\r
-                               automode = 1;   // Auto Neck\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR == false && CDTXMania.Instance.ConfigIni.bAutoPlay.BsG == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsB == false && CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick == true &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsW == false)\r
-                       {\r
-                               automode = 2;   // Auto Pick\r
-                       }\r
-                       else if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR == false && CDTXMania.Instance.ConfigIni.bAutoPlay.BsG == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsB == false && CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick == false &&\r
-                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsW == false)\r
-                       {\r
-                               automode = 4;   // OFF\r
-                       }\r
-                       else\r
-                       {\r
-                               automode = 3;   // Custom\r
-                       }\r
-                       ret.Bass = automode;\r
-                       #endregion\r
                        return ret;\r
                }\r
 \r
                // メソッド\r
-               public override void tActivatePopupMenu(E楽器パート einst)\r
+               public override void tActivatePopupMenu(EPart einst)\r
                {\r
                        this.CActSelectQuickConfigMain();\r
                        base.tActivatePopupMenu(einst);\r
                }\r
-               //public void tDeativatePopupMenu()\r
-               //{\r
-               //      base.tDeativatePopupMenu();\r
-               //}\r
 \r
                /// <summary>\r
                /// Auto Modeにフォーカスを合わせているときだけ、AUTOの設定状態を表示する。\r
@@ -268,9 +206,9 @@ namespace DTXMania
                /// </summary>\r
                public override void t進行描画sub()\r
                {\r
-                       if (base.n現在の選択行 == (int)EOrder.AutoMode)\r
+                       if (lci[base.n現在の選択行] == QAuto)\r
                        {\r
-                               if (tx文字列パネル == null)               // TagetとAuto Modeを全く変更せずにAuto Modeまで動かした場合限り、ここに来る\r
+                               if (tx文字列パネル == null)   // TagetとAuto Modeを全く変更せずにAuto Modeまで動かした場合限り、ここに来る\r
                                {\r
                                        MakeAutoPanel();\r
                                }\r
@@ -281,7 +219,7 @@ namespace DTXMania
                                }\r
                                if (this.tx文字列パネル != null)\r
                                {\r
-                                       int x = (nCurrentTarget == (int)E楽器パート.DRUMS) ? 230 : 260;\r
+                                       int x = (QTarget.Index == 0) ? 230 : 260;\r
                                        this.tx文字列パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, 190 * Scale.Y);\r
 \r
                                }\r
@@ -291,25 +229,29 @@ namespace DTXMania
                /// <summary>\r
                /// DrumsのAUTOパラメータを一覧表示するパネルを作成する\r
                /// </summary>\r
-               private void MakeAutoPanel()\r
+               public void MakeAutoPanel()\r
                {\r
                        Bitmap image = new Bitmap((int)(300 * Scale.X), (int)(130 * Scale.Y));\r
                        Graphics graphics = Graphics.FromImage(image);\r
 \r
                        string header = "", s = "";\r
-                       switch (nCurrentTarget)\r
+                       switch (QTarget.Index)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
+                               case 0:\r
                                        header = "LHSBHLFC";\r
+                                       s = GetAutoParameters(EPart.Drums);\r
+                                       break;\r
+                               case 1:\r
+                                       header = "RGBPW";\r
+                                       s = GetAutoParameters(EPart.Guitar);\r
                                        break;\r
-                               case E楽器パート.GUITAR:\r
-                               case E楽器パート.BASS:\r
+                               case 2:\r
                                        header = "RGBPW";\r
+                                       s = GetAutoParameters(EPart.Bass);\r
                                        break;\r
                                default:\r
                                        break;\r
                        }\r
-                       s = GetAutoParameters(nCurrentTarget);\r
                        for (int i = 0; i < header.Length; i++)\r
                        {\r
                                graphics.DrawString(header[i].ToString(), this.ft表示用フォント, Brushes.White, (float)i * 24 * Scale.X, (float)0f);\r
@@ -334,166 +276,37 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public override void tEnter押下Main(int nSortOrder)\r
-               {\r
-                       switch (n現在の選択行)\r
-                       {\r
-                               case (int)EOrder.Target:\r
-                                       if(nCurrentTarget==E楽器パート.BASS)\r
-                                       {\r
-                                               nCurrentTarget=E楽器パート.DRUMS;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               nCurrentTarget++;\r
-                                       }\r
-                                       // eInst = (E楽器パート) nCurrentTarget;   // ここではeInstは変えない。メニューを開いたタイミングでのみeInstを使う\r
-                                       Initialize(lci[nCurrentConfigSet][nCurrentTarget], true, QuickCfgTitle, n現在の選択行);\r
-                                       MakeAutoPanel();\r
-                                       break;\r
-\r
-                               case (int)EOrder.AutoMode:\r
-                                       MakeAutoPanel();\r
-                                       break;\r
-\r
-                               case (int)EOrder.ScrollSpeed:\r
-                                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度[nCurrentTarget] = (int)GetObj現在値((int)EOrder.ScrollSpeed);\r
-                                       break;\r
-\r
-                               case (int)EOrder.Dark:\r
-                                       {\r
-                                               Eダークモード d = (Eダークモード)GetIndex((int)EOrder.Dark);\r
-                                               CDTXMania.Instance.ConfigIni.eDark = d;\r
-                                               SetValueToAllTarget((int)EOrder.Dark, (int)d);          // 全楽器で共有する値のため、全targetに値を展開する\r
-                                       }\r
-                                       break;\r
-                               case (int)EOrder.Risky:\r
-                                       {\r
-                                               int r = (int)GetObj現在値((int)EOrder.Risky);\r
-                                               CDTXMania.Instance.ConfigIni.nRisky = r;\r
-                                               SetValueToAllTarget((int)EOrder.Risky, r);                      // 全楽器で共有する値のため、全targetに値を展開する\r
-                                       }\r
-                                       break;\r
-                               case (int)EOrder.PlaySpeed:\r
-                                       CDTXMania.Instance.ConfigIni.n演奏速度 = (int)GetObj現在値((int)EOrder.PlaySpeed);\r
-                                       break;\r
-                               case (int)EOrder.SuddenHidden:\r
-                                       int sh = (int)GetIndex((int)EOrder.SuddenHidden);\r
-                                       if (sh <= 3)\r
-                                       {\r
-                                               CDTXMania.Instance.ConfigIni.bSudden[nCurrentTarget] = ((sh & 1) > 0) ? true : false;\r
-                                               CDTXMania.Instance.ConfigIni.bHidden[nCurrentTarget] = ((sh & 2) > 0) ? true : false;\r
-                                               CDTXMania.Instance.ConfigIni.eInvisible[nCurrentTarget] = EInvisible.OFF;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               CDTXMania.Instance.ConfigIni.bSudden[nCurrentTarget] = CDTXMania.Instance.ConfigIni.bHidden[nCurrentTarget] = false;\r
-                                               CDTXMania.Instance.ConfigIni.eInvisible[nCurrentTarget] = (EInvisible)(sh - 3);\r
-                                       }\r
-                                       break;\r
-                               case (int)EOrder.AutoGhost: // #35411 chnmr0 AUTOゴーストデータ\r
-                                       EAutoGhostData gd = (EAutoGhostData)GetIndex((int)EOrder.AutoGhost);\r
-                                       CDTXMania.Instance.ConfigIni.eAutoGhost[nCurrentTarget] = gd;\r
-                                       break;\r
-\r
-                               case (int)EOrder.TargetGhost: // #35411 chnmr0 ターゲットゴーストデータ\r
-                                       ETargetGhostData gtd = (ETargetGhostData)GetIndex((int)EOrder.TargetGhost);\r
-                                       CDTXMania.Instance.ConfigIni.eTargetGhost[nCurrentTarget] = gtd;\r
-                                       break;\r
-\r
-                               case (int)EOrder.ConfSet:                       // CONF-SET切り替え\r
-                                       nCurrentConfigSet = (int)GetIndex((int)EOrder.ConfSet);\r
-                                       //Initialize( lci[ nCurrentConfigSet ], true, QuickCfgTitle, pos );\r
-                                       break;\r
-\r
-                               case (int)EOrder.More:\r
-                                       SetAutoParameters();                    // 簡易CONFIGメニュー脱出に伴い、簡易CONFIG内のAUTOの設定をConfigIniクラスに反映する\r
-                                       this.bGotoDetailConfig = true;\r
-                                       this.tDeativatePopupMenu();\r
-                                       break;\r
-\r
-                               case (int)EOrder.Return:\r
-                                       SetAutoParameters();                    // 簡易CONFIGメニュー脱出に伴い、簡易CONFIG内のAUTOの設定をConfigIniクラスに反映する\r
-                                       this.tDeativatePopupMenu();\r
-                                       break;\r
-                               default:\r
-                                       break;\r
-                       }\r
-               }\r
-\r
-               public override void tCancel()\r
-               {\r
-                       SetAutoParameters();\r
-                       // Autoの設定値保持のロジックを書くこと!\r
-                       // (Autoのパラメータ切り替え時は実際に値設定していないため、キャンセルまたはRetern, More...時に値設定する必要有り)\r
-               }\r
-\r
-               /// <summary>\r
-               /// 1つの値を、全targetに適用する。RiskyやDarkなど、全tatgetで共通の設定となるもので使う。\r
-               /// </summary>\r
-               /// <param name="order">設定項目リストの順番</param>\r
-               /// <param name="index">設定値(index)</param>\r
-               private void SetValueToAllTarget(int order, int index)\r
-               {\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
-                       {\r
-                               lci[nCurrentConfigSet][i][order].SetIndex(index);\r
-                       }\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               /// ConfigIni.bAutoPlayに簡易CONFIGの状態を反映する\r
-               /// </summary>\r
-               private void SetAutoParameters()\r
-               {\r
-                       for (E楽器パート target = E楽器パート.DRUMS; target <= E楽器パート.BASS; target++)\r
-                       {\r
-                               string str = GetAutoParameters(target);\r
-                               STDGBVALUE<int> pa = new STDGBVALUE<int>();\r
-                               pa.Drums =  (int)Eレーン.LC;\r
-                               pa.Guitar = (int)Eレーン.GtR;\r
-                               pa.Bass = (int)Eレーン.BsR;\r
-                               int start = pa[target];\r
-\r
-                               for (int i = 0; i < str.Length; i++)\r
-                               {\r
-                                       CDTXMania.Instance.ConfigIni.bAutoPlay[i + start] = (str[i] == 'A') ? true : false;\r
-                               }\r
-                       }\r
-               }\r
-\r
                /// <summary>\r
                /// 簡易CONFIG内のAUTO状態を、文字列で返す。\r
                /// </summary>\r
                /// <param name="target">対象楽器</param>\r
                /// <returns>AutoならA,さもなくば_。この文字が複数並んだ文字列。</returns>\r
-               private string GetAutoParameters(E楽器パート target)\r
+               private string GetAutoParameters(EPart target)\r
                {\r
                        string s = "";\r
                        switch (target)\r
                        {\r
                                #region [ DRUMS ]\r
-                               case E楽器パート.DRUMS:\r
-                                       switch (lci[nCurrentConfigSet][target][(int)EOrder.AutoMode].GetIndex())\r
+                               case EPart.Drums:\r
+                                       switch (QAuto.Index)\r
                                        {\r
-                                               case 0: // All Auto\r
-                                                       s = "AAAAAAAA";\r
+                                               case 0: // All Auto\r
+                                                       s = "AAAAAAAAAA";\r
                                                        break;\r
-                                               case 1: // Auto HH\r
-                                                       s = "_A______";\r
+                                               case 1: // Auto HH\r
+                                                       s = "_AA_______";\r
                                                        break;\r
-                                               case 2: // Auto BD\r
-                                                       s = "___A____";\r
+                                               case 2: // Auto BD\r
+                                                       s = "____A_____";\r
                                                        break;\r
-                                               case 3: // Custom\r
-                                                       for (int i = 0; i < 8; i++)\r
+                                               case 3: // Custom\r
+                                                       for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; i++)\r
                                                        {\r
                                                                s += (CDTXMania.Instance.ConfigIni.bAutoPlay[i]) ? "A" : "_";\r
                                                        }\r
                                                        break;\r
-                                               case 4: // OFF\r
-                                                       s = "________";\r
+                                               case 4: // OFF\r
+                                                       s = "__________";\r
                                                        break;\r
                                                default:\r
                                                        throw new ArgumentOutOfRangeException();\r
@@ -501,29 +314,28 @@ namespace DTXMania
                                        break;\r
                                #endregion\r
                                #region [ Guitar / Bass ]\r
-                               case E楽器パート.GUITAR:\r
-                               case E楽器パート.BASS:\r
-                                       //                                      s = ( lci[ nCurrentConfigSet ][ target ][ (int) EOrder.AutoMode ].GetIndex() ) == 1 ? "A" : "_";\r
-                                       switch (lci[nCurrentConfigSet][target][(int)EOrder.AutoMode].GetIndex())\r
+                               case EPart.Guitar:\r
+                               case EPart.Bass:\r
+                                       switch (QAuto.Index)\r
                                        {\r
-                                               case 0: // All Auto\r
+                                               case 0: // All Auto\r
                                                        s = "AAAAA";\r
                                                        break;\r
-                                               case 1: // Auto Neck\r
+                                               case 1: // Auto Neck\r
                                                        s = "AAA__";\r
                                                        break;\r
-                                               case 2: // Auto Pick\r
+                                               case 2: // Auto Pick\r
                                                        s = "___A_";\r
                                                        break;\r
-                                               case 3: // Custom\r
-                                                       int p = (target == E楽器パート.GUITAR) ? (int)Eレーン.GtR : (int)Eレーン.BsR;\r
-                                                       int len = (int)Eレーン.GtW - (int)Eレーン.GtR + 1;\r
-                                                       for (int i = p; i < p + len; i++)\r
+                                               case 3: // Custom\r
+                                                       EPad from = (target == EPart.Guitar) ? EPad.GuitarPadMin : EPad.BassPadMin;\r
+                                                       EPad to = (target == EPart.Guitar) ? EPad.GuitarPadMax : EPad.BassPadMax;\r
+                                                       for (EPad i = from; i < to; i++)\r
                                                        {\r
                                                                s += (CDTXMania.Instance.ConfigIni.bAutoPlay[i]) ? "A" : "_";\r
                                                        }\r
                                                        break;\r
-                                               case 4: // OFF\r
+                                               case 4: // OFF\r
                                                        s = "_____";\r
                                                        break;\r
                                                default:\r
@@ -532,7 +344,7 @@ namespace DTXMania
                                        break;\r
                                default:\r
                                        break;\r
-                               #endregion\r
+                                       #endregion\r
                        }\r
                        return s;\r
                }\r
@@ -542,22 +354,30 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
-                       this.ft表示用フォント = new Font("Arial", 26f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);\r
-                       base.On活性化();\r
-                       this.bGotoDetailConfig = false;\r
+                       if (base.b活性化してない)\r
+                       {\r
+                               this.ft表示用フォント = new Font("Arial", 26f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);\r
+                               base.On活性化();\r
+                               this.bGotoDetailConfig = false;\r
+                       }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       if (this.ft表示用フォント != null)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               this.ft表示用フォント.Dispose();\r
-                               this.ft表示用フォント = null;\r
+                               if (this.ft表示用フォント != null)\r
+                               {\r
+                                       this.ft表示用フォント.Dispose();\r
+                                       this.ft表示用フォント = null;\r
+                               }\r
+                               base.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                string pathパネル本体 = CSkin.Path(@"Graphics\ScreenSelect popup auto settings.png");\r
                                if (File.Exists(pathパネル本体))\r
@@ -567,9 +387,10 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txパネル本体);\r
                                TextureFactory.tテクスチャの解放(ref this.tx文字列パネル);\r
@@ -577,35 +398,5 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               #region [ private ]\r
-               //-----------------\r
-               private E楽器パート nCurrentTarget = 0;\r
-               private int nCurrentConfigSet = 0;\r
-               private STDGBVALUE<List<CItemBase>> [] lci;\r
-               private enum EOrder : int\r
-               {\r
-                       Target = 0,\r
-                       AutoMode,\r
-                       //      AutoLane,\r
-                       ScrollSpeed,\r
-                       Dark,\r
-                       Risky,\r
-                       PlaySpeed,\r
-                       SuddenHidden,\r
-                       AutoGhost,\r
-                       TargetGhost,\r
-                       ConfSet,\r
-                       More,\r
-                       Return, END,\r
-                       Default = 99\r
-               };\r
-\r
-               private Font ft表示用フォント;\r
-               private CTexture txパネル本体;\r
-               private CTexture tx文字列パネル;\r
-               //-----------------\r
-               #endregion\r
        }\r
-\r
-\r
 }\r
index 8217545..2fc282e 100644 (file)
@@ -77,7 +77,7 @@ namespace DTXMania
                                                        (int)(12 * Scale.X),\r
                                                        h\r
                                                )\r
-                                       );      // 本当のy座標は88なんだが、なぜか約30のバイアスが掛かる・・・\r
+                                       );  // 本当のy座標は88なんだが、なぜか約30のバイアスが掛かる・・・\r
                                }\r
                        }\r
                        #endregion\r
index 557de72..bc5f96d 100644 (file)
@@ -22,7 +22,7 @@ namespace DTXMania
                        if ((c曲リストノード != null) && (cスコア != null))\r
                        {\r
                                this.n現在選択中の曲の難易度 = CDTXMania.Instance.stage選曲.n現在選択中の曲の難易度;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        int nLevel = cスコア.譜面情報.レベル[i];\r
                                        if (nLevel < 0)\r
@@ -58,7 +58,7 @@ namespace DTXMania
                        this.n本体X = (int)(3 * Scale.X);\r
                        this.n本体Y = (int)(0x15d * Scale.Y);\r
                        this.n現在選択中の曲の難易度 = 0;\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
                                this.n現在選択中の曲のレベル[i] = 0;\r
                                this.n現在選択中の曲の最高ランク[i] = CScoreIni.ERANK.UNKNOWN;\r
@@ -222,7 +222,7 @@ namespace DTXMania
                                        int y = this.n本体Y + (int)(0x10 * Scale.Y);\r
                                        index = this.n難易度開始文字位置;\r
                                        flag = true;\r
-                                       while (index < (this.n難易度開始文字位置 + 55))         // 0x24 -> 55\r
+                                       while (index < (this.n難易度開始文字位置 + 55))   // 0x24 -> 55\r
                                        {\r
                                                CDTXMania.Instance.act文字コンソール.tPrint(\r
                                                        x,\r
@@ -266,7 +266,7 @@ namespace DTXMania
                                //-----------------\r
                                if ((cスコア != null) && (this.txレベル数字 != null))\r
                                {\r
-                                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                        {\r
                                                Rectangle rect十の位;\r
                                                Rectangle rect一の位;\r
@@ -287,13 +287,13 @@ namespace DTXMania
                                                int nRectOffsetY = (((nLevel / 25) % 2) == 0) ? (int)(64 * Scale.Y) : 0;\r
                                                if (nLevel == 0)\r
                                                {\r
-                                                       rect十の位 = this.rc数字[11];              // "--"\r
-                                                       rect一の位 = this.rc数字[11];              // "-- "\r
+                                                       rect十の位 = this.rc数字[11];    // "--"\r
+                                                       rect一の位 = this.rc数字[11];    // "-- "\r
                                                }\r
                                                else if (cスコア.譜面情報.レベルを非表示にする)\r
                                                {\r
-                                                       rect十の位 = this.rc数字[10];              // "?"\r
-                                                       rect一の位 = this.rc数字[10];              // "?"\r
+                                                       rect十の位 = this.rc数字[10];    // "?"\r
+                                                       rect一の位 = this.rc数字[10];    // "?"\r
                                                }\r
                                                else\r
                                                {\r
@@ -312,7 +312,7 @@ namespace DTXMania
                                #endregion\r
                                #region [ 選択曲の 最高スキル値ゲージ+数値の描画 ]\r
                                //-----------------\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        if (this.n現在選択中の曲のレベル[i] != 0)\r
                                        {\r
@@ -369,7 +369,7 @@ namespace DTXMania
                                #endregion\r
                                #region [ 選択曲の 最高ランクの描画 ]\r
                                //-----------------\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        CScoreIni.ERANK nMaxRank = this.n現在選択中の曲の最高ランク[i];\r
                                        if (nMaxRank != CScoreIni.ERANK.UNKNOWN)\r
@@ -387,7 +387,7 @@ namespace DTXMania
                                #region [ 選択曲の FullCombo の 描画 ]\r
                                //-----------------\r
                                Rectangle rectFullCombo = new Rectangle((int)(30 * Scale.X), (int)(32 * Scale.Y), (int)(30 * Scale.X), (int)(16 * Scale.Y));\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        if (this.b現在選択中の曲がフルコンボ[i])\r
                                        {\r
@@ -422,13 +422,13 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private STDGBVALUE<bool> b現在選択中の曲がフルコンボ;\r
+               private STDGBSValue<bool> b現在選択中の曲がフルコンボ;\r
                private CCounter ct登場アニメ用;\r
                private CCounter ct難易度スクロール用;\r
                private CCounter ct難易度矢印用;\r
-               private STDGBVALUE<double> db現在選択中の曲の最高スキル値;\r
-               private STDGBVALUE<int> n現在選択中の曲のレベル;\r
-               private STDGBVALUE<CScoreIni.ERANK> n現在選択中の曲の最高ランク;\r
+               private STDGBSValue<double> db現在選択中の曲の最高スキル値;\r
+               private STDGBSValue<int> n現在選択中の曲のレベル;\r
+               private STDGBSValue<CScoreIni.ERANK> n現在選択中の曲の最高ランク;\r
                private int n現在選択中の曲の難易度;\r
                private int n難易度開始文字位置;\r
                private const int n難易度表示可能文字数 = 0x24;\r
@@ -498,7 +498,7 @@ namespace DTXMania
                                        num += length + 2;\r
                                }\r
                        }\r
-                       if (num >= (this.n難易度開始文字位置 + 55))    // 0x24 -> 55\r
+                       if (num >= (this.n難易度開始文字位置 + 55))  // 0x24 -> 55\r
                        {\r
                                return 1;\r
                        }\r
@@ -506,7 +506,7 @@ namespace DTXMania
                        {\r
                                return -1;\r
                        }\r
-                       if (((num + length) - 1) >= (this.n難易度開始文字位置 + 55))   // 0x24 -> 55\r
+                       if (((num + length) - 1) >= (this.n難易度開始文字位置 + 55)) // 0x24 -> 55\r
                        {\r
                                return 1;\r
                        }\r
index 8edb44f..9556abd 100644 (file)
@@ -91,13 +91,13 @@ namespace DTXMania
                        // 事前チェック。\r
 \r
                        if (song == null)\r
-                               return this.n現在のアンカ難易度レベル;      // 曲がまったくないよ\r
+                               return this.n現在のアンカ難易度レベル;  // 曲がまったくないよ\r
 \r
                        if (song.arスコア[this.n現在のアンカ難易度レベル] != null)\r
-                               return this.n現在のアンカ難易度レベル;      // 難易度ぴったりの曲があったよ\r
+                               return this.n現在のアンカ難易度レベル;  // 難易度ぴったりの曲があったよ\r
 \r
                        if ((song.eノード種別 == C曲リストノード.Eノード種別.BOX) || (song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX))\r
-                               return 0;                                                               // BOX と BACKBOX は関係無いよ\r
+                               return 0;               // BOX と BACKBOX は関係無いよ\r
 \r
 \r
                        // 現在のアンカレベルから、難易度上向きに検索開始。\r
@@ -107,9 +107,9 @@ namespace DTXMania
                        for (int i = 0; i < 5; i++)\r
                        {\r
                                if (song.arスコア[n最も近いレベル] != null)\r
-                                       break;  // 曲があった。\r
+                                       break;  // 曲があった。\r
 \r
-                               n最も近いレベル = (n最も近いレベル + 1) % 5;      // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
+                               n最も近いレベル = (n最も近いレベル + 1) % 5;  // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
                        }\r
 \r
 \r
@@ -125,9 +125,9 @@ namespace DTXMania
                                for (int i = 0; i < 5; i++)\r
                                {\r
                                        if (song.arスコア[n最も近いレベル] != null)\r
-                                               break;  // 曲があった。\r
+                                               break;  // 曲があった。\r
 \r
-                                       n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5;        // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
+                                       n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5;  // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
                                }\r
                        }\r
 \r
@@ -146,9 +146,9 @@ namespace DTXMania
 \r
                private List<C曲リストノード> GetSongListWithinMe(C曲リストノード song)\r
                {\r
-                       if (song.r親ノード == null)                                 // root階層のノートだったら\r
+                       if (song.r親ノード == null)         // root階層のノートだったら\r
                        {\r
-                               return CDTXMania.Instance.Songs管理.list曲ルート; // rootのリストを返す\r
+                               return CDTXMania.Instance.Songs管理.list曲ルート; // rootのリストを返す\r
                        }\r
                        else\r
                        {\r
@@ -164,14 +164,14 @@ namespace DTXMania
                }\r
 \r
 \r
-               public delegate void DGSortFunc(List<C曲リストノード> songList, E楽器パート eInst, int order, params object[] p);\r
+               public delegate void DGSortFunc(List<C曲リストノード> songList, EPart eInst, int order, params object[] p);\r
                /// <summary>\r
                /// 主にCSong管理.cs内にあるソート機能を、delegateで呼び出す。\r
                /// </summary>\r
                /// <param name="sf">ソート用に呼び出すメソッド</param>\r
                /// <param name="eInst">ソート基準とする楽器</param>\r
                /// <param name="order">-1=降順, 1=昇順</param>\r
-               public void t曲リストのソート(DGSortFunc sf, E楽器パート eInst, int order, params object[] p)\r
+               public void t曲リストのソート(DGSortFunc sf, EPart eInst, int order, params object[] p)\r
                {\r
                        List<C曲リストノード> songList = GetSongListWithinMe(this.r現在選択中の曲);\r
                        if (songList == null)\r
@@ -215,7 +215,7 @@ namespace DTXMania
                        {\r
                                this.r現在選択中の曲 = this.r現在選択中の曲.list子リスト[0];\r
                                this.t現在選択中の曲を元に曲バーを再構成する();\r
-                               this.t選択曲が変更された(false);                                                                       // #27648 項目数変更を反映させる\r
+                               this.t選択曲が変更された(false);                 // #27648 項目数変更を反映させる\r
                        }\r
                        return ret;\r
                }\r
@@ -248,7 +248,7 @@ namespace DTXMania
                        {\r
                                this.r現在選択中の曲 = this.r現在選択中の曲.r親ノード;\r
                                this.t現在選択中の曲を元に曲バーを再構成する();\r
-                               this.t選択曲が変更された(false);                                                                       // #27648 項目数変更を反映させる\r
+                               this.t選択曲が変更された(false);                 // #27648 項目数変更を反映させる\r
                        }\r
                        return ret;\r
                }\r
@@ -277,7 +277,7 @@ namespace DTXMania
                public void t難易度レベルをひとつ進める()\r
                {\r
                        if ((this.r現在選択中の曲 == null) || (this.r現在選択中の曲.nスコア数 <= 1))\r
-                               return;         // 曲にスコアが0~1個しかないなら進める意味なし。\r
+                               return;   // 曲にスコアが0~1個しかないなら進める意味なし。\r
 \r
 \r
                        // 難易度レベルを+1し、現在選曲中のスコアを変更する。\r
@@ -286,8 +286,8 @@ namespace DTXMania
 \r
                        for (int i = 0; i < 5; i++)\r
                        {\r
-                               this.n現在のアンカ難易度レベル = (this.n現在のアンカ難易度レベル + 1) % 5;      // 5以上になったら0に戻る。\r
-                               if (this.r現在選択中の曲.arスコア[this.n現在のアンカ難易度レベル] != null)        // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。\r
+                               this.n現在のアンカ難易度レベル = (this.n現在のアンカ難易度レベル + 1) % 5;  // 5以上になったら0に戻る。\r
+                               if (this.r現在選択中の曲.arスコア[this.n現在のアンカ難易度レベル] != null)  // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。\r
                                        break;\r
                        }\r
 \r
@@ -301,7 +301,7 @@ namespace DTXMania
                        for (int i = this.n現在の選択行 - 5; i < ((this.n現在の選択行 - 5) + 13); i++)\r
                        {\r
                                int index = (i + 13) % 13;\r
-                               for (E楽器パート m = E楽器パート.DRUMS; m <= E楽器パート.BASS; m++)\r
+                               for (EPart m = EPart.Drums; m <= EPart.Bass; m++)\r
                                {\r
                                        this.stバー情報[index].nスキル値[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];\r
                                        this.stバー情報[index].n使用レーン数[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[m];\r
@@ -320,22 +320,22 @@ namespace DTXMania
                /// 曲リストをリセットする\r
                /// </summary>\r
                /// <param name="cs"></param>\r
-               public void Refresh(CSongs管理 cs, bool bRemakeSongTitleBar)          // #26070 2012.2.28 yyagi\r
+               public void Refresh(CSongs管理 cs, bool bRemakeSongTitleBar)    // #26070 2012.2.28 yyagi\r
                {\r
                        //                      this.On非活性化();\r
 \r
-                       if (cs != null && cs.list曲ルート.Count > 0)        // 新しい曲リストを検索して、1曲以上あった\r
+                       if (cs != null && cs.list曲ルート.Count > 0)  // 新しい曲リストを検索して、1曲以上あった\r
                        {\r
                                CDTXMania.Instance.Songs管理 = cs;\r
 \r
-                               if (this.r現在選択中の曲 != null)                        // r現在選択中の曲==null とは、「最初songlist.dbが無かった or 検索したが1曲もない」\r
+                               if (this.r現在選択中の曲 != null)      // r現在選択中の曲==null とは、「最初songlist.dbが無かった or 検索したが1曲もない」\r
                                {\r
                                        this.r現在選択中の曲 = searchCurrentBreadcrumbsPosition(CDTXMania.Instance.Songs管理.list曲ルート, this.r現在選択中の曲.strBreadcrumbs);\r
-                                       if (bRemakeSongTitleBar)                                        // 選曲画面以外に居るときには再構成しない (非活性化しているときに実行すると例外となる)\r
+                                       if (bRemakeSongTitleBar)          // 選曲画面以外に居るときには再構成しない (非活性化しているときに実行すると例外となる)\r
                                        {\r
                                                this.t現在選択中の曲を元に曲バーを再構成する();\r
                                        }\r
-#if false                      // list子リストの中まではmatchしてくれないので、検索ロジックは手書きで実装 (searchCurrentBreadcrumbs())\r
+#if false      // list子リストの中まではmatchしてくれないので、検索ロジックは手書きで実装 (searchCurrentBreadcrumbs())\r
                                        string bc = this.r現在選択中の曲.strBreadcrumbs;\r
                                        Predicate<C曲リストノード> match = delegate( C曲リストノード c )\r
                                        {\r
@@ -370,7 +370,7 @@ namespace DTXMania
                                {\r
                                        return n;\r
                                }\r
-                               else if (n.list子リスト != null && n.list子リスト.Count > 0)    // 子リストが存在するなら、再帰で探す\r
+                               else if (n.list子リスト != null && n.list子リスト.Count > 0)  // 子リストが存在するなら、再帰で探す\r
                                {\r
                                        C曲リストノード r = searchCurrentBreadcrumbsPosition(n.list子リスト, bc);\r
                                        if (r != null) return r;\r
@@ -382,7 +382,7 @@ namespace DTXMania
                /// <summary>\r
                /// BOXのアイテム数と、今何番目を選択しているかをセットする\r
                /// </summary>\r
-               public void t選択曲が変更された(bool bForce)   // #27648\r
+               public void t選択曲が変更された(bool bForce) // #27648\r
                {\r
                        C曲リストノード song = CDTXMania.Instance.stage選曲.r現在選択中の曲;\r
                        if (song == null)\r
@@ -411,7 +411,7 @@ namespace DTXMania
                        if (this.b活性化してる)\r
                                return;\r
 \r
-                       this.e楽器パート = E楽器パート.DRUMS;\r
+                       this.e楽器パート = EPart.Drums;\r
                        this.b登場アニメ全部完了 = false;\r
                        this.n目標のスクロールカウンタ = 0;\r
                        this.n現在のスクロールカウンタ = 0;\r
@@ -421,11 +421,11 @@ namespace DTXMania
                        // 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。\r
 \r
                        FontStyle regular = FontStyle.Regular;\r
-                       if (CDTXMania.Instance.ConfigIni.b選曲リストフォントを斜体にする) regular |= FontStyle.Italic;\r
-                       if (CDTXMania.Instance.ConfigIni.b選曲リストフォントを太字にする) regular |= FontStyle.Bold;\r
+                       if (CDTXMania.Instance.ConfigIni.bItalicFontSongSelect) regular |= FontStyle.Italic;\r
+                       if (CDTXMania.Instance.ConfigIni.bBoldFontSongSelect) regular |= FontStyle.Bold;\r
                        this.ft曲リスト用フォント = new Font(\r
-                               CDTXMania.Instance.ConfigIni.str選曲リストフォント,\r
-                               (float)(CDTXMania.Instance.ConfigIni.n選曲リストフォントのサイズdot * 2 * Scale.Y),                // 後でScale.Yを掛けないように直すこと(Config.ini初期値変更)\r
+                               CDTXMania.Instance.ConfigIni.strFontSongSelect,\r
+                               (float)(CDTXMania.Instance.ConfigIni.nFontSizeDotSongSelect * 2 * Scale.Y),   // 後でScale.Yを掛けないように直すこと(Config.ini初期値変更)\r
                                regular,\r
                                GraphicsUnit.Pixel\r
                        );\r
@@ -443,7 +443,7 @@ namespace DTXMania
 \r
                        base.On活性化();\r
 \r
-                       this.t選択曲が変更された(true);                // #27648 2012.3.31 yyagi 選曲画面に入った直後の 現在位置/全アイテム数 の表示を正しく行うため\r
+                       this.t選択曲が変更された(true);    // #27648 2012.3.31 yyagi 選曲画面に入った直後の 現在位置/全アイテム数 の表示を正しく行うため\r
                }\r
                public override void On非活性化()\r
                {\r
@@ -469,7 +469,7 @@ namespace DTXMania
                        this.tx選曲バー.Score = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar score selected.png"), false);\r
                        this.tx選曲バー.Box = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar box selected.png"), false);\r
                        this.tx選曲バー.Other = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar other selected.png"), false);\r
-                       \r
+\r
                        this.txスキル数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on list.png"), false);\r
                        this.tx使用レーン数数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on gauge etc.png"), false);\r
                        for (int i = 0; i < 13; i++)\r
@@ -494,7 +494,7 @@ namespace DTXMania
 \r
                                        this.txSongNotFound = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
 \r
-                                       this.txSongNotFound.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); // 半分のサイズで表示する。\r
+                                       this.txSongNotFound.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); // 半分のサイズで表示する。\r
                                }\r
                        }\r
                        catch (CTextureCreateFailedException)\r
@@ -518,7 +518,7 @@ namespace DTXMania
 \r
                                        this.txEnumeratingSongs = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
 \r
-                                       this.txEnumeratingSongs.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f);     // 半分のサイズで表示する。\r
+                                       this.txEnumeratingSongs.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); // 半分のサイズで表示する。\r
                                }\r
                        }\r
                        catch (CTextureCreateFailedException)\r
@@ -541,7 +541,7 @@ namespace DTXMania
 \r
                        for (int i = 0; i < 13; i++)\r
                                TextureFactory.t安全にDisposeする(ref this.stバー情報[i].txタイトル名);\r
-                       \r
+\r
                        TextureFactory.t安全にDisposeする(ref this.txスキル数字);\r
                        TextureFactory.t安全にDisposeする(ref this.tx使用レーン数数字);\r
                        TextureFactory.t安全にDisposeする(ref this.txEnumeratingSongs);\r
@@ -592,7 +592,7 @@ namespace DTXMania
                        {\r
                                #region [ (1) 登場アニメフェーズの進行。]\r
                                //-----------------\r
-                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)  // パネルは全13枚。\r
                                {\r
                                        this.ct登場アニメ用[i].t進行();\r
 \r
@@ -603,11 +603,11 @@ namespace DTXMania
                                // 全部の進行が終わったら、this.b登場アニメ全部完了 を true にする。\r
 \r
                                this.b登場アニメ全部完了 = true;\r
-                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)  // パネルは全13枚。\r
                                {\r
                                        if (this.ct登場アニメ用[i].b進行中)\r
                                        {\r
-                                               this.b登場アニメ全部完了 = false;      // まだ進行中のアニメがあるなら false のまま。\r
+                                               this.b登場アニメ全部完了 = false;  // まだ進行中のアニメがあるなら false のまま。\r
                                                break;\r
                                        }\r
                                }\r
@@ -620,7 +620,7 @@ namespace DTXMania
                                //-----------------\r
                                long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻;\r
 \r
-                               if (n現在時刻 < this.nスクロールタイマ)     // 念のため\r
+                               if (n現在時刻 < this.nスクロールタイマ) // 念のため\r
                                        this.nスクロールタイマ = n現在時刻;\r
 \r
                                const int nアニメ間隔 = 2;\r
@@ -652,25 +652,25 @@ namespace DTXMania
 \r
                                        #region [ 加速度を加算し、現在のスクロールカウンタを目標のスクロールカウンタまで近づける。 ]\r
                                        //-----------------\r
-                                       if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)            // (A) 正の方向に未達の場合:\r
+                                       if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)    // (A) 正の方向に未達の場合:\r
                                        {\r
-                                               this.n現在のスクロールカウンタ += n加速度;                                                               // カウンタを正方向に移動する。\r
+                                               this.n現在のスクロールカウンタ += n加速度;               // カウンタを正方向に移動する。\r
 \r
                                                if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
-                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;        // 到着!スクロール停止!\r
+                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;  // 到着!スクロール停止!\r
                                        }\r
 \r
-                                       else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)       // (B) 負の方向に未達の場合:\r
+                                       else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ) // (B) 負の方向に未達の場合:\r
                                        {\r
-                                               this.n現在のスクロールカウンタ -= n加速度;                                                               // カウンタを負方向に移動する。\r
+                                               this.n現在のスクロールカウンタ -= n加速度;               // カウンタを負方向に移動する。\r
 \r
-                                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)    // 到着!スクロール停止!\r
+                                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)  // 到着!スクロール停止!\r
                                                        this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
                                        }\r
                                        //-----------------\r
                                        #endregion\r
 \r
-                                       if (this.n現在のスクロールカウンタ >= 100)          // 1行=100カウント。\r
+                                       if (this.n現在のスクロールカウンタ >= 100)    // 1行=100カウント。\r
                                        {\r
                                                #region [ パネルを1行上にシフトする。]\r
                                                //-----------------\r
@@ -687,7 +687,7 @@ namespace DTXMania
                                                for (int i = 0; i < 7; i++)\r
                                                        song = this.r次の曲(song);\r
 \r
-                                               int index = (this.n現在の選択行 + 7) % 13;        // 新しく最下部に表示されるパネルのインデックス(0~12)。\r
+                                               int index = (this.n現在の選択行 + 7) % 13;  // 新しく最下部に表示されるパネルのインデックス(0~12)。\r
                                                this.stバー情報[index].strタイトル文字列 = song.strタイトル;\r
                                                this.stバー情報[index].col文字色 = song.col文字色;\r
                                                this.t曲名バーの生成(index, this.stバー情報[index].strタイトル文字列, this.stバー情報[index].col文字色);\r
@@ -709,7 +709,7 @@ namespace DTXMania
 \r
                                                // 新しく最下部に表示されるパネル用のスキル値を取得。\r
 \r
-                                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                                {\r
                                                        this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
                                                        this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
@@ -720,10 +720,10 @@ namespace DTXMania
                                                this.n現在のスクロールカウンタ -= 100;\r
                                                this.n目標のスクロールカウンタ -= 100;\r
 \r
-                                               this.t選択曲が変更された(false);                               // スクロールバー用に今何番目を選択しているかを更新\r
+                                               this.t選択曲が変更された(false);       // スクロールバー用に今何番目を選択しているかを更新\r
 \r
                                                if (this.n目標のスクロールカウンタ == 0)\r
-                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();                // スクロール完了=選択曲変更!\r
+                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();    // スクロール完了=選択曲変更!\r
 \r
                                                //-----------------\r
                                                #endregion\r
@@ -745,7 +745,7 @@ namespace DTXMania
                                                for (int i = 0; i < 5; i++)\r
                                                        song = this.r前の曲(song);\r
 \r
-                                               int index = ((this.n現在の選択行 - 5) + 13) % 13; // 新しく最上部に表示されるパネルのインデックス(0~12)。\r
+                                               int index = ((this.n現在の選択行 - 5) + 13) % 13; // 新しく最上部に表示されるパネルのインデックス(0~12)。\r
                                                this.stバー情報[index].strタイトル文字列 = song.strタイトル;\r
                                                this.stバー情報[index].col文字色 = song.col文字色;\r
                                                this.t曲名バーの生成(index, this.stバー情報[index].strタイトル文字列, this.stバー情報[index].col文字色);\r
@@ -767,7 +767,7 @@ namespace DTXMania
 \r
                                                // 新しく最上部に表示されるパネル用のスキル値を取得。\r
 \r
-                                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                                {\r
                                                        this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
                                                        this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
@@ -779,11 +779,11 @@ namespace DTXMania
                                                this.n現在のスクロールカウンタ += 100;\r
                                                this.n目標のスクロールカウンタ += 100;\r
 \r
-                                               this.t選択曲が変更された(false);                               // スクロールバー用に今何番目を選択しているかを更新\r
+                                               this.t選択曲が変更された(false);       // スクロールバー用に今何番目を選択しているかを更新\r
 \r
                                                if (this.n目標のスクロールカウンタ == 0)\r
-                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();                // スクロール完了=選択曲変更!\r
-                                               //-----------------\r
+                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();    // スクロール完了=選択曲変更!\r
+                                                                                                                                                                                                                               //-----------------\r
                                                #endregion\r
                                        }\r
 \r
@@ -830,7 +830,7 @@ namespace DTXMania
                        {\r
                                #region [ (1) 登場アニメフェーズの描画。]\r
                                //-----------------\r
-                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)  // パネルは全13枚。\r
                                {\r
                                        if (this.ct登場アニメ用[i].n現在の値 >= 0)\r
                                        {\r
@@ -858,20 +858,20 @@ namespace DTXMania
                                                                        CDTXMania.Instance.Device,\r
                                                                        (x + (int)(44 * Scale.X)) + (int)((16f + 0.5f) * Scale.X),\r
                                                                        y + 35\r
-                                                                       //( y + (int) ( 0 * Scale.Y ) ) + (int) ( 16 * Scale.Y )\r
-                                                                       // ( y + (int) ( 5 * Scale.Y ) ) + (int) ( (16f-2f) * Scale.Y)\r
+                                                               //( y + (int) ( 0 * Scale.Y ) ) + (int) ( 16 * Scale.Y )\r
+                                                               // ( y + (int) ( 5 * Scale.Y ) ) + (int) ( (16f-2f) * Scale.Y)\r
                                                                );\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ スキル値を描画。]\r
                                                        //-----------------\r
-                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                                this.tスキル値の描画(x + (int)(28 * Scale.X), y + (int)(59), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ 使用レーン数を描画。]\r
                                                        //-----------------\r
-                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                                this.t使用レーン数の描画(x + (int)(0 * Scale.X), y + (int)53, this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
@@ -900,13 +900,13 @@ namespace DTXMania
                                                        #endregion\r
                                                        #region [ スキル値を描画。]\r
                                                        //-----------------\r
-                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                                this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ 使用レーン数を描画。]\r
                                                        //-----------------\r
-                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                                this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
@@ -920,10 +920,10 @@ namespace DTXMania
                        {\r
                                #region [ (2) 通常フェーズの描画。]\r
                                //-----------------\r
-                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)  // パネルは全13枚。\r
                                {\r
-                                       if ((i == 0 && this.n現在のスクロールカウンタ > 0) ||               // 最上行は、上に移動中なら表示しない。\r
-                                               (i == 12 && this.n現在のスクロールカウンタ < 0))            // 最下行は、下に移動中なら表示しない。\r
+                                       if ((i == 0 && this.n現在のスクロールカウンタ > 0) ||   // 最上行は、上に移動中なら表示しない。\r
+                                               (i == 12 && this.n現在のスクロールカウンタ < 0))    // 最下行は、下に移動中なら表示しない。\r
                                                continue;\r
 \r
                                        int nパネル番号 = (((this.n現在の選択行 - 5) + i) + 13) % 13;\r
@@ -955,7 +955,7 @@ namespace DTXMania
                                                #endregion\r
                                                #region [ スキル値を描画。]\r
                                                //-----------------\r
-                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                        this.tスキル値の描画(\r
                                                                (int)(0xf4 * Scale.X),\r
                                                                (int)(0xd3 * Scale.Y),\r
@@ -965,7 +965,7 @@ namespace DTXMania
                                                #endregion\r
                                                #region [ 使用レーン数を描画。]\r
                                                //-----------------\r
-                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                        this.t使用レーン数の描画(\r
                                                                (int)(216 * Scale.X),\r
                                                                (int)(208 * Scale.Y),\r
@@ -995,13 +995,13 @@ namespace DTXMania
                                                #endregion\r
                                                #region [ スキル値を描画。]\r
                                                //-----------------\r
-                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                        this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
                                                //-----------------\r
                                                #endregion\r
                                                #region [ 使用レーン数を描画。]\r
                                                //-----------------\r
-                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != EPart.Unknown))\r
                                                        this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                //-----------------\r
                                                #endregion\r
@@ -1091,8 +1091,8 @@ namespace DTXMania
                        public CActSelect曲リスト.Eバー種別 eバー種別;\r
                        public string strタイトル文字列;\r
                        public CTexture txタイトル名;\r
-                       public STDGBVALUE<int> nスキル値;\r
-                       public STDGBVALUE<int> n使用レーン数;\r
+                       public STDGBSValue<int> nスキル値;\r
+                       public STDGBSValue<int> n使用レーン数;\r
                        public Color col文字色;\r
                }\r
 \r
@@ -1142,7 +1142,7 @@ namespace DTXMania
                private bool b登場アニメ全部完了;\r
                private Color color文字影 = Color.FromArgb(0x40, 10, 10, 10);\r
                private CCounter[] ct登場アニメ用 = new CCounter[13];\r
-               private E楽器パート e楽器パート;\r
+               private EPart e楽器パート;\r
                private Font ft曲リスト用フォント;\r
                private long nスクロールタイマ;\r
                private int n現在のスクロールカウンタ;\r
@@ -1228,7 +1228,7 @@ namespace DTXMania
                }\r
                private void tスキル値の描画(int x, int y, int nスキル値)\r
                {\r
-                       if (nスキル値 <= 0 || nスキル値 > 100)          // スキル値 0 = 未プレイ なので表示しない。\r
+                       if (nスキル値 <= 0 || nスキル値 > 100)    // スキル値 0 = 未プレイ なので表示しない。\r
                                return;\r
 \r
                        int color = (nスキル値 == 100) ? 3 : (nスキル値 / 25);\r
@@ -1298,7 +1298,7 @@ namespace DTXMania
                                this.stバー情報[i].col文字色 = song.col文字色;\r
                                this.stバー情報[i].eバー種別 = this.e曲のバー種別を返す(song);\r
 \r
-                               for (E楽器パート j = E楽器パート.DRUMS; j <= E楽器パート.BASS; j++)\r
+                               for (EPart j = EPart.Drums; j <= EPart.Bass; j++)\r
                                {\r
                                        this.stバー情報[i].nスキル値[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[j];\r
                                        this.stバー情報[i].n使用レーン数[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[j];\r
@@ -1326,17 +1326,17 @@ namespace DTXMania
                                                new Rectangle(\r
                                                        0,\r
                                                        0,\r
-                                                       256,            //(int)(128 * Scale.X),\r
-                                                       128                     //(int)(64 * Scale.Y)\r
+                                                       256,    //(int)(128 * Scale.X),\r
+                                                       128     //(int)(64 * Scale.Y)\r
                                                )\r
-                                       );      // ヘサキ\r
+                                       );  // ヘサキ\r
                                x += this.tx選曲バー[(int)type].sz画像サイズ.Width;\r
 \r
                                var rc = new Rectangle(\r
-                                       128,                            //(int)(64 * Scale.X),\r
+                                       128,        //(int)(64 * Scale.X),\r
                                        0,\r
-                                       128,                            //(int)(64 * Scale.X),\r
-                                       128                                     //(int)(64 * Scale.Y)\r
+                                       128,        //(int)(64 * Scale.X),\r
+                                       128         //(int)(64 * Scale.Y)\r
                                );\r
                                while (x < SampleFramework.GameWindowSize.Width)\r
                                {\r
@@ -1346,8 +1346,8 @@ namespace DTXMania
                                                        x,\r
                                                        y,\r
                                                        rc\r
-                                               );      // 胴体;64pxずつ横につなげていく。\r
-                                       x += 128;               //(int)(64 * Scale.Y);\r
+                                               );  // 胴体;64pxずつ横につなげていく。\r
+                                       x += 128;   //(int)(64 * Scale.Y);\r
                                }\r
                                //-----------------\r
                                #endregion\r
@@ -1364,28 +1364,28 @@ namespace DTXMania
                                                new Rectangle(\r
                                                        0,\r
                                                        0,\r
-                                                       128,    //(int) ( 64 * Scale.X ),\r
-                                                       69              //(int) ( 32 * Scale.Y )\r
-                                               //(int)(64 * Scale.X),\r
-                                               //(int)(32 * Scale.Y)\r
+                                                       128,  //(int) ( 64 * Scale.X ),\r
+                                                       69    //(int) ( 32 * Scale.Y )\r
+                                                                               //(int)(64 * Scale.X),\r
+                                                                               //(int)(32 * Scale.Y)\r
                                                )\r
-                                       );              // ヘサキ\r
-                               x += 64;                //(int) ( 64 * Scale.X );\r
+                                       );    // ヘサキ\r
+                               x += 64;    //(int) ( 64 * Scale.X );\r
 \r
                                var rc = new Rectangle(\r
                                        64,\r
                                        0,\r
                                        64,\r
                                        69\r
-                                       //0,\r
-                                       //(int)(32 * Scale.Y),\r
-                                       //(int)(64 * Scale.X),\r
-                                       //(int)(32 * Scale.Y)\r
-\r
-                                       //128,          //0,\r
-                                       //0,            //(int)(32 * Scale.Y),\r
-                                       //128,          //(int)(64 * Scale.X),\r
-                                       //128                   //(int)(32 * Scale.Y)\r
+                               //0,\r
+                               //(int)(32 * Scale.Y),\r
+                               //(int)(64 * Scale.X),\r
+                               //(int)(32 * Scale.Y)\r
+\r
+                               //128,          //0,\r
+                               //0,            //(int)(32 * Scale.Y),\r
+                               //128,          //(int)(64 * Scale.X),\r
+                               //128                   //(int)(32 * Scale.Y)\r
                                );\r
                                while (x < SampleFramework.GameWindowSize.Width)\r
                                {\r
@@ -1395,8 +1395,8 @@ namespace DTXMania
                                                        x,\r
                                                        y,\r
                                                        rc\r
-                                               );      // 胴体;64pxずつ横につなげていく。\r
-                                       x += 64;        // (int) ( 64 * Scale.X );\r
+                                               );  // 胴体;64pxずつ横につなげていく。\r
+                                       x += 64;  // (int) ( 64 * Scale.X );\r
                                }\r
                                //-----------------\r
                                #endregion\r
@@ -1426,15 +1426,15 @@ namespace DTXMania
                                int height = (int)(25 * Scale.Y);\r
                                int width = (int)((sz曲名.Width + 2) * 0.5f);\r
                                if (width > (CDTXMania.Instance.Device.Capabilities.MaxTextureWidth / 2))\r
-                                       width = CDTXMania.Instance.Device.Capabilities.MaxTextureWidth / 2;     // 右端断ち切れ仕方ないよね\r
+                                       width = CDTXMania.Instance.Device.Capabilities.MaxTextureWidth / 2; // 右端断ち切れ仕方ないよね\r
 \r
-                               float f拡大率X = (width <= n最大幅px) ? 0.5f : (((float)n最大幅px / (float)width) * 0.5f);     // 長い文字列は横方向に圧縮。\r
+                               float f拡大率X = (width <= n最大幅px) ? 0.5f : (((float)n最大幅px / (float)width) * 0.5f); // 長い文字列は横方向に圧縮。\r
 \r
-                               using (var bmp = new Bitmap(width * 2, height * 2, PixelFormat.Format32bppArgb))                // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。)\r
+                               using (var bmp = new Bitmap(width * 2, height * 2, PixelFormat.Format32bppArgb))    // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。)\r
                                using (var g = Graphics.FromImage(bmp))\r
                                {\r
                                        g.TextRenderingHint = TextRenderingHint.AntiAlias;\r
-                                       float y = (((float)bmp.Height) / 2f) - ((CDTXMania.Instance.ConfigIni.n選曲リストフォントのサイズdot * Scale.Y * 2f) / 2f);\r
+                                       float y = (((float)bmp.Height) / 2f) - ((CDTXMania.Instance.ConfigIni.nFontSizeDotSongSelect * Scale.Y * 2f) / 2f);\r
                                        g.DrawString(str曲名, this.ft曲リスト用フォント, new SolidBrush(this.color文字影), (float)2f, (float)(y + 2f));\r
                                        g.DrawString(str曲名, this.ft曲リスト用フォント, new SolidBrush(color), 0f, y);\r
 \r
@@ -1481,18 +1481,18 @@ namespace DTXMania
                                this.txアイテム数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(10 * Scale.Y)));\r
                        }\r
                }\r
-               \r
+\r
                private void t使用レーン数の描画(int x, int y, int n使用レーン数)\r
                {\r
                        // #36177 使用レーン数の表示 add ikanick 16.03.20\r
-                       if ( n使用レーン数 == 0 )\r
+                       if (n使用レーン数 == 0)\r
                                return;\r
 \r
                        int n十の位 = n使用レーン数 / 10;\r
                        int n一の位 = n使用レーン数 % 10;\r
-                       \r
+\r
                        // 十の位の描画。\r
-                       if ( n十の位 != 0 )\r
+                       if (n十の位 != 0)\r
                                this.t使用レーン数の描画_1桁描画(x + (int)(8 * Scale.X), y, n十の位);\r
 \r
                        // 一の位の描画。\r
index 393f3c5..7c13892 100644 (file)
@@ -7,110 +7,121 @@ namespace DTXMania
 {\r
        internal class CActSortSongs : CActSelectPopupMenu\r
        {\r
-\r
-               // コンストラクタ\r
-\r
                public CActSortSongs()\r
                {\r
-                       List<CItemBase> lci = new List<CItemBase>();\r
-                       lci.Add(new CItemList("Title", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." }));\r
-                       lci.Add(new CItemList("Level", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "99,98,97,...", "1,2,3,..." }));\r
-                       lci.Add(new CItemList("Best Rank", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "E,D,C,...", "SS,S,A,..." }));\r
-                       lci.Add(new CItemList("PlayCount", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "10,9,8,...", "1,2,3,..." }));\r
-                       lci.Add(new CItemList("Author", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "Z,Y,X,...", "A,B,C,..." }));\r
-                       lci.Add(new CItemList("SkillPoint", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "100,99,98,...", "1,2,3,..." }));\r
-#if TEST_SORTBGM\r
-                       lci.Add( new CItemList( "BPM",                  CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "300,200,...",     "70,80,90,..." } ) );\r
-#endif\r
-                       lci.Add(new CItemList("Date", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "Dec.31,30,...", "Jan.1,2,..." }));\r
-                       lci.Add(new CItemList("Return", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "", "" }));\r
+                       List<COptionBase> lci = new List<COptionBase>();\r
+\r
+                       string[] items = new string[] { "Z,Y,X,...", "A,B,C,..." };\r
+                       COptionStringList title = new COptionStringList(items[0]);\r
+                       title.Initialize("", "", items);\r
+                       title.label = "Title";\r
+                       title.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(CDTXMania.Instance.Songs管理.t曲リストのソート2_タイトル順, eInst,\r
+                                               title.Index == 0 ? -1 : 1);\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+                       items = new string[] { "99,98,97,...", "1,2,3,..." };\r
+                       COptionStringList level = new COptionStringList(items[0]);\r
+                       level.Initialize("", "", items);\r
+                       level.label = "Level";\r
+                       level.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                                               CDTXMania.Instance.Songs管理.t曲リストのソート4_LEVEL順, eInst,\r
+                                                               level.Index == 0 ? -1 : 1,\r
+                                                               this.act曲リスト.n現在のアンカ難易度レベル);\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+                       items = new string[] { "E,D,C,...", "SS,S,A,..." };\r
+                       COptionStringList bestrank = new COptionStringList(items[0]);\r
+                       bestrank.Initialize("", "", items);\r
+                       bestrank.label = "Best Rank";\r
+                       bestrank.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                                               CDTXMania.Instance.Songs管理.t曲リストのソート5_BestRank順, eInst,\r
+                                                               bestrank.Index == 0 ? -1 : 1,\r
+                                                               this.act曲リスト.n現在のアンカ難易度レベル\r
+                                               );\r
+                       };\r
+\r
+                       items = new string[] { "10,9,8,...", "1,2,3,..." };\r
+                       COptionStringList playcount = new COptionStringList(items[0]);\r
+                       playcount.Initialize("", "", items);\r
+                       playcount.label = "Play Count";\r
+                       playcount.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                               CDTXMania.Instance.Songs管理.t曲リストのソート3_演奏回数の多い順, eInst,\r
+                                               playcount.Index == 0 ? -1 : 1,\r
+                                               this.act曲リスト.n現在のアンカ難易度レベル\r
+                               );\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+                       items = new string[] { "Z,Y,X,...", "A,B,C,..." };\r
+                       COptionStringList author = new COptionStringList(items[0]);\r
+                       author.Initialize("", "", items);\r
+                       author.label = "Author";\r
+                       author.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                                               CDTXMania.Instance.Songs管理.t曲リストのソート8_アーティスト名順, eInst,\r
+                                                               author.Index == 0 ? -1 : 1,\r
+                                                               this.act曲リスト.n現在のアンカ難易度レベル\r
+                                               );\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+                       items = new string[] { "100,99,98,...", "1,2,3,..." };\r
+                       COptionStringList skillpoint = new COptionStringList(items[0]);\r
+                       skillpoint.Initialize("", "", items);\r
+                       skillpoint.label = "Skill Point";\r
+                       skillpoint.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                                               CDTXMania.Instance.Songs管理.t曲リストのソート6_SkillPoint順, eInst,\r
+                                                               skillpoint.Index == 0 ? -1 : 1,\r
+                                                               this.act曲リスト.n現在のアンカ難易度レベル\r
+                                               );\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+                       items = new string[] { "Dec.31,30,...", "Jan.1,2,..." };\r
+                       COptionStringList date = new COptionStringList(items[0]);\r
+                       date.Initialize("", "", items);\r
+                       date.label = "Date";\r
+                       date.OnEnterDelegate = () =>\r
+                       {\r
+                               this.act曲リスト.t曲リストのソート(\r
+                                                                               CDTXMania.Instance.Songs管理.t曲リストのソート7_更新日時順, eInst,\r
+                                                                               date.Index == 0 ? -1 : 1,\r
+                                                                               this.act曲リスト.n現在のアンカ難易度レベル\r
+                                                               );\r
+                               this.act曲リスト.t選択曲が変更された(true);\r
+                       };\r
+\r
+\r
+                       COptionString ret = new COptionString("Return");\r
+                       ret.Initialize("Return", "");\r
+                       ret.OnEnterDelegate = () =>\r
+                       {\r
+                               this.tDeativatePopupMenu();\r
+                       };\r
 \r
                        base.Initialize(lci, false, "SORT MENU");\r
                }\r
 \r
 \r
                // メソッド\r
-               public void tActivatePopupMenu(E楽器パート einst, ref CActSelect曲リスト ca)\r
+               public void tActivatePopupMenu(EPart einst, ref CActSelect曲リスト ca)\r
                {\r
                        this.act曲リスト = ca;\r
                        base.tActivatePopupMenu(einst);\r
                }\r
-               //public void tDeativatePopupMenu()\r
-               //{\r
-               //      base.tDeativatePopupMenu();\r
-               //}\r
-\r
-\r
-               public override void tEnter押下Main(int nSortOrder)\r
-               {\r
-                       nSortOrder *= 2;        // 0,1  => -1, 1\r
-                       nSortOrder -= 1;\r
-                       switch (n現在の選択行)\r
-                       {\r
-                               case (int)EOrder.Title:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート2_タイトル順, eInst, nSortOrder\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-                               case (int)EOrder.Level:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート4_LEVEL順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-                               case (int)EOrder.BestRank:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート5_BestRank順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       break;\r
-                               case (int)EOrder.PlayCount:\r
-                                       // this.act曲リスト.t曲リストのソート3_演奏回数の多い順( eInst, nSortOrder );\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート3_演奏回数の多い順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-                               case (int)EOrder.Author:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート8_アーティスト名順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-                               case (int)EOrder.SkillPoint:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート6_SkillPoint順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-#if TEST_SORTBGM\r
-                                               case (int) ESortItem.BPM:\r
-                                               this.act曲リスト.t曲リストのソート(\r
-                                                       CDTXMania.Instance.Songs管理.t曲リストのソート9_BPM順, eInst, nSortOrder,\r
-                                                       this.act曲リスト.n現在のアンカ難易度レベル\r
-                                               );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                               break;\r
-#endif\r
-                               case (int)EOrder.Date:\r
-                                       this.act曲リスト.t曲リストのソート(\r
-                                               CDTXMania.Instance.Songs管理.t曲リストのソート7_更新日時順, eInst, nSortOrder,\r
-                                               this.act曲リスト.n現在のアンカ難易度レベル\r
-                                       );\r
-                                       this.act曲リスト.t選択曲が変更された(true);\r
-                                       break;\r
-                               case (int)EOrder.Return:\r
-                                       this.tDeativatePopupMenu();\r
-                                       break;\r
-                               default:\r
-                                       break;\r
-                       }\r
-               }\r
 \r
                // CActivity 実装\r
 \r
@@ -137,25 +148,8 @@ namespace DTXMania
                        base.OnManagedリソースの解放();\r
                }\r
 \r
-               #region [ private ]\r
-               //-----------------\r
 \r
-               private CActSelect曲リスト act曲リスト;\r
-\r
-               private enum EOrder : int\r
-               {\r
-                       Title = 0, Level, BestRank, PlayCount,\r
-                       Author,\r
-                       SkillPoint,\r
-#if TEST_SORTBGM\r
-                       BPM,\r
-#endif\r
-                       Date,\r
-                       Return, END,\r
-                       Default = 99\r
-               };\r
-               //-----------------\r
-               #endregion\r
+               CActSelect曲リスト act曲リスト;\r
        }\r
 \r
 \r
index 61238ca..e6e66f3 100644 (file)
@@ -91,28 +91,26 @@ namespace DTXMania
                // コンストラクタ\r
                public CStage選曲()\r
                {\r
-                       base.eステージID = CStage.Eステージ.選曲;\r
-                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
-                       base.b活性化してない = true;\r
-                       base.list子Activities.Add(this.actオプションパネル = new CActオプションパネル());\r
-                       base.list子Activities.Add(this.actFIFO = new CActFIFOBlack());\r
-                       base.list子Activities.Add(this.actFIfrom結果画面 = new CActFIFOBlack());\r
-                       //                      base.list子Activities.Add( this.actFOtoNowLoading = new CActFIFOBlack() );     // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略\r
-                       base.list子Activities.Add(this.act曲リスト = new CActSelect曲リスト());\r
-                       base.list子Activities.Add(this.actステータスパネル = new CActSelectステータスパネル());\r
-                       base.list子Activities.Add(this.act演奏履歴パネル = new CActSelect演奏履歴パネル());\r
-                       base.list子Activities.Add(this.actPreimageパネル = new CActSelectPreimageパネル());\r
-                       base.list子Activities.Add(this.actPresound = new CActSelectPresound());\r
-                       base.list子Activities.Add(this.actArtistComment = new CActSelectArtistComment());\r
-                       base.list子Activities.Add(this.actInformation = new CActSelectInformation());\r
-                       base.list子Activities.Add(this.actSortSongs = new CActSortSongs());\r
-                       base.list子Activities.Add(this.actShowCurrentPosition = new CActSelectShowCurrentPosition());\r
-                       base.list子Activities.Add(this.actQuickConfig = new CActSelectQuickConfig());\r
-                       base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
-\r
-                       this.CommandHistory = new CCommandHistory();            // #24063 2011.1.16 yyagi\r
-\r
-                       this.actPreimageパネル.actAVI = this.actAVI;\r
+                       eステージID = CStage.Eステージ.選曲;\r
+                       eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+                       b活性化してない = true;\r
+                       list子Activities.Add(this.actオプションパネル = new CActオプションパネル(EOptionPanelDirection.Horizontal));\r
+                       list子Activities.Add(this.actFIFO = new CActFIFOBlack());\r
+                       list子Activities.Add(this.actFIfrom結果画面 = new CActFIFOBlack());\r
+                       list子Activities.Add(this.act曲リスト = new CActSelect曲リスト());\r
+                       list子Activities.Add(this.actステータスパネル = new CActSelectステータスパネル());\r
+                       list子Activities.Add(this.act演奏履歴パネル = new CActSelect演奏履歴パネル());\r
+                       list子Activities.Add(this.actPreimageパネル = new CActSelectPreimageパネル());\r
+                       list子Activities.Add(this.actPresound = new CActSelectPresound());\r
+                       list子Activities.Add(this.actArtistComment = new CActSelectArtistComment());\r
+                       list子Activities.Add(this.actInformation = new CActSelectInformation());\r
+                       list子Activities.Add(this.actSortSongs = new CActSortSongs());\r
+                       list子Activities.Add(this.actShowCurrentPosition = new CActSelectShowCurrentPosition());\r
+                       list子Activities.Add(this.actQuickConfig = new CActSelectQuickConfig());\r
+                       list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
+\r
+                       CommandHistory = new CCommandHistory();    // #24063 2011.1.16 yyagi\r
+                       actPreimageパネル.actAVI = this.actAVI;\r
                }\r
 \r
 \r
@@ -180,11 +178,12 @@ namespace DTXMania
                                this.bBGM再生済み = false;\r
                                this.ftフォント = new Font("MS PGothic", 26f * Scale.X, GraphicsUnit.Pixel);\r
                                for (int i = 0; i < 4; i++)\r
+                               {\r
                                        this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.Instance.Timer);\r
-\r
+                               }\r
+                               this.actステータスパネル.t選択曲が変更された();  // 最大ランクを更新\r
+                               actオプションパネル.Pos = CDTXMania.Instance.Coordinates.OptionPanelSelect;\r
                                base.On活性化();\r
-\r
-                               this.actステータスパネル.t選択曲が変更された();        // 最大ランクを更新\r
                        }\r
                        finally\r
                        {\r
@@ -276,7 +275,7 @@ namespace DTXMania
                                int y = 0;\r
                                if (this.ct登場時アニメ用共通.b進行中)\r
                                {\r
-                                       double db登場割合 = ((double)this.ct登場時アニメ用共通.n現在の値) / 100.0;     // 100が最終値\r
+                                       double db登場割合 = ((double)this.ct登場時アニメ用共通.n現在の値) / 100.0; // 100が最終値\r
                                        double dbY表示割合 = Math.Sin(Math.PI / 2 * db登場割合);\r
                                        y = ((int)(this.tx上部パネル.sz画像サイズ.Height * dbY表示割合)) - this.tx上部パネル.sz画像サイズ.Height;\r
                                }\r
@@ -313,7 +312,7 @@ namespace DTXMania
                                this.actArtistComment.On進行描画();\r
                                this.actオプションパネル.On進行描画();\r
                                #region [ FLIP描画 ]\r
-                               if (this.txFLIP != null && CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)   // #24063 2011.1.16 yyagi\r
+                               if (this.txFLIP != null && CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass) // #24063 2011.1.16 yyagi\r
                                {\r
                                        Rectangle rect = new Rectangle(\r
                                                (int)(31 * Scale.X),\r
@@ -329,7 +328,7 @@ namespace DTXMania
                                        );\r
                                }\r
                                #endregion\r
-                               this.actShowCurrentPosition.On進行描画();                                                           // #27648 2011.3.28 yyagi\r
+                               this.actShowCurrentPosition.On進行描画();               // #27648 2011.3.28 yyagi\r
 \r
                                #region [ フェーズ処理 ]\r
                                switch (base.eフェーズID)\r
@@ -380,10 +379,10 @@ namespace DTXMania
                                {\r
                                        #region [ 簡易CONFIGでMore、またはShift+F1: 詳細CONFIG呼び出し ]\r
                                        if (actQuickConfig.bGotoDetailConfig)\r
-                                       {       // 詳細CONFIG呼び出し\r
+                                       { // 詳細CONFIG呼び出し\r
                                                actQuickConfig.tDeativatePopupMenu();\r
                                                this.actPresound.tサウンド停止();\r
-                                               this.eフェードアウト完了時の戻り値 = E戻り値.コンフィグ呼び出し;      // #24525 2011.3.16 yyagi: [SHIFT]-[F1]でCONFIG呼び出し\r
+                                               this.eフェードアウト完了時の戻り値 = E戻り値.コンフィグ呼び出し;  // #24525 2011.3.16 yyagi: [SHIFT]-[F1]でCONFIG呼び出し\r
                                                this.actFIFO.tフェードアウト開始();\r
                                                base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                CDTXMania.Instance.Skin.sound取消音.t再生する();\r
@@ -393,8 +392,11 @@ namespace DTXMania
                                        if (!this.actSortSongs.bIsActivePopupMenu && !this.actQuickConfig.bIsActivePopupMenu)\r
                                        {\r
                                                #region [ ESC ]\r
-                                               if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || ((CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT) || CDTXMania.Instance.Pad.b押されたGB(Eパッド.Cancel)) && ((this.act曲リスト.r現在選択中の曲 != null) && (this.act曲リスト.r現在選択中の曲.r親ノード == null))))\r
-                                               {       // [ESC]\r
+                                               if (\r
+                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) ||\r
+                                               (CDTXMania.Instance.Pad.bCancelPadIsPressedDGB() &&\r
+                                               (this.act曲リスト.r現在選択中の曲 != null && this.act曲リスト.r現在選択中の曲.r親ノード == null)))\r
+                                               {\r
                                                        CDTXMania.Instance.Skin.sound取消音.t再生する();\r
                                                        this.eフェードアウト完了時の戻り値 = E戻り値.タイトルに戻る;\r
                                                        this.actFIFO.tフェードアウト開始();\r
@@ -405,9 +407,10 @@ namespace DTXMania
                                                #region [ Shift-F1: CONFIG画面 ]\r
                                                if ((CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)) &&\r
                                                        CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1))\r
-                                               {       // [SHIFT] + [F1] CONFIG\r
+                                               {\r
                                                        this.actPresound.tサウンド停止();\r
-                                                       this.eフェードアウト完了時の戻り値 = E戻り値.コンフィグ呼び出し;      // #24525 2011.3.16 yyagi: [SHIFT]-[F1]でCONFIG呼び出し\r
+                                                       // #24525 2011.3.16 yyagi: [SHIFT]-[F1]でCONFIG呼び出し\r
+                                                       this.eフェードアウト完了時の戻り値 = E戻り値.コンフィグ呼び出し;\r
                                                        this.actFIFO.tフェードアウト開始();\r
                                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                        CDTXMania.Instance.Skin.sound取消音.t再生する();\r
@@ -454,9 +457,10 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ Decide ]\r
-                                                       if ((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.Decide) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) ||\r
-                                                               (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) ||\r
-                                                               (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
+                                                       if (\r
+                                                               CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+                                                               (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+                                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)))\r
                                                        {\r
                                                                CDTXMania.Instance.Skin.sound決定音.t再生する();\r
                                                                if (this.act曲リスト.r現在選択中の曲 != null)\r
@@ -502,24 +506,23 @@ namespace DTXMania
                                                        #endregion\r
                                                        #region [ Up ]\r
                                                        this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.R), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))\r
+                                                       this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtR) || CDTXMania.Instance.Pad.b押されている(EPad.BsR), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
                                                        {\r
                                                                this.tカーソルを上へ移動する();\r
                                                        }\r
                                                        #endregion\r
                                                        #region [ Down ]\r
                                                        this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されているGB(Eパッド.B), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))\r
+                                                       this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtB) || CDTXMania.Instance.Pad.b押されている(EPad.BsB), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.LT))\r
                                                        {\r
                                                                this.tカーソルを下へ移動する();\r
                                                        }\r
                                                        #endregion\r
                                                        #region [ Upstairs / Left ]\r
                                                        if (((this.act曲リスト.r現在選択中の曲 != null) && (this.act曲リスト.r現在選択中の曲.r親ノード != null)) &&\r
-                                                               (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT) ||\r
-                                                                       CDTXMania.Instance.Pad.b押されたGB(Eパッド.Cancel) ||\r
+                                                               (CDTXMania.Instance.Pad.bCancelPadIsPressedDGB() ||\r
                                                                        CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow)))\r
                                                        {\r
                                                                this.actPresound.tサウンド停止();\r
@@ -529,25 +532,25 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ BDx2: 簡易CONFIG ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.BD))\r
-                                                       {       // [BD]x2 スクロール速度変更\r
-                                                               CommandHistory.Add(E楽器パート.DRUMS, EパッドFlag.BD);\r
-                                                               EパッドFlag[] comChangeScrollSpeed = new EパッドFlag[] { EパッドFlag.BD, EパッドFlag.BD };\r
-                                                               if (CommandHistory.CheckCommand(comChangeScrollSpeed, E楽器パート.DRUMS))\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.BD))\r
+                                                       { // [BD]x2 スクロール速度変更\r
+                                                               CommandHistory.Add(EPart.Drums, EPadFlag.BD);\r
+                                                               EPadFlag[] comChangeScrollSpeed = new EPadFlag[] { EPadFlag.BD, EPadFlag.BD };\r
+                                                               if (CommandHistory.CheckCommand(comChangeScrollSpeed, EPart.Drums))\r
                                                                {\r
                                                                        // Debug.WriteLine( "ドラムススクロール速度変更" );\r
                                                                        // CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = ( CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1 ) % 0x10;\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
-                                                                       this.actQuickConfig.tActivatePopupMenu(E楽器パート.DRUMS);\r
+                                                                       this.actQuickConfig.tActivatePopupMenu(EPart.Drums);\r
                                                                }\r
                                                        }\r
                                                        #endregion\r
                                                        #region [ HHx2: 難易度変更 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.HH) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.HHO))\r
-                                                       {       // [HH]x2 難易度変更\r
-                                                               CommandHistory.Add(E楽器パート.DRUMS, EパッドFlag.HH);\r
-                                                               EパッドFlag[] comChangeDifficulty = new EパッドFlag[] { EパッドFlag.HH, EパッドFlag.HH };\r
-                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, E楽器パート.DRUMS))\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.HH) || CDTXMania.Instance.Pad.b押された(EPad.HHO))\r
+                                                       { // [HH]x2 難易度変更\r
+                                                               CommandHistory.Add(EPart.Drums, EPadFlag.HH);\r
+                                                               EPadFlag[] comChangeDifficulty = new EPadFlag[] { EPadFlag.HH, EPadFlag.HH };\r
+                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, EPart.Drums))\r
                                                                {\r
                                                                        this.act曲リスト.t難易度レベルをひとつ進める();\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
@@ -555,11 +558,11 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ G + PickPick Guitar: 難易度変更 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押されている(E楽器パート.GUITAR, Eパッド.G) && CDTXMania.Instance.Pad.b押された(E楽器パート.GUITAR, Eパッド.Pick))        // #24177 2011.1.17 yyagi || -> &&\r
-                                                       {       // [G] + [Pick][Pick] ギター難易度変更\r
-                                                               CommandHistory.Add(E楽器パート.GUITAR, EパッドFlag.Pick | EパッドFlag.G);\r
-                                                               EパッドFlag[] comChangeDifficulty = new EパッドFlag[] { EパッドFlag.Pick | EパッドFlag.G, EパッドFlag.Pick | EパッドFlag.G };\r
-                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, E楽器パート.GUITAR))\r
+                                                       if (CDTXMania.Instance.Pad.b押されている(EPad.GtG) && CDTXMania.Instance.Pad.b押された(EPad.GtPick))  // #24177 2011.1.17 yyagi || -> &&\r
+                                                       { // [G] + [Pick][Pick] ギター難易度変更\r
+                                                               CommandHistory.Add(EPart.Guitar, EPadFlag.Pick | EPadFlag.G);\r
+                                                               EPadFlag[] comChangeDifficulty = new EPadFlag[] { EPadFlag.Pick | EPadFlag.G, EPadFlag.Pick | EPadFlag.G };\r
+                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, EPart.Guitar))\r
                                                                {\r
                                                                        Debug.WriteLine("ギター難易度変更");\r
                                                                        this.act曲リスト.t難易度レベルをひとつ進める();\r
@@ -568,11 +571,11 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ G + PickPick Bass: 難易度変更 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押されている(E楽器パート.BASS, Eパッド.G) && CDTXMania.Instance.Pad.b押された(E楽器パート.BASS, Eパッド.Pick))            // #24177 2011.1.17 yyagi || -> &&\r
-                                                       {       // [G] + [Pick][Pick] ベース難易度変更\r
-                                                               CommandHistory.Add(E楽器パート.BASS, EパッドFlag.Pick | EパッドFlag.G);\r
-                                                               EパッドFlag[] comChangeDifficulty = new EパッドFlag[] { EパッドFlag.Pick | EパッドFlag.G, EパッドFlag.Pick | EパッドFlag.G };\r
-                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, E楽器パート.BASS))\r
+                                                       if (CDTXMania.Instance.Pad.b押されている(EPad.BsG) && CDTXMania.Instance.Pad.b押された(EPad.BsPick))    // #24177 2011.1.17 yyagi || -> &&\r
+                                                       { // [G] + [Pick][Pick] ベース難易度変更\r
+                                                               CommandHistory.Add(EPart.Bass, EPadFlag.Pick | EPadFlag.G);\r
+                                                               EPadFlag[] comChangeDifficulty = new EPadFlag[] { EPadFlag.Pick | EPadFlag.G, EPadFlag.Pick | EPadFlag.G };\r
+                                                               if (CommandHistory.CheckCommand(comChangeDifficulty, EPart.Bass))\r
                                                                {\r
                                                                        Debug.WriteLine("ベース難易度変更");\r
                                                                        this.act曲リスト.t難易度レベルをひとつ進める();\r
@@ -581,12 +584,12 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ Pick G G Pick Guitar: ギターとベースを入れ替え ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.GUITAR, Eパッド.Pick) && !CDTXMania.Instance.Pad.b押されている(E楽器パート.GUITAR, Eパッド.G))\r
-                                                       {       // ギター[Pick]: コマンドとしてEnqueue\r
-                                                               CommandHistory.Add(E楽器パート.GUITAR, EパッドFlag.Pick);\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.GtPick) && !CDTXMania.Instance.Pad.b押されている(EPad.GtG))\r
+                                                       { // ギター[Pick]: コマンドとしてEnqueue\r
+                                                               CommandHistory.Add(EPart.Guitar, EPadFlag.Pick);\r
                                                                // Pick, G, G, Pick で、ギターとベースを入れ替え\r
-                                                               EパッドFlag[] comSwapGtBs1 = new EパッドFlag[] { EパッドFlag.Pick, EパッドFlag.G, EパッドFlag.G, EパッドFlag.Pick };\r
-                                                               if (CommandHistory.CheckCommand(comSwapGtBs1, E楽器パート.GUITAR))\r
+                                                               EPadFlag[] comSwapGtBs1 = new EPadFlag[] { EPadFlag.Pick, EPadFlag.G, EPadFlag.G, EPadFlag.Pick };\r
+                                                               if (CommandHistory.CheckCommand(comSwapGtBs1, EPart.Guitar))\r
                                                                {\r
                                                                        Debug.WriteLine("ギターとベースの入れ替え1");\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
@@ -597,12 +600,12 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ Pick G G Pick Bass: ギターとベースを入れ替え ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.BASS, Eパッド.Pick) && !CDTXMania.Instance.Pad.b押されている(E楽器パート.BASS, Eパッド.G))\r
-                                                       {       // ベース[Pick]: コマンドとしてEnqueue\r
-                                                               CommandHistory.Add(E楽器パート.BASS, EパッドFlag.Pick);\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.BsPick) && !CDTXMania.Instance.Pad.b押されている(EPad.BsG))\r
+                                                       { // ベース[Pick]: コマンドとしてEnqueue\r
+                                                               CommandHistory.Add(EPart.Bass, EPadFlag.Pick);\r
                                                                // Pick, G, G, Pick で、ギターとベースを入れ替え\r
-                                                               EパッドFlag[] comSwapGtBs1 = new EパッドFlag[] { EパッドFlag.Pick, EパッドFlag.G, EパッドFlag.G, EパッドFlag.Pick };\r
-                                                               if (CommandHistory.CheckCommand(comSwapGtBs1, E楽器パート.BASS))\r
+                                                               EPadFlag[] comSwapGtBs1 = new EPadFlag[] { EPadFlag.Pick, EPadFlag.G, EPadFlag.G, EPadFlag.Pick };\r
+                                                               if (CommandHistory.CheckCommand(comSwapGtBs1, EPart.Bass))\r
                                                                {\r
                                                                        Debug.WriteLine("ギターとベースの入れ替え2");\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
@@ -613,41 +616,41 @@ namespace DTXMania
                                                        }\r
                                                        #endregion\r
                                                        #region [ G G G Guitar: ソート画面 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.GUITAR, Eパッド.G))\r
-                                                       {       // ギター[G]: コマンドとしてEnqueue\r
-                                                               CommandHistory.Add(E楽器パート.GUITAR, EパッドFlag.G);\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.GtG))\r
+                                                       { // ギター[G]: コマンドとしてEnqueue\r
+                                                               CommandHistory.Add(EPart.Guitar, EPadFlag.G);\r
                                                                // ギター G, G, G で、ソート画面に遷移\r
-                                                               EパッドFlag[] comSortGt = new EパッドFlag[] { EパッドFlag.G, EパッドFlag.G, EパッドFlag.G };\r
-                                                               if (CommandHistory.CheckCommand(comSortGt, E楽器パート.GUITAR))\r
+                                                               EPadFlag[] comSortGt = new EPadFlag[] { EPadFlag.G, EPadFlag.G, EPadFlag.G };\r
+                                                               if (CommandHistory.CheckCommand(comSortGt, EPart.Guitar))\r
                                                                {\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
-                                                                       this.actSortSongs.tActivatePopupMenu(E楽器パート.GUITAR, ref this.act曲リスト);\r
+                                                                       this.actSortSongs.tActivatePopupMenu(EPart.Guitar, ref this.act曲リスト);\r
                                                                }\r
                                                        }\r
                                                        #endregion\r
                                                        #region [ G G G Bass: ソート画面 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.BASS, Eパッド.G))\r
-                                                       {       // ベース[G]: コマンドとしてEnqueue\r
-                                                               CommandHistory.Add(E楽器パート.BASS, EパッドFlag.G);\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.BsG))\r
+                                                       { // ベース[G]: コマンドとしてEnqueue\r
+                                                               CommandHistory.Add(EPart.Bass, EPadFlag.G);\r
                                                                // ベース G, G, G で、ソート画面に遷移\r
-                                                               EパッドFlag[] comSortBs = new EパッドFlag[] { EパッドFlag.G, EパッドFlag.G, EパッドFlag.G };\r
-                                                               if (CommandHistory.CheckCommand(comSortBs, E楽器パート.BASS))\r
+                                                               EPadFlag[] comSortBs = new EPadFlag[] { EPadFlag.G, EPadFlag.G, EPadFlag.G };\r
+                                                               if (CommandHistory.CheckCommand(comSortBs, EPart.Bass))\r
                                                                {\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
-                                                                       this.actSortSongs.tActivatePopupMenu(E楽器パート.BASS, ref this.act曲リスト);\r
+                                                                       this.actSortSongs.tActivatePopupMenu(EPart.Bass, ref this.act曲リスト);\r
                                                                }\r
                                                        }\r
                                                        #endregion\r
                                                        #region [ BD HT Drums: ソート画面 ]\r
-                                                       if (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.HT))\r
-                                                       {       // [BD]+[HT] 未使用\r
+                                                       if (CDTXMania.Instance.Pad.b押された(EPad.HT))\r
+                                                       { // [BD]+[HT] 未使用\r
                                                                //\r
-                                                               CommandHistory.Add(E楽器パート.DRUMS, EパッドFlag.HT);\r
-                                                               EパッドFlag[] comSort = new EパッドFlag[] { EパッドFlag.BD, EパッドFlag.HT };\r
-                                                               if (CommandHistory.CheckCommand(comSort, E楽器パート.DRUMS))\r
+                                                               CommandHistory.Add(EPart.Drums, EPadFlag.HT);\r
+                                                               EPadFlag[] comSort = new EPadFlag[] { EPadFlag.BD, EPadFlag.HT };\r
+                                                               if (CommandHistory.CheckCommand(comSort, EPart.Drums))\r
                                                                {\r
                                                                        CDTXMania.Instance.Skin.sound変更音.t再生する();\r
-                                                                       this.actSortSongs.tActivatePopupMenu(E楽器パート.DRUMS, ref this.act曲リスト);\r
+                                                                       this.actSortSongs.tActivatePopupMenu(EPart.Drums, ref this.act曲リスト);\r
                                                                }\r
                                                        }\r
                                                        #endregion\r
@@ -753,18 +756,18 @@ namespace DTXMania
                private CTexture tx背景;\r
                private CTexture txFLIP;\r
 \r
-               private struct STCommandTime            // #24063 2011.1.16 yyagi コマンド入力時刻の記録用\r
+               private struct STCommandTime    // #24063 2011.1.16 yyagi コマンド入力時刻の記録用\r
                {\r
-                       public E楽器パート eInst;          // 使用楽器\r
-                       public EパッドFlag ePad;             // 押されたコマンド(同時押しはOR演算で列挙する)\r
-                       public long time;                               // コマンド入力時刻\r
+                       public EPart eInst;   // 使用楽器\r
+                       public EPadFlag ePad;   // 押されたコマンド(同時押しはOR演算で列挙する)\r
+                       public long time;       // コマンド入力時刻\r
                }\r
-               private class CCommandHistory           // #24063 2011.1.16 yyagi コマンド入力履歴を保持・確認するクラス\r
+               private class CCommandHistory   // #24063 2011.1.16 yyagi コマンド入力履歴を保持・確認するクラス\r
                {\r
                        readonly int buffersize = 16;\r
                        private List<STCommandTime> stct;\r
 \r
-                       public CCommandHistory()                // コンストラクタ\r
+                       public CCommandHistory()    // コンストラクタ\r
                        {\r
                                stct = new List<STCommandTime>(buffersize);\r
                        }\r
@@ -774,7 +777,7 @@ namespace DTXMania
                        /// </summary>\r
                        /// <param name="_eInst">楽器の種類</param>\r
                        /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param>\r
-                       public void Add(E楽器パート _eInst, EパッドFlag _ePad)\r
+                       public void Add(EPart _eInst, EPadFlag _ePad)\r
                        {\r
                                STCommandTime _stct = new STCommandTime\r
                                {\r
@@ -801,7 +804,7 @@ namespace DTXMania
                        /// <param name="_ePad">入力が成功したか調べたいコマンド</param>\r
                        /// <param name="_eInst">対象楽器</param>\r
                        /// <returns>コマンド入力成功時true</returns>\r
-                       public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst)\r
+                       public bool CheckCommand(EPadFlag[] _ePad, EPart _eInst)\r
                        {\r
                                int targetCount = _ePad.Length;\r
                                int stciCount = stct.Count;\r
@@ -837,7 +840,7 @@ namespace DTXMania
                                //for ( int i = 0; i < _ePad.Length; i++ ) Debug.Write( _ePad[ i ] + ", " );\r
                                //Debug.WriteLine( "" );\r
                                //stct.RemoveRange( 0, targetCount );                   // #24396 2011.2.13 yyagi \r
-                               stct.Clear();                                                                   // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command\r
+                               stct.Clear();                 // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command\r
 \r
                                return true;\r
                        }\r
@@ -885,7 +888,7 @@ namespace DTXMania
                                {\r
                                        song.stackランダム演奏番号.Push(numArray[k]);\r
                                }\r
-                               if (CDTXMania.Instance.ConfigIni.bLogDTX詳細ログ出力)\r
+                               if (CDTXMania.Instance.ConfigIni.bLogDTX)\r
                                {\r
                                        StringBuilder builder = new StringBuilder(0x400);\r
                                        builder.Append(string.Format("ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count));\r
@@ -902,7 +905,7 @@ namespace DTXMania
                        this.eフェードアウト完了時の戻り値 = E戻り値.選曲した;\r
                        //      this.actFOtoNowLoading.tフェードアウト開始();                                  // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略\r
                        base.eフェーズID = CStage.Eフェーズ.選曲_NowLoading画面へのフェードアウト;\r
-                       if (CDTXMania.Instance.ConfigIni.bLogDTX詳細ログ出力)\r
+                       if (CDTXMania.Instance.ConfigIni.bLogDTX)\r
                        {\r
                                int[] numArray2 = song.stackランダム演奏番号.ToArray();\r
                                StringBuilder builder2 = new StringBuilder(0x400);\r
@@ -947,7 +950,7 @@ namespace DTXMania
                                        {\r
                                                list.Add(c曲リストノード);\r
                                        }\r
-                                       if ((c曲リストノード.list子リスト != null) && CDTXMania.Instance.ConfigIni.bランダムセレクトで子BOXを検索対象とする)\r
+                                       if ((c曲リストノード.list子リスト != null) && CDTXMania.Instance.ConfigIni.bRandSubBox)\r
                                        {\r
                                                this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list);\r
                                        }\r
@@ -967,7 +970,7 @@ namespace DTXMania
                                        {\r
                                                list.Add(c曲リストノード);\r
                                        }\r
-                                       if ((c曲リストノード.list子リスト != null) && CDTXMania.Instance.ConfigIni.bランダムセレクトで子BOXを検索対象とする)\r
+                                       if ((c曲リストノード.list子リスト != null) && CDTXMania.Instance.ConfigIni.bRandSubBox)\r
                                        {\r
                                                this.t指定された曲の子リストの曲を列挙する_孫リスト含む(c曲リストノード, ref list);\r
                                        }\r
index f301d15..933d715 100644 (file)
@@ -12,7 +12,27 @@ namespace DTXMania
 {\r
        internal class CStage曲読み込み : CStage\r
        {\r
-               // コンストラクタ\r
+               private CActFIFOBlack actFO;\r
+               private bool b音符を表示する;\r
+               private Font ftタイトル表示用フォント;\r
+               private long nBGMの総再生時間ms;\r
+               private long nBGM再生開始時刻;\r
+               private int n音符の表示位置X;\r
+               private CSound sd読み込み音;\r
+               private string strSTAGEFILE;\r
+               private string str曲タイトル;\r
+               private CTexture txタイトル;\r
+               private CTexture tx音符;\r
+               private CTexture tx背景;\r
+               private DateTime timeBeginLoad;\r
+               private DateTime timeBeginLoadWAV;\r
+               private int nWAVcount;\r
+               private CTexture txFilename;\r
+               private Bitmap bitmapFilename;\r
+               private Graphics graphicsFilename;\r
+               private Font ftFilename;\r
+               private const float fFontSizeFilename = 12.0f;\r
+               private const float fFontSizeTitle = 48;\r
 \r
                public CStage曲読み込み()\r
                {\r
@@ -23,9 +43,6 @@ namespace DTXMania
                        base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
                }\r
 \r
-\r
-               // CStage 実装\r
-\r
                public override void On活性化()\r
                {\r
                        Trace.TraceInformation("曲読み込みステージを活性化します。");\r
@@ -50,7 +67,7 @@ namespace DTXMania
 \r
                                CDTX cdtx = new CDTX(strDTXファイルパス, true);\r
                                this.str曲タイトル = cdtx.TITLE;\r
-                               if (((cdtx.STAGEFILE != null) && (cdtx.STAGEFILE.Length > 0)) && (File.Exists(cdtx.strフォルダ名 + cdtx.STAGEFILE) && !CDTXMania.Instance.ConfigIni.bストイックモード))\r
+                               if (((cdtx.STAGEFILE != null) && (cdtx.STAGEFILE.Length > 0)) && (File.Exists(cdtx.strフォルダ名 + cdtx.STAGEFILE) && !CDTXMania.Instance.ConfigIni.bStoicMode))\r
                                {\r
                                        this.strSTAGEFILE = cdtx.strフォルダ名 + cdtx.STAGEFILE;\r
                                        this.b音符を表示する = false;\r
@@ -137,7 +154,7 @@ namespace DTXMania
 \r
                                if (!this.b音符を表示する && this.tx背景 != null)\r
                                {\r
-                                       this.tx背景.vc拡大縮小倍率 = new Vector3(Scale.X, Scale.Y, 1f); // とりあえずFullHD化\r
+                                       this.tx背景.vc拡大縮小倍率 = new Vector3(Scale.X, Scale.Y, 1f); // とりあえずFullHD化\r
                                }\r
                                if (this.b音符を表示する)\r
                                {\r
@@ -251,7 +268,7 @@ namespace DTXMania
 \r
                        if (this.b音符を表示する)\r
                        {\r
-                               int y = SampleFramework.GameWindowSize.Height - (int)(fFontSizeTitle * Scale.Y) + (int)(3 * Scale.X);   // 480 - 45;\r
+                               int y = SampleFramework.GameWindowSize.Height - (int)(fFontSizeTitle * Scale.Y) + (int)(3 * Scale.X);   // 480 - 45;\r
                                if (this.tx音符 != null)\r
                                {\r
                                        this.tx音符.t2D描画(\r
@@ -296,7 +313,7 @@ namespace DTXMania
                                                if ((CDTXMania.Instance.DTX != null) && CDTXMania.Instance.DTX.b活性化してる)\r
                                                        CDTXMania.Instance.DTX.On非活性化();\r
 \r
-                                               CDTXMania.Instance.DTX = new CDTX(str, false, ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0, ini.stファイル.BGMAdjust);\r
+                                               CDTXMania.Instance.DTX = new CDTX(str, false, ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0, ini.stファイル.BGMAdjust);\r
                                                Trace.TraceInformation("----曲情報-----------------");\r
                                                Trace.TraceInformation("TITLE: {0}", CDTXMania.Instance.DTX.TITLE);\r
                                                Trace.TraceInformation("FILE: {0}", CDTXMania.Instance.DTX.strファイル名の絶対パス);\r
@@ -305,7 +322,7 @@ namespace DTXMania
                                                // #35411 2015.08.19 chnmr0 add\r
                                                // Read ghost data by config\r
                                                // It does not exist a ghost file for 'perfect' actually\r
-                                               STDGBVALUE<string> inst = new STDGBVALUE<string>();\r
+                                               STDGBSValue<string> inst = new STDGBSValue<string>();\r
                                                inst.Drums = "dr";\r
                                                inst.Guitar = "gt";\r
                                                inst.Bass = "bs";\r
@@ -315,12 +332,9 @@ namespace DTXMania
                                                        inst.Bass = "gt";\r
                                                }\r
 \r
-                                               for (E楽器パート einst = E楽器パート.DRUMS; einst <= E楽器パート.BASS; ++einst)\r
+                                               for (EPart einst = EPart.Drums; einst <= EPart.Bass; ++einst)\r
                                                {\r
-                                                       bool readAutoGhostCond = false;\r
-                                                       readAutoGhostCond |= einst == E楽器パート.DRUMS ? CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである : false;\r
-                                                       readAutoGhostCond |= einst == E楽器パート.GUITAR ? CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである : false;\r
-                                                       readAutoGhostCond |= einst == E楽器パート.BASS ? CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである : false;\r
+                                                       bool readAutoGhostCond = CDTXMania.Instance.ConfigIni.bIsAutoPlay(einst);\r
 \r
                                                        CDTXMania.Instance.DTX.listTargetGhsotLag[einst] = null;\r
                                                        CDTXMania.Instance.DTX.listAutoGhostLag[einst] = null;\r
@@ -328,7 +342,7 @@ namespace DTXMania
                                                        if (readAutoGhostCond)\r
                                                        {\r
                                                                string[] prefix = { "perfect", "lastplay", "hiskill", "hiscore", "online" };\r
-                                                               int indPrefix = (int)CDTXMania.Instance.ConfigIni.eAutoGhost[einst];\r
+                                                               int indPrefix = (int)CDTXMania.Instance.ConfigIni.eAutoGhost[einst].Value;\r
                                                                string filename = CDTXMania.Instance.DTX.strフォルダ名 + "\\" + CDTXMania.Instance.DTX.strファイル名 + "." + prefix[indPrefix] + "." + inst[einst] + ".ghost";\r
                                                                if (File.Exists(filename))\r
                                                                {\r
@@ -337,17 +351,17 @@ namespace DTXMania
                                                                }\r
                                                        }\r
 \r
-                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[einst] != ETargetGhostData.NONE)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[einst].Value != ETargetGhostData.None)\r
                                                        {\r
                                                                string[] prefix = { "none", "perfect", "lastplay", "hiskill", "hiscore", "online" };\r
-                                                               int indPrefix = (int)CDTXMania.Instance.ConfigIni.eTargetGhost[einst];\r
+                                                               int indPrefix = (int)CDTXMania.Instance.ConfigIni.eTargetGhost[einst].Value;\r
                                                                string filename = CDTXMania.Instance.DTX.strフォルダ名 + "\\" + CDTXMania.Instance.DTX.strファイル名 + "." + prefix[indPrefix] + "." + inst[einst] + ".ghost";\r
                                                                if (File.Exists(filename))\r
                                                                {\r
                                                                        CDTXMania.Instance.DTX.listTargetGhsotLag[einst] = new List<int>();\r
                                                                        ReadGhost(filename, CDTXMania.Instance.DTX.listTargetGhsotLag[einst]);\r
                                                                }\r
-                                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[einst] == ETargetGhostData.PERFECT)\r
+                                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[einst] == ETargetGhostData.Perfect)\r
                                                                {\r
                                                                        // All perfect\r
                                                                        CDTXMania.Instance.DTX.listTargetGhsotLag[einst] = new List<int>();\r
@@ -356,10 +370,10 @@ namespace DTXMania
                                                }\r
 \r
                                                // #35411 2015.08.19 chnmr0 add ゴースト機能のためList chip 読み込み後楽器パート出現順インデックスを割り振る\r
-                                               STDGBVALUE<int> curCount = new STDGBVALUE<int>();\r
+                                               STDGBSValue<int> curCount = new STDGBSValue<int>();\r
                                                foreach (CChip chip in CDTXMania.Instance.DTX.listChip)\r
                                                {\r
-                                                       if (chip.e楽器パート != E楽器パート.UNKNOWN)\r
+                                                       if (chip.e楽器パート != EPart.Unknown)\r
                                                        {\r
                                                                chip.n楽器パートでの出現順 = curCount[chip.e楽器パート]++;\r
                                                        }\r
@@ -380,15 +394,15 @@ namespace DTXMania
 \r
                                case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む:\r
                                        {\r
-                                               if (nWAVcount == 1 && CDTXMania.Instance.DTX.listWAV.Count > 0)                 // #28934 2012.7.7 yyagi (added checking Count)\r
+                                               if (nWAVcount == 1 && CDTXMania.Instance.DTX.listWAV.Count > 0)     // #28934 2012.7.7 yyagi (added checking Count)\r
                                                {\r
                                                        ShowProgressByFilename(CDTXMania.Instance.DTX.listWAV[nWAVcount].strファイル名);\r
                                                }\r
-                                               int looptime = (CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う) ? 3 : 1;\r
-                                               if (CDTXMania.Instance.ConfigIni.b曲読み込みを高速化する) looptime = CDTXMania.Instance.DTX.listWAV.Count / 20 + 1; // #xxxxx ikanick 2016.2.21 ロード高速化 垂直同期の有無に関わらず、1フレームに5%ぐらいずつロードする\r
+                                               int looptime = (CDTXMania.Instance.ConfigIni.bVSyncWait) ? 3 : 1;\r
+                                               if (CDTXMania.Instance.ConfigIni.bLoadSoundSpeed) looptime = CDTXMania.Instance.DTX.listWAV.Count / 20 + 1; // #xxxxx ikanick 2016.2.21 ロード高速化 垂直同期の有無に関わらず、1フレームに5%ぐらいずつロードする\r
                                                for (int i = 0; i < looptime && nWAVcount <= CDTXMania.Instance.DTX.listWAV.Count; i++)\r
                                                {\r
-                                                       if (CDTXMania.Instance.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0)     // #28674 2012.5.8 yyagi\r
+                                                       if (CDTXMania.Instance.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi\r
                                                        {\r
                                                                CDTXMania.Instance.DTX.tWAVの読み込み(CDTXMania.Instance.DTX.listWAV[nWAVcount]);\r
                                                        }\r
@@ -409,8 +423,8 @@ namespace DTXMania
                                                        {\r
                                                                CDTXMania.Instance.DTX.PlanToAddMixerChannel();\r
                                                        }\r
-                                                       CDTXMania.Instance.DTX.tギターとベースのランダム化(E楽器パート.GUITAR, CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
-                                                       CDTXMania.Instance.DTX.tギターとベースのランダム化(E楽器パート.BASS, CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
+                                                       CDTXMania.Instance.DTX.tギターとベースのランダム化(EPart.Guitar, CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
+                                                       CDTXMania.Instance.DTX.tギターとベースのランダム化(EPart.Bass, CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
 \r
                                                        CDTXMania.Instance.stage演奏画面.On活性化();\r
 \r
@@ -426,10 +440,10 @@ namespace DTXMania
                                        {\r
                                                TimeSpan span;\r
                                                DateTime timeBeginLoadBMPAVI = DateTime.Now;\r
-                                               if (CDTXMania.Instance.ConfigIni.bBGA有効)\r
+                                               if (CDTXMania.Instance.ConfigIni.bBGA)\r
                                                        CDTXMania.Instance.DTX.tBMP_BMPTEXの読み込み();\r
 \r
-                                               if (CDTXMania.Instance.ConfigIni.bAVI有効)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAVI)\r
                                                        CDTXMania.Instance.DTX.tAVIの読み込み();\r
                                                span = (TimeSpan)(DateTime.Now - timeBeginLoadBMPAVI);\r
                                                Trace.TraceInformation("BMP/AVI読込所要時間({0,4}): {1}", (CDTXMania.Instance.DTX.listBMP.Count + CDTXMania.Instance.DTX.listBMPTEX.Count + CDTXMania.Instance.DTX.listAVI.Count), span.ToString());\r
@@ -464,7 +478,7 @@ namespace DTXMania
                                                        this.nBGM再生開始時刻 = nCurrentTime;\r
 \r
                                                //                                              if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) )\r
-                                               if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms))    // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間\r
+                                               if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms))  // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間\r
                                                {\r
                                                        if (!CDTXMania.Instance.DTXVmode.Enabled)\r
                                                        {\r
@@ -476,7 +490,7 @@ namespace DTXMania
                                        }\r
 \r
                                case CStage.Eフェーズ.共通_フェードアウト:\r
-                                       if (this.actFO.On進行描画() == 0 && !CDTXMania.Instance.DTXVmode.Enabled)           // DTXVモード時は、フェードアウト省略\r
+                                       if (this.actFO.On進行描画() == 0 && !CDTXMania.Instance.DTXVmode.Enabled)   // DTXVモード時は、フェードアウト省略\r
                                                return 0;\r
 \r
                                        if (txFilename != null)\r
@@ -499,7 +513,7 @@ namespace DTXMania
                protected bool tキー入力()\r
                {\r
                        IInputDevice keyboard = CDTXMania.Instance.Input管理.Keyboard;\r
-                       if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))                // escape (exit)\r
+                       if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))    // escape (exit)\r
                        {\r
                                return true;\r
                        }\r
@@ -527,33 +541,5 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               //              private CActFIFOBlack actFI;\r
-               private CActFIFOBlack actFO;\r
-               private bool b音符を表示する;\r
-               private Font ftタイトル表示用フォント;\r
-               private long nBGMの総再生時間ms;\r
-               private long nBGM再生開始時刻;\r
-               private int n音符の表示位置X;\r
-               private CSound sd読み込み音;\r
-               private string strSTAGEFILE;\r
-               private string str曲タイトル;\r
-               private CTexture txタイトル;\r
-               private CTexture tx音符;\r
-               private CTexture tx背景;\r
-               private DateTime timeBeginLoad;\r
-               private DateTime timeBeginLoadWAV;\r
-               private int nWAVcount;\r
-               private CTexture txFilename;\r
-               private Bitmap bitmapFilename;\r
-               private Graphics graphicsFilename;\r
-               private Font ftFilename;\r
-               private const float fFontSizeFilename = 12.0f;\r
-               private const float fFontSizeTitle = 48;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 6b2071a..3403462 100644 (file)
@@ -11,12 +11,23 @@ namespace DTXMania
 {\r
        internal class CAct演奏AVI : CActivity\r
        {\r
-               // コンストラクタ\r
+               private long n移動開始時刻ms;\r
+               private int n画像側開始位置X;\r
+               private int n画像側開始位置Y;\r
+               private int n画像側終了位置X;\r
+               private int n画像側終了位置Y;\r
+               private int n開始サイズH;\r
+               private int n開始サイズW;\r
+               private int n終了サイズH;\r
+               private int n終了サイズW;\r
+               private int n総移動時間ms;\r
+               private int n表示側開始位置X;\r
+               private int n表示側開始位置Y;\r
+               private int n表示側終了位置X;\r
+               private int n表示側終了位置Y;\r
+               private CDTX.CAVI rAVI;\r
+               private CTexture tx描画用;\r
 \r
-               public CAct演奏AVI()\r
-               {\r
-                       base.b活性化してない = true;\r
-               }\r
                /// <summary>\r
                /// プレビュームービーかどうか\r
                /// </summary>\r
@@ -76,10 +87,9 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               // メソッド\r
-               public void Start(Ech定義 nチャンネル番号, CDTX.CAVI rAVI, int n開始サイズW, int n開始サイズH, int n終了サイズW, int n終了サイズH, int n画像側開始位置X, int n画像側開始位置Y, int n画像側終了位置X, int n画像側終了位置Y, int n表示側開始位置X, int n表示側開始位置Y, int n表示側終了位置X, int n表示側終了位置Y, int n総移動時間ms, int n移動開始時刻ms)\r
+               public void Start(EChannel nチャンネル番号, CDTX.CAVI rAVI, int n開始サイズW, int n開始サイズH, int n終了サイズW, int n終了サイズH, int n画像側開始位置X, int n画像側開始位置Y, int n画像側終了位置X, int n画像側終了位置Y, int n表示側開始位置X, int n表示側開始位置Y, int n表示側終了位置X, int n表示側終了位置Y, int n総移動時間ms, int n移動開始時刻ms)\r
                {\r
-                       if (nチャンネル番号 == Ech定義.Movie || nチャンネル番号 == Ech定義.MovieFull)\r
+                       if (nチャンネル番号 == EChannel.Movie || nチャンネル番号 == EChannel.MovieFull)\r
                        {\r
                                this.rAVI = rAVI;\r
                                this.n開始サイズW = n開始サイズW;\r
@@ -110,29 +120,29 @@ namespace DTXMania
                                }\r
                                switch (chip.eAVI種別)\r
                                {\r
-                                       case EAVI種別.AVI:\r
+                                       case EAVIType.AVI:\r
                                                {\r
                                                        if (chip.rAVI != null)\r
                                                        {\r
                                                                if (this.rAVI == null)\r
                                                                {\r
-                                                                       this.rAVI = chip.rAVI;          // DTXVモードで、最初に途中再生で起動したときに、ここに来る\r
+                                                                       this.rAVI = chip.rAVI;    // DTXVモードで、最初に途中再生で起動したときに、ここに来る\r
                                                                }\r
-                                                               this.bFullScreenMovie = (chip.eチャンネル番号 == Ech定義.MovieFull || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen);               // DTXVモードで、最初に途中再生で起動したときのために必要\r
+                                                               this.bFullScreenMovie = (chip.eチャンネル番号 == EChannel.MovieFull || CDTXMania.Instance.ConfigIni.bFullAVI);   // DTXVモードで、最初に途中再生で起動したときのために必要\r
                                                                this.rAVI.avi.Seek(n移動開始時刻ms - chip.n発声時刻ms);\r
                                                                this.Start(chip.eチャンネル番号, chip.rAVI, SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, chip.n発声時刻ms);\r
                                                        }\r
                                                        continue;\r
                                                }\r
-                                       case EAVI種別.AVIPAN:\r
+                                       case EAVIType.AVIPAN:\r
                                                {\r
                                                        if (chip.rAVIPan != null)\r
                                                        {\r
                                                                if (this.rAVI == null)\r
                                                                {\r
-                                                                       this.rAVI = chip.rAVI;          // DTXVモードで、最初に途中再生で起動したときに、ここに来る\r
+                                                                       this.rAVI = chip.rAVI;    // DTXVモードで、最初に途中再生で起動したときに、ここに来る\r
                                                                }\r
-                                                               this.bFullScreenMovie = (chip.eチャンネル番号 == Ech定義.MovieFull || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen);               // DTXVモードで、最初に途中再生で起動したときのために必要\r
+                                                               this.bFullScreenMovie = (chip.eチャンネル番号 == EChannel.MovieFull || CDTXMania.Instance.ConfigIni.bFullAVI);   // DTXVモードで、最初に途中再生で起動したときのために必要\r
                                                                this.rAVI.avi.Seek(n移動開始時刻ms - chip.n発声時刻ms);\r
                                                                this.Start(chip.eチャンネル番号, chip.rAVI, chip.rAVIPan.sz開始サイズ.Width, chip.rAVIPan.sz開始サイズ.Height, chip.rAVIPan.sz終了サイズ.Width, chip.rAVIPan.sz終了サイズ.Height, chip.rAVIPan.pt動画側開始位置.X, chip.rAVIPan.pt動画側開始位置.Y, chip.rAVIPan.pt動画側終了位置.X, chip.rAVIPan.pt動画側終了位置.Y, chip.rAVIPan.pt表示側開始位置.X, chip.rAVIPan.pt表示側開始位置.Y, chip.rAVIPan.pt表示側終了位置.X, chip.rAVIPan.pt表示側終了位置.Y, chip.n総移動時間, chip.n発声時刻ms);\r
                                                        }\r
@@ -148,6 +158,7 @@ namespace DTXMania
                                this.n移動開始時刻ms = -1;\r
                        }\r
                }\r
+\r
                public void Cont(int n再開時刻ms)\r
                {\r
                        if ((this.rAVI != null) && (this.rAVI.avi != null))\r
@@ -155,13 +166,22 @@ namespace DTXMania
                                this.n移動開始時刻ms = n再開時刻ms;\r
                        }\r
                }\r
-               public unsafe int t進行描画(int x, int y, int areaDrawingWidth, int areaDrawingHeight)\r
+\r
+               /// <summary>\r
+               /// この関数は AVI 再生のために使用できません。かわりに座標と大きさ指定可能な描画関数を使用してください。\r
+               /// </summary>\r
+               /// <returns></returns>\r
+               public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
-                       {\r
-                               // Rectangle rectangle;\r
-                               // Rectangle rectangle2;\r
+                       return 0;\r
+               }\r
 \r
+               public unsafe int t進行描画(int x, int y, int w, int h)\r
+               {\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.bAVI &&\r
+                               !CDTXMania.Instance.ConfigIni.bStoicMode)\r
+                       {\r
                                if (((this.n移動開始時刻ms == -1) || (this.rAVI == null)) || (this.rAVI.avi == null))\r
                                {\r
                                        return 0;\r
@@ -170,7 +190,7 @@ namespace DTXMania
                                {\r
                                        return 0;\r
                                }\r
-                               int time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0));\r
+                               int time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0));\r
                                if ((this.n総移動時間ms != 0) && (this.n総移動時間ms < time))\r
                                {\r
                                        this.n総移動時間ms = 0;\r
@@ -186,125 +206,10 @@ namespace DTXMania
                                        }\r
                                        // PREVIEW時はループ再生する。移動開始時刻msを現時刻にして(=AVIを最初に巻き戻して)、ここまでに行った計算をやり直す。\r
                                        this.n移動開始時刻ms = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                                       time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0));\r
+                                       time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0));\r
                                        this.rAVI.avi.Seek(0);\r
                                }\r
-                               /*\r
-                               if( ( this.n前回表示したフレーム番号 != frameNoFromTime ) && !this.bフレームを作成した )\r
-                               {\r
-                                       // this.pBmp = this.rAVI.avi.GetFramePtr( frameNoFromTime );\r
-                                       this.n前回表示したフレーム番号 = frameNoFromTime;\r
-                                       this.bフレームを作成した = true;\r
-                               }\r
-                               Size size = new Size( (int) this.rAVI.avi.nフレーム幅, (int) this.rAVI.avi.nフレーム高さ );\r
-                               // Size size2 = new Size( 278, 355);\r
-                               Size size2 = new Size( SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height);\r
-                               Size 開始サイズ = new Size( this.n開始サイズW, this.n開始サイズH );\r
-                               Size 終了サイズ = new Size( this.n終了サイズW, this.n終了サイズH );\r
-                               Point 画像側開始位置 = new Point( this.n画像側開始位置X, this.n画像側終了位置Y );\r
-                               Point 画像側終了位置 = new Point( this.n画像側終了位置X, this.n画像側終了位置Y );\r
-                               Point 表示側開始位置 = new Point( this.n表示側開始位置X, this.n表示側開始位置Y );\r
-                               Point 表示側終了位置 = new Point( this.n表示側終了位置X, this.n表示側終了位置Y );\r
-                               long num3 = this.n総移動時間ms;\r
-                               long num4 = this.n移動開始時刻ms;\r
-                               if( CSound管理.rc演奏用タイマ.n現在時刻 < num4 )\r
-                               {\r
-                                       num4 = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               }\r
-                               time = (int) ( ( CSound管理.rc演奏用タイマ.n現在時刻 - num4 ) * ( ( (double) CDTXMania.Instance.ConfigIni.n演奏速度 ) / 20.0 ) );\r
-                               if( num3 == 0 )\r
-                               {\r
-                                       rectangle = new Rectangle( 画像側開始位置, 開始サイズ );\r
-                                       rectangle2 = new Rectangle( 表示側開始位置, 開始サイズ );\r
-                               }\r
-                               else\r
-                               {\r
-                                       double num5 = ( (double) time ) / ( (double) num3 );\r
-                                       Size size5 = new Size( 開始サイズ.Width + ( (int) ( ( 終了サイズ.Width - 開始サイズ.Width ) * num5 ) ), 開始サイズ.Height + ( (int) ( ( 終了サイズ.Height - 開始サイズ.Height ) * num5 ) ) );\r
-                                       rectangle = new Rectangle( (int) ( ( 画像側終了位置.X - 画像側開始位置.X ) * num5 ), (int) ( ( 画像側終了位置.Y - 画像側開始位置.Y ) * num5 ), ( (int) ( ( 画像側終了位置.X - 画像側開始位置.X ) * num5 ) ) + size5.Width, ( (int) ( ( 画像側終了位置.Y - 画像側開始位置.Y ) * num5 ) ) + size5.Height );\r
-                                       rectangle2 = new Rectangle( (int) ( ( 表示側終了位置.X - 表示側開始位置.X ) * num5 ), (int) ( ( 表示側終了位置.Y - 表示側開始位置.Y ) * num5 ), ( (int) ( ( 表示側終了位置.X - 表示側開始位置.X ) * num5 ) ) + size5.Width, ( (int) ( ( 表示側終了位置.Y - 表示側開始位置.Y ) * num5 ) ) + size5.Height );\r
-                                       if( ( ( rectangle.Right <= 0 ) || ( rectangle.Bottom <= 0 ) ) || ( ( rectangle.Left >= size.Width ) || ( rectangle.Top >= size.Height ) ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                                       if( ( ( rectangle2.Right <= 0 ) || ( rectangle2.Bottom <= 0 ) ) || ( ( rectangle2.Left >= size2.Width ) || ( rectangle2.Top >= size2.Height ) ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                                       if( rectangle.X < 0 )\r
-                                       {\r
-                                               int num6 = -rectangle.X;\r
-                                               rectangle2.X += num6;\r
-                                               rectangle2.Width -= num6;\r
-                                               rectangle.X = 0;\r
-                                               rectangle.Width -= num6;\r
-                                       }\r
-                                       if( rectangle.Y < 0 )\r
-                                       {\r
-                                               int num7 = -rectangle.Y;\r
-                                               rectangle2.Y += num7;\r
-                                               rectangle2.Height -= num7;\r
-                                               rectangle.Y = 0;\r
-                                               rectangle.Height -= num7;\r
-                                       }\r
-                                       if( rectangle.Right > size.Width )\r
-                                       {\r
-                                               int num8 = rectangle.Right - size.Width;\r
-                                               rectangle2.Width -= num8;\r
-                                               rectangle.Width -= num8;\r
-                                       }\r
-                                       if( rectangle.Bottom > size.Height )\r
-                                       {\r
-                                               int num9 = rectangle.Bottom - size.Height;\r
-                                               rectangle2.Height -= num9;\r
-                                               rectangle.Height -= num9;\r
-                                       }\r
-                                       if( rectangle2.X < 0 )\r
-                                       {\r
-                                               int num10 = -rectangle2.X;\r
-                                               rectangle.X += num10;\r
-                                               rectangle.Width -= num10;\r
-                                               rectangle2.X = 0;\r
-                                               rectangle2.Width -= num10;\r
-                                       }\r
-                                       if( rectangle2.Y < 0 )\r
-                                       {\r
-                                               int num11 = -rectangle2.Y;\r
-                                               rectangle.Y += num11;\r
-                                               rectangle.Height -= num11;\r
-                                               rectangle2.Y = 0;\r
-                                               rectangle2.Height -= num11;\r
-                                       }\r
-                                       if( rectangle2.Right > size2.Width )\r
-                                       {\r
-                                               int num12 = rectangle2.Right - size2.Width;\r
-                                               rectangle.Width -= num12;\r
-                                               rectangle2.Width -= num12;\r
-                                       }\r
-                                       if( rectangle2.Bottom > size2.Height )\r
-                                       {\r
-                                               int num13 = rectangle2.Bottom - size2.Height;\r
-                                               rectangle.Height -= num13;\r
-                                               rectangle2.Height -= num13;\r
-                                       }\r
-                                       if( ( rectangle.X >= rectangle.Right ) || ( rectangle.Y >= rectangle.Bottom ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                                       if( ( rectangle2.X >= rectangle2.Right ) || ( rectangle2.Y >= rectangle2.Bottom ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                                       if( ( ( rectangle.Right < 0 ) || ( rectangle.Bottom < 0 ) ) || ( ( rectangle.X > size.Width ) || ( rectangle.Y > size.Height ) ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                                       if( ( ( rectangle2.Right < 0 ) || ( rectangle2.Bottom < 0 ) ) || ( ( rectangle2.X > size2.Width ) || ( rectangle2.Y > size2.Height ) ) )\r
-                                       {\r
-                                               return 0;\r
-                                       }\r
-                               }\r
-                               */\r
+\r
                                if ((this.tx描画用 != null) && (this.n総移動時間ms != -1))\r
                                {\r
                                        this.rAVI.avi.tGetBitmap(CDTXMania.Instance.Device, this.tx描画用, time);\r
@@ -331,21 +236,21 @@ namespace DTXMania
                                                {\r
                                                        xx = 0;\r
                                                        yy = 0;\r
-                                                       areaDrawingWidth = SampleFramework.GameWindowSize.Width;\r
-                                                       areaDrawingHeight = SampleFramework.GameWindowSize.Height;\r
+                                                       w = SampleFramework.GameWindowSize.Width;\r
+                                                       h = SampleFramework.GameWindowSize.Height;\r
                                                }\r
 \r
-                                               magX = (float)areaDrawingWidth / this.rAVI.avi.nフレーム幅;\r
-                                               magY = (float)areaDrawingHeight / this.rAVI.avi.nフレーム高さ;\r
+                                               magX = (float)w / this.rAVI.avi.nフレーム幅;\r
+                                               magY = (float)h / this.rAVI.avi.nフレーム高さ;\r
                                                if (magX > magY)\r
                                                {\r
                                                        magX = magY;\r
-                                                       xx += (int)((areaDrawingWidth - (this.rAVI.avi.nフレーム幅 * magY)) / 2);\r
+                                                       xx += (int)((w - (this.rAVI.avi.nフレーム幅 * magY)) / 2);\r
                                                }\r
                                                else\r
                                                {\r
                                                        magY = magX;\r
-                                                       yy += (int)((areaDrawingHeight - (this.rAVI.avi.nフレーム高さ * magX)) / 2);\r
+                                                       yy += (int)((h - (this.rAVI.avi.nフレーム高さ * magX)) / 2);\r
                                                }\r
                                                #endregion\r
                                        }\r
@@ -360,20 +265,21 @@ namespace DTXMania
                        return 0;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.rAVI = null;\r
-                       this.n移動開始時刻ms = -1;\r
-                       this.bHasBGA = false;\r
-                       this.bFullScreenMovie = false;\r
-                       base.On活性化();\r
+                       if (b活性化してない)\r
+                       {\r
+                               this.rAVI = null;\r
+                               this.n移動開始時刻ms = -1;\r
+                               this.bHasBGA = false;\r
+                               this.bFullScreenMovie = false;\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
 #if TEST_Direct3D9Ex\r
                                this.PrepareProperSizeTexture(\r
@@ -392,7 +298,7 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                if (this.tx描画用 != null)\r
                                {\r
@@ -402,26 +308,5 @@ namespace DTXMania
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
-               public override int On進行描画()\r
-               {\r
-                       throw new InvalidOperationException("t進行描画(int,int)のほうを使用してください。");\r
-               }\r
-\r
-               private long n移動開始時刻ms;\r
-               private int n画像側開始位置X;\r
-               private int n画像側開始位置Y;\r
-               private int n画像側終了位置X;\r
-               private int n画像側終了位置Y;\r
-               private int n開始サイズH;\r
-               private int n開始サイズW;\r
-               private int n終了サイズH;\r
-               private int n終了サイズW;\r
-               private int n総移動時間ms;\r
-               private int n表示側開始位置X;\r
-               private int n表示側開始位置Y;\r
-               private int n表示側終了位置X;\r
-               private int n表示側終了位置Y;\r
-               private CDTX.CAVI rAVI;\r
-               private CTexture tx描画用;\r
        }\r
 }\r
index 6142426..8701abe 100644 (file)
@@ -61,7 +61,7 @@ namespace DTXMania
                        this.stLayer[i].n総移動時間ms = n総移動時間ms;\r
                        this.stLayer[i].n移動開始時刻ms = (n移動開始時刻ms != -1) ? n移動開始時刻ms : CDTXMania.Instance.Timer.n現在時刻;\r
                }\r
-               \r
+\r
                public void SkipStart(int n移動開始時刻ms)\r
                {\r
                        for (int i = 0; i < CDTXMania.Instance.DTX.listChip.Count; i++)\r
@@ -73,28 +73,28 @@ namespace DTXMania
                                }\r
                                switch (chip.eBGA種別)\r
                                {\r
-                                       case EBGA種別.BMP:\r
+                                       case EBGAType.BMP:\r
                                                if ((chip.rBMP != null) && (chip.rBMP.tx画像 != null))\r
                                                {\r
                                                        this.Start(chip, chip.rBMP, null, chip.rBMP.n幅, chip.rBMP.n高さ, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, chip.n発声時刻ms);\r
                                                }\r
                                                break;\r
 \r
-                                       case EBGA種別.BMPTEX:\r
+                                       case EBGAType.BMPTEX:\r
                                                if ((chip.rBMPTEX != null) && (chip.rBMPTEX.tx画像 != null))\r
                                                {\r
                                                        this.Start(chip, null, chip.rBMPTEX, chip.rBMPTEX.tx画像.sz画像サイズ.Width, chip.rBMPTEX.tx画像.sz画像サイズ.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, chip.n発声時刻ms);\r
                                                }\r
                                                break;\r
 \r
-                                       case EBGA種別.BGA:\r
+                                       case EBGAType.BGA:\r
                                                if (chip.rBGA != null)\r
                                                {\r
                                                        this.Start(chip, chip.rBMP, chip.rBMPTEX, chip.rBGA.pt画像側右下座標.X - chip.rBGA.pt画像側左上座標.X, chip.rBGA.pt画像側右下座標.Y - chip.rBGA.pt画像側左上座標.Y, 0, 0, chip.rBGA.pt画像側左上座標.X, chip.rBGA.pt画像側左上座標.Y, 0, 0, chip.rBGA.pt表示座標.X, chip.rBGA.pt表示座標.Y, 0, 0, 0, chip.n発声時刻ms);\r
                                                }\r
                                                break;\r
 \r
-                                       case EBGA種別.BGAPAN:\r
+                                       case EBGAType.BGAPAN:\r
                                                if (chip.rBGAPan != null)\r
                                                {\r
                                                        this.Start(chip, chip.rBMP, chip.rBMPTEX, chip.rBGAPan.sz開始サイズ.Width, chip.rBGAPan.sz開始サイズ.Height, chip.rBGAPan.sz終了サイズ.Width, chip.rBGAPan.sz終了サイズ.Height, chip.rBGAPan.pt画像側開始位置.X, chip.rBGAPan.pt画像側開始位置.Y, chip.rBGAPan.pt画像側終了位置.X, chip.rBGAPan.pt画像側終了位置.Y, chip.rBGAPan.pt表示側開始位置.X, chip.rBGAPan.pt表示側開始位置.Y, chip.rBGAPan.pt表示側終了位置.X, chip.rBGAPan.pt表示側終了位置.Y, chip.n総移動時間, chip.n発声時刻ms);\r
@@ -160,13 +160,10 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       throw new InvalidOperationException("t進行描画(x,y)のほうを使用してください。");\r
-               }\r
-\r
-               public int t進行描画(int x, int y)\r
-               {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる && CDTXMania.Instance.ConfigIni.bBGA && !CDTXMania.Instance.ConfigIni.bStoicMode)\r
                        {\r
+                               int x = CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst];\r
+                               int y = CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst];\r
                                using (Bitmap bmp = new Bitmap(CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H))\r
                                {\r
                                        for (int i = 0; i < 8; i++)\r
@@ -197,7 +194,7 @@ namespace DTXMania
                                                                (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n幅 : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Width,\r
                                                                (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n高さ : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Height);\r
 \r
-                                                       int n再生位置 = (int)((CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart) * (((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0));\r
+                                                       int n再生位置 = (int)((CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart) * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0));\r
 \r
                                                        if ((timeTotal != 0) && (timeTotal < n再生位置))\r
                                                        {\r
index c4a173e..02311b1 100644 (file)
@@ -10,7 +10,7 @@ namespace DTXMania
 {\r
        internal class CAct演奏Combo共通 : CActivity\r
        {\r
-               public STDGBVALUE<CComboStatus> dgbコンボ数;\r
+               public STDGBSValue<CComboStatus> dgbコンボ数;\r
                public class CComboStatus\r
                {\r
                        //public CAct演奏Combo共通 act;\r
@@ -61,7 +61,7 @@ namespace DTXMania
                public CAct演奏Combo共通()\r
                {\r
                        this.b活性化してない = true;\r
-                       \r
+\r
                        // 180度分のジャンプY座標差分を取得。(0度: 0 → 90度:-15 → 180度: 0)\r
                        for (int i = 0; i < 180; i++)\r
                        {\r
@@ -69,11 +69,11 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private void tコンボ表示(E楽器パート inst, int nCombo値, int nジャンプインデックス)\r
+               private void tコンボ表示(EPart inst, int nCombo値, int nジャンプインデックス)\r
                {\r
                        int x, y;\r
-                       x = CDTXMania.Instance.Coordinates.Combo[inst].X;\r
-                       y = CDTXMania.Instance.Coordinates.Combo[inst].Y;\r
+                       x = CDTXMania.Instance.ConfigIni.cdComboX[inst][CDTXMania.Instance.ConfigIni.eActiveInst];\r
+                       y = CDTXMania.Instance.ConfigIni.cdComboY[inst][CDTXMania.Instance.ConfigIni.eActiveInst];\r
                        if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                        {\r
                                y = SampleFramework.GameWindowSize.Height - y\r
@@ -88,7 +88,7 @@ namespace DTXMania
                        int[] n位の数 = new int[10];\r
                        // 表示は10桁もあれば足りるだろう\r
                        //-----------------\r
-                       if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置[inst]) != E判定文字表示位置.表示OFF && nCombo値 > 0)\r
+                       if (CDTXMania.Instance.ConfigIni.bDisplayCombo[inst] && nCombo値 > 0)\r
                        {\r
                                // n位の数[] の格納。(例:nCombo値=125 のとき n位の数 = { 5,2,1,0,0,0,0,0,0,0 })\r
                                int n = nCombo値;\r
@@ -96,8 +96,8 @@ namespace DTXMania
                                int n全桁の合計幅 = 0;\r
                                while ((n > 0) && (n桁数 < 10))\r
                                {\r
-                                       n位の数[n桁数] = n % 10;           // 1の位を格納\r
-                                       n = (n - (n % 10)) / 10;        // 右へシフト(例: 12345 → 1234 )\r
+                                       n位の数[n桁数] = n % 10;   // 1の位を格納\r
+                                       n = (n - (n % 10)) / 10;  // 右へシフト(例: 12345 → 1234 )\r
                                        n全桁の合計幅 += CDTXMania.Instance.Coordinates.ImgComboOneDigit.W;\r
                                        n桁数++;\r
                                }\r
@@ -105,7 +105,7 @@ namespace DTXMania
                                // "COMBO" の拡大率を設定\r
                                float f拡大率 = 1.0f;\r
                                if (nジャンプインデックス >= 0 && nジャンプインデックス < 180)\r
-                                       f拡大率 = 1.0f - (((float)this.nジャンプ差分値[nジャンプインデックス]) / 45.0f);            // f拡大率 = 1.0 → 1.3333... → 1.0\r
+                                       f拡大率 = 1.0f - (((float)this.nジャンプ差分値[nジャンプインデックス]) / 45.0f);    // f拡大率 = 1.0 → 1.3333... → 1.0\r
 \r
                                if (this.tex != null)\r
                                {\r
@@ -126,7 +126,7 @@ namespace DTXMania
                                {\r
                                        f拡大率 = 1.0f;\r
                                        if (nジャンプインデックス >= 0 && nジャンプインデックス < 180)\r
-                                               f拡大率 = 1.0f - (((float)this.nジャンプ差分値[nジャンプインデックス]) / 45f);              // f拡大率 = 1.0 → 1.3333... → 1.0\r
+                                               f拡大率 = 1.0f - (((float)this.nジャンプ差分値[nジャンプインデックス]) / 45f);    // f拡大率 = 1.0 → 1.3333... → 1.0\r
 \r
                                        if (this.tex != null)\r
                                                this.tex.vc拡大縮小倍率 = new Vector3(f拡大率, f拡大率, 1.0f);\r
@@ -149,8 +149,8 @@ namespace DTXMania
                // CActivity 実装\r
                public override void On活性化()\r
                {\r
-                       this.dgbコンボ数 = new STDGBVALUE<CComboStatus>();\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                       this.dgbコンボ数 = new STDGBSValue<CComboStatus>();\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
                                this.dgbコンボ数[i] = new CComboStatus();\r
                        }\r
@@ -188,9 +188,9 @@ namespace DTXMania
                {\r
                        if (!this.b活性化してない)\r
                        {\r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                        {\r
                                                EEvent e今回の状態遷移イベント;\r
                                                CComboStatus st = this.dgbコンボ数[inst];\r
@@ -204,8 +204,8 @@ namespace DTXMania
                                                {\r
                                                        e今回の状態遷移イベント = EEvent.ミス通知;\r
                                                }\r
-                                               else if ((st.n現在表示中のCOMBO値 < CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数[inst]) &&\r
-                                                       (st.nCOMBO値 < CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数[inst]))\r
+                                               else if ((st.n現在表示中のCOMBO値 < CDTXMania.Instance.ConfigIni.nMinComboDisp[inst]) &&\r
+                                                       (st.nCOMBO値 < CDTXMania.Instance.ConfigIni.nMinComboDisp[inst]))\r
                                                {\r
                                                        e今回の状態遷移イベント = EEvent.非表示;\r
                                                }\r
@@ -234,7 +234,7 @@ namespace DTXMania
                                                }\r
 \r
 \r
-                                       Retry:  // モードが変化した場合はここからリトライする。\r
+                                               Retry:  // モードが変化した場合はここからリトライする。\r
 \r
                                                switch (st.e現在のモード)\r
                                                {\r
index f89a824..8b5b9a0 100644 (file)
@@ -10,31 +10,28 @@ namespace DTXMania
        internal class CAct演奏Danger共通 : CActivity\r
        {\r
                private CTextureAf txDANGER;\r
-               private bool[] bDanger中 = { false, false, false };\r
+               private bool bDanger中;\r
+               // = { false, false, false };\r
                private CCounter ct移動用;\r
                private CCounter ct透明度用;\r
                private const int n波長 = 40;\r
                private const int n透明度MAX = 180;\r
                private const int n透明度MIN = 20;\r
-               \r
+\r
                public override void On活性化()\r
                {\r
-                       if (base.b活性化してない)\r
+                       if (b活性化してない)\r
                        {\r
-                               for (int i = 0; i < 3; i++)\r
-                               {\r
-                                       this.bDanger中[i] = false;\r
-                               }\r
-                               this.ct移動用 = null;\r
-                               this.ct透明度用 = null;\r
-\r
+                               bDanger中 = false;\r
+                               ct移動用 = null;\r
+                               ct透明度用 = null;\r
                                base.On活性化();\r
                        }\r
                }\r
 \r
                public override void On非活性化()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                this.ct移動用 = null;\r
                                this.ct透明度用 = null;\r
@@ -44,7 +41,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                this.txDANGER = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums danger.png"), false);\r
                                base.OnManagedリソースの作成();\r
@@ -53,7 +50,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txDANGER);\r
                                base.OnManagedリソースの解放();\r
@@ -69,22 +66,22 @@ namespace DTXMania
                /// <returns></returns>\r
                public int t進行描画(bool isDanger)\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                if (!isDanger)\r
                                {\r
-                                       this.bDanger中[(int)E楽器パート.DRUMS] = false;\r
+                                       bDanger中 = false;\r
                                        return 0;\r
                                }\r
-                               if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
+                               if (!bDanger中)\r
                                {\r
                                        this.ct移動用 = new CCounter(0, 0x7f, 7, CDTXMania.Instance.Timer);\r
                                        this.ct透明度用 = new CCounter(0, 0x167, 4, CDTXMania.Instance.Timer);\r
                                }\r
-                               this.bDanger中[(int)E楽器パート.DRUMS] = isDanger;\r
+                               bDanger中 = isDanger;\r
                                this.ct移動用.t進行Loop();\r
                                this.ct透明度用.t進行Loop();\r
-                               if (!this.bDanger中[(int)E楽器パート.DRUMS])\r
+                               if (!bDanger中)\r
                                {\r
                                        return 0;\r
                                }\r
index 8f6c684..243d2cb 100644 (file)
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
 using SlimDX;\r
 using FDK;\r
 using System.Drawing;\r
+using DTXMania.Coordinates;\r
 \r
 namespace DTXMania\r
 {\r
@@ -44,45 +45,51 @@ namespace DTXMania
                                                                                        int q = (y / 5);\r
 \r
                                                                                        lanebg.SetPixel(x, y,\r
-                                                                                               (p + q) % 2 == 1 ? Color.FromArgb(CDTXMania.Instance.ConfigIni.n背景の透過度, 10, 10, 10) :\r
-                                                                                               Color.FromArgb(CDTXMania.Instance.ConfigIni.n背景の透過度, 20, 20, 20));\r
+                                                                                               (p + q) % 2 == 1 ? Color.FromArgb(CDTXMania.Instance.ConfigIni.nBGAlpha, 10, 10, 10) :\r
+                                                                                               Color.FromArgb(CDTXMania.Instance.ConfigIni.nBGAlpha, 20, 20, 20));\r
                                                                                }\r
                                                                        }\r
 \r
-                                                                       Func<STX, STRect, bool> drawer = (x, w) =>\r
+                                                                       Func<int, CRect, bool> drawer = (x, w) =>\r
                                                                        {\r
                                                                                using (TextureBrush tex = new TextureBrush(lanebg))\r
                                                                                {\r
-                                                                                       g.FillRectangle(tex, new Rectangle(x.X, 0, w.W, SampleFramework.GameWindowSize.Height));\r
-                                                                                       g.DrawLine(pen, x.X, 0, x.X, SampleFramework.GameWindowSize.Height);\r
-                                                                                       g.DrawLine(grayPen, x.X + 2, 0, x.X + 2, SampleFramework.GameWindowSize.Height);\r
-                                                                                       g.DrawLine(pen, x.X + w.W, 0, x.X + w.W, SampleFramework.GameWindowSize.Height);\r
-                                                                                       g.DrawLine(grayPen, x.X + w.W + 2, 0, x.X + w.W + 2, SampleFramework.GameWindowSize.Height);\r
+                                                                                       g.FillRectangle(tex, new Rectangle(x, 0, w.W, SampleFramework.GameWindowSize.Height));\r
+                                                                                       g.DrawLine(pen, x, 0, x, SampleFramework.GameWindowSize.Height);\r
+                                                                                       g.DrawLine(grayPen, x + 2, 0, x + 2, SampleFramework.GameWindowSize.Height);\r
+                                                                                       g.DrawLine(pen, x + w.W, 0, x + w.W, SampleFramework.GameWindowSize.Height);\r
+                                                                                       g.DrawLine(grayPen, x + w.W + 2, 0, x + w.W + 2, SampleFramework.GameWindowSize.Height);\r
                                                                                }\r
                                                                                return false;\r
                                                                        };\r
 \r
-                                                                       if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                                                                       if (CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある[EPart.Drums])\r
                                                                        {\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.LCY, CDTXMania.Instance.Coordinates.ImgDrChipCY);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.HHC, CDTXMania.Instance.Coordinates.ImgDrChipHHC);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.SD, CDTXMania.Instance.Coordinates.ImgDrChipSD);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.BD, CDTXMania.Instance.Coordinates.ImgDrChipBD);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.HT, CDTXMania.Instance.Coordinates.ImgDrChipHT);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.LT, CDTXMania.Instance.Coordinates.ImgDrChipLT);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.FT, CDTXMania.Instance.Coordinates.ImgDrChipFT);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.CY, CDTXMania.Instance.Coordinates.ImgDrChipCY);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.LC), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.CY]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.HH), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.HH]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.SD), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.SD]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BD), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.BD]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.HT), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.HT]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.LT), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.LT]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.FT), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.FT]);\r
+                                                                               drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.CY), CDTXMania.Instance.Coordinates.ImgDrChip[EPad.CY]);\r
                                                                        }\r
                                                                        if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                                                                        {\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.GtR, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.GtG, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.GtB, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.GtW, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.BsR, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.BsG, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.BsB, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
-                                                                               drawer(CDTXMania.Instance.Coordinates.Lane.BsW, CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                               if (CDTXMania.Instance.DTX.bチップがある[EPart.Guitar])\r
+                                                                               {\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtR), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtG), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtB), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtW), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                               }\r
+                                                                               if (CDTXMania.Instance.DTX.bチップがある[EPart.Bass])\r
+                                                                               {\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsR), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsG), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsB), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                                       drawer(CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsW), CDTXMania.Instance.Coordinates.ImgGtRGBButton);\r
+                                                                               }\r
                                                                        }\r
                                                                        this.txLane = TextureFactory.tテクスチャの生成(lanetex, true);\r
                                                                }\r
@@ -96,7 +103,7 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる && CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                        {\r
                                txLane.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
                                return base.On進行描画();\r
index fd8b603..0b9bb1d 100644 (file)
@@ -11,6 +11,7 @@ namespace DTXMania
                // プロパティ\r
                protected bool[] b押下状態 = new bool[6];\r
                protected CTexture txRGB;\r
+               static ELane[] lanes = new ELane[] { ELane.GtR, ELane.GtG, ELane.GtB, ELane.BsR, ELane.BsG, ELane.BsB };\r
 \r
 \r
                // コンストラクタ\r
@@ -55,44 +56,28 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.bGuitar有効 &&\r
+                               CDTXMania.Instance.ConfigIni.eDark != EDark.Full)\r
                        {\r
                                for (int i = 0; i < 6; i++)\r
                                {\r
-                                       E楽器パート inst = i < 3 ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+                                       EPart inst = i < 3 ? EPart.Guitar : EPart.Bass;\r
                                        if (CDTXMania.Instance.DTX.bチップがある[(int)inst])\r
                                        {\r
-                                               int x = 0;\r
+                                               int x = CDTXMania.Instance.ConfigIni.GetLaneX(lanes[i]);\r
                                                Rectangle rc;\r
 \r
-                                               if (i == 0)\r
+                                               if (i % 3 == 0)\r
                                                {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.GtR.X;\r
                                                        rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonR : CDTXMania.Instance.Coordinates.ImgGtButtonR;\r
                                                }\r
-                                               else if (i == 1)\r
+                                               else if (i % 3 == 1)\r
                                                {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.GtG.X;\r
                                                        rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonG : CDTXMania.Instance.Coordinates.ImgGtButtonG;\r
                                                }\r
-                                               else if (i == 2)\r
+                                               else if (i % 3 == 2)\r
                                                {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.GtB.X;\r
-                                                       rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonB : CDTXMania.Instance.Coordinates.ImgGtButtonB;\r
-                                               }\r
-                                               else if (i == 3)\r
-                                               {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.BsR.X;\r
-                                                       rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonR : CDTXMania.Instance.Coordinates.ImgGtButtonR;\r
-                                               }\r
-                                               else if (i == 4)\r
-                                               {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.BsG.X;\r
-                                                       rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonG : CDTXMania.Instance.Coordinates.ImgGtButtonG;\r
-                                               }\r
-                                               else if (i == 5)\r
-                                               {\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.BsB.X;\r
                                                        rc = b押下状態[i] ? CDTXMania.Instance.Coordinates.ImgGtPressingButtonB : CDTXMania.Instance.Coordinates.ImgGtButtonB;\r
                                                }\r
                                                else\r
@@ -103,15 +88,15 @@ namespace DTXMania
                                                if (txRGB != null)\r
                                                {\r
                                                        int y = C演奏判定ライン座標共通.n演奏RGBボタンY座標(inst);\r
-                                                       if( CDTXMania.Instance.ConfigIni.bReverse[inst] )\r
+                                                       if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                        {\r
-                                                               y -= rc.Height/2;\r
+                                                               y -= rc.Height / 2;\r
                                                        }\r
                                                        txRGB.t2D描画(CDTXMania.Instance.Device, x, y, rc);\r
                                                }\r
                                        }\r
                                }\r
-                               for(int i = 0; i < 6; ++i)\r
+                               for (int i = 0; i < 6; ++i)\r
                                {\r
                                        b押下状態[i] = false;\r
                                }\r
index 495283c..6cf07de 100644 (file)
@@ -20,21 +20,21 @@ namespace DTXMania
                        base.b活性化してない = true;\r
                }\r
 \r
-               public void Start(E楽器パート part, CChip r歓声Chip = null)\r
+               public void Start(EPart part, CChip r歓声Chip = null)\r
                {\r
                        for (int i = 0; i < 4; i++)\r
                        {\r
                                if ((this.ct進行用[(int)part, i] == null) || this.ct進行用[(int)part, i].b停止中)\r
                                {\r
                                        this.ct進行用[(int)part, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
-                                       if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bAudience)\r
                                        {\r
                                                if (r歓声Chip != null)\r
                                                {\r
-                                                       CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                       CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                        return;\r
                                                }\r
-                                               CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = (part == E楽器パート.GUITAR) ? -50 : 50;\r
+                                               CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = (part == EPart.Guitar) ? -50 : 50;\r
                                                CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
                                                return;\r
                                        }\r
@@ -79,39 +79,39 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                for (int i = 0; i < 2; i++)\r
                                {\r
-                                       E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効[e楽器パート])\r
+                                       EPart inst = (i == 0) ? EPart.Guitar : EPart.Bass;\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst] )\r
                                        {\r
                                                for (int k = 0; k < 4; k++)\r
                                                {\r
-                                                       if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
+                                                       if ((this.ct進行用[(int)inst, k] != null) && !this.ct進行用[(int)inst, k].b停止中)\r
                                                        {\r
-                                                               if (this.ct進行用[(int)e楽器パート, k].b終了値に達した)\r
+                                                               if (this.ct進行用[(int)inst, k].b終了値に達した)\r
                                                                {\r
-                                                                       this.ct進行用[(int)e楽器パート, k].t停止();\r
+                                                                       this.ct進行用[(int)inst, k].t停止();\r
                                                                }\r
                                                                else\r
                                                                {\r
-                                                                       this.ct進行用[(int)e楽器パート, k].t進行();\r
+                                                                       this.ct進行用[(int)inst, k].t進行();\r
                                                                }\r
                                                        }\r
 \r
-                                                       if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
+                                                       if ((this.ct進行用[(int)inst, k] != null) && !this.ct進行用[(int)inst, k].b停止中)\r
                                                        {\r
                                                                Rectangle rc = CDTXMania.Instance.Coordinates.ImgGtWailingBonus;\r
 \r
-                                                               int x = (e楽器パート == E楽器パート.GUITAR) ?\r
-                                                                       CDTXMania.Instance.Coordinates.Lane.GtW.X + (CDTXMania.Instance.Coordinates.Lane.GtW.W - rc.Width) / 2 :\r
-                                                                       CDTXMania.Instance.Coordinates.Lane.BsW.X + (CDTXMania.Instance.Coordinates.Lane.BsW.W - rc.Width) / 2;\r
+                                                               int x = (inst == EPart.Guitar) ?\r
+                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtW) + (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.GtW) - rc.Width) / 2 :\r
+                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsW) + (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.BsW) - rc.Width) / 2;\r
 \r
                                                                int y = 0;\r
-                                                               int ct = this.ct進行用[(int)e楽器パート, k].n現在の値;\r
+                                                               int ct = this.ct進行用[(int)inst, k].n現在の値;\r
 \r
-                                                               int yj = C演奏判定ライン座標共通.n判定ラインY座標(e楽器パート, false, true, C演奏判定ライン座標共通.Reverse.NotReverse);\r
+                                                               int yj = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true, C演奏判定ライン座標共通.Reverse.NotReverse);\r
 \r
                                                                if (ct < 100)\r
                                                                {\r
@@ -130,7 +130,7 @@ namespace DTXMania
                                                                        y = (int)(yj - (((double)(rc.Height * (ct - 200))) / 100.0));\r
                                                                }\r
 \r
-                                                               if (CDTXMania.Instance.ConfigIni.bReverse[e楽器パート])\r
+                                                               if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                                {\r
                                                                        y = SampleFramework.GameWindowSize.Height - y - rc.Height;\r
                                                                }\r
index 3048517..75f22bf 100644 (file)
@@ -26,7 +26,7 @@ namespace DTXMania
                        {  0.004f,  0.006f,  0.006f  },\r
                        {  0.002f,  0.003f,  0.003f  },\r
                        {  0.000f,  0.000f,  0.000f  },\r
-                       { -0.020f, -0.030f,     -0.030f  },\r
+                       { -0.020f, -0.030f, -0.030f  },\r
                        { -0.050f, -0.050f, -0.050f  }\r
                };\r
                private float[] fDamageLevelFactor = {\r
@@ -139,7 +139,7 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる && CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                        {\r
                                #region [ 初めての進行描画 ]\r
                                if (base.b初めての進行描画)\r
@@ -308,7 +308,7 @@ namespace DTXMania
                                #endregion\r
 \r
                                #region [ Risky残りMiss回数表示 ]\r
-                               if (this.bRisky)                // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
+                               if (this.bRisky)    // #23599 2011.7.30 yyagi Risky残りMiss回数表示\r
                                {\r
                                        int w = actDigit.Measure(nRiskyTimes);\r
                                        actDigit.Draw(nRiskyTimes,\r
@@ -341,7 +341,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public void Damage(E楽器パート part, E判定 e今回の判定)\r
+               public void Damage(EPart part, EJudge e今回の判定)\r
                {\r
                        double fDamage;\r
 \r
@@ -349,13 +349,13 @@ namespace DTXMania
                        // before applying #23625 modifications\r
                        switch (e今回の判定)\r
                        {\r
-                               case E判定.Perfect:\r
-                               case E判定.Great:\r
-                               case E判定.Good:\r
+                               case EJudge.Perfect:\r
+                               case EJudge.Great:\r
+                               case EJudge.Good:\r
                                        fDamage = bRisky ? 0 : fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
                                        break;\r
-                               case E判定.Poor:\r
-                               case E判定.Miss:\r
+                               case EJudge.Poor:\r
+                               case EJudge.Miss:\r
                                        if (bRisky)\r
                                        {\r
                                                // Risky=1のときは1Miss即閉店なのでダメージ計算しない\r
@@ -371,9 +371,9 @@ namespace DTXMania
                                        {\r
                                                fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
                                        }\r
-                                       if (e今回の判定 == E判定.Miss && !bRisky)\r
+                                       if (e今回の判定 == EJudge.Miss && !bRisky)\r
                                        {\r
-                                               fDamage *= fDamageLevelFactor[(int)CDTXMania.Instance.ConfigIni.eダメージレベル];\r
+                                               fDamage *= fDamageLevelFactor[(int)CDTXMania.Instance.ConfigIni.eDamageLevel.Value];\r
                                        }\r
                                        break;\r
 \r
index 4f93bb7..b935fea 100644 (file)
@@ -7,30 +7,23 @@ namespace DTXMania
 {\r
        internal class CAct演奏スクロール速度 : CActivity\r
        {\r
-               // プロパティ\r
-\r
-               public STDGBVALUE<double> db現在の譜面スクロール速度;\r
-\r
-\r
-               // コンストラクタ\r
+               public STDGBSValue<double> db現在の譜面スクロール速度;\r
 \r
                public CAct演奏スクロール速度()\r
                {\r
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
-                               this.db現在の譜面スクロール速度[i] = (double)CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i];\r
+                               this.db現在の譜面スクロール速度[i] = (double)CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
                                this.n速度変更制御タイマ[i] = -1;\r
                        }\r
                        base.On活性化();\r
                }\r
+\r
                public override unsafe int On進行描画()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -41,16 +34,16 @@ namespace DTXMania
                                        base.b初めての進行描画 = false;\r
                                }\r
                                long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       double db譜面スクロールスピード = (double)CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i];\r
+                                       double db譜面スクロールスピード = (double)CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
                                        if (n現在時刻 < this.n速度変更制御タイマ[i])\r
                                        {\r
                                                this.n速度変更制御タイマ[i] = n現在時刻;\r
                                        }\r
-                                       while ((n現在時刻 - this.n速度変更制御タイマ[i]) >= 2)                                                             // 2msに1回ループ\r
+                                       while ((n現在時刻 - this.n速度変更制御タイマ[i]) >= 2)               // 2msに1回ループ\r
                                        {\r
-                                               if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード)                               // Config.iniのスクロール速度を変えると、それに追いつくように実画面のスクロール速度を変える\r
+                                               if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード)       // Config.iniのスクロール速度を変えると、それに追いつくように実画面のスクロール速度を変える\r
                                                {\r
                                                        this.db現在の譜面スクロール速度[i] += 0.012;\r
 \r
@@ -77,11 +70,6 @@ namespace DTXMania
 \r
 \r
                // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private STDGBVALUE<long> n速度変更制御タイマ;\r
-               //-----------------\r
-               #endregion\r
+               private STDGBSValue<long> n速度変更制御タイマ;\r
        }\r
 }\r
index 4834187..f9a3220 100644 (file)
@@ -8,28 +8,25 @@ namespace DTXMania
 {\r
        internal class CAct演奏スコア共通 : CActivity\r
        {\r
-               // プロパティ\r
-               protected STDGBVALUE<long> nスコアの増分;\r
-               protected STDGBVALUE<double> n現在の本当のスコア;\r
-               protected STDGBVALUE<long> n現在表示中のスコア;\r
+               protected STDGBSValue<long> nスコアの増分;\r
+               protected STDGBSValue<double> n現在の本当のスコア;\r
+               protected STDGBSValue<long> n現在表示中のスコア;\r
                protected long n進行用タイマ;\r
                private readonly Point[] ptSCORE = new Point[] { new Point(0x1f, 0x1a9), new Point(0x1e9, 0x1a9) };\r
                private CActDigit actDigit;\r
 \r
-               // コンストラクタ\r
                public CAct演奏スコア共通()\r
                {\r
                        base.list子Activities.Add(actDigit = new CActDigit(Color.Orange, Color.Black, Color.OrangeRed, Color.DarkOrange, 30));\r
                        base.b活性化してない = true;\r
                }\r
 \r
-               // メソッド\r
-               public double Get(E楽器パート part)\r
+               public double Get(EPart part)\r
                {\r
                        return this.n現在の本当のスコア[part];\r
                }\r
 \r
-               public void Set(E楽器パート part, double nScore)\r
+               public void Set(EPart part, double nScore)\r
                {\r
                        if (this.n現在の本当のスコア[part] != nScore)\r
                        {\r
@@ -48,52 +45,54 @@ namespace DTXMania
                /// <param name="part"></param>\r
                /// <param name="bAutoPlay"></param>\r
                /// <param name="delta"></param>\r
-               public void Add(E楽器パート part, STAUTOPLAY bAutoPlay, long delta)\r
+               public void Add(EPart part, long delta)\r
                {\r
                        double rev = 1.0;\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.UNKNOWN:\r
+                               case EPart.Unknown:\r
                                        throw new ArgumentException();\r
-                               case E楽器パート.DRUMS:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである)\r
+                               case EPart.Drums:\r
+                                       if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))\r
                                        {\r
-                                               if (bAutoPlay.BD == true)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BD == true)\r
                                                {\r
                                                        rev /= 2;\r
                                                }\r
                                        }\r
                                        break;\r
-                               case E楽器パート.GUITAR:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである)\r
+                               case EPart.Guitar:\r
+                                       if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))\r
                                        {\r
-                                               if (bAutoPlay.GtW)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail)\r
                                                {\r
                                                        rev /= 2;\r
                                                }\r
-                                               if (bAutoPlay.GtPick)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick)\r
                                                {\r
                                                        rev /= 3;\r
                                                }\r
                                                // Auto Neck\r
-                                               if (bAutoPlay.GtR || bAutoPlay.GtG || bAutoPlay.GtB)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR || CDTXMania.Instance.ConfigIni.bAutoPlay.GtG || CDTXMania.Instance.ConfigIni.bAutoPlay.GtB)\r
                                                {\r
                                                        rev /= 4;\r
                                                }\r
                                        }\r
                                        break;\r
-                               case E楽器パート.BASS:\r
-                                       if (!CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである)\r
+                               case EPart.Bass:\r
+                                       if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))\r
                                        {\r
-                                               if (bAutoPlay.BsW)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail)\r
                                                {\r
                                                        rev /= 2;\r
                                                }\r
-                                               if (bAutoPlay.BsPick)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick)\r
                                                {\r
                                                        rev /= 3;\r
                                                }\r
-                                               if (bAutoPlay.BsR || bAutoPlay.BsG || bAutoPlay.BsB)\r
+                                               if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR ||\r
+                                                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsG ||\r
+                                                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsB)\r
                                                {\r
                                                        rev /= 4;\r
                                                }\r
@@ -109,7 +108,7 @@ namespace DTXMania
                        if (base.b活性化してない)\r
                        {\r
                                this.n進行用タイマ = -1;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        this.n現在表示中のスコア[i] = 0L;\r
                                        this.n現在の本当のスコア[i] = 0L;\r
@@ -122,17 +121,17 @@ namespace DTXMania
                // CActivity 実装(共通クラスからの差分のみ)\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
-                               if (base.b初めての進行描画)\r
+                               if (b初めての進行描画)\r
                                {\r
                                        n進行用タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
-                                       base.b初めての進行描画 = false;\r
+                                       b初めての進行描画 = false;\r
                                }\r
 \r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; inst++)\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; inst++)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                        {\r
                                                long num = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
                                                if (num < n進行用タイマ)\r
@@ -149,7 +148,8 @@ namespace DTXMania
                                                        n進行用タイマ += 10;\r
                                                }\r
 \r
-                                               int x = CDTXMania.Instance.Coordinates.Score[inst].X;\r
+                                               int x = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value\r
+                                               + CDTXMania.Instance.Coordinates.Instrument[inst].W / 2;\r
                                                int y = CDTXMania.Instance.Coordinates.Score[inst].Y;\r
 \r
                                                if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
index 6569b42..4680228 100644 (file)
@@ -9,24 +9,16 @@ namespace DTXMania
 {\r
        internal class CAct演奏ステージ失敗 : CActivity\r
        {\r
-               // コンストラクタ\r
-\r
                public CAct演奏ステージ失敗()\r
                {\r
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
                public void Start()\r
                {\r
                        this.ct進行 = new CCounter(0, 0x3e8, 2, CDTXMania.Instance.Timer);\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
                        this.sd効果音 = null;\r
@@ -34,6 +26,7 @@ namespace DTXMania
                        this.ct進行 = new CCounter();\r
                        base.On活性化();\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
                        this.ct進行 = null;\r
@@ -44,6 +37,7 @@ namespace DTXMania
                        }\r
                        base.On非活性化();\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -52,6 +46,7 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -60,6 +55,7 @@ namespace DTXMania
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
                        if (base.b活性化してない)\r
@@ -131,16 +127,9 @@ namespace DTXMania
                        return 1;\r
                }\r
 \r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
                private bool b効果音再生済み;\r
                private CCounter ct進行;\r
                private CSound sd効果音;\r
                private CTexture txStageFailed;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 59a00e1..b10719c 100644 (file)
@@ -10,17 +10,6 @@ namespace DTXMania
 {\r
        internal class CAct演奏ステータスパネル共通 : CActivity\r
        {\r
-               // コンストラクタ\r
-               public CAct演奏ステータスパネル共通()\r
-               {\r
-                       base.b活性化してない = true;\r
-               }\r
-\r
-               public override void On活性化()\r
-               {\r
-                       base.On活性化();\r
-               }\r
-\r
                public override void OnManagedリソースの作成()\r
                {\r
                        if (base.b活性化してる)\r
@@ -29,7 +18,7 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
-       \r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
                        if (base.b活性化してる)\r
@@ -41,15 +30,15 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
-                               if ((this.txStatusPanels != null))\r
+                               if (txStatusPanels != null)\r
                                {\r
-                                       for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                                       for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                        {\r
-                                               if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                                               if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                                {\r
-                                                       int spd = CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst];\r
+                                                       int spd = CDTXMania.Instance.ConfigIni.nScrollSpeed[inst];\r
                                                        if (spd < 0)\r
                                                        {\r
                                                                spd = 0;\r
@@ -58,13 +47,14 @@ namespace DTXMania
                                                        {\r
                                                                spd = 15;\r
                                                        }\r
-                                                       int y = CDTXMania.Instance.Coordinates.StatusPanel[inst].Y;\r
+                                                       int y = 0;\r
                                                        if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                        {\r
                                                                y = SampleFramework.GameWindowSize.Height - (y + CDTXMania.Instance.Coordinates.ImgSpeedPanel.H);\r
                                                        }\r
                                                        this.txStatusPanels.t2D描画(CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.StatusPanel[inst].X,\r
+                                                               CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value\r
+                                                               - CDTXMania.Instance.Coordinates.StatusPanel.W,\r
                                                                y,\r
                                                                CDTXMania.Instance.Coordinates.ImgSpeedPanel.ApplyCounterXY(spd % 11, spd / 11, 0, 0));\r
                                                }\r
index f5c31e5..12774cc 100644 (file)
@@ -9,6 +9,8 @@ namespace DTXMania
 {\r
        internal class CAct演奏チップファイアGB : CActivity\r
        {\r
+               static ELane[] lanes = new ELane[] { ELane.GtR, ELane.GtG, ELane.GtB, ELane.BsR, ELane.BsG, ELane.BsB };\r
+\r
                public CAct演奏チップファイアGB()\r
                {\r
                        base.b活性化してない = true;\r
@@ -20,33 +22,9 @@ namespace DTXMania
                        {\r
                                if (0 <= nLane && nLane < 6)\r
                                {\r
-                                       E楽器パート e楽器パート = (nLane < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
-                                       int x = 0;\r
-\r
-                                       if (nLane == 0)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtR.X + CDTXMania.Instance.Coordinates.Lane.GtR.W / 2;\r
-                                       }\r
-                                       else if (nLane == 1)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtG.X + CDTXMania.Instance.Coordinates.Lane.GtG.W / 2;\r
-                                       }\r
-                                       else if (nLane == 2)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtB.X + CDTXMania.Instance.Coordinates.Lane.GtB.W / 2;\r
-                                       }\r
-                                       else if (nLane == 3)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsR.X + CDTXMania.Instance.Coordinates.Lane.BsR.W / 2;\r
-                                       }\r
-                                       else if (nLane == 4)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsG.X + CDTXMania.Instance.Coordinates.Lane.BsG.W / 2;\r
-                                       }\r
-                                       else if (nLane == 5)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsB.X + CDTXMania.Instance.Coordinates.Lane.BsB.W / 2;\r
-                                       }\r
+                                       EPart e楽器パート = (nLane < 3) ? EPart.Guitar : EPart.Bass;\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(lanes[nLane])\r
+                                               + CDTXMania.Instance.ConfigIni.GetLaneW(lanes[nLane]) / 2;\r
 \r
                                        int offsety = CDTXMania.Instance.Coordinates.ImgJudgeLine.H / 2;\r
                                        int y = C演奏判定ライン座標共通.n判定ラインY座標(e楽器パート, false, true);\r
@@ -117,27 +95,28 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる && CDTXMania.Instance.ConfigIni.bGuitar有効 &&\r
+                                       (CDTXMania.Instance.DTX.bチップがある.Guitar || CDTXMania.Instance.DTX.bチップがある.Bass))\r
                        {\r
                                for (int i = 0; i < 6; i++)\r
                                {\r
-                                       this.ct進行[i].t進行();\r
-                                       if (this.ct進行[i].b終了値に達した)\r
+                                       ct進行[i].t進行();\r
+                                       if (ct進行[i].b終了値に達した)\r
                                        {\r
-                                               this.ct進行[i].t停止();\r
+                                               ct進行[i].t停止();\r
                                        }\r
                                }\r
                                for (int j = 0; j < 6; j++)\r
                                {\r
-                                       if ((this.ct進行[j].n現在の経過時間ms != -1) && (this.tx火花[j % 3] != null))\r
+                                       if ((ct進行[j].n現在の経過時間ms != -1) && (tx火花[j % 3] != null))\r
                                        {\r
-                                               float scale = (float)(3.0 * Math.Cos((Math.PI * (90.0 - (90.0 * (((double)this.ct進行[j].n現在の値) / 56.0)))) / 180.0));\r
-                                               int x = (int)(this.pt中央位置[j].X) - ((int)((this.tx火花[j % 3].sz画像サイズ.Width * scale) / 2f));\r
-                                               int y = (int)(this.pt中央位置[j].Y) - ((int)((this.tx火花[j % 3].sz画像サイズ.Height * scale) / 2f));\r
-                                               this.tx火花[j % 3].n透明度 = (this.ct進行[j].n現在の値 < 0x1c) ? 0xff : (0xff - ((int)(255.0 * Math.Cos((Math.PI * (90.0 - (90.0 * (((double)(this.ct進行[j].n現在の値 - 0x1c)) / 28.0)))) / 180.0))));\r
-                                               this.tx火花[j % 3].vc拡大縮小倍率 = new Vector3(scale, scale, 1f);\r
+                                               float scale = (float)(3.0 * Math.Cos((Math.PI * (90.0 - (90.0 * (((double)ct進行[j].n現在の値) / 56.0)))) / 180.0));\r
+                                               int x = (int)(pt中央位置[j].X) - ((int)((tx火花[j % 3].sz画像サイズ.Width * scale) / 2f));\r
+                                               int y = (int)(pt中央位置[j].Y) - ((int)((tx火花[j % 3].sz画像サイズ.Height * scale) / 2f));\r
+                                               tx火花[j % 3].n透明度 = (ct進行[j].n現在の値 < 0x1c) ? 0xff : (0xff - ((int)(255.0 * Math.Cos((Math.PI * (90.0 - (90.0 * (((double)(ct進行[j].n現在の値 - 0x1c)) / 28.0)))) / 180.0))));\r
+                                               tx火花[j % 3].vc拡大縮小倍率 = new Vector3(scale, scale, 1f);\r
 \r
-                                               this.tx火花[j % 3].t2D描画(CDTXMania.Instance.Device, x, y);\r
+                                               tx火花[j % 3].t2D描画(CDTXMania.Instance.Device, x, y);\r
                                        }\r
                                }\r
                        }\r
index 19b6926..5c6534e 100644 (file)
@@ -22,9 +22,9 @@ namespace DTXMania
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txPanel);\r
 \r
-                               if ( !string.IsNullOrEmpty(str) )\r
+                               if (!string.IsNullOrEmpty(str))\r
                                {\r
-                                       using (FontFamily ff = new FontFamily("Meiryo"))\r
+                                       using (FontFamily ff = new FontFamily("MS PGothic"))\r
                                        {\r
                                                using (CPrivateFont cpf = new CPrivateFont(ff, 24))\r
                                                {\r
@@ -35,7 +35,7 @@ namespace DTXMania
                                                }\r
                                        }\r
                                        this.Start();\r
-                               }                               \r
+                               }\r
                        }\r
                }\r
 \r
@@ -55,13 +55,13 @@ namespace DTXMania
                        this.Start();\r
                        base.On活性化();\r
                }\r
-       \r
+\r
                public override void On非活性化()\r
                {\r
                        TextureFactory.tテクスチャの解放(ref this.txPanel);\r
                        base.On非活性化();\r
                }\r
-               \r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -69,7 +69,7 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
-               \r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -81,18 +81,15 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       throw new InvalidOperationException("t進行描画(x,y)のほうを使用してください。");\r
-               }\r
-\r
-               public int t進行描画(int x, int y)\r
-               {\r
-                       if (!base.b活性化してない && !this.bMute)\r
+                       if (b活性化してる && !this.bMute)\r
                        {\r
-                               if (this.txPanel != null )\r
+                               int x = CDTXMania.Instance.Coordinates.Panel.X;\r
+                               int y = CDTXMania.Instance.Coordinates.Panel.Y;\r
+        if (this.txPanel != null)\r
                                {\r
                                        Rectangle rectangle = new Rectangle(0, 0, txPanel.sz画像サイズ.Width, txPanel.sz画像サイズ.Height);\r
                                        txPanel.fZ軸中心回転 = (float)(Math.PI / 2);\r
-                                       this.txPanel.t2D描画(CDTXMania.Instance.Device, x-rectangle.Width/2-rectangle.Height/2 , y+rectangle.Width/2-rectangle.Height/2, rectangle);\r
+                                       this.txPanel.t2D描画(CDTXMania.Instance.Device, x - rectangle.Width / 2 - rectangle.Height / 2, y + rectangle.Width / 2 - rectangle.Height / 2, rectangle);\r
 \r
                                }\r
                        }\r
index 6c1f106..af98e88 100644 (file)
@@ -9,42 +9,41 @@ namespace DTXMania
        internal class CAct演奏レーンフラッシュGB共通 : CActivity\r
        {\r
                protected CCounter[] ct進行 = new CCounter[6];\r
-               private CTexture tx = new CTexture();\r
+               CTexture tx = new CTexture();\r
+               static ELane[] lanes = new ELane[] { ELane.GtR, ELane.GtG, ELane.GtB, ELane.BsR, ELane.BsG, ELane.BsB };\r
 \r
-               // コンストラクタ\r
-               public CAct演奏レーンフラッシュGB共通()\r
-               {\r
-                       base.b活性化してない = true;\r
-               }\r
-\r
-               // メソッド\r
                public void Start(int nLane)\r
                {\r
                        this.ct進行[nLane] = new CCounter(0, 100, 1, CDTXMania.Instance.Timer);\r
                }\r
 \r
-               // CActivity 実装\r
                public override void On活性化()\r
                {\r
-                       for (int i = 0; i < 6; i++)\r
+                       if (b活性化してない)\r
                        {\r
-                               this.ct進行[i] = new CCounter();\r
+                               for (int i = 0; i < 6; i++)\r
+                               {\r
+                                       this.ct進行[i] = new CCounter();\r
+                               }\r
+                               base.On活性化();\r
                        }\r
-                       base.On活性化();\r
                }\r
 \r
                public override void On非活性化()\r
                {\r
-                       for (int i = 0; i < 6; i++)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.ct進行[i] = null;\r
+                               for (int i = 0; i < 6; i++)\r
+                               {\r
+                                       this.ct進行[i] = null;\r
+                               }\r
+                               base.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
 \r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                tx = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay guitar lane flush.png"));\r
                                base.OnManagedリソースの作成();\r
@@ -53,7 +52,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref tx);\r
                                base.OnManagedリソースの解放();\r
@@ -62,7 +61,9 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.bGuitar有効 &&\r
+                               CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                        {\r
                                int imgX = CDTXMania.Instance.Coordinates.ImgGtLaneFlash.X;\r
                                for (int i = 0; i < 6; i++)\r
@@ -71,47 +72,17 @@ namespace DTXMania
                                        {\r
                                                imgX = CDTXMania.Instance.Coordinates.ImgGtLaneFlash.X;\r
                                        }\r
-                                       E楽器パート e楽器パート = (i < 3) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+                                       EPart inst = (i < 3) ? EPart.Guitar : EPart.Bass;\r
 \r
-                                       int x = 0;\r
-                                       int w = 0;\r
-                                       if (i == 0)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtR.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.GtR.W;\r
-                                       }\r
-                                       else if (i == 1)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtG.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.GtG.W;\r
-                                       }\r
-                                       else if (i == 2)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtB.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.GtB.W;\r
-                                       }\r
-                                       else if (i == 3)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsR.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.BsR.W;\r
-                                       }\r
-                                       else if (i == 4)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsG.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.BsG.W;\r
-                                       }\r
-                                       else if (i == 5)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsB.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.BsB.W;\r
-                                       }\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(lanes[i]);\r
+                                       int w = CDTXMania.Instance.ConfigIni.GetLaneW(lanes[i]);\r
 \r
-                                       if (!ct進行[i].b停止中)\r
+                                       if (!ct進行[i].b停止中 && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                        {\r
 \r
                                                if (tx != null)\r
                                                {\r
-                                                       if (CDTXMania.Instance.ConfigIni.bReverse[e楽器パート])\r
+                                                       if (CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                        {\r
                                                                tx.vc拡大縮小倍率.Y = -1;\r
                                                        }\r
@@ -119,11 +90,11 @@ namespace DTXMania
                                                        {\r
                                                                tx.vc拡大縮小倍率.Y = 1;\r
                                                        }\r
-                                                       int y = CDTXMania.Instance.Coordinates.LaneFlash[e楽器パート].Y;\r
+                                                       int y = CDTXMania.Instance.Coordinates.LaneFlash[inst].Y;\r
                                                        tx.t2D描画(\r
                                                                CDTXMania.Instance.Device,\r
                                                                x,\r
-                                                               CDTXMania.Instance.ConfigIni.bReverse[e楽器パート] ? SampleFramework.GameWindowSize.Height - y - CDTXMania.Instance.Coordinates.ImgGtLaneFlash.H : y,\r
+                                                               CDTXMania.Instance.ConfigIni.bReverse[inst] ? SampleFramework.GameWindowSize.Height - y - CDTXMania.Instance.Coordinates.ImgGtLaneFlash.H : y,\r
                                                                new Rectangle(\r
                                                                        imgX,\r
                                                                        CDTXMania.Instance.Coordinates.ImgGtLaneFlash.Y,\r
index 54eab19..eeb0700 100644 (file)
@@ -10,13 +10,12 @@ namespace DTXMania
 {\r
        internal class CAct演奏判定文字列共通 : CActivity\r
        {\r
-               protected STSTATUS[] st状態 = new STSTATUS[12];\r
+               private STLaneValue<STSTATUS> st状態 = new STLaneValue<STSTATUS>();\r
 \r
-               [StructLayout(LayoutKind.Sequential)]\r
-               protected struct STSTATUS\r
+               private class STSTATUS\r
                {\r
                        public CCounter ct進行;\r
-                       public E判定 judge;\r
+                       public EJudge judge;\r
                        public float fX方向拡大率;\r
                        public float fY方向拡大率;\r
                        public int n相対Y座標;\r
@@ -37,32 +36,31 @@ namespace DTXMania
                private CActDigit actPositiveLag;\r
                private CActDigit actNegativeLag;\r
 \r
-               /// <summary>\r
-               /// #25370 2011.6.3 yyagi\r
-               /// </summary>\r
-               public int nShowLagType\r
-               {\r
-                       get;\r
-                       set;\r
-               }\r
-\r
                public CAct演奏判定文字列共通()\r
                {\r
                        base.list子Activities.Add(actPositiveLag = new CActDigit(Color.White, Color.Gray, 25));\r
                        base.list子Activities.Add(actNegativeLag = new CActDigit(Color.Red, Color.Black, 25));\r
+                       for (ELane i = ELane.DrumsLaneMin; i < ELane.Max; ++i)\r
+                       {\r
+                               st状態[i] = new STSTATUS();\r
+                       }\r
                        base.b活性化してない = true;\r
                }\r
 \r
-               public virtual void Start(int nLane, E判定 judge, int lag)\r
+               /// <summary>\r
+               /// アクティビティ開始メソッド。\r
+               /// </summary>\r
+               /// <param name="nLane">判定文字列を表示するレーン。ギターバスのときはRを渡します。</param>\r
+               /// <param name="judge">表示する判定です。</param>\r
+               /// <param name="lag">この判定に対する入力との差 (ms 単位) です。</param>\r
+               public virtual void Start(ELane nLane, EJudge judge, int lag)\r
                {\r
-                       if (nLane < 0 || nLane > 11)\r
-                       {\r
-                               throw new IndexOutOfRangeException("有効範囲は 0~11 です。");\r
-                       }\r
-\r
-                       if (((nLane >= 8) || (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) != E判定文字表示位置.表示OFF)) &&\r
-                               (((nLane != 10) || (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar) != E判定文字表示位置.表示OFF)) &&\r
-                               ((nLane != 11) || (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass) != E判定文字表示位置.表示OFF))))\r
+                       if\r
+                                       (\r
+                                       (nLane >= ELane.DrumsLaneMax || CDTXMania.Instance.ConfigIni.bDisplayJudge.Drums) &&\r
+                                       (nLane != ELane.GtR || CDTXMania.Instance.ConfigIni.bDisplayJudge.Guitar) &&\r
+                                       (nLane != ELane.BsR || CDTXMania.Instance.ConfigIni.bDisplayJudge.Bass)\r
+                                       )\r
                        {\r
                                this.st状態[nLane].ct進行 = new CCounter(0, 300, 1, CDTXMania.Instance.Timer);\r
                                this.st状態[nLane].judge = judge;\r
@@ -77,26 +75,31 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
-                       for (int i = 0; i < 12; i++)\r
+                       if (b活性化してない)\r
                        {\r
-                               this.st状態[i].ct進行 = new CCounter();\r
+                               for (ELane i = ELane.DrumsLaneMin; i < ELane.BassLaneMax; i++)\r
+                               {\r
+                                       this.st状態[i].ct進行 = new CCounter();\r
+                               }\r
+                               base.On活性化();\r
                        }\r
-                       this.nShowLagType = CDTXMania.Instance.ConfigIni.nShowLagType;\r
-                       base.On活性化();\r
                }\r
 \r
                public override void On非活性化()\r
                {\r
-                       for (int i = 0; i < 12; i++)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.st状態[i].ct進行 = null;\r
+                               for (ELane i = ELane.DrumsLaneMin; i < ELane.BassLaneMax; i++)\r
+                               {\r
+                                       this.st状態[i].ct進行 = null;\r
+                               }\r
+                               base.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
 \r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                this.tex = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay judge strings 1.png"));\r
                                base.OnManagedリソースの作成();\r
@@ -105,7 +108,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref tex);\r
                                base.OnManagedリソースの解放();\r
@@ -115,10 +118,10 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                #region [ 表示拡大率の設定 ]\r
-                               for (int i = 0; i < 12; i++)\r
+                               for (ELane i = ELane.DrumsLaneMin; i < ELane.BassLaneMax; ++i)\r
                                {\r
                                        if (!st状態[i].ct進行.b停止中)\r
                                        {\r
@@ -128,7 +131,7 @@ namespace DTXMania
                                                        st状態[i].ct進行.t停止();\r
                                                }\r
                                                int num2 = st状態[i].ct進行.n現在の値;\r
-                                               if ((st状態[i].judge != E判定.Miss) && (st状態[i].judge != E判定.Bad))\r
+                                               if ((st状態[i].judge != EJudge.Miss) && (st状態[i].judge != EJudge.Bad))\r
                                                {\r
                                                        if (num2 < 50)\r
                                                        {\r
@@ -184,134 +187,101 @@ namespace DTXMania
                                }\r
                                #endregion\r
 \r
-                               for (int j = 0; j < 12; j++)\r
+                               for (ELane i = ELane.DrumsLaneMin; i < ELane.BassLaneMax; ++i)\r
                                {\r
-                                       if (!st状態[j].ct進行.b停止中)\r
+                                       if (!st状態[i].ct進行.b停止中)\r
                                        {\r
                                                int baseX = 0;\r
                                                int baseY = 0;\r
-                                               Rectangle rc = CDTXMania.Instance.Coordinates.ImgJudgeString.ApplyCounterY((int)st状態[j].judge, 0);\r
+                                               Rectangle rc = CDTXMania.Instance.Coordinates.ImgJudgeString.ApplyCounterY((int)st状態[i].judge, 0);\r
 \r
-                                               // int w;\r
                                                #region [ Drums 判定文字列 baseX/Y生成 ]\r
-                                               if (j < 8)                      // Drums\r
+                                               if (i < ELane.DrumsLaneMax)\r
                                                {\r
-                                                       if (\r
-                                                               !CDTXMania.Instance.ConfigIni.bDrums有効 ||\r
-                                                               CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums == E判定文字表示位置.表示OFF)\r
+                                                       if (!CDTXMania.Instance.ConfigIni.bDrums有効 ||\r
+                                                               !CDTXMania.Instance.DTX.bチップがある.Drums ||\r
+                                                               !CDTXMania.Instance.ConfigIni.bDisplayJudge.Drums)\r
                                                        {\r
                                                                continue;\r
                                                        }\r
 \r
-                                                       if (j == 0)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.LCY.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.LCY.Y;\r
-                                                       }\r
-                                                       else if (j == 1)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.HH.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.HH.Y;\r
-                                                       }\r
-                                                       else if (j == 2)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.SD.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.SD.Y;\r
-                                                       }\r
-                                                       else if (j == 3)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.BD.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.BD.Y;\r
-                                                       }\r
-                                                       else if (j == 4)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.HT.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.HT.Y;\r
-                                                       }\r
-                                                       else if (j == 5)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.LT.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.LT.Y;\r
-                                                       }\r
-                                                       else if (j == 6)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.FT.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.FT.Y;\r
-                                                       }\r
-                                                       else if (j == 7)\r
-                                                       {\r
-                                                               baseX = CDTXMania.Instance.Coordinates.Judge.CY.X;\r
-                                                               baseY = CDTXMania.Instance.Coordinates.Judge.CY.Y;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               continue;\r
-                                                       }\r
+                                                       baseX = CDTXMania.Instance.ConfigIni.GetLaneX(i) + CDTXMania.Instance.ConfigIni.GetLaneW(i) / 2;\r
+                                                       baseY = CDTXMania.Instance.ConfigIni.cdJudgeY[EPart.Drums];\r
 \r
                                                        if (CDTXMania.Instance.ConfigIni.bReverse.Drums)\r
                                                        {\r
                                                                baseY = SampleFramework.GameWindowSize.Height - baseY - rc.Height;\r
                                                        }\r
+\r
+                                                       tex.fZ軸中心回転 = (float)Math.PI / 4;\r
                                                }\r
                                                #endregion\r
                                                #region [ Guitar 判定文字列描画 baseX/Y生成 ]\r
-                                               else if (j == 10)       // Guitar\r
+                                               else if (i == ELane.GtR)  // Guitar\r
                                                {\r
-                                                       if (\r
-                                                               !CDTXMania.Instance.ConfigIni.bGuitar有効 ||\r
-                                                               CDTXMania.Instance.ConfigIni.判定文字表示位置.Guitar == E判定文字表示位置.表示OFF)\r
+                                                       if (!CDTXMania.Instance.ConfigIni.bGuitar有効 ||\r
+                                                               !CDTXMania.Instance.DTX.bチップがある.Guitar ||\r
+                                                               !CDTXMania.Instance.ConfigIni.bDisplayJudge.Guitar)\r
                                                        {\r
                                                                continue;\r
                                                        }\r
 \r
-                                                       baseX = CDTXMania.Instance.Coordinates.Judge.Gt.X;\r
-                                                       baseY = CDTXMania.Instance.Coordinates.Judge.Gt.Y;\r
+                                                       baseX = CDTXMania.Instance.ConfigIni.cdInstX.Guitar[CDTXMania.Instance.ConfigIni.eActiveInst]\r
+                                                               + CDTXMania.Instance.Coordinates.Instrument.Guitar.W / 2;\r
+                                                       baseY = CDTXMania.Instance.ConfigIni.cdJudgeY[EPart.Guitar];\r
 \r
                                                        if (CDTXMania.Instance.ConfigIni.bReverse.Guitar)\r
                                                        {\r
                                                                baseY = SampleFramework.GameWindowSize.Height - baseY - rc.Height;\r
                                                        }\r
+                                                       tex.fZ軸中心回転 = 0;\r
                                                }\r
                                                #endregion\r
                                                #region [ Bass 判定文字列描画 baseX/Y生成 ]\r
-                                               else if (j == 11)       // Bass\r
+                                               else if (i == ELane.BsR)  // Bass\r
                                                {\r
-                                                       if(\r
-                                                               !CDTXMania.Instance.ConfigIni.bGuitar有効 ||\r
-                                                               CDTXMania.Instance.ConfigIni.判定文字表示位置.Bass == E判定文字表示位置.表示OFF)\r
+                                                       if (!CDTXMania.Instance.ConfigIni.bGuitar有効 ||\r
+                                                               !CDTXMania.Instance.DTX.bチップがある.Bass ||\r
+                                                               !CDTXMania.Instance.ConfigIni.bDisplayJudge.Bass)\r
                                                        {\r
                                                                continue;\r
                                                        }\r
 \r
-                                                       baseX = CDTXMania.Instance.Coordinates.Judge.Bs.X;\r
-                                                       baseY = CDTXMania.Instance.Coordinates.Judge.Bs.Y;\r
+                                                       baseX = CDTXMania.Instance.ConfigIni.cdInstX.Bass[CDTXMania.Instance.ConfigIni.eActiveInst]\r
+                                                               + CDTXMania.Instance.Coordinates.Instrument.Bass.W / 2;\r
+                                                       baseY = CDTXMania.Instance.ConfigIni.cdJudgeY[EPart.Bass];\r
 \r
                                                        if (CDTXMania.Instance.ConfigIni.bReverse.Bass)\r
                                                        {\r
                                                                baseY = SampleFramework.GameWindowSize.Height - baseY - rc.Height;\r
                                                        }\r
+                                                       tex.fZ軸中心回転 = 0;\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       continue;\r
                                                }\r
                                                #endregion\r
 \r
                                                int xc = baseX;\r
-                                               int x = (int)(xc - CDTXMania.Instance.Coordinates.ImgJudgeString.W / 2.0 * st状態[j].fX方向拡大率);\r
-                                               int y = (int)(baseY + st状態[j].n相対Y座標 * Scale.Y - rc.Height / 2.0 * st状態[j].fY方向拡大率);\r
+                                               int x = (int)(xc - CDTXMania.Instance.Coordinates.ImgJudgeString.W / 2.0 * st状態[i].fX方向拡大率);\r
+                                               int y = (int)(baseY + st状態[i].n相対Y座標 * Scale.Y - rc.Height / 2.0 * st状態[i].fY方向拡大率);\r
                                                if (tex != null)\r
                                                {\r
-                                                       tex.n透明度 = st状態[j].n透明度;\r
-                                                       tex.vc拡大縮小倍率.X = st状態[j].fX方向拡大率;\r
-                                                       tex.vc拡大縮小倍率.Y = st状態[j].fY方向拡大率;\r
+                                                       tex.n透明度 = st状態[i].n透明度;\r
+                                                       tex.vc拡大縮小倍率.X = st状態[i].fX方向拡大率;\r
+                                                       tex.vc拡大縮小倍率.Y = st状態[i].fY方向拡大率;\r
                                                        tex.t2D描画(CDTXMania.Instance.Device, x, y, rc);\r
 \r
                                                        #region [ #25370 2011.6.3 yyagi ShowLag support ]\r
-                                                       if (nShowLagType == (int)EShowLagType.ON ||\r
-                                                                ((nShowLagType == (int)EShowLagType.GREAT_POOR) && (st状態[j].judge != E判定.Perfect)))\r
+                                                       if (CDTXMania.Instance.ConfigIni.nShowLagType == EShowLagType.On ||\r
+                                                                        ((CDTXMania.Instance.ConfigIni.nShowLagType == EShowLagType.UGreat) && (st状態[i].judge != EJudge.Perfect)))\r
                                                        {\r
                                                                // #25370 2011.2.1 yyagi\r
-                                                               if (st状態[j].judge != E判定.Auto)\r
+                                                               if (st状態[i].judge != EJudge.Auto)\r
                                                                {\r
                                                                        CActDigit useAct = actPositiveLag;\r
-                                                                       int digit = st状態[j].nLag;\r
+                                                                       int digit = st状態[i].nLag;\r
                                                                        if (digit < 0)\r
                                                                        {\r
                                                                                useAct = actNegativeLag;\r
@@ -319,11 +289,12 @@ namespace DTXMania
                                                                        }\r
 \r
                                                                        int w = useAct.Measure(digit);\r
-                                                                       useAct.Draw(digit, xc-w/2, y + CDTXMania.Instance.Coordinates.ImgJudgeString.H);\r
+                                                                       useAct.Draw(digit, xc - w / 2, y + CDTXMania.Instance.Coordinates.ImgJudgeString.H);\r
                                                                }\r
                                                        }\r
                                                        #endregion\r
                                                }\r
+\r
                                        }\r
                                }\r
                        }\r
index 9e27c13..95fd41c 100644 (file)
@@ -8,37 +8,27 @@ namespace DTXMania
 {\r
        internal class CAct演奏演奏情報 : CActivity\r
        {\r
-               // プロパティ\r
-\r
                public double dbBPM;\r
                public int n小節番号;\r
 \r
-\r
-               // コンストラクタ\r
-\r
-               public CAct演奏演奏情報()\r
-               {\r
-                       base.b活性化してない = true;\r
-               }\r
-\r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.n小節番号 = 0;\r
-                       this.dbBPM = CDTXMania.Instance.DTX.BASEBPM + CDTXMania.Instance.DTX.BPM;\r
-                       base.On活性化();\r
+                       if (b活性化してない)\r
+                       {\r
+                               this.n小節番号 = 0;\r
+                               this.dbBPM = CDTXMania.Instance.DTX.BASEBPM + CDTXMania.Instance.DTX.BPM;\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       throw new InvalidOperationException("t進行描画(int x, int y) のほうを使用してください。");\r
-               }\r
-               public void t進行描画(int x, int y)\r
-               {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.b演奏情報を表示する)\r
                        {\r
-                               y += (int)(0x153 * Scale.Y);\r
+                               int x = CDTXMania.Instance.ConfigIni.cdDebugX[CDTXMania.Instance.ConfigIni.eActiveInst];\r
+                               int y = CDTXMania.Instance.ConfigIni.cdDebugY[CDTXMania.Instance.ConfigIni.eActiveInst];\r
+        y += (int)(0x153 * Scale.Y);\r
                                CDTXMania.Instance.act文字コンソール.tPrint(x, y, C文字コンソール.Eフォント種別.白,\r
                                        string.Format("JudgeLine D/G/B Adj: {0} px", CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums, CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar, CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass));\r
                                y -= 0x10 * 2;\r
@@ -59,11 +49,12 @@ namespace DTXMania
                                y -= 0x10 * 2;\r
                                //CDTXMania.Instance.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound CPU :    {0:####0.00}%", CDTXMania.Instance.Sound管理.GetCPUusage() ) );\r
                                y -= 0x10 * 2;\r
-                               CDTXMania.Instance.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Mixing:  {0:####0}", CDTXMania.Instance.Sound管理.GetMixingStreams() ) );\r
+                               CDTXMania.Instance.act文字コンソール.tPrint(x, y, C文字コンソール.Eフォント種別.白, string.Format("Sound Mixing:  {0:####0}", CDTXMania.Instance.Sound管理.GetMixingStreams()));\r
                                y -= 0x10 * 2;\r
-                               CDTXMania.Instance.act文字コンソール.tPrint( x, y, C文字コンソール.Eフォント種別.白, string.Format( "Sound Streams: {0:####0}", CDTXMania.Instance.Sound管理.GetStreams() ) );\r
+                               CDTXMania.Instance.act文字コンソール.tPrint(x, y, C文字コンソール.Eフォント種別.白, string.Format("Sound Streams: {0:####0}", CDTXMania.Instance.Sound管理.GetStreams()));\r
                                //y -= 0x10 * 2;\r
                        }\r
+                       return 0;\r
                }\r
        }\r
 }\r
index bffbf52..e6f4e60 100644 (file)
@@ -20,10 +20,6 @@ namespace DTXMania
                        get;\r
                        set;\r
                }\r
-               /// <summary>楽器ごとのInvisibleモード</summary>\r
-               public STDGBVALUE<EInvisible> eInvisibleMode;\r
-\r
-\r
 \r
                #region [ コンストラクタ ]\r
                public CInvisibleChip()\r
@@ -52,7 +48,7 @@ namespace DTXMania
                /// </summary>\r
                public void Reset()\r
                {\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
                                ccounter[i] = new CCounter();\r
                                b演奏チップが1つでもバーを通過した[i] = false;\r
@@ -63,12 +59,12 @@ namespace DTXMania
                /// まだSemi-Invisibleを開始していなければ、開始する\r
                /// </summary>\r
                /// <param name="eInst"></param>\r
-               public void StartSemiInvisible(E楽器パート eInst)\r
+               public void StartSemiInvisible(EPart eInst)\r
                {\r
                        if (!b演奏チップが1つでもバーを通過した[eInst])\r
                        {\r
                                b演奏チップが1つでもバーを通過した[eInst] = true;\r
-                               if (this.eInvisibleMode[eInst] == EInvisible.SEMI)\r
+                               if (CDTXMania.Instance.ConfigIni.eSudHidInv[eInst] == ESudHidInv.SemiInv)\r
                                {\r
                                        ShowChipTemporally(eInst);\r
                                        ccounter[eInst].n現在の値 = nDisplayTimeMs;\r
@@ -79,7 +75,7 @@ namespace DTXMania
                /// 一時的にチップを表示するモードを開始する\r
                /// </summary>\r
                /// <param name="eInst">楽器パート</param>\r
-               public void ShowChipTemporally(E楽器パート eInst)\r
+               public void ShowChipTemporally(EPart eInst)\r
                {\r
                        ccounter[eInst].t開始(0, nDisplayTimeMs + nFadeoutTimeMs + 1, 1, CDTXMania.Instance.Timer);\r
                }\r
@@ -89,14 +85,14 @@ namespace DTXMania
                /// </summary>\r
                public enum EChipInvisibleState\r
                {\r
-                       SHOW,                   // Missなどしてチップを表示中\r
-                       FADEOUT,                // 表示期間終了後、フェードアウト中\r
-                       INVISIBLE               // 完全非表示\r
+                       SHOW,     // Missなどしてチップを表示中\r
+                       FADEOUT,    // 表示期間終了後、フェードアウト中\r
+                       INVISIBLE   // 完全非表示\r
                }\r
 \r
                internal EChipInvisibleState SetInvisibleStatus(ref CChip cc)\r
                {\r
-                       if (cc.e楽器パート == E楽器パート.UNKNOWN)\r
+                       if (cc.e楽器パート == EPart.Unknown)\r
                        {\r
                                return EChipInvisibleState.SHOW;\r
                        }\r
@@ -104,20 +100,20 @@ namespace DTXMania
 \r
                        ccounter[cc.e楽器パート].t進行();\r
 \r
-                       switch (eInvisibleMode[cc.e楽器パート])\r
+                       switch (CDTXMania.Instance.ConfigIni.eSudHidInv[cc.e楽器パート].Value)\r
                        {\r
-                               case EInvisible.OFF:\r
+                               case ESudHidInv.Off:\r
                                        cc.b可視 = true;\r
                                        retcode = EChipInvisibleState.SHOW;\r
                                        break;\r
 \r
-                               case EInvisible.FULL:\r
+                               case ESudHidInv.FullInv:\r
                                        cc.b可視 = false;\r
                                        retcode = EChipInvisibleState.INVISIBLE;\r
                                        break;\r
 \r
-                               case EInvisible.SEMI:\r
-                                       if (!b演奏チップが1つでもバーを通過した[cc.e楽器パート]) // まだ1つもチップがバーを通過していない時は、チップを表示する\r
+                               case ESudHidInv.SemiInv:\r
+                                       if (!b演奏チップが1つでもバーを通過した[cc.e楽器パート]) // まだ1つもチップがバーを通過していない時は、チップを表示する\r
                                        {\r
                                                cc.b可視 = true;\r
                                                cc.n透明度 = 255;\r
@@ -131,13 +127,13 @@ namespace DTXMania
                                                cc.n透明度 = 255;\r
                                                retcode = EChipInvisibleState.INVISIBLE;\r
                                        }\r
-                                       else if (ccounter[cc.e楽器パート].n現在の値 < nDisplayTimeMs)                                                          // 表示期間\r
+                                       else if (ccounter[cc.e楽器パート].n現在の値 < nDisplayTimeMs)                // 表示期間\r
                                        {\r
                                                cc.b可視 = true;\r
                                                cc.n透明度 = 255;\r
                                                retcode = EChipInvisibleState.SHOW;\r
                                        }\r
-                                       else if (ccounter[cc.e楽器パート].n現在の値 < nDisplayTimeMs + nFadeoutTimeMs)         // フェードアウト期間\r
+                                       else if (ccounter[cc.e楽器パート].n現在の値 < nDisplayTimeMs + nFadeoutTimeMs)   // フェードアウト期間\r
                                        {\r
                                                cc.b可視 = true;\r
                                                cc.n透明度 = 255 - (int)(Convert.ToDouble(ccounter[cc.e楽器パート].n現在の値 - nDisplayTimeMs) / nFadeoutTimeMs * 255.0);\r
@@ -153,13 +149,12 @@ namespace DTXMania
                        return retcode;\r
                }\r
 \r
-               #region [ Dispose-Finalize パターン実装 ]\r
-               //-----------------\r
                public void Dispose()\r
                {\r
                        this.Dispose(true);\r
                        GC.SuppressFinalize(this);\r
                }\r
+\r
                protected void Dispose(bool disposeManagedObjects)\r
                {\r
                        if (this.bDispose完了済み)\r
@@ -168,7 +163,7 @@ namespace DTXMania
                        if (disposeManagedObjects)\r
                        {\r
                                // (A) Managed リソースの解放\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        // ctInvisibleTimer[ i ].Dispose();\r
                                        ccounter[i].t停止();\r
@@ -184,11 +179,9 @@ namespace DTXMania
                {\r
                        this.Dispose(false);\r
                }\r
-               //-----------------\r
-               #endregion\r
 \r
-               private STDGBVALUE<CCounter> ccounter;\r
+               private STDGBSValue<CCounter> ccounter;\r
                private bool bDispose完了済み = false;\r
-               private STDGBVALUE<bool> b演奏チップが1つでもバーを通過した;\r
+               private STDGBSValue<bool> b演奏チップが1つでもバーを通過した;\r
        }\r
 }\r
index 5caa483..d221091 100644 (file)
@@ -19,117 +19,88 @@ namespace DTXMania
        /// </summary>\r
        internal partial class CStage演奏画面共通 : CStage\r
        {\r
-               // members\r
-               #region[Constants]\r
-               private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[]\r
-               {\r
-                       Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT,\r
-                       Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO,\r
-                       Eパッド.RD, Eパッド.LC\r
-               };\r
-               private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
-               public static readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
-               private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };  // パッド画像のヒット処理用\r
-               private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
-               private readonly Ech定義[] nパッド0Atoチャンネル0A = new Ech定義[]\r
-               {\r
-                       Ech定義.HiHatClose,\r
-                       Ech定義.Snare,\r
-                       Ech定義.BassDrum,\r
-                       Ech定義.HighTom,\r
-                       Ech定義.LowTom,\r
-                       Ech定義.FloorTom,\r
-                       Ech定義.Cymbal,\r
-                       Ech定義.HiHatOpen,\r
-                       Ech定義.RideCymbal,\r
-                       Ech定義.LeftCymbal\r
-               };\r
-               #endregion\r
-\r
                #region [Member_Activities]\r
-               private CAct演奏AVI actAVI;\r
-               private CAct演奏BGA actBGA;\r
-               private CAct演奏チップファイアGB actChipFireGB;\r
-               private CAct演奏Combo共通 actCombo;\r
-               private CAct演奏Danger共通 actDANGER;\r
-               private CActFIFOBlack actFI;\r
-               private CActFIFOBlack actFO;\r
-               private CActFIFOWhite actFOClear;\r
-               private CAct演奏ゲージ共通 actGauge;\r
-               private CAct演奏判定文字列共通 actJudgeString;\r
-               private CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
-               private CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
-               private CAct演奏パネル文字列 actPanel;\r
-               private CAct演奏演奏情報 actPlayInfo;\r
-               private CAct演奏RGB共通 actRGB;\r
-               private CAct演奏スコア共通 actScore;\r
-               private CAct演奏ステージ失敗 actStageFailed;\r
-               private CAct演奏ステータスパネル共通 actStatusPanels;\r
-               private CAct演奏WailingBonus共通 actWailingBonus;\r
-               private CAct演奏スクロール速度 act譜面スクロール速度;\r
-               private CAct演奏DrumsチップファイアD actChipFireD; // drums only\r
-               private CAct演奏グラフ actGraph;   // drums only #24074 2011.01.23 add ikanick\r
-               private CAct演奏Drumsパッド actPad; // drums only\r
-               private CAct演奏Lane actLane;\r
+               CAct演奏AVI actAVI;\r
+               CAct演奏BGA actBGA;\r
+               CAct演奏チップファイアGB actChipFireGB;\r
+               CAct演奏Combo共通 actCombo;\r
+               CAct演奏Danger共通 actDANGER;\r
+               CActFIFOBlack actFI;\r
+               CActFIFOBlack actFO;\r
+               CActFIFOWhite actFOClear;\r
+               CAct演奏ゲージ共通 actGauge;\r
+               CAct演奏判定文字列共通 actJudgeString;\r
+               CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
+               CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
+               CActオプションパネル actOptionPanel;\r
+               CAct演奏パネル文字列 actPanel;\r
+               CAct演奏演奏情報 actPlayInfo;\r
+               CAct演奏RGB共通 actRGB;\r
+               CAct演奏スコア共通 actScore;\r
+               CAct演奏ステージ失敗 actStageFailed;\r
+               CAct演奏ステータスパネル共通 actStatusPanels;\r
+               CAct演奏WailingBonus共通 actWailingBonus;\r
+               CAct演奏スクロール速度 act譜面スクロール速度;\r
+               CAct演奏DrumsチップファイアD actChipFireD;\r
+               // #24074 2011.01.23 add ikanick\r
+               CAct演奏グラフ actGraph;\r
+               CAct演奏Drumsパッド actPad;\r
+               CAct演奏Lane actLane;\r
                #endregion\r
 \r
-               private bool bPAUSE;\r
-               private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
-               private STDGBVALUE<bool> b演奏にキーボードを使った;\r
-               private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
-               private STDGBVALUE<bool> b演奏にマウスを使った;\r
-               private CCounter ctWailingチップ模様アニメ;\r
-               private STDGBVALUE<CCounter> ctチップ模様アニメ;\r
-\r
-               private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
-\r
-               private STDGBVALUE<CHitCountOfRank> nヒット数_Auto含まない;\r
-               private STDGBVALUE<CHitCountOfRank> nヒット数_Auto含む;\r
-               private STDGBVALUE<CHitCountOfRank> nヒット数_TargetGhost; // #35411 2015.08.21 chnmr0 add\r
-               private STDGBVALUE<int> nコンボ数_TargetGhost;\r
-               private STDGBVALUE<int> n最大コンボ数_TargetGhost;\r
-               private int n現在のトップChip = -1;\r
-               private int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
-               private Ech定義 e最後に再生したHHのチャンネル番号;\r
-               private List<int> L最後に再生したHHの実WAV番号;              // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
-               private STLANEVALUE<int> n最後に再生した実WAV番号;    // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
-\r
-               private volatile Queue<STMixer> queueMixerSound;                // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
-               private DateTime dtLastQueueOperation;\r
-               private bool bIsDirectSound;\r
-               private double db再生速度;\r
-               private bool bValidScore;\r
-\r
-               private STDGBVALUE<Queue<CChip>> queWailing;\r
-               private STDGBVALUE<CChip> r現在の歓声Chip;\r
-               private CChip[] r空打ちドラムチップ = new CChip[10];\r
-               private CChip r現在の空うちギターChip;\r
-               private ST空打ち r現在の空うちドラムChip;\r
-               private CChip r現在の空うちベースChip;\r
-               private CChip r次にくるギターChip;\r
-               private CChip r次にくるベースChip;\r
-\r
-               private CTexture txWailing枠;\r
-               private CTexture txチップ;\r
-               private CTexture txチップGB;\r
-               private CTexture txヒットバー;\r
-               private CTexture txヒットバーGB;\r
-               private CTexture tx背景;\r
-\r
-               private STDGBVALUE<int> nInputAdjustTimeMs;             // #23580 2011.1.3 yyagi\r
-               private STAUTOPLAY bIsAutoPlay;         // #24239 2011.1.23 yyagi\r
-               private CInvisibleChip cInvisibleChip;\r
-               private bool bUseOSTimer;\r
-               private E判定表示優先度 e判定表示優先度;\r
-               private CWailingChip共通[] cWailingChip;\r
-\r
-               private STDGBVALUE<CScoreIni.C演奏記録> record;\r
-\r
-               // private CTexture txチップGB;\r
-               // private CTexture txレーンフレームGB; // drums only\r
-               private bool bフィルイン中; // drums only\r
-\r
-               // Constructor\r
+               bool bPAUSE;\r
+               STDGBSValue<bool> b演奏にMIDI入力を使った;\r
+               STDGBSValue<bool> b演奏にキーボードを使った;\r
+               STDGBSValue<bool> b演奏にジョイパッドを使った;\r
+               STDGBSValue<bool> b演奏にマウスを使った;\r
+\r
+               CCounter ctWailingチップ模様アニメ;\r
+               STDGBSValue<CCounter> ctチップ模様アニメ;\r
+\r
+               E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
+\r
+               STDGBSValue<CHitCountOfRank> nヒット数_Auto含まない;\r
+               STDGBSValue<CHitCountOfRank> nヒット数_Auto含む;\r
+               // #35411 2015.08.21 chnmr0 add\r
+               STDGBSValue<CHitCountOfRank> nヒット数_TargetGhost;\r
+               STDGBSValue<int> nコンボ数_TargetGhost;\r
+               STDGBSValue<int> n最大コンボ数_TargetGhost;\r
+               int n現在のトップChip = -1;\r
+               int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
+               EChannel e最後に再生したHHのチャンネル番号;\r
+               // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
+               List<int> L最後に再生したHHの実WAV番号;\r
+               // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
+               STPadValue<int> n最後に再生した実WAV番号;\r
+               // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
+               volatile Queue<STMixer> queueMixerSound;\r
+               DateTime dtLastQueueOperation;\r
+               bool bIsDirectSound;\r
+               double db再生速度;\r
+               bool bValidScore;\r
+               bool bフィルイン中; // drums only\r
+\r
+               STDGBSValue<Queue<CChip>> queWailing;\r
+               STDGBSValue<CChip> r現在の歓声Chip;\r
+               STPadValue<CChip> r空打ちドラムチップ = new STPadValue<CChip>();\r
+               CChip r現在の空うちギターChip;\r
+               ST空打ち r現在の空うちドラムChip;\r
+               CChip r現在の空うちベースChip;\r
+               CChip r次にくるギターChip;\r
+               CChip r次にくるベースChip;\r
+\r
+               CTexture txWailing枠;\r
+               CTexture txチップ;\r
+               CTexture txチップGB;\r
+               CTexture txヒットバー;\r
+               CTexture txヒットバーGB;\r
+               CTexture tx背景;\r
+\r
+               CInvisibleChip cInvisibleChip;\r
+               CWailingChip共通[] cWailingChip;\r
+\r
+               STDGBSValue<CScoreIni.C演奏記録> record;\r
+\r
                public CStage演奏画面共通()\r
                {\r
                        base.eステージID = CStage.Eステージ.演奏;\r
@@ -152,31 +123,34 @@ namespace DTXMania
                        base.list子Activities.Add(this.actLaneFlushGB = new CAct演奏レーンフラッシュGB共通());\r
                        base.list子Activities.Add(this.actJudgeString = new CAct演奏判定文字列共通());\r
                        base.list子Activities.Add(this.actGauge = new CAct演奏ゲージ共通());\r
-                       base.list子Activities.Add(this.actGraph = new CAct演奏グラフ()); // #24074 2011.01.23 add ikanick\r
+                       base.list子Activities.Add(this.actGraph = new CAct演奏グラフ());\r
                        base.list子Activities.Add(this.actCombo = new CAct演奏Combo共通());\r
                        base.list子Activities.Add(this.actPlayInfo = new CAct演奏演奏情報());\r
                        base.list子Activities.Add(this.actFI = new CActFIFOBlack());\r
                        base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
                        base.list子Activities.Add(this.actFOClear = new CActFIFOWhite());\r
                        base.list子Activities.Add(this.actLane = new CAct演奏Lane());\r
+                       list子Activities.Add(actOptionPanel = new CActオプションパネル(EOptionPanelDirection.Vertical));\r
                }\r
 \r
-               // メソッド\r
                #region [ PlayRecordSave ]\r
                private void t演奏結果を格納する_ドラム()\r
                {\r
                        record.Drums = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Drums = Record.Drums;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums);\r
                        if (CDTXMania.Instance.DTX.bチップがある.Drums && CDTXMania.Instance.ConfigIni.bDrums有効)\r
                        {\r
-                               Drums.nスコア = (long)this.actScore.Get(E楽器パート.DRUMS);\r
-                               Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Drums, CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect, this.actCombo.dgbコンボ数.Drums.n最高値, E楽器パート.DRUMS, bIsAutoPlay);\r
-                               Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect, this.nヒット数_Auto含まない.Drums.Great, this.nヒット数_Auto含まない.Drums.Good, this.nヒット数_Auto含まない.Drums.Poor, this.nヒット数_Auto含まない.Drums.Miss, E楽器パート.DRUMS, bIsAutoPlay);\r
-                               Drums.nPerfect数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Perfect : this.nヒット数_Auto含まない.Drums.Perfect;\r
-                               Drums.nGreat数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Great : this.nヒット数_Auto含まない.Drums.Great;\r
-                               Drums.nGood数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Good : this.nヒット数_Auto含まない.Drums.Good;\r
-                               Drums.nPoor数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Poor : this.nヒット数_Auto含まない.Drums.Poor;\r
-                               Drums.nMiss数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Miss : this.nヒット数_Auto含まない.Drums.Miss;\r
+                               Drums.nスコア = (long)this.actScore.Get(EPart.Drums);\r
+                               Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Drums, CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect,\r
+                                               this.actCombo.dgbコンボ数.Drums.n最高値,\r
+                                               EPart.Drums);\r
+                               Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect, this.nヒット数_Auto含まない.Drums.Great, this.nヒット数_Auto含まない.Drums.Good, this.nヒット数_Auto含まない.Drums.Poor, this.nヒット数_Auto含まない.Drums.Miss, EPart.Drums, true);\r
+                               Drums.nPerfect数 = allauto ? this.nヒット数_Auto含む.Drums.Perfect : this.nヒット数_Auto含まない.Drums.Perfect;\r
+                               Drums.nGreat数 = allauto ? this.nヒット数_Auto含む.Drums.Great : this.nヒット数_Auto含まない.Drums.Great;\r
+                               Drums.nGood数 = allauto ? this.nヒット数_Auto含む.Drums.Good : this.nヒット数_Auto含まない.Drums.Good;\r
+                               Drums.nPoor数 = allauto ? this.nヒット数_Auto含む.Drums.Poor : this.nヒット数_Auto含まない.Drums.Poor;\r
+                               Drums.nMiss数 = allauto ? this.nヒット数_Auto含む.Drums.Miss : this.nヒット数_Auto含まない.Drums.Miss;\r
                                Drums.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Drums.Perfect;\r
                                Drums.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Drums.Great;\r
                                Drums.nGood数_Auto含まない = this.nヒット数_Auto含まない.Drums.Good;\r
@@ -184,35 +158,32 @@ namespace DTXMania
                                Drums.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Drums.Miss;\r
                                Drums.n最大コンボ数 = this.actCombo.dgbコンボ数.Drums.n最高値;\r
                                Drums.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Drums;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Drums.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Drums.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Drums.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Drums.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Drums.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Drums.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Drums.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Drums.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Drums.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Drums.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Drums.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Drums.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Drums.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Drums.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Drums.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Drums.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Drums.n演奏速度分母 = 20;\r
-                               Drums.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
-                               Drums.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
-                               Drums.eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup;\r
-                               Drums.eHitSoundPriorityHH = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH;\r
-                               Drums.eHitSoundPriorityFT = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT;\r
-                               Drums.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
+                               Drums.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup.Value;\r
+                               Drums.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup.Value;\r
+                               Drums.eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup.Value;\r
+                               Drums.eHitSoundPriorityHH = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH.Value;\r
+                               Drums.eHitSoundPriorityFT = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT.Value;\r
+                               Drums.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY.Value;\r
                                Drums.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Drums.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Drums.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Drums.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\r
+                               Drums.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Drums.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
                                Drums.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Drums;\r
                                Drums.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Drums;\r
                                Drums.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Drums;\r
@@ -223,25 +194,27 @@ namespace DTXMania
                                Drums.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Drums.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Drums.最終更新日時 = DateTime.Now.ToString();\r
-                               Drums.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Drums);\r
-                               Drums.nRisky = CDTXMania.Instance.ConfigIni.nRisky; // #35461 chnmr0 add\r
-                               Drums.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35461 chnmr0 add\r
+                               Drums.nRisky = CDTXMania.Instance.ConfigIni.nRisky;\r
+                               // #35417 chnmr0 add\r
+                               Drums.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                private void t演奏結果を格納する_ギター()\r
                {\r
                        record.Guitar = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Guitar = Record.Guitar;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Guitar);\r
                        if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
                        {\r
-                               Guitar.nスコア = (long)this.actScore.Get(E楽器パート.GUITAR);\r
-                               Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Guitar, CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.actCombo.dgbコンボ数.Guitar.n最高値, E楽器パート.GUITAR, bIsAutoPlay);\r
-                               Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.nヒット数_Auto含まない.Guitar.Great, this.nヒット数_Auto含まない.Guitar.Good, this.nヒット数_Auto含まない.Guitar.Poor, this.nヒット数_Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay);\r
-                               Guitar.nPerfect数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Perfect : this.nヒット数_Auto含まない.Guitar.Perfect;\r
-                               Guitar.nGreat数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Great : this.nヒット数_Auto含まない.Guitar.Great;\r
-                               Guitar.nGood数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Good : this.nヒット数_Auto含まない.Guitar.Good;\r
-                               Guitar.nPoor数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Poor : this.nヒット数_Auto含まない.Guitar.Poor;\r
-                               Guitar.nMiss数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Miss : this.nヒット数_Auto含まない.Guitar.Miss;\r
+                               Guitar.nスコア = (long)this.actScore.Get(EPart.Guitar);\r
+                               Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Guitar, CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.actCombo.dgbコンボ数.Guitar.n最高値, EPart.Guitar);\r
+                               Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.nヒット数_Auto含まない.Guitar.Great, this.nヒット数_Auto含まない.Guitar.Good, this.nヒット数_Auto含まない.Guitar.Poor, this.nヒット数_Auto含まない.Guitar.Miss, EPart.Guitar, true);\r
+                               Guitar.nPerfect数 = allauto ? this.nヒット数_Auto含む.Guitar.Perfect : this.nヒット数_Auto含まない.Guitar.Perfect;\r
+                               Guitar.nGreat数 = allauto ? this.nヒット数_Auto含む.Guitar.Great : this.nヒット数_Auto含まない.Guitar.Great;\r
+                               Guitar.nGood数 = allauto ? this.nヒット数_Auto含む.Guitar.Good : this.nヒット数_Auto含まない.Guitar.Good;\r
+                               Guitar.nPoor数 = allauto ? this.nヒット数_Auto含む.Guitar.Poor : this.nヒット数_Auto含まない.Guitar.Poor;\r
+                               Guitar.nMiss数 = allauto ? this.nヒット数_Auto含む.Guitar.Miss : this.nヒット数_Auto含まない.Guitar.Miss;\r
                                Guitar.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Perfect;\r
                                Guitar.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Great;\r
                                Guitar.nGood数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Good;\r
@@ -249,24 +222,21 @@ namespace DTXMania
                                Guitar.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Miss;\r
                                Guitar.n最大コンボ数 = this.actCombo.dgbコンボ数.Guitar.n最高値;\r
                                Guitar.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Guitar;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Guitar.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Guitar.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Guitar.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Guitar.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Guitar.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Guitar.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Guitar.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Guitar.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Guitar.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Guitar.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Guitar.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Guitar.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Guitar.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Guitar.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Guitar.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Guitar.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Guitar.n演奏速度分母 = 20;\r
                                Guitar.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
                                Guitar.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
@@ -276,8 +246,8 @@ namespace DTXMania
                                Guitar.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
                                Guitar.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Guitar.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Guitar.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Guitar.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\r
+                               Guitar.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Guitar.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
                                Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;\r
                                Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;\r
                                Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;\r
@@ -288,24 +258,25 @@ namespace DTXMania
                                Guitar.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Guitar.最終更新日時 = DateTime.Now.ToString();\r
-                               Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Guitar);\r
-                               Guitar.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35417 chnmr0 add\r
+                               Guitar.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                private void t演奏結果を格納する_ベース()\r
                {\r
                        record.Bass = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Bass = Record.Bass;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Bass);\r
                        if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
                        {\r
-                               Bass.nスコア = (long)this.actScore.Get(E楽器パート.BASS);\r
-                               Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Bass, CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.actCombo.dgbコンボ数.Bass.n最高値, E楽器パート.BASS, bIsAutoPlay);\r
-                               Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.nヒット数_Auto含まない.Bass.Great, this.nヒット数_Auto含まない.Bass.Good, this.nヒット数_Auto含まない.Bass.Poor, this.nヒット数_Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay);\r
-                               Bass.nPerfect数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Perfect : this.nヒット数_Auto含まない.Bass.Perfect;\r
-                               Bass.nGreat数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Great : this.nヒット数_Auto含まない.Bass.Great;\r
-                               Bass.nGood数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Good : this.nヒット数_Auto含まない.Bass.Good;\r
-                               Bass.nPoor数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Poor : this.nヒット数_Auto含まない.Bass.Poor;\r
-                               Bass.nMiss数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Miss : this.nヒット数_Auto含まない.Bass.Miss;\r
+                               Bass.nスコア = (long)this.actScore.Get(EPart.Bass);\r
+                               Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Bass, CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.actCombo.dgbコンボ数.Bass.n最高値, EPart.Bass);\r
+                               Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.nヒット数_Auto含まない.Bass.Great, this.nヒット数_Auto含まない.Bass.Good, this.nヒット数_Auto含まない.Bass.Poor, this.nヒット数_Auto含まない.Bass.Miss, EPart.Bass, true);\r
+                               Bass.nPerfect数 = allauto ? this.nヒット数_Auto含む.Bass.Perfect : this.nヒット数_Auto含まない.Bass.Perfect;\r
+                               Bass.nGreat数 = allauto ? this.nヒット数_Auto含む.Bass.Great : this.nヒット数_Auto含まない.Bass.Great;\r
+                               Bass.nGood数 = allauto ? this.nヒット数_Auto含む.Bass.Good : this.nヒット数_Auto含まない.Bass.Good;\r
+                               Bass.nPoor数 = allauto ? this.nヒット数_Auto含む.Bass.Poor : this.nヒット数_Auto含まない.Bass.Poor;\r
+                               Bass.nMiss数 = allauto ? this.nヒット数_Auto含む.Bass.Miss : this.nヒット数_Auto含まない.Bass.Miss;\r
                                Bass.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Bass.Perfect;\r
                                Bass.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Bass.Great;\r
                                Bass.nGood数_Auto含まない = this.nヒット数_Auto含まない.Bass.Good;\r
@@ -313,24 +284,21 @@ namespace DTXMania
                                Bass.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Bass.Miss;\r
                                Bass.n最大コンボ数 = this.actCombo.dgbコンボ数.Bass.n最高値;\r
                                Bass.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Bass;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Bass.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Bass.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Bass.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Bass.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Bass.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Bass.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Bass.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Bass.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Bass.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Bass.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Bass.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Bass.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Bass.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Bass.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Bass.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Bass.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Bass.n演奏速度分母 = 20;\r
                                Bass.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
                                Bass.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
@@ -340,20 +308,21 @@ namespace DTXMania
                                Bass.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
                                Bass.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Bass.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Bass.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Bass.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\r
-                               Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;                        // #24280 2011.1.29 yyagi\r
-                               Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass;                          //\r
-                               Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass;          //\r
-                               Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass;                                    //\r
+                               Bass.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Bass.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
+                               // #24280 2011.1.29 yyagi\r
+                               Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;\r
+                               Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass;\r
+                               Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass;\r
+                               Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass;\r
                                Bass.nPerfectになる範囲ms = CDTXMania.Instance.nPerfect範囲ms;\r
                                Bass.nGreatになる範囲ms = CDTXMania.Instance.nGreat範囲ms;\r
                                Bass.nGoodになる範囲ms = CDTXMania.Instance.nGood範囲ms;\r
                                Bass.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Bass.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Bass.最終更新日時 = DateTime.Now.ToString();\r
-                               Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Bass);\r
-                               Bass.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35417 chnmr0 add\r
+                               Bass.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                #endregion\r
@@ -367,10 +336,11 @@ namespace DTXMania
                                this.dtLastQueueOperation = DateTime.MinValue;\r
                                this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
                                this.n現在のトップChip = (CDTXMania.Instance.DTX.listChip.Count > 0) ? 0 : -1;\r
+                               n最後に再生した実WAV番号 = new STPadValue<int>();\r
                                this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
                                this.e最後に再生したHHのチャンネル番号 = 0;\r
-                               this.n最後に再生した実WAV番号.Guitar = -1;\r
-                               this.n最後に再生した実WAV番号.Bass = -1;\r
+                               this.n最後に再生した実WAV番号.GtPick = -1;\r
+                               this.n最後に再生した実WAV番号.BsPick = -1;\r
                                for (int i = 0; i < 50; i++)\r
                                {\r
                                        this.n最後に再生したBGMの実WAV番号[i] = -1;\r
@@ -384,26 +354,20 @@ namespace DTXMania
                                this.r現在の空うちギターChip = null;\r
                                this.r現在の空うちベースChip = null;\r
                                cInvisibleChip = new CInvisibleChip(CDTXMania.Instance.ConfigIni.nChipDisplayTimeMs, CDTXMania.Instance.ConfigIni.nChipFadeoutTimeMs);\r
-                               this.n最大コンボ数_TargetGhost = new STDGBVALUE<int>(); // #35411 2015.08.21 chnmr0 add\r
+                               this.n最大コンボ数_TargetGhost = new STDGBSValue<int>();\r
 \r
-                               for (E楽器パート k = E楽器パート.DRUMS; k <= E楽器パート.BASS; k++)\r
+                               for (EPart k = EPart.Drums; k <= EPart.Bass; k++)\r
                                {\r
                                        this.nヒット数_Auto含まない[k] = new CHitCountOfRank();\r
                                        this.nヒット数_Auto含む[k] = new CHitCountOfRank();\r
-                                       this.nヒット数_TargetGhost[k] = new CHitCountOfRank(); // #35411 2015.08.21 chnmr0 add\r
+                                       this.nヒット数_TargetGhost[k] = new CHitCountOfRank();\r
                                        this.queWailing[k] = new Queue<CChip>();\r
                                        this.r現在の歓声Chip[k] = null;\r
-                                       cInvisibleChip.eInvisibleMode[k] = CDTXMania.Instance.ConfigIni.eInvisible[k];\r
                                        if (CDTXMania.Instance.DTXVmode.Enabled)\r
                                        {\r
-                                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
+                                               CDTXMania.Instance.ConfigIni.nScrollSpeed[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
                                        }\r
 \r
-                                       // #23580 2011.1.3 yyagi\r
-                                       this.nInputAdjustTimeMs[k] = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[k];\r
-                                       // 2011.1.7 ikanick 修正\r
-                                       // this.演奏判定ライン座標.n判定位置[k] = CDTXMania.Instance.ConfigIni.e判定位置[k];//#31602 2013.6.23 yyagi\r
-                                       // this.演奏判定ライン座標.nJudgeLinePosYDelta[k] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[k];\r
                                        this.b演奏にキーボードを使った[k] = false;\r
                                        this.b演奏にジョイパッドを使った[k] = false;\r
                                        this.b演奏にMIDI入力を使った[k] = false;\r
@@ -411,31 +375,34 @@ namespace DTXMania
                                }\r
 \r
                                cInvisibleChip.Reset();\r
-                               base.On活性化();\r
-\r
-                               this.actPanel.SetPanelString(CDTXMania.Instance.DTX.TITLE + " (" + CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[CDTXMania.Instance.stage選曲.n確定された曲の難易度] + ")");\r
-                               this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay;                                                                      // #24239 2011.1.23 yyagi\r
-                               actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky);                                                                     // #23559 2011.7.28 yyagi\r
-                               e判定表示優先度 = CDTXMania.Instance.ConfigIni.e判定表示優先度;\r
-                               CDTXMania.Instance.Skin.tRemoveMixerAll();      // 効果音のストリームをミキサーから解除しておく\r
+                               string strLabel = CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[CDTXMania.Instance.stage選曲.n確定された曲の難易度];\r
+                               string strPanel = CDTXMania.Instance.DTX.TITLE;\r
+                               if (!string.IsNullOrWhiteSpace(strLabel))\r
+                               {\r
+                                       strPanel += "(" + strLabel + ")";\r
+                               }\r
+                               this.actPanel.SetPanelString(strPanel);\r
+                               actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky);\r
+                               // 効果音のストリームをミキサーから解除しておく\r
+                               CDTXMania.Instance.Skin.tRemoveMixerAll();\r
                                queueMixerSound = new Queue<STMixer>(64);\r
                                bIsDirectSound = (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound");\r
-                               bUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
                                this.bPAUSE = false;\r
 \r
                                if (CDTXMania.Instance.DTXVmode.Enabled)\r
                                {\r
                                        db再生速度 = CDTXMania.Instance.DTX.dbDTXVPlaySpeed;\r
-                                       CDTXMania.Instance.ConfigIni.n演奏速度 = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
+                                       CDTXMania.Instance.ConfigIni.nPlaySpeed.Value = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
                                }\r
                                else\r
                                {\r
-                                       db再生速度 = ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0;\r
+                                       db再生速度 = ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0;\r
                                }\r
 \r
                                bValidScore = (CDTXMania.Instance.DTXVmode.Enabled) ? false : true;\r
 \r
-                               cWailingChip = new CWailingChip共通[3];       // 0:未使用, 1:Gutiar, 2:Bass\r
+                               cWailingChip = new CWailingChip共通[3];\r
+                               // 0:未使用, 1:Gutiar, 2:Bass\r
                                cWailingChip[1] = new CWailingChip共通();\r
                                cWailingChip[2] = new CWailingChip共通();\r
 \r
@@ -445,7 +412,7 @@ namespace DTXMania
                                        //                              Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 +  ", time=" + pChip.n発声時刻ms );\r
                                        if (pChip.n発声時刻ms <= 0)\r
                                        {\r
-                                               if (pChip.eチャンネル番号 == Ech定義.MixerAdd)\r
+                                               if (pChip.eチャンネル番号 == EChannel.MixerAdd)\r
                                                {\r
                                                        pChip.bHit = true;\r
                                                        //                                              Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
@@ -470,13 +437,13 @@ namespace DTXMania
                                }\r
                                #endregion\r
 \r
-                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)  // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
+                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)  // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
                                {\r
                                        CDTXMania.Instance.DTX.SwapGuitarBassInfos();\r
                                }\r
 \r
 \r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                {\r
                                        // MODIFY_BEGIN #25398 2011.06.07 FROM\r
                                        if (CDTXMania.Instance.bコンパクトモード)\r
@@ -487,15 +454,14 @@ namespace DTXMania
                                        }\r
                                        else\r
                                        {\r
-                                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                                               if (CDTXMania.Instance.ConfigIni.b楽器有効(inst))\r
                                                {\r
-                                                       this.actGraph.dbTarget[inst] = CDTXMania.Instance.stage選曲.r確定されたスコア.譜面情報.最大スキル[inst];     // #24074 2011.01.23 add ikanick\r
+                                                       this.actGraph.dbTarget[inst] = CDTXMania.Instance.stage選曲.r確定されたスコア.譜面情報.最大スキル[inst];   // #24074 2011.01.23 add ikanick\r
 \r
-                                                       // #35411 2015.08.21 chnmr0 add\r
                                                        // ゴースト利用可のなとき、0で初期化\r
-                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None)\r
                                                        {\r
-                                                               if (CDTXMania.Instance.DTX.listTargetGhsotLag[E楽器パート.DRUMS] != null)\r
+                                                               if (CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null)\r
                                                                {\r
                                                                        this.actGraph.dbTarget[inst] = 0;\r
                                                                }\r
@@ -504,23 +470,32 @@ namespace DTXMania
                                        }\r
                                        // MODIFY_END #25398\r
                                }\r
+\r
+                               for (EPart part = EPart.Drums; part <= EPart.Bass; ++part)\r
+                               {\r
+                                       actOptionPanel.Pos[part] = new Coordinates.CXY(CDTXMania.Instance.ConfigIni.cdInstX[part][CDTXMania.Instance.ConfigIni.eActiveInst]\r
+                                               - CDTXMania.Instance.Coordinates.ImgOptionPanel.W, 0);\r
+                               }\r
+\r
+                               base.On活性化();\r
                        }\r
                }\r
                public override void On非活性化()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.L最後に再生したHHの実WAV番号.Clear();   // #23921 2011.1.4 yyagi\r
-                               this.L最後に再生したHHの実WAV番号 = null;    //\r
-                               for (E楽器パート i = 0; i <= E楽器パート.BASS; i++)\r
+                               // #23921 2011.1.4 yyagi\r
+                               L最後に再生したHHの実WAV番号.Clear();\r
+                               L最後に再生したHHの実WAV番号 = null;\r
+                               for (EPart i = 0; i <= EPart.Bass; i++)\r
                                {\r
-                                       this.queWailing[i].Clear();\r
-                                       this.queWailing[i] = null;\r
+                                       queWailing[i].Clear();\r
+                                       queWailing[i] = null;\r
                                }\r
-                               this.ctWailingチップ模様アニメ = null;\r
-                               this.ctチップ模様アニメ.Drums = null;\r
-                               this.ctチップ模様アニメ.Guitar = null;\r
-                               this.ctチップ模様アニメ.Bass = null;\r
+                               ctWailingチップ模様アニメ = null;\r
+                               ctチップ模様アニメ.Drums = null;\r
+                               ctチップ模様アニメ.Guitar = null;\r
+                               ctチップ模様アニメ.Bass = null;\r
                                queueMixerSound.Clear();\r
                                queueMixerSound = null;\r
                                cInvisibleChip.Dispose();\r
@@ -530,53 +505,53 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (base.b活性化してる)\r
-                       {\r
-                               this.txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chips.png"));\r
-                               this.txチップGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar chips.png"));\r
-                               this.txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar.png"));\r
-                               this.txヒットバーGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar guitar.png"));\r
-                               this.txWailing枠 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay wailing cursor.png"));\r
-                               this.t背景テクスチャの生成();\r
+                       if (b活性化してる)\r
+                       {\r
+                               txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chips.png"));\r
+                               txチップGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar chips.png"));\r
+                               txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar.png"));\r
+                               txヒットバーGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar guitar.png"));\r
+                               txWailing枠 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay wailing cursor.png"));\r
+                               t背景テクスチャの生成();\r
                                base.OnManagedリソースの作成();\r
                        }\r
 \r
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
-                               base.OnManagedリソースの解放();\r
                                TextureFactory.tテクスチャの解放(ref this.tx背景);\r
                                TextureFactory.tテクスチャの解放(ref this.txWailing枠);\r
                                TextureFactory.tテクスチャの解放(ref this.txヒットバーGB);\r
                                TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
                                TextureFactory.tテクスチャの解放(ref this.txチップGB);\r
                                TextureFactory.tテクスチャの解放(ref this.txチップ);\r
+                               base.OnManagedリソースの解放();\r
                        }\r
                }\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                bool bIsFinishedPlaying = false;\r
                                bool bIsFinishedFadeout = false;\r
 \r
-                               if (base.b初めての進行描画)\r
+                               if (b初めての進行描画)\r
                                {\r
-                                       this.PrepareAVITexture();\r
+                                       PrepareAVITexture();\r
 \r
                                        CSound管理.rc演奏用タイマ.tリセット();\r
                                        CDTXMania.Instance.Timer.tリセット();\r
                                        if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                        {\r
-                                               this.ctチップ模様アニメ.Drums = new CCounter(0, 0x30, 10, CDTXMania.Instance.Timer);\r
+                                               ctチップ模様アニメ.Drums = new CCounter(0, 0x30, 10, CDTXMania.Instance.Timer);\r
                                        }\r
                                        if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                                        {\r
-                                               this.ctチップ模様アニメ.Guitar = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
-                                               this.ctチップ模様アニメ.Bass = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
-                                               this.ctWailingチップ模様アニメ = new CCounter(0, 4, 50, CDTXMania.Instance.Timer);\r
+                                               ctチップ模様アニメ.Guitar = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
+                                               ctチップ模様アニメ.Bass = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
+                                               ctWailingチップ模様アニメ = new CCounter(0, 4, 50, CDTXMania.Instance.Timer);\r
                                        }\r
 \r
                                        // this.actChipFireD.Start( Eレーン.HH );    // #31554 2013.6.12 yyagi\r
@@ -585,9 +560,9 @@ namespace DTXMania
                                        // 一発Start()を掛けてJITの結果を生成させておく。\r
 \r
                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
-                                       this.actFI.tフェードイン開始();\r
+                                       actFI.tフェードイン開始();\r
 \r
-                                       if (CDTXMania.Instance.DTXVmode.Enabled)                        // DTXVモードなら\r
+                                       if (CDTXMania.Instance.DTXVmode.Enabled)\r
                                        {\r
                                                #region [ DTXV用の再生設定にする(全AUTOなど) ]\r
                                                tDTXV用の設定();\r
@@ -596,79 +571,118 @@ namespace DTXMania
                                        }\r
 \r
                                        CDTXMania.Instance.Sound管理.tDisableUpdateBufferAutomatically();\r
-                                       base.b初めての進行描画 = false;\r
+                                       b初めての進行描画 = false;\r
                                }\r
 \r
                                #region [ stage failed ]\r
-                               if (CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
+                               if (CDTXMania.Instance.ConfigIni.bStageFailed && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
                                {\r
                                        if (actGauge.IsFailed)\r
                                        {\r
-                                               this.actStageFailed.Start();\r
+                                               actStageFailed.Start();\r
                                                CDTXMania.Instance.DTX.t全チップの再生停止();\r
                                                base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
                                        }\r
                                }\r
                                #endregion\r
 \r
-                               this.t進行描画_背景();\r
-                               this.t進行描画_AVI();\r
-                               this.t進行描画_BGA();\r
-                               this.t進行描画_レーン();\r
-                               this.t進行描画_MIDIBGM();\r
-                               if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                               {\r
-                                       this.t進行描画_レーンフラッシュGB();\r
-                               }\r
-                               this.t進行描画_パネル文字列();\r
-                               this.t進行描画_スコア();\r
-                               this.t進行描画_ステータスパネル();\r
-                               this.t進行描画_ゲージ();\r
-                               this.t進行描画_グラフ();   // #24074 2011.01.23 add ikanick\r
-                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                               // Background\r
+                               if (CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                                {\r
-                                       this.t進行描画_レーンフラッシュD();\r
-                               }\r
-                               this.t進行描画_DANGER();\r
-                               this.t進行描画_判定ライン();\r
-                               if (this.e判定表示優先度 == E判定表示優先度.Chipより下)\r
-                               {\r
-                                       if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                                       if (tx背景 != null)\r
                                        {\r
-                                               this.t進行描画_RGBボタン();\r
+                                               tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
                                        }\r
-                                       this.t進行描画_判定文字列();\r
-                                       this.t進行描画_コンボ();\r
                                }\r
-                               this.t進行描画_WailingBonus();\r
-                               this.t進行描画_譜面スクロール速度();\r
-                               this.t進行描画_チップアニメ();\r
-                               bIsFinishedPlaying = this.t進行描画_チップ();\r
-                               this.t進行描画_演奏情報();\r
-                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.t進行描画_ドラムパッド();\r
-                               }\r
-                               if (this.e判定表示優先度 == E判定表示優先度.Chipより上)\r
+\r
+                               // AVI / BGA\r
+                               if (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED &&\r
+                                       base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                                       actAVI.t進行描画(\r
+                                               CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                               CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                               CDTXMania.Instance.Coordinates.Movie.W,\r
+                                               CDTXMania.Instance.Coordinates.Movie.H);\r
+                                       actBGA.On進行描画();\r
+                                       #region [MIDIBGM 処理?]\r
+                                       if (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED)\r
                                        {\r
-                                               this.t進行描画_RGBボタン();\r
+                                               CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
                                        }\r
-                                       this.t進行描画_判定文字列();\r
-                                       this.t進行描画_コンボ();\r
-                               }\r
+                                       #endregion\r
+                                       actLane.On進行描画();\r
+                                       actLaneFlushGB.On進行描画();\r
+                                       actPanel.On進行描画();\r
+                                       actScore.On進行描画();\r
+                                       actStatusPanels.On進行描画();\r
+                                       actOptionPanel.On進行描画();\r
+                                       actGauge.On進行描画();\r
+                                       actGraph.On進行描画();\r
+                                       actLaneFlushD.On進行描画();\r
+                                       actDANGER.t進行描画(actGauge.IsDanger);\r
+                                       act譜面スクロール速度.On進行描画();\r
+                                       t進行描画_判定ライン();\r
+                                       actWailingBonus.On進行描画();\r
+\r
+                                       // RGB, Judge, Combo (Priority Under Chip)\r
+                                       if (CDTXMania.Instance.ConfigIni.eJudgePriority == EJudgeDisplayPriority.Under)\r
+                                       {\r
+                                               actRGB.On進行描画();\r
+                                               actJudgeString.On進行描画();\r
+                                               actCombo.On進行描画();\r
+                                       }\r
+                                       t進行描画_チップアニメ();\r
+                                       bIsFinishedPlaying = t進行描画_チップ();\r
+                                       actPad.On進行描画();\r
 \r
-                               this.t進行描画_Wailing枠();\r
-                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.t進行描画_チップファイアD();\r
+                                       // RGB, Judge, Combo (Priority Over Chip)\r
+                                       if (CDTXMania.Instance.ConfigIni.eJudgePriority == EJudgeDisplayPriority.Over)\r
+                                       {\r
+                                               actRGB.On進行描画();\r
+                                               actJudgeString.On進行描画();\r
+                                               actCombo.On進行描画();\r
+                                       }\r
+\r
+                                       actChipFireD.On進行描画();\r
+                                       actChipFireGB.On進行描画();\r
+                                       actPlayInfo.On進行描画();\r
+\r
+                                       // Wailing\r
+                                       if ((CDTXMania.Instance.ConfigIni.eDark != EDark.Full) &&\r
+                                               CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                                       {\r
+                                               int GtWailingFrameX = CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtW) +\r
+                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.GtW) - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
+                                               int BsWailingFrameX = CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsW) +\r
+                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.BsW) - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
+                                               int GtWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Guitar, true, true);\r
+                                               int BsWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Bass, true, true);\r
+\r
+                                               if (txWailing枠 != null)\r
+                                               {\r
+                                                       if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+                                                       {\r
+                                                               txWailing枠.t2D描画(CDTXMania.Instance.Device, GtWailingFrameX, GtWailingFrameY);\r
+                                                       }\r
+                                                       if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+                                                       {\r
+                                                               txWailing枠.t2D描画(CDTXMania.Instance.Device, BsWailingFrameX, BsWailingFrameY);\r
+                                                       }\r
+                                               }\r
+                                       }\r
                                }\r
-                               if(CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+\r
+                               // Stage Failed\r
+                               if (((base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED) ||\r
+                                       (base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
+                                       ((actStageFailed.On進行描画() != 0) &&\r
+                                       (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)))\r
                                {\r
-                                       this.t進行描画_チップファイアGB();\r
+                                       eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
+                                       base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
+                                       actFO.tフェードアウト開始();\r
                                }\r
-                               this.t進行描画_STAGEFAILED();\r
 \r
                                bIsFinishedFadeout = this.t進行描画_フェードイン_アウト();\r
                                if (bIsFinishedPlaying && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
@@ -677,8 +691,8 @@ namespace DTXMania
                                        {\r
                                                if (CDTXMania.Instance.Timer.b停止していない)\r
                                                {\r
-                                                       this.actPanel.Stop();                           // PANEL表示停止\r
-                                                       CDTXMania.Instance.Timer.t一時停止();               // 再生時刻カウンタ停止\r
+                                                       actPanel.Stop();\r
+                                                       CDTXMania.Instance.Timer.t一時停止();\r
                                                }\r
                                                Thread.Sleep(5);\r
                                                // DTXCからの次のメッセージを待ち続ける\r
@@ -694,21 +708,20 @@ namespace DTXMania
 \r
                                                if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                                {\r
-                                                       r空打ちドラムチップ = new CChip[10];\r
-                                                       for (int i = 0; i < 10; i++)\r
+                                                       for (EPad pad = EPad.DrumsPadMin; pad < EPad.DrumsPadMax; pad++)\r
                                                        {\r
-                                                               r空打ちドラムチップ[i] = this.r空うちChip(E楽器パート.DRUMS, (Eパッド)i);\r
-                                                               if (r空打ちドラムチップ[i] == null)\r
+                                                               r空打ちドラムチップ[pad] = r空うちChip(EPart.Drums, pad);\r
+                                                               if (r空打ちドラムチップ[pad] == null)\r
                                                                {\r
-                                                                       r空打ちドラムチップ[i] = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(\r
-                                                                               CSound管理.rc演奏用タイマ.n現在時刻,\r
-                                                                               this.nパッド0Atoチャンネル0A[i],\r
-                                                                               this.nInputAdjustTimeMs.Drums);\r
+                                                                       r空打ちドラムチップ[pad] = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(\r
+                                                                                       CSound管理.rc演奏用タイマ.n現在時刻,\r
+                                                                                       EnumConverter.ChannelFromPad(pad),\r
+                                                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);\r
                                                                }\r
                                                        }\r
                                                }\r
 \r
-                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)          // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
+                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)      // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
                                                {\r
                                                        CScoreIni.C演奏記録 t;\r
                                                        t = record.Guitar;\r
@@ -750,11 +763,11 @@ namespace DTXMania
                }\r
 \r
                // その他\r
-               public CChip[] GetNoChipDrums()\r
+               public STPadValue<CChip> GetNoChipDrums()\r
                {\r
                        return r空打ちドラムチップ;\r
                }\r
-               public STDGBVALUE<CScoreIni.C演奏記録> Record\r
+               public STDGBSValue<CScoreIni.C演奏記録> Record\r
                {\r
                        get\r
                        {\r
@@ -815,11 +828,11 @@ namespace DTXMania
                /// </summary>\r
                protected void PrepareAVITexture()\r
                {\r
-                       if (CDTXMania.Instance.ConfigIni.bAVI有効)\r
+                       if (CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
                                {\r
-                                       if (pChip.eチャンネル番号 == Ech定義.Movie || pChip.eチャンネル番号 == Ech定義.MovieFull)\r
+                                       if (pChip.eチャンネル番号 == EChannel.Movie || pChip.eチャンネル番号 == EChannel.MovieFull)\r
                                        {\r
                                                // 最初に再生するAVIチップに合わせて、テクスチャを準備しておく\r
                                                if (pChip.rAVI != null)\r
@@ -832,7 +845,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected E判定 e指定時刻からChipのJUDGEを返す(long nTime, CChip pChip, int nInputAdjustTime, bool saveLag = true)\r
+               protected EJudge e指定時刻からChipのJUDGEを返す(long nTime, CChip pChip, int nInputAdjustTime, bool saveLag = true)\r
                {\r
                        if (pChip != null)\r
                        {\r
@@ -840,8 +853,9 @@ namespace DTXMania
                                int lag = (int)(nTime + nInputAdjustTime - pChip.n発声時刻ms);\r
                                if (saveLag)\r
                                {\r
-                                       pChip.nLag = lag;       // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
-                                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                                       pChip.nLag = lag;\r
+                                       // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+                                       if (pChip.e楽器パート != EPart.Unknown)\r
                                        {\r
                                                pChip.extendInfoForGhost = this.actCombo.dgbコンボ数[pChip.e楽器パート].n現在値 > 0 ? true : false;\r
                                        }\r
@@ -852,38 +866,39 @@ namespace DTXMania
                                //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
                                if (nDeltaTime <= CDTXMania.Instance.nPerfect範囲ms)\r
                                {\r
-                                       return E判定.Perfect;\r
+                                       return EJudge.Perfect;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nGreat範囲ms)\r
                                {\r
-                                       return E判定.Great;\r
+                                       return EJudge.Great;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nGood範囲ms)\r
                                {\r
-                                       return E判定.Good;\r
+                                       return EJudge.Good;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nPoor範囲ms)\r
                                {\r
-                                       return E判定.Poor;\r
+                                       return EJudge.Poor;\r
                                }\r
                        }\r
-                       return E判定.Miss;\r
+                       return EJudge.Miss;\r
                }\r
-               protected CChip r空うちChip(E楽器パート part, Eパッド pad)\r
+\r
+               protected CChip r空うちChip(EPart part, EPad pad)\r
                {\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
+                               case EPart.Drums:\r
                                        switch (pad)\r
                                        {\r
-                                               case Eパッド.HH:\r
+                                               case EPad.HH:\r
                                                        if (this.r現在の空うちドラムChip.HH != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.HH;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC)\r
                                                        {\r
-                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける)\r
+                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.LC_HH)\r
                                                                {\r
                                                                        return this.r現在の空うちドラムChip.HHO;\r
                                                                }\r
@@ -894,56 +909,56 @@ namespace DTXMania
                                                        }\r
                                                        return this.r現在の空うちドラムChip.LC;\r
 \r
-                                               case Eパッド.SD:\r
+                                               case EPad.SD:\r
                                                        return this.r現在の空うちドラムChip.SD;\r
 \r
-                                               case Eパッド.BD:\r
+                                               case EPad.BD:\r
                                                        return this.r現在の空うちドラムChip.BD;\r
 \r
-                                               case Eパッド.HT:\r
+                                               case EPad.HT:\r
                                                        return this.r現在の空うちドラムChip.HT;\r
 \r
-                                               case Eパッド.LT:\r
+                                               case EPad.LT:\r
                                                        if (this.r現在の空うちドラムChip.LT != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LT;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.FT;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.FT:\r
+                                               case EPad.FT:\r
                                                        if (this.r現在の空うちドラムChip.FT != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.FT;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LT;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.CY:\r
+                                               case EPad.CY:\r
                                                        if (this.r現在の空うちドラムChip.CY != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.CY;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.RD;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.HHO:\r
+                                               case EPad.HHO:\r
                                                        if (this.r現在の空うちドラムChip.HHO != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.HHO;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC)\r
                                                        {\r
-                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける)\r
+                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.LC_HH)\r
                                                                {\r
                                                                        return this.r現在の空うちドラムChip.HH;\r
                                                                }\r
@@ -954,23 +969,23 @@ namespace DTXMania
                                                        }\r
                                                        return this.r現在の空うちドラムChip.LC;\r
 \r
-                                               case Eパッド.RD:\r
+                                               case EPad.RD:\r
                                                        if (this.r現在の空うちドラムChip.RD != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.RD;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.CY;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.LC:\r
+                                               case EPad.LC:\r
                                                        if (this.r現在の空うちドラムChip.LC != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LC;\r
                                                        }\r
-                                                       if ((CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける) && (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.全部共通))\r
+                                                       if ((CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC) && (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.Group))\r
                                                        {\r
                                                                return null;\r
                                                        }\r
@@ -982,23 +997,26 @@ namespace DTXMania
                                        }\r
                                        break;\r
 \r
-                               case E楽器パート.GUITAR:\r
+                               case EPart.Guitar:\r
                                        return this.r現在の空うちギターChip;\r
 \r
-                               case E楽器パート.BASS:\r
+                               case EPart.Bass:\r
                                        return this.r現在の空うちベースChip;\r
                        }\r
                        return null;\r
                }\r
-               protected CChip r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(long nTime, Ech定義 eChannel, int nInputAdjustTime)\r
+\r
+               protected CChip r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(long nTime, EChannel eChannel, int nInputAdjustTime)\r
                {\r
                        return r指定時刻に一番近い未ヒットChip(nTime, eChannel, nInputAdjustTime, 0, HitState.DontCare);\r
                }\r
-               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, E楽器パート part)\r
+\r
+               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, EPart part)\r
                {\r
-                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, CDTXMania.Instance.ConfigIni.n手動再生音量);\r
+                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, CDTXMania.Instance.ConfigIni.nChipVolume);\r
                }\r
-               protected void tサウンド再生(CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ = false, bool b音程をずらして再生 = false)\r
+\r
+               protected void tサウンド再生(CChip pChip, long n再生開始システム時刻ms, EPart part, int n音量, bool bモニタ = false, bool b音程をずらして再生 = false)\r
                {\r
                        // mute sound (auto)\r
                        // 4A: HH\r
@@ -1014,7 +1032,7 @@ namespace DTXMania
                                bool overwrite = false;\r
                                switch (part)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
+                                       case EPart.Drums:\r
                                                #region [ DRUMS ]\r
                                                {\r
                                                        int index = -1;\r
@@ -1033,27 +1051,27 @@ namespace DTXMania
                                                        // 4D: 87: LC\r
                                                        // 2A: 88: Gt\r
                                                        // AA: 89: Bs\r
-                                                       else if (Ech定義.SE24 == pChip.eチャンネル番号)        // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要\r
+                                                       else if (EChannel.SE24 == pChip.eチャンネル番号)  // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要\r
                                                        {\r
                                                                index = 0;\r
                                                        }\r
-                                                       else if ((Ech定義.SE25 <= pChip.eチャンネル番号) && (pChip.eチャンネル番号 <= Ech定義.SE27))  // 仮に今だけ追加\r
+                                                       else if ((EChannel.SE25 <= pChip.eチャンネル番号) && (pChip.eチャンネル番号 <= EChannel.SE27))  // 仮に今だけ追加\r
                                                        {\r
                                                                pChip.ConvertSE25_26_27toCY_RCY_LCY();\r
-                                                               index = pChip.eチャンネル番号 - Ech定義.HiHatClose;\r
+                                                               index = pChip.nDrumsIndex;\r
                                                                overwrite = true;\r
                                                        }\r
                                                        else\r
                                                        {\r
                                                                return;\r
                                                        }\r
-                                                       int nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[index];\r
-                                                       if ((nLane == 1) &&     // 今回演奏するのがHC or HO\r
-                                                               (index == 0 || (\r
-                                                               index == 7 &&\r
-                                                               this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen &&\r
-                                                               this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen_Hidden))\r
-                                                               // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない\r
+                                                       EChannel actChannel = EChannel.HiHatClose + index;\r
+                                                       ELane nLane = EnumConverter.LaneFromChannel(actChannel);\r
+                                                       if ((nLane == ELane.HH) && // 今回演奏するのがHC or HO\r
+                                                                       (index == 0 || (index == 7 &&\r
+                                                                       this.e最後に再生したHHのチャンネル番号 != EChannel.HiHatOpen &&\r
+                                                                       this.e最後に再生したHHのチャンネル番号 != EChannel.HiHatOpen_Hidden))\r
+                                                       // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない\r
                                                        )\r
                                                        // #24772 2011.4.4 yyagi\r
                                                        // == HH mute condition == \r
@@ -1063,75 +1081,54 @@ namespace DTXMania
                                                        //                      HO      Yes     No\r
                                                        {\r
                                                                // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH)\r
+                                                               for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++)      // #23921 2011.1.4 yyagi\r
                                                                {\r
-#endif\r
-                                                               for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++)            // #23921 2011.1.4 yyagi\r
-                                                               {\r
-                                                                       // CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号);\r
-                                                                       CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]);    // #23921 yyagi ストック分全て消音する\r
+                                                                       CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]);    // #23921 yyagi ストック分全て消音する\r
                                                                }\r
                                                                this.L最後に再生したHHの実WAV番号.Clear();\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                                               }\r
-#endif\r
-                                                               //this.n最後に再生したHHの実WAV番号 = pChip.n整数値_内部番号;\r
                                                                this.e最後に再生したHHのチャンネル番号 = pChip.eチャンネル番号;\r
                                                        }\r
-#if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
-                                                       if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH)\r
+                                                       if (index == 0 || index == 7)\r
                                                        {\r
-#endif\r
-                                                       if (index == 0 || index == 7 || index == 0x20 || index == 0x27)                 // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
-                                                       {                                                                                                                                                       // #24772 HC, 不可視HCも消音キューに追加\r
-                                                               if (this.L最後に再生したHHの実WAV番号.Count >= 16)   // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える\r
-                                                               {                                                                                                       // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
+                                                               // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
+                                                               // #24772 HC, 不可視HCも消音キューに追加\r
+                                                               if (this.L最後に再生したHHの実WAV番号.Count >= 16)\r
+                                                               {\r
+                                                                       // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える\r
+                                                                       // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
                                                                        this.L最後に再生したHHの実WAV番号.RemoveAt(0);\r
                                                                }\r
-                                                               if (!this.L最後に再生したHHの実WAV番号.Contains(pChip.n整数値_内部番号))      // チップ音がまだストックされてなければ\r
+                                                               if (!this.L最後に再生したHHの実WAV番号.Contains(pChip.n整数値_内部番号))\r
                                                                {\r
-                                                                       this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値_内部番号);                        // ストックする\r
+                                                                       // チップ音がまだストックされてなければストックする                                                             \r
+                                                                       this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値_内部番号);\r
                                                                }\r
                                                        }\r
-#if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
-                                                       }\r
-#endif\r
                                                        if (overwrite)\r
                                                        {\r
-                                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号[index]);\r
+\r
+                                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号[EnumConverter.PadFromChannel(actChannel)]);\r
                                                        }\r
-                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ);\r
-                                                       this.n最後に再生した実WAV番号[nLane] = pChip.n整数値_内部番号;         // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意\r
+                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ);\r
+                                                       this.n最後に再生した実WAV番号[EnumConverter.PadFromLane(nLane)] = pChip.n整数値_内部番号;\r
+                                                       // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意\r
                                                        return;\r
                                                }\r
-                                               #endregion\r
-                                       case E楽器パート.GUITAR:\r
+                                       #endregion\r
+                                       case EPart.Guitar:\r
                                                #region [ GUITAR ]\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Guitar) {\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.Guitar);\r
-#if TEST_NOTEOFFMODE\r
-                                               }\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, (int)Eレーン.Guitar, n音量, bモニタ, b音程をずらして再生);\r
-                                               this.n最後に再生した実WAV番号.Guitar = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.GtPick);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ, b音程をずらして再生);\r
+                                               this.n最後に再生した実WAV番号.GtPick = pChip.n整数値_内部番号;\r
                                                return;\r
-                                               #endregion\r
-                                       case E楽器パート.BASS:\r
+                                       #endregion\r
+                                       case EPart.Bass:\r
                                                #region [ BASS ]\r
-#if TEST_NOTEOFFMODE\r
-                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass) {\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.Bass);\r
-#if TEST_NOTEOFFMODE\r
-                                               }\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, (int)Eレーン.Bass, n音量, bモニタ, b音程をずらして再生);\r
-                                               this.n最後に再生した実WAV番号.Bass = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.BsPick);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ, b音程をずらして再生);\r
+                                               this.n最後に再生した実WAV番号.BsPick = pChip.n整数値_内部番号;\r
                                                return;\r
-                                               #endregion\r
+                                       #endregion\r
 \r
                                        default:\r
                                                break;\r
@@ -1139,59 +1136,59 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected E判定 tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane = true)\r
+               protected EJudge tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane = true)\r
                {\r
                        pChip.bHit = true;\r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
                                cInvisibleChip.StartSemiInvisible(pChip.e楽器パート);\r
                        }\r
-                       bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState(bIsAutoPlay);// 2011.6.10 yyagi\r
-                       E判定 eJudgeResult = E判定.Auto;\r
+                       bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState();// 2011.6.10 yyagi\r
+                       EJudge eJudgeResult = EJudge.Auto;\r
 \r
                        // ゴースト処理 #35411 2015.08.20 chnmr0\r
-                       bool bIsPerfectGhost = CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] == EAutoGhostData.PERFECT ||\r
-                                       CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート] == null;\r
-                       int nInputAdjustTime = bPChipIsAutoPlay && bIsPerfectGhost ? 0 : this.nInputAdjustTimeMs[pChip.e楽器パート];\r
-                       eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime) : E判定.Miss;\r
+                       bool bIsPerfectGhost = CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] == EAutoGhostData.Perfect ||\r
+                                                       CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート] == null;\r
+                       int nInputAdjustTime = bPChipIsAutoPlay && bIsPerfectGhost ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[pChip.e楽器パート];\r
+                       eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime) : EJudge.Miss;\r
 \r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
-                               int nLane = -1;\r
+                               ELane nLane = ELane.Max;\r
                                switch (pChip.e楽器パート)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
-                                               nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[pChip.nDrumsIndex];\r
+                                       case EPart.Drums:\r
+                                               nLane = EnumConverter.LaneFromChannel(pChip.eチャンネル番号);\r
                                                break;\r
-                                       case E楽器パート.GUITAR:\r
-                                               nLane = 10;\r
+                                       case EPart.Guitar:\r
+                                               nLane = ELane.GtR;\r
                                                break;\r
-                                       case E楽器パート.BASS:\r
-                                               nLane = 11;\r
+                                       case EPart.Bass:\r
+                                               nLane = ELane.BsR;\r
                                                break;\r
                                }\r
-                               this.actJudgeString.Start(nLane, bPChipIsAutoPlay && bIsPerfectGhost ? E判定.Auto : eJudgeResult, pChip.nLag);\r
+                               this.actJudgeString.Start(nLane, bPChipIsAutoPlay && bIsPerfectGhost ? EJudge.Auto : eJudgeResult, pChip.nLag);\r
                        }\r
 \r
                        // ダメージ\r
-                       if (!bPChipIsAutoPlay && (pChip.e楽器パート != E楽器パート.UNKNOWN))\r
+                       if (!bPChipIsAutoPlay && (pChip.e楽器パート != EPart.Unknown))\r
                        {\r
                                actGauge.Damage(pChip.e楽器パート, eJudgeResult);\r
                        }\r
 \r
                        // インビジブル\r
-                       if (eJudgeResult == E判定.Poor || eJudgeResult == E判定.Miss || eJudgeResult == E判定.Bad)\r
+                       if (eJudgeResult == EJudge.Poor || eJudgeResult == EJudge.Miss || eJudgeResult == EJudge.Bad)\r
                        {\r
                                cInvisibleChip.ShowChipTemporally(pChip.e楽器パート);\r
                        }\r
 \r
                        // コンボ\r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
                                switch (eJudgeResult)\r
                                {\r
-                                       case E判定.Miss:\r
-                                       case E判定.Bad:\r
+                                       case EJudge.Miss:\r
+                                       case EJudge.Bad:\r
                                                this.nヒット数_Auto含む[pChip.e楽器パート].Miss++;\r
                                                if (!bPChipIsAutoPlay)\r
                                                {\r
@@ -1211,24 +1208,24 @@ namespace DTXMania
 \r
                                bool incrementCombo = false;\r
 \r
-                               if (pChip.e楽器パート == E楽器パート.DRUMS)\r
+                               if (pChip.e楽器パート == EPart.Drums)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay)\r
+                                       if (CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums) || !bPChipIsAutoPlay)\r
                                        {\r
                                                // Dr. : 演奏したレーンだけコンボを増やす\r
                                                incrementCombo = true;\r
                                        }\r
                                }\r
-                               else if (pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS)\r
+                               else if (pChip.e楽器パート == EPart.Guitar || pChip.e楽器パート == EPart.Bass)\r
                                {\r
                                        incrementCombo = true;\r
                                }\r
 \r
                                switch (eJudgeResult)\r
                                {\r
-                                       case E判定.Perfect:\r
-                                       case E判定.Great:\r
-                                       case E判定.Good:\r
+                                       case EJudge.Perfect:\r
+                                       case EJudge.Great:\r
+                                       case EJudge.Good:\r
                                                this.actCombo.dgbコンボ数[pChip.e楽器パート].IncrementCombo();\r
                                                break;\r
 \r
@@ -1239,76 +1236,74 @@ namespace DTXMania
                        }\r
 \r
                        // スコア\r
-                       if ((!bPChipIsAutoPlay && (pChip.e楽器パート != E楽器パート.UNKNOWN)) && (eJudgeResult != E判定.Miss) && (eJudgeResult != E判定.Bad))\r
+                       if ((!bPChipIsAutoPlay && (pChip.e楽器パート != EPart.Unknown)) && (eJudgeResult != EJudge.Miss) && (eJudgeResult != EJudge.Bad))\r
                        {\r
                                int nCombos = this.actCombo.dgbコンボ数[pChip.e楽器パート].n現在値;\r
                                long nScoreDelta = 0;\r
                                long[] nComboScoreDelta = new long[] { 350L, 200L, 50L, 0L };\r
-                               if ((nCombos <= 500) || (eJudgeResult == E判定.Good))\r
+                               if ((nCombos <= 500) || (eJudgeResult == EJudge.Good))\r
                                {\r
                                        nScoreDelta = nComboScoreDelta[(int)eJudgeResult] * nCombos;\r
                                }\r
-                               else if ((eJudgeResult == E判定.Perfect) || (eJudgeResult == E判定.Great))\r
+                               else if ((eJudgeResult == EJudge.Perfect) || (eJudgeResult == EJudge.Great))\r
                                {\r
                                        nScoreDelta = nComboScoreDelta[(int)eJudgeResult] * 500L;\r
                                }\r
-                               this.actScore.Add(pChip.e楽器パート, bIsAutoPlay, nScoreDelta);\r
+                               this.actScore.Add(pChip.e楽器パート, nScoreDelta);\r
                        }\r
 \r
                        // グラフ\r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
-                               E楽器パート inst = pChip.e楽器パート;\r
+                               EPart inst = pChip.e楽器パート;\r
                                // #24074 2011.01.23 add ikanick\r
                                this.actGraph.dbCurrent[inst] =\r
-                                       CScoreIni.t演奏型スキルを計算して返す(\r
-                                       CDTXMania.Instance.DTX.n可視チップ数[inst],\r
-                                       this.nヒット数_Auto含まない[inst].Perfect,\r
-                                       this.nヒット数_Auto含まない[inst].Great,\r
-                                       this.nヒット数_Auto含まない[inst].Good,\r
-                                       this.nヒット数_Auto含まない[inst].Poor,\r
-                                       this.nヒット数_Auto含まない[inst].Miss,\r
-                                       inst, bIsAutoPlay);\r
+                                               CScoreIni.t演奏型スキルを計算して返す(\r
+                                               CDTXMania.Instance.DTX.n可視チップ数[inst],\r
+                                               this.nヒット数_Auto含まない[inst].Perfect,\r
+                                               this.nヒット数_Auto含まない[inst].Great,\r
+                                               this.nヒット数_Auto含まない[inst].Good,\r
+                                               this.nヒット数_Auto含まない[inst].Poor,\r
+                                               this.nヒット数_Auto含まない[inst].Miss,\r
+                                               inst, true);\r
 \r
                                // #35411 2015.09.07 add chnmr0\r
                                if (\r
-                                       CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
-                                       CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.ONLINE &&\r
-                                       CDTXMania.Instance.DTX.n可視チップ数[inst] > 0)\r
+                                               CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
+                                               CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Online &&\r
+                                               CDTXMania.Instance.DTX.n可視チップ数[inst] > 0)\r
                                {\r
                                        // Online Stats の計算式\r
                                        this.actGraph.dbTarget[inst] = 100 *\r
-                                                                       (this.nヒット数_Auto含まない[inst].Perfect * 17 +\r
-                                                                        this.nヒット数_Auto含まない[inst].Great * 7 +\r
-                                                                        this.actCombo.dgbコンボ数[inst].n最高値 * 3) /\r
-                                                                        (20.0 * CDTXMania.Instance.DTX.n可視チップ数[inst]);\r
+                                                                                                       (this.nヒット数_Auto含まない[inst].Perfect * 17 +\r
+                                                                                                        this.nヒット数_Auto含まない[inst].Great * 7 +\r
+                                                                                                        this.actCombo.dgbコンボ数[inst].n最高値 * 3) /\r
+                                                                                                        (20.0 * CDTXMania.Instance.DTX.n可視チップ数[inst]);\r
                                }\r
                        }\r
                        return eJudgeResult;\r
                }\r
 \r
-               private void tチップのヒット処理_BadならびにTight時のMiss(E楽器パート part, int nLane = 0)\r
+               private void tチップのヒット処理_BadならびにTight時のMiss(EPart part, ELane nLane = ELane.LC)\r
                {\r
                        cInvisibleChip.StartSemiInvisible(part);\r
                        cInvisibleChip.ShowChipTemporally(part);\r
-                       actGauge.Damage(part, E判定.Miss);\r
+                       actGauge.Damage(part, EJudge.Miss);\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
-                                       if ((nLane >= 0) && (nLane <= 7))\r
-                                       {\r
-                                               this.actJudgeString.Start(nLane, bIsAutoPlay[nLane] ? E判定.Auto : E判定.Miss, 999);\r
-                                       }\r
+                               case EPart.Drums:\r
+                                       this.actJudgeString.Start(nLane, CDTXMania.Instance.ConfigIni.bAutoPlay[EnumConverter.PadFromLane(nLane)] ?\r
+                                                       EJudge.Auto : EJudge.Miss, 999);\r
                                        this.actCombo.dgbコンボ数.Drums.ResetCombo();\r
                                        return;\r
 \r
-                               case E楽器パート.GUITAR:\r
-                                       this.actJudgeString.Start(10, E判定.Bad, 999);\r
+                               case EPart.Guitar:\r
+                                       this.actJudgeString.Start(ELane.GtR, EJudge.Bad, 999);\r
                                        this.actCombo.dgbコンボ数.Guitar.ResetCombo();\r
                                        return;\r
 \r
-                               case E楽器パート.BASS:\r
-                                       this.actJudgeString.Start(11, E判定.Bad, 999);\r
+                               case EPart.Bass:\r
+                                       this.actJudgeString.Start(ELane.BsR, EJudge.Bad, 999);\r
                                        this.actCombo.dgbコンボ数.Bass.ResetCombo();\r
                                        break;\r
 \r
@@ -1325,12 +1320,12 @@ namespace DTXMania
                /// <param name="nInputAdjustTime"></param>\r
                /// <param name="n検索範囲時間ms">指定時刻から検索する範囲ms</param>\r
                /// <returns></returns>\r
-               protected CChip r指定時刻に一番近い未ヒットChip(long nTime, Ech定義 search, int nInputAdjustTime, int n検索範囲時間ms = 0, HitState hs = HitState.NotHit)\r
+               protected CChip r指定時刻に一番近い未ヒットChip(long nTime, EChannel search, int nInputAdjustTime, int n検索範囲時間ms = 0, HitState hs = HitState.NotHit)\r
                {\r
                        CChip ret = null;\r
 \r
                        nTime += nInputAdjustTime;\r
-                       if (this.n現在のトップChip >= 0 && this.n現在のトップChip < CDTXMania.Instance.DTX.listChip.Count)\r
+                       if (this.n現在のトップChip >= 0 && this.n現在のトップChip <= CDTXMania.Instance.DTX.listChip.Count)\r
                        {\r
                                int idxFuture = -1;\r
                                int idxPast = -1;\r
@@ -1338,15 +1333,15 @@ namespace DTXMania
                                Func<CChip, Func<CChip, bool>, bool> Found = (chip, futureOrPast) =>\r
                                {\r
                                        return futureOrPast(chip) &&\r
-                                               ((hs == HitState.NotHit && !chip.bHit) || (hs == HitState.Hit && chip.bHit) || (hs == HitState.DontCare)) &&\r
-                                               !chip.b空打ちチップである &&\r
-                                               (\r
-                                               ((search == chip.eチャンネル番号 || search + 0x20 == chip.eチャンネル番号) && chip.bDrums可視チップ_LP_LBD含まない) ||\r
-                                               (search == chip.eチャンネル番号 && chip.bGuitar可視チップ_Wailing含む) ||\r
-                                               (search == chip.eチャンネル番号 && chip.bBass可視チップ_Wailing含む) ||\r
-                                               (search == Ech定義.Guitar_WailingSound && chip.bGuitar可視チップ) ||\r
-                                               (search == Ech定義.Bass_WailingSound && chip.bBass可視チップ)\r
-                                               );\r
+                                                       ((hs == HitState.NotHit && !chip.bHit) || (hs == HitState.Hit && chip.bHit) || (hs == HitState.DontCare)) &&\r
+                                                       !chip.b空打ちチップである &&\r
+                                                       (\r
+                                                       ((search == chip.eチャンネル番号 || search + 0x20 == chip.eチャンネル番号) && chip.bDrums可視チップ_LP_LBD含まない) ||\r
+                                                       (search == chip.eチャンネル番号 && chip.bGuitar可視チップ_Wailing含む) ||\r
+                                                       (search == chip.eチャンネル番号 && chip.bBass可視チップ_Wailing含む) ||\r
+                                                       (search == EChannel.Guitar_WailingSound && chip.bGuitar可視チップ) ||\r
+                                                       (search == EChannel.Bass_WailingSound && chip.bBass可視チップ)\r
+                                                       );\r
                                };\r
                                Func<CChip, bool> Future = (chip) => { return chip.n発声時刻ms > nTime; };\r
                                Func<CChip, bool> Past = (chip) => { return chip.n発声時刻ms <= nTime; };\r
@@ -1424,70 +1419,65 @@ namespace DTXMania
                        return ret;\r
                }\r
 \r
-               protected CChip r次に来る指定楽器Chipを更新して返す(E楽器パート inst)\r
+               protected CChip r次に来る指定楽器Chipを更新して返す(EPart inst)\r
                {\r
                        CChip ret = null;\r
                        int nInputAdjustTime;\r
-                       if (inst == E楽器パート.GUITAR)\r
+                       if (inst == EPart.Guitar)\r
                        {\r
-                               nInputAdjustTime = this.bIsAutoPlay.GtPick ? 0 : this.nInputAdjustTimeMs.Guitar;\r
-                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, Ech定義.Guitar_WailingSound, nInputAdjustTime, 500);\r
+                               nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick ?\r
+                                               0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar;\r
+                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, EChannel.Guitar_WailingSound, nInputAdjustTime, 500);\r
                                this.r次にくるギターChip = ret;\r
                        }\r
-                       else if (inst == E楽器パート.BASS)\r
+                       else if (inst == EPart.Bass)\r
                        {\r
-                               nInputAdjustTime = this.bIsAutoPlay.BsPick ? 0 : this.nInputAdjustTimeMs.Bass;\r
-                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, Ech定義.Bass_WailingSound, nInputAdjustTime, 500);\r
+                               nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick ?\r
+                                               0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass;\r
+                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, EChannel.Bass_WailingSound, nInputAdjustTime, 500);\r
                                this.r次にくるベースChip = ret;\r
                        }\r
                        return ret;\r
                }\r
 \r
-               protected void ChangeInputAdjustTimeInPlaying(IInputDevice keyboard, int plusminus)             // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+               protected void ChangeInputAdjustTimeInPlaying(IInputDevice keyboard, int plusminus)     // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                {\r
-                       E楽器パート part;\r
+                       EPart part;\r
                        int offset = plusminus;\r
-                       if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift))      // Guitar InputAdjustTime\r
+                       if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift))  // Guitar InputAdjustTime\r
                        {\r
-                               part = E楽器パート.GUITAR;\r
+                               part = EPart.Guitar;\r
                        }\r
-                       else if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftAlt) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightAlt))     // Bass InputAdjustTime\r
+                       else if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftAlt) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightAlt)) // Bass InputAdjustTime\r
                        {\r
-                               part = E楽器パート.BASS;\r
+                               part = EPart.Bass;\r
                        }\r
                        else\r
                        {\r
                                // Drums InputAdjustTime\r
-                               part = E楽器パート.DRUMS;\r
+                               part = EPart.Drums;\r
                        }\r
                        if (!keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) && !keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl))\r
                        {\r
                                offset *= 10;\r
                        }\r
 \r
-                       this.nInputAdjustTimeMs[part] += offset;\r
-                       if (this.nInputAdjustTimeMs[part] > 99)\r
-                       {\r
-                               this.nInputAdjustTimeMs[part] = 99;\r
-                       }\r
-                       else if (this.nInputAdjustTimeMs[part] < -99)\r
-                       {\r
-                               this.nInputAdjustTimeMs[part] = -99;\r
-                       }\r
-                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part] = this.nInputAdjustTimeMs[part];\r
+                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part].Value = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part] + offset;\r
                }\r
 \r
                private void t入力処理_ドラム()\r
                {\r
-                       for (int nPad = 0; nPad < (int)Eパッド.MAX; nPad++)          // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。\r
-                       //                2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。\r
+                       for (EPad ePad = EPad.DrumsPadMin; ePad < EPad.DrumsPadMax; ePad++)        // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。\r
+                                                                                                                                                                                                                                                                                                                                //               2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。\r
                        {\r
-                               List<STInputEvent> listInputEvent = CDTXMania.Instance.Pad.GetEvents(E楽器パート.DRUMS, (Eパッド)nPad);\r
+                               List<STInputEvent> listInputEvent = CDTXMania.Instance.Pad.GetEvents(ePad);\r
 \r
                                if ((listInputEvent == null) || (listInputEvent.Count == 0))\r
+                               {\r
                                        continue;\r
+                               }\r
 \r
-                               this.t入力メソッド記憶(E楽器パート.DRUMS);\r
+                               this.t入力メソッド記憶(EPart.Drums);\r
 \r
                                #region [ 打ち分けグループ調整 ]\r
                                //-----------------------------\r
@@ -1495,25 +1485,25 @@ namespace DTXMania
                                EFTGroup eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
                                ECYGroup eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup;\r
 \r
-                               if (!CDTXMania.Instance.DTX.bチップがある.Ride && (eCYGroup == ECYGroup.打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.Ride && (eCYGroup == ECYGroup.None))\r
                                {\r
-                                       eCYGroup = ECYGroup.共通;\r
+                                       eCYGroup = ECYGroup.Group;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.全部打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.None))\r
                                {\r
-                                       eHHGroup = EHHGroup.左シンバルのみ打ち分ける;\r
+                                       eHHGroup = EHHGroup.LC_HH;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.ハイハットのみ打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.HO_HC))\r
                                {\r
-                                       eHHGroup = EHHGroup.全部共通;\r
+                                       eHHGroup = EHHGroup.Group;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.全部打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.None))\r
                                {\r
-                                       eHHGroup = EHHGroup.ハイハットのみ打ち分ける;\r
+                                       eHHGroup = EHHGroup.HO_HC;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.左シンバルのみ打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.LC_HH))\r
                                {\r
-                                       eHHGroup = EHHGroup.全部共通;\r
+                                       eHHGroup = EHHGroup.Group;\r
                                }\r
                                //-----------------------------\r
                                #endregion\r
@@ -1524,106 +1514,105 @@ namespace DTXMania
                                                continue;\r
 \r
                                        long nTime = inputEvent.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
-                                       int nPad09 = (nPad == (int)Eパッド.HP) ? (int)Eパッド.BD : nPad;          // #27029 2012.1.5 yyagi\r
-                                       int nInputAdjustTime = bIsAutoPlay[CStage演奏画面共通.nチャンネル0Atoレーン07[(int)nPad09]] ? 0 : nInputAdjustTimeMs.Drums;\r
-\r
+                                       EPad nPad09 = (ePad == EPad.HP) ? EPad.BD : ePad;      // #27029 2012.1.5 yyagi\r
+                                       int nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay[nPad09] ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
                                        bool bHitted = false;\r
 \r
                                        #region [ (A) ヒットしていればヒット処理して次の inputEvent へ ]\r
                                        //-----------------------------\r
-                                       switch (((Eパッド)nPad))\r
+                                       switch (ePad)\r
                                        {\r
-                                               case Eパッド.HH:\r
+                                               case EPad.HH:\r
                                                        #region [ HHとLC(groupingしている場合) のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
                                                                if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HH)\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // HiHat Close\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);   // HiHat Open\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // LC\r
-                                                               E判定 e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : E判定.Miss;\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // HiHat Close\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1); // HiHat Open\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // LC\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                       case EHHGroup.HO_HC:\r
                                                                                #region [ HCとLCのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                       case EHHGroup.LC_HH:\r
                                                                                #region [ HCとHOのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EHHGroup.全部共通:\r
+                                                                       case EHHGroup.Group:\r
                                                                                #region [ HC,HO,LCのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss)) && (e判定LC != E判定.Miss))\r
+                                                                               if (((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss)) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        CChip chip;\r
                                                                                        CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC };\r
@@ -1646,101 +1635,101 @@ namespace DTXMania
                                                                                                chipArray[1] = chipArray[2];\r
                                                                                                chipArray[2] = chip;\r
                                                                                        }\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[0], inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipArray[0], inputEvent.nVelocity);\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[1].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[1], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipArray[1], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[2].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[2], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipArray[2], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
                                                                        default:\r
                                                                                #region [ 全部打ち分け時のヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定HC != E判定.Miss)\r
+                                                                               if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
-                                                                       //-----------------------------\r
+                                                                               //-----------------------------\r
                                                                                #endregion\r
                                                                }\r
                                                                if (!bHitted)\r
@@ -1748,97 +1737,97 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.SD:\r
+                                               case EPad.SD:\r
                                                        #region [ SDのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.SD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (!this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Snare, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.SD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (!this.tドラムヒット処理(nTime, EPad.SD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Snare, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                break;\r
                                                        continue;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.BD:\r
+                                               case EPad.BD:\r
                                                        #region [ BDのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.BD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (!this.tドラムヒット処理(nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.BD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (!this.tドラムヒット処理(nTime, EPad.BD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                break;\r
                                                        continue;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HT:\r
+                                               case EPad.HT:\r
                                                        #region [ HTのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (this.tドラムヒット処理(nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HighTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (this.tドラムヒット処理(nTime, EPad.HT, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HighTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                continue;\r
                                                        break;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.LT:\r
+                                               case EPad.LT:\r
                                                        #region [ LTとFT(groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               E判定 e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : E判定.Miss;\r
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eFTGroup)\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
+                                                                       case EFTGroup.None:\r
                                                                                #region [ LTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定LT != E判定.Miss)\r
+                                                                               if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EFTGroup.共通:\r
+                                                                       case EFTGroup.Group:\r
                                                                                #region [ LTとFTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定LT != E判定.Miss) && (e判定FT != E判定.Miss))\r
+                                                                               if ((e判定LT != EJudge.Miss) && (e判定FT != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipLT.n発声位置 < chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipLT.n発声位置 > chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LT != E判定.Miss)\r
+                                                                               else if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定FT != E判定.Miss)\r
+                                                                               else if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
-                                                                       //-----------------------------\r
+                                                                               //-----------------------------\r
                                                                                #endregion\r
                                                                }\r
                                                                if (!bHitted)\r
@@ -1846,60 +1835,60 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.FT:\r
+                                               case EPad.FT:\r
                                                        #region [ FTとLT(groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.FT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               E判定 e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : E判定.Miss;\r
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.FT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eFTGroup)\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
+                                                                       case EFTGroup.None:\r
                                                                                #region [ FTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定FT != E判定.Miss)\r
+                                                                               if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                //-----------------------------\r
                                                                                #endregion\r
                                                                                break;\r
 \r
-                                                                       case EFTGroup.共通:\r
+                                                                       case EFTGroup.Group:\r
                                                                                #region [ FTとLTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定LT != E判定.Miss) && (e判定FT != E判定.Miss))\r
+                                                                               if ((e判定LT != EJudge.Miss) && (e判定FT != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipLT.n発声位置 < chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipLT.n発声位置 > chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LT != E判定.Miss)\r
+                                                                               else if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定FT != E判定.Miss)\r
+                                                                               else if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                //-----------------------------\r
@@ -1911,34 +1900,34 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.CY:\r
+                                               case EPad.CY:\r
                                                        #region [ CY(とLCとRD:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.CY)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
-                                                               E判定 e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : E判定.Miss;\r
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.CY)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipCY, chipRD, chipLC };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                               const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定CY, e判定RD, e判定LC };\r
+                                                               const int NumOfChips = 3;   // chipArray.GetLength(0)\r
 \r
                                                                // CY/RD/LC群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eCYGroup)\r
                                                                {\r
-                                                                       case ECYGroup.打ち分ける:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.None:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
-                                                                                       if (e判定CY != E判定.Miss)\r
+                                                                                       if (e判定CY != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipCY, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipCY, inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                        }\r
                                                                                        if (!bHitted)\r
@@ -1947,31 +1936,31 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipLC)))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipLC)))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
                                                                                        //num10++;\r
                                                                                }\r
-                                                                               if (e判定CY != E判定.Miss)\r
+                                                                               if (e判定CY != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipCY, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipCY, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case ECYGroup.共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -1982,9 +1971,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if (e判定Array[i] != E判定.Miss)\r
+                                                                                       if (e判定Array[i] != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -1998,99 +1987,99 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HHO:\r
+                                               case EPad.HHO:\r
                                                        #region [ HO(とHCとLC:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
                                                                if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HH)\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               E判定 e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : E判定.Miss;\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                               if (e判定HO != E判定.Miss)\r
+                                                                       case EHHGroup.None:\r
+                                                                               if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                       case EHHGroup.HO_HC:\r
+                                                                               if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                       case EHHGroup.LC_HH:\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if (((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss)) && (e判定LC != E判定.Miss))\r
+                                                                       case EHHGroup.Group:\r
+                                                                               if (((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss)) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        CChip chip;\r
                                                                                        CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC };\r
@@ -2113,81 +2102,81 @@ namespace DTXMania
                                                                                                chipArray[1] = chipArray[2];\r
                                                                                                chipArray[2] = chip;\r
                                                                                        }\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[0], inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipArray[0], inputEvent.nVelocity);\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[1].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[1], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipArray[1], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[2].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[2], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipArray[2], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
@@ -2199,44 +2188,44 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.RD:\r
+                                               case EPad.RD:\r
                                                        #region [ RD(とCYとLC:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.RD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
-                                                               E判定 e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : E判定.Miss;\r
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.RD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipCY, chipRD, chipLC };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                               const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定CY, e判定RD, e判定LC };\r
+                                                               const int NumOfChips = 3;   // chipArray.GetLength(0)\r
 \r
                                                                // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eCYGroup)\r
                                                                {\r
-                                                                       case ECYGroup.打ち分ける:\r
-                                                                               if (e判定RD != E判定.Miss)\r
+                                                                       case ECYGroup.None:\r
+                                                                               if (e判定RD != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.RD, chipRD, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.RD, chipRD, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
 \r
-                                                                       case ECYGroup.共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -2245,9 +2234,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if (e判定Array[i] != E判定.Miss)\r
+                                                                                       if (e判定Array[i] != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2261,39 +2250,39 @@ namespace DTXMania
                                                                break;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.LC:\r
+                                               case EPad.LC:\r
                                                        #region [ LC(とHC/HOとCYと:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LC)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // HC\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);   // HO\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // LC\r
-                                                               CChip chipCY = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
-                                                               CChip chipRD = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
-                                                               E判定 e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : E判定.Miss;\r
-                                                               E判定 e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : E判定.Miss;\r
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LC)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // HC\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1); // HO\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // LC\r
+                                                               CChip chipCY = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               CChip chipRD = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
-                                                               const int NumOfChips = 5;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
+                                                               const int NumOfChips = 5;   // chipArray.GetLength(0)\r
 \r
                                                                // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case EHHGroup.None:\r
+                                                                       case EHHGroup.LC_HH:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
-                                                                                       if (e判定LC != E判定.Miss)\r
+                                                                                       if (e判定LC != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipLC, inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                        }\r
                                                                                        if (!bHitted)\r
@@ -2302,9 +2291,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipCY)) || ((chipArray[i] == chipRD) && (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通))))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipCY)) || ((chipArray[i] == chipRD) && (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group))))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2313,15 +2302,15 @@ namespace DTXMania
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case EHHGroup.HO_HC:\r
+                                                                       case EHHGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipHC)) || (chipArray[i] == chipHO)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipHC)) || (chipArray[i] == chipHO)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -2332,9 +2321,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] != chipRD) || (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] != chipRD) || (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2349,16 +2338,16 @@ namespace DTXMania
                                                                break;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HP:             // #27029 2012.1.4 from\r
+                                               case EPad.HP:       // #27029 2012.1.4 from\r
                                                        #region [ HPのヒット処理 ]\r
                                                        //-----------------\r
-                                                       if (CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.どっちもBD)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group)\r
                                                        {\r
                                                                #region [ BDとみなしてヒット処理 ]\r
                                                                //-----------------\r
-                                                               if (!this.tドラムヒット処理(nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                               if (!this.tドラムヒット処理(nTime, EPad.BD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                        break;\r
                                                                continue;\r
                                                                //-----------------\r
@@ -2368,64 +2357,64 @@ namespace DTXMania
                                                        {\r
                                                                #region [ HPのヒット処理 ]\r
                                                                //-----------------\r
-                                                               continue;       // 何もしない。この入力を完全に無視するので、break しないこと。\r
-                                                               //-----------------\r
+                                                               continue;   // 何もしない。この入力を完全に無視するので、break しないこと。\r
+                                                                                                               //-----------------\r
                                                                #endregion\r
                                                        }\r
-                                               //-----------------\r
+                                                       //-----------------\r
                                                        #endregion\r
                                        }\r
                                        //-----------------------------\r
                                        #endregion\r
                                        #region [ (B) ヒットしてなかった場合は、レーンフラッシュ、パッドアニメ、空打ち音再生を実行 ]\r
                                        //-----------------------------\r
-                                       int pad = nPad; // 以下、nPad の代わりに pad を用いる。(成りすまし用)\r
+                                       EPad pad = ePad; // 以下、nPad の代わりに pad を用いる。(成りすまし用)\r
 \r
-                                       if (nPad == (int)Eパッド.HP) // #27029 2012.1.4 from: HP&BD 時の HiHatPedal の場合は BD に成りすます。\r
-                                               pad = (int)Eパッド.BD;               //( HP|BD 時のHP入力はここまでこないので無視。)\r
+                                       if (ePad == EPad.HP)\r
+                                       {\r
+                                               // #27029 2012.1.4 from: HP&BD 時の HiHatPedal の場合は BD に成りすます。\r
+                                               pad = EPad.BD;\r
+                                               //( HP|BD 時のHP入力はここまでこないので無視。)\r
+                                       }\r
 \r
                                        // レーンフラッシュ\r
-                                       this.actLaneFlushD.Start((Eレーン)this.nパッド0Atoレーン07[pad], ((float)inputEvent.nVelocity) / 127f);\r
+                                       this.actLaneFlushD.Start(EnumConverter.LaneFromPad(pad), ((float)inputEvent.nVelocity) / 127f);\r
+\r
+                                       // パッド画像のヒット処理用\r
 \r
                                        // パッドアニメ\r
-                                       this.actPad.Hit(this.nパッド0Atoパッド08[pad]);\r
+                                       this.actPad.Hit(pad);\r
 \r
                                        // 空打ち音\r
-                                       if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bDrumsHitSound)\r
                                        {\r
-                                               CChip rChip = this.r空うちChip(E楽器パート.DRUMS, (Eパッド)pad);\r
+                                               CChip rChip = this.r空うちChip(EPart.Drums, pad);\r
                                                if (rChip != null)\r
                                                {\r
-                                                       #region [ (B1) 空打ち音が譜面で指定されているのでそれを再生する。]\r
-                                                       //-----------------\r
-                                                       this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
-                                                       //-----------------\r
-                                                       #endregion\r
+                                                       // (B1) 空打ち音が譜面で指定されているのでそれを再生する。\r
+                                                       this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                                                }\r
                                                else\r
                                                {\r
                                                        #region [ (B2) 空打ち音が指定されていないので一番近いチップを探して再生する。]\r
-                                                       //-----------------\r
-                                                       switch (((Eパッド)pad))\r
+                                                       switch (pad)\r
                                                        {\r
-                                                               case Eパッド.HH:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.HH:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       case EHHGroup.HO_HC:\r
                                                                                                rChip = (chipHC != null) ? chipHC : chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = (chipHC != null) ? chipHC : chipHO;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipHC != null)\r
                                                                                                {\r
                                                                                                        rChip = chipHC;\r
@@ -2453,77 +2442,61 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.LT:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.LT:\r
                                                                        {\r
-                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[4], nInputAdjustTime);\r
-                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[5], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.打ち分ける)\r
+                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LowTom, nInputAdjustTime);\r
+                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.FloorTom, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.None)\r
                                                                                        rChip = (chipLT != null) ? chipLT : chipFT;\r
                                                                                else\r
                                                                                        rChip = chipLT;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.FT:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.FT:\r
                                                                        {\r
-                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[4], nInputAdjustTime);\r
-                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[5], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.打ち分ける)\r
+                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LowTom, nInputAdjustTime);\r
+                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.FloorTom, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.None)\r
                                                                                        rChip = (chipFT != null) ? chipFT : chipLT;\r
                                                                                else\r
                                                                                        rChip = chipFT;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.CY:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.CY:\r
                                                                        {\r
-                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[6], nInputAdjustTime);\r
-                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[8], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.打ち分ける)\r
+                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.Cymbal, nInputAdjustTime);\r
+                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.RideCymbal, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.None)\r
                                                                                        rChip = (chipCY != null) ? chipCY : chipRD;\r
                                                                                else\r
                                                                                        rChip = chipCY;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.HHO:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.HHO:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.全部打ち分ける:\r
+                                                                                       case EHHGroup.None:\r
                                                                                                rChip = chipHO;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       case EHHGroup.HO_HC:\r
                                                                                                rChip = (chipHO != null) ? chipHO : chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = (chipHO != null) ? chipHO : chipHC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipHO != null)\r
                                                                                                {\r
                                                                                                        rChip = chipHO;\r
@@ -2547,41 +2520,33 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.RD:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.RD:\r
                                                                        {\r
-                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[6], nInputAdjustTime);\r
-                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[8], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.打ち分ける)\r
+                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.Cymbal, nInputAdjustTime);\r
+                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.RideCymbal, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.None)\r
                                                                                        rChip = (chipRD != null) ? chipRD : chipCY;\r
                                                                                else\r
                                                                                        rChip = chipRD;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.LC:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.LC:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.None:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.HO_HC:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipLC != null)\r
                                                                                                {\r
                                                                                                        rChip = chipLC;\r
@@ -2605,22 +2570,16 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
                                                                default:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
-                                                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[pad], nInputAdjustTime);\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
+                                                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EnumConverter.ChannelFromPad(pad), nInputAdjustTime);\r
                                                                        break;\r
                                                        }\r
                                                        if (rChip != null)\r
                                                        {\r
                                                                // 空打ち音が見つかったので再生する。\r
-                                                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
+                                                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                                                        }\r
                                                        //-----------------\r
                                                        #endregion\r
@@ -2629,8 +2588,8 @@ namespace DTXMania
 \r
                                        // BAD or TIGHT 時の処理。\r
                                        if (CDTXMania.Instance.ConfigIni.bTight)\r
-                                               this.tチップのヒット処理_BadならびにTight時のMiss(E楽器パート.DRUMS, this.nパッド0Atoレーン07[pad]);\r
-                                       //-----------------------------\r
+                                               this.tチップのヒット処理_BadならびにTight時のMiss(EPart.Drums, EnumConverter.LaneFromPad(pad));//nパッド0Atoレーン07[(int)pad]\r
+                                                                                                                                                                                                                                                                                                                                                                               //-----------------------------\r
                                        #endregion\r
                                }\r
                        }\r
@@ -2638,23 +2597,23 @@ namespace DTXMania
 \r
                private void ドラムスクロール速度アップ()\r
                {\r
-                       int scrollSpeed = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums;\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = Math.Min(scrollSpeed + 1, 1999);\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums;\r
+                       CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums.Value = scrollSpeed + 1;\r
                        float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums / (scrollSpeed + 1);\r
-                       if (scrollSpeed < CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums)\r
+                       if (scrollSpeed < CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums = (int)(f * (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1) + 0.5);\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = ((int)(f * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1) + 0.5));\r
                        }\r
                }\r
 \r
                private void ドラムスクロール速度ダウン()\r
                {\r
-                       int scrollSpeed = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums;\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = Math.Max(scrollSpeed - 1, 0);\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums;\r
+                       CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums.Value = (scrollSpeed - 1);\r
                        float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums / (scrollSpeed + 1);\r
-                       if (scrollSpeed > CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums)\r
+                       if (scrollSpeed > CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums = (int)(f * (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1) + 0.5);\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = ((int)(f * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1) + 0.5));\r
                        }\r
                }\r
 \r
@@ -2664,8 +2623,8 @@ namespace DTXMania
                {\r
                        IInputDevice keyboard = CDTXMania.Instance.Input管理.Keyboard;\r
                        if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1) &&\r
-                               (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)))\r
-                       {       // shift+f1 (pause)\r
+                                       (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)))\r
+                       {   // shift+f1 (pause)\r
                                this.bPAUSE = !this.bPAUSE;\r
                                if (this.bPAUSE)\r
                                {\r
@@ -2689,15 +2648,15 @@ namespace DTXMania
 \r
                                                if ((pChip.n発声時刻ms + nDuration > 0) && (pChip.n発声時刻ms <= nStartTime_) && (nStartTime_ <= pChip.n発声時刻ms + nDuration))\r
                                                {\r
-                                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
+                                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
                                                        {\r
                                                                CDTX.CWAV wc;\r
                                                                bool b = CDTXMania.Instance.DTX.listWAV.TryGetValue(pChip.n整数値_内部番号, out wc);\r
                                                                if (!b) continue;\r
 \r
-                                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGM音を発声する) || (!wc.bIsBGMSound))\r
+                                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGMPlay) || (!wc.bIsBGMSound))\r
                                                                {\r
-                                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                                        #region [ PAUSEする ]\r
                                                                        int j = wc.n現在再生中のサウンド番号;\r
                                                                        if (wc.rSound[j] != null)\r
@@ -2729,58 +2688,59 @@ namespace DTXMania
                                }\r
                                if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                                {\r
-                                       this.t入力処理_ギターベース(E楽器パート.GUITAR);\r
-                                       this.t入力処理_ギターベース(E楽器パート.BASS);\r
+                                       this.t入力処理_ギターベース(EPart.Guitar);\r
+                                       this.t入力処理_ギターベース(EPart.Bass);\r
                                }\r
 \r
                                if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.UpArrow) && (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)))\r
-                               {       // shift (+ctrl) + UpArrow (BGMAdjust)\r
+                               {   // shift (+ctrl) + UpArrow (BGMAdjust)\r
                                        CDTXMania.Instance.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl)) ? 1 : 10);\r
                                        CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.DownArrow) && (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)))\r
-                               {       // shift + DownArrow (BGMAdjust)\r
+                               {   // shift + DownArrow (BGMAdjust)\r
                                        CDTXMania.Instance.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl)) ? -1 : -10);\r
                                        CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.UpArrow))\r
-                               {       // UpArrow(scrollspeed up)\r
+                               {   // UpArrow(scrollspeed up)\r
                                        ドラムスクロール速度アップ();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.DownArrow))\r
-                               {       // DownArrow (scrollspeed down)\r
+                               {   // DownArrow (scrollspeed down)\r
                                        ドラムスクロール速度ダウン();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Delete))\r
-                               {       // del (debug info)\r
-                                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = !CDTXMania.Instance.ConfigIni.b演奏情報を表示する;\r
+                               {   // del (debug info)\r
+                                       CDTXMania.Instance.ConfigIni.bDebugInfo.Value = !CDTXMania.Instance.ConfigIni.bDebugInfo;\r
                                }\r
-                               else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))                // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+                               else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))      // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                                {\r
                                        ChangeInputAdjustTimeInPlaying(keyboard, -1);\r
                                }\r
-                               else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))               // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+                               else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow))     // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                                {\r
                                        ChangeInputAdjustTimeInPlaying(keyboard, +1);\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F5))\r
                                {\r
-                                       int n描画遅延ms = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums;\r
-                                       n描画遅延ms = Math.Max(n描画遅延ms - 1, -99);\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass = n描画遅延ms;\r
+                                       int nVal = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums - 1;\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = nVal;\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F6))\r
                                {\r
-                                       int n描画遅延ms = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums;\r
-                                       n描画遅延ms = Math.Min(n描画遅延ms + 1, 99);\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass = n描画遅延ms;\r
+                                       int nVal = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums + 1;\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = nVal;\r
                                }\r
-                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_通常状態) && (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.Instance.Pad.b押されたGB(Eパッド.FT)))\r
-                               {       // escape (exit)\r
+                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_通常状態) &&\r
+                                               (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) ||\r
+                                               CDTXMania.Instance.Pad.bCancelPadIsPressedGB()))\r
+                               {\r
+                                       // escape (exit)\r
                                        this.actFO.tフェードアウト開始();\r
                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                        this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
@@ -2788,7 +2748,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected void t入力メソッド記憶(E楽器パート part)\r
+               protected void t入力メソッド記憶(EPart part)\r
                {\r
                        if (CDTXMania.Instance.Pad.st検知したデバイス.Keyboard)\r
                        {\r
@@ -2808,69 +2768,6 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private void t進行描画_DANGER()\r
-               {\r
-                       this.actDANGER.t進行描画(actGauge.IsDanger);\r
-               }\r
-               protected void t進行描画_MIDIBGM()\r
-               {\r
-                       if (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED)\r
-                       {\r
-                               CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
-                       }\r
-               }\r
-               protected void t進行描画_RGBボタン()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
-                       {\r
-                               this.actRGB.On進行描画();\r
-                       }\r
-               }\r
-               protected void t進行描画_STAGEFAILED()\r
-               {\r
-                       if (((base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED) || (base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) && ((this.actStageFailed.On進行描画() != 0) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)))\r
-                       {\r
-                               this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
-                               base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
-                               this.actFO.tフェードアウト開始();\r
-                       }\r
-               }\r
-               protected void t進行描画_WailingBonus()\r
-               {\r
-                       if ((base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
-                       {\r
-                               this.actWailingBonus.On進行描画();\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_チップファイアGB()\r
-               {\r
-                       this.actChipFireGB.On進行描画();\r
-               }\r
-\r
-               protected void t進行描画_ゲージ()\r
-               {\r
-                       if (((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.HALF) && (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)) && ((base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)))\r
-                       {\r
-                               this.actGauge.On進行描画();\r
-                       }\r
-               }\r
-\r
-\r
-               protected void t進行描画_コンボ()\r
-               {\r
-                       this.actCombo.On進行描画();\r
-               }\r
-\r
-               protected void t進行描画_スコア()\r
-               {\r
-                       this.actScore.On進行描画();\r
-               }\r
-\r
-               protected void t進行描画_ステータスパネル()\r
-               {\r
-                       this.actStatusPanels.On進行描画();\r
-               }\r
                /// <summary>\r
                /// チップに関連する処理を行う。\r
                /// </summary>\r
@@ -2890,11 +2787,11 @@ namespace DTXMania
                                return true;\r
                        }\r
 \r
-                       CDTX dTX = CDTXMania.Instance.DTX;\r
-                       CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
-                       for (int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++)\r
+                       //CDTX dTX = CDTXMania.Instance.DTX;\r
+                       //CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
+                       for (int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < CDTXMania.Instance.DTX.listChip.Count; nCurrentTopChip++)\r
                        {\r
-                               CChip pChip = dTX.listChip[nCurrentTopChip];\r
+                               CChip pChip = CDTXMania.Instance.DTX.listChip[nCurrentTopChip];\r
                                //Debug.WriteLine( "nCurrentTopChip=" + nCurrentTopChip + ", ch=" + pChip.nチャンネル番号.ToString("x2") + ", 発音位置=" + pChip.n発声位置 + ", 発声時刻ms=" + pChip.n発声時刻ms );\r
                                pChip.CalcDistanceFromBar(CSound管理.rc演奏用タイマ.n現在時刻, this.act譜面スクロール速度.db現在の譜面スクロール速度);\r
                                if (Math.Min(Math.Min(pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar), pChip.nバーからの距離dot.Bass) > 450 * Scale.Y)\r
@@ -2902,30 +2799,30 @@ namespace DTXMania
                                        break;\r
                                }\r
                                // #28026 2012.4.5 yyagi; 信心ワールドエンドの曲終了後リザルトになかなか行かない問題の修正\r
-                               if ((dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Drums < -65 * Scale.Y) &&     // 小節線の消失処理などに影響するため、\r
-                                       (dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Guitar < -65 * Scale.Y) &&        // Drumsのスクロールスピードだけには依存させない。\r
-                                       (dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Bass < -65 * Scale.Y) &&\r
-                                       dTX.listChip[this.n現在のトップChip].bHit)\r
+                               if ((CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Drums < -65 * Scale.Y) &&   // 小節線の消失処理などに影響するため、\r
+                                               (CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Guitar < -65 * Scale.Y) &&  // Drumsのスクロールスピードだけには依存させない。\r
+                                               (CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Bass < -65 * Scale.Y) &&\r
+                                               CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].bHit)\r
                                {\r
                                        ++this.n現在のトップChip;\r
                                        continue;\r
                                }\r
-                               bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState(bIsAutoPlay);\r
+                               bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState();\r
 \r
-                               int nInputAdjustTime = (bPChipIsAutoPlay || (pChip.e楽器パート == E楽器パート.UNKNOWN)) ? 0 : this.nInputAdjustTimeMs[pChip.e楽器パート];\r
+                               int nInputAdjustTime = (bPChipIsAutoPlay || (pChip.e楽器パート == EPart.Unknown)) ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[pChip.e楽器パート];\r
 \r
-                               E楽器パート inst = pChip.e楽器パート;\r
-                               if (((pChip.e楽器パート != E楽器パート.UNKNOWN) && !pChip.bHit) &&\r
-                                               ((pChip.nバーからの距離dot[inst] < -40 * Scale.Y) &&\r
-                                       (this.e指定時刻からChipのJUDGEを返す(CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime) == E判定.Miss)))\r
+                               EPart inst = pChip.e楽器パート;\r
+                               if (((pChip.e楽器パート != EPart.Unknown) && !pChip.bHit) &&\r
+                                                               ((pChip.nバーからの距離dot[inst] < -40 * Scale.Y) &&\r
+                                               (this.e指定時刻からChipのJUDGEを返す(CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime) == EJudge.Miss)))\r
                                {\r
-                                       this.tチップのヒット処理(CSound管理.rc演奏用タイマ.n現在時刻, pChip);      //チップ消失(Hitせずスルーした場合)\r
+                                       this.tチップのヒット処理(CSound管理.rc演奏用タイマ.n現在時刻, pChip);    //チップ消失(Hitせずスルーした場合)\r
                                }\r
-                               if (((pChip.e楽器パート != E楽器パート.UNKNOWN) && !pChip.bHit) &&\r
-                                       ((pChip.nバーからの距離dot[inst] + CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] < 0)))\r
+                               if (((pChip.e楽器パート != EPart.Unknown) && !pChip.bHit) &&\r
+                                               ((pChip.nバーからの距離dot[inst] + CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] < 0)))\r
                                {\r
                                        //Debug.WriteLine( "透明度=" + pChip.n透明度 );\r
-                                       pChip.n透明度 -= 12;         // チップが判定バーを越えたら、徐々に透明にする。VSyncWaitの有無で加減が変わるが・・\r
+                                       pChip.n透明度 -= 12;       // チップが判定バーを越えたら、徐々に透明にする。VSyncWaitの有無で加減が変わるが・・\r
                                        if (pChip.n透明度 < 0)\r
                                        {\r
                                                pChip.n透明度 = 0;\r
@@ -2933,10 +2830,10 @@ namespace DTXMania
                                }\r
 \r
                                // #35411 chnmr0 add (ターゲットゴースト)\r
-                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.NONE &&\r
-                                                CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
-                                                pChip.e楽器パート != E楽器パート.UNKNOWN &&\r
-                                                pChip.nバーからの距離dot[inst] < 0)\r
+                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None &&\r
+                                                                CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
+                                                                pChip.e楽器パート != EPart.Unknown &&\r
+                                                                pChip.nバーからの距離dot[inst] < 0)\r
                                {\r
                                        if (!pChip.bTargetGhost判定済み)\r
                                        {\r
@@ -2953,16 +2850,16 @@ namespace DTXMania
                                                        }\r
                                                        ghostLag = (ghostLag & 255) - 128;\r
                                                }\r
-                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.PERFECT)\r
+                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Perfect)\r
                                                {\r
                                                        ghostLag = 0;\r
                                                }\r
 \r
                                                if (ghostLag <= 127)\r
                                                {\r
-                                                       E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(pChip.n発声時刻ms + ghostLag, pChip, 0, false);\r
+                                                       EJudge eJudge = this.e指定時刻からChipのJUDGEを返す(pChip.n発声時刻ms + ghostLag, pChip, 0, false);\r
                                                        this.nヒット数_TargetGhost[inst][(int)eJudge]++;\r
-                                                       if (eJudge == E判定.Miss || eJudge == E判定.Poor)\r
+                                                       if (eJudge == EJudge.Miss || eJudge == EJudge.Poor)\r
                                                        {\r
                                                                this.n最大コンボ数_TargetGhost[inst] = Math.Max(this.n最大コンボ数_TargetGhost[inst], this.nコンボ数_TargetGhost[inst]);\r
                                                                this.nコンボ数_TargetGhost[inst] = 0;\r
@@ -2975,43 +2872,43 @@ namespace DTXMania
                                        }\r
                                }\r
 \r
-                               if (pChip[Ech定義.BGM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               if (pChip[EChannel.BGM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGM音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGMPlay)\r
                                        {\r
                                                //long t = CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms;\r
                                                //Trace.TraceInformation( "BGM再生開始: 演奏タイマのn前回リセットしたときのシステム時刻=" + CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + ", pChip.n発生時刻ms=" + pChip.n発声時刻ms + ", 合計=" + t );\r
-                                               dTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, dTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.BPM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.BPM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       this.actPlayInfo.dbBPM = (pChip.n整数値 * (((double)configIni.n演奏速度) / 20.0)) + dTX.BASEBPM;\r
+                                       this.actPlayInfo.dbBPM = (pChip.n整数値 * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0)) + CDTXMania.Instance.DTX.BASEBPM;\r
                                }\r
                                else if (pChip.bBGALayer && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGA有効)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGA)\r
                                        {\r
                                                switch (pChip.eBGA種別)\r
                                                {\r
-                                                       case EBGA種別.BMPTEX:\r
+                                                       case EBGAType.BMPTEX:\r
                                                                if (pChip.rBMPTEX != null)\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, null, pChip.rBMPTEX, pChip.rBMPTEX.tx画像.sz画像サイズ.Width, pChip.rBMPTEX.tx画像.sz画像サイズ.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r
                                                                }\r
                                                                break;\r
 \r
-                                                       case EBGA種別.BGA:\r
+                                                       case EBGAType.BGA:\r
                                                                if ((pChip.rBGA != null) && ((pChip.rBMP != null) || (pChip.rBMPTEX != null)))\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, pChip.rBMP, pChip.rBMPTEX, pChip.rBGA.pt画像側右下座標.X - pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側右下座標.Y - pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt表示座標.X, pChip.rBGA.pt表示座標.Y, 0, 0, 0);\r
                                                                }\r
                                                                break;\r
 \r
-                                                       case EBGA種別.BGAPAN:\r
+                                                       case EBGAType.BGAPAN:\r
                                                                if ((pChip.rBGAPan != null) && ((pChip.rBMP != null) || (pChip.rBMPTEX != null)))\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, pChip.rBMP, pChip.rBMPTEX, pChip.rBGAPan.sz開始サイズ.Width, pChip.rBGAPan.sz開始サイズ.Height, pChip.rBGAPan.sz終了サイズ.Width, pChip.rBGAPan.sz終了サイズ.Height, pChip.rBGAPan.pt画像側開始位置.X, pChip.rBGAPan.pt画像側開始位置.Y, pChip.rBGAPan.pt画像側終了位置.X, pChip.rBGAPan.pt画像側終了位置.Y, pChip.rBGAPan.pt表示側開始位置.X, pChip.rBGAPan.pt表示側開始位置.Y, pChip.rBGAPan.pt表示側終了位置.X, pChip.rBGAPan.pt表示側終了位置.Y, pChip.n総移動時間);\r
@@ -3027,12 +2924,14 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.BPMEx] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.BPMEx] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (dTX.listBPM.ContainsKey(pChip.n整数値_内部番号))\r
+                                       if (CDTXMania.Instance.DTX.listBPM.ContainsKey(pChip.n整数値_内部番号))\r
                                        {\r
-                                               this.actPlayInfo.dbBPM = (dTX.listBPM[pChip.n整数値_内部番号].dbBPM値 * (((double)configIni.n演奏速度) / 20.0)) + dTX.BASEBPM;\r
+                                               this.actPlayInfo.dbBPM = (CDTXMania.Instance.DTX.listBPM[pChip.n整数値_内部番号].dbBPM値 *\r
+                                                               (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0)) +\r
+                                                               CDTXMania.Instance.DTX.BASEBPM;\r
                                        }\r
                                }\r
                                else if (pChip.bDrums可視チップ && pChip.b空打ちチップである)\r
@@ -3042,7 +2941,7 @@ namespace DTXMania
                                                pChip.bHit = true;\r
                                                if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                                {\r
-                                                       this.r現在の空うちドラムChip[(int)this.eチャンネルtoパッド[pChip.eチャンネル番号 - Ech定義.HiHatClose]] = pChip;\r
+                                                       this.r現在の空うちドラムChip[(int)(EnumConverter.PadFromChannel(pChip.eチャンネル番号) - EPad.DrumsPadMin)] = pChip;\r
                                                }\r
                                        }\r
                                }\r
@@ -3050,20 +2949,20 @@ namespace DTXMania
                                {\r
                                        this.t進行描画_チップ_ドラムス(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.DrumsFillin] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.DrumsFillin] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Drums = pChip;\r
                                }\r
                                else if (pChip.bGuitar可視チップ)\r
                                {\r
-                                       this.t進行描画_チップ_ギターベース(ref pChip, E楽器パート.GUITAR);\r
+                                       this.t進行描画_チップ_ギターベース(ref pChip, EPart.Guitar);\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_Wailing])\r
+                               else if (pChip[EChannel.Guitar_Wailing])\r
                                {\r
                                        this.t進行描画_チップ_ウェイリング(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
+                               else if (pChip[EChannel.Guitar_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Guitar = pChip;\r
@@ -3072,34 +2971,34 @@ namespace DTXMania
                                {\r
                                        pChip.bHit = true;\r
                                }\r
-                               else if (pChip[Ech定義.BarLine] || pChip[Ech定義.BeatLine])// 小節線\r
+                               else if (pChip[EChannel.BarLine] || pChip[EChannel.BeatLine])// 小節線\r
                                {\r
                                        this.t進行描画_チップ_小節線_拍線(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.MIDIChorus] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.MIDIChorus] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                }\r
-                               else if (pChip[Ech定義.FillIn])\r
+                               else if (pChip[EChannel.FillIn])\r
                                {\r
                                        this.t進行描画_チップ_フィルイン(ref pChip);\r
                                }\r
                                else if (pChip.bMovie && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bAVI有効)\r
+                                       if (CDTXMania.Instance.ConfigIni.bAVI)\r
                                        {\r
                                                if (CDTXMania.Instance.DTX.bチップがある.BGA)\r
                                                {\r
                                                        this.actAVI.bHasBGA = true;\r
                                                }\r
-                                               if (pChip.eチャンネル番号 == Ech定義.MovieFull || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen)\r
+                                               if (pChip.eチャンネル番号 == EChannel.MovieFull || CDTXMania.Instance.ConfigIni.bFullAVI)\r
                                                {\r
                                                        this.actAVI.bFullScreenMovie = true;\r
                                                }\r
                                                switch (pChip.eAVI種別)\r
                                                {\r
-                                                       case EAVI種別.AVI:\r
+                                                       case EAVIType.AVI:\r
                                                                {\r
                                                                        int startWidth = !this.actAVI.bFullScreenMovie ? 278 : SampleFramework.GameWindowSize.Width;\r
                                                                        int startHeight = !this.actAVI.bFullScreenMovie ? 355 : SampleFramework.GameWindowSize.Height;\r
@@ -3107,7 +3006,7 @@ namespace DTXMania
                                                                }\r
                                                                break;\r
 \r
-                                                       case EAVI種別.AVIPAN:\r
+                                                       case EAVIType.AVIPAN:\r
                                                                if (pChip.rAVIPan != null)\r
                                                                {\r
                                                                        this.actAVI.Start(pChip.eチャンネル番号, pChip.rAVI, pChip.rAVIPan.sz開始サイズ.Width, pChip.rAVIPan.sz開始サイズ.Height, pChip.rAVIPan.sz終了サイズ.Width, pChip.rAVIPan.sz終了サイズ.Height, pChip.rAVIPan.pt動画側開始位置.X, pChip.rAVIPan.pt動画側開始位置.Y, pChip.rAVIPan.pt動画側終了位置.X, pChip.rAVIPan.pt動画側終了位置.Y, pChip.rAVIPan.pt表示側開始位置.X, pChip.rAVIPan.pt表示側開始位置.Y, pChip.rAVIPan.pt表示側終了位置.X, pChip.rAVIPan.pt表示側終了位置.Y, pChip.n総移動時間, pChip.n発声時刻ms);\r
@@ -3119,11 +3018,11 @@ namespace DTXMania
                                else if (pChip.bSE && !pChip.bOverrideSE && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGM音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGMPlay)\r
                                        {\r
-                                               dTX.tWavの再生停止(this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - Ech定義.SE01]);\r
-                                               dTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, dTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
-                                               this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - Ech定義.SE01] = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - EChannel.SE01]);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
+                                               this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - EChannel.SE01] = pChip.n整数値_内部番号;\r
                                        }\r
                                }\r
                                else if (pChip.bOverrideSE && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
@@ -3143,38 +3042,38 @@ namespace DTXMania
 \r
                                        //      protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
                                        pChip.bHit = true;\r
-                                       E楽器パート[] p = { E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.GUITAR, E楽器パート.BASS };\r
+                                       EPart[] p = { EPart.Drums, EPart.Drums, EPart.Drums, EPart.Drums, EPart.Guitar, EPart.Bass };\r
 \r
-                                       E楽器パート pp = p[pChip.eチャンネル番号 - Ech定義.SE24];\r
+                                       EPart pp = p[pChip.eチャンネル番号 - EChannel.SE24];\r
 \r
                                        //                                                      if ( pp == E楽器パート.DRUMS ) {                   // pChip.nチャンネル番号= ..... HHとか、ドラムの場合は変える。\r
                                        //                                                              //            HC    CY    RD    LC\r
                                        //                                                              int[] ch = { 0x11, 0x16, 0x19, 0x1A };\r
                                        //                                                              pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x84 ]; \r
                                        //                                                      }\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, dTX.nモニタを考慮した音量(pp));\r
+                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, CDTXMania.Instance.DTX.nモニタを考慮した音量(pp));\r
                                }\r
 \r
                                else if (pChip.bBass可視チップ)\r
                                {\r
-                                       this.t進行描画_チップ_ギターベース(ref pChip, E楽器パート.BASS);\r
+                                       this.t進行描画_チップ_ギターベース(ref pChip, EPart.Bass);\r
                                }\r
-                               else if (pChip[Ech定義.Bass_Wailing])\r
+                               else if (pChip[EChannel.Bass_Wailing])\r
                                {\r
                                        this.t進行描画_チップ_ウェイリング(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.Bass_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
+                               else if (pChip[EChannel.Bass_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Bass = pChip;\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
+                               else if (pChip[EChannel.Guitar_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の空うちギターChip = pChip;\r
                                        pChip.ConvertGBNoChip();\r
                                }\r
-                               else if (pChip[Ech定義.Bass_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
+                               else if (pChip[EChannel.Bass_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の空うちベースChip = pChip;\r
@@ -3183,16 +3082,16 @@ namespace DTXMania
                                else if (pChip.bBGALayerSwap && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if ((configIni.bBGA有効 && (pChip.eBGA種別 == EBGA種別.BMP)) || (pChip.eBGA種別 == EBGA種別.BMPTEX))\r
+                                       if ((CDTXMania.Instance.ConfigIni.bBGA && (pChip.eBGA種別 == EBGAType.BMP)) || (pChip.eBGA種別 == EBGAType.BMPTEX))\r
                                        {\r
                                                this.actBGA.ChangeScope(pChip);\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.MixerAdd] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.MixerAdd] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        //Debug.WriteLine( "[DA(AddMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms );\r
                                        pChip.bHit = true;\r
-                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))  // 参照が遠いので後日最適化する\r
+                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))    // 参照が遠いので後日最適化する\r
                                        {\r
                                                CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
                                                //Debug.Write( "[AddMixer] BAR=" + pChip.n発声位置 / 384 + ", wav=" + Path.GetFileName( wc.strファイル名 ) + ", time=" + pChip.n発声時刻ms );\r
@@ -3216,11 +3115,11 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.MixerRemove] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.MixerRemove] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        //Debug.WriteLine( "[DB(RemoveMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms );\r
                                        pChip.bHit = true;\r
-                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))  // 参照が遠いので後日最適化する\r
+                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))    // 参照が遠いので後日最適化する\r
                                        {\r
                                                CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
                                                //Debug.Write( "[DelMixer] BAR=" + pChip.n発声位置 / 384 +  ", wav=" + Path.GetFileName( wc.strファイル名 ) + ", time=" + pChip.n発声時刻ms );\r
@@ -3229,10 +3128,10 @@ namespace DTXMania
                                                        if (wc.rSound[i] != null)\r
                                                        {\r
                                                                //CDTXMania.Instance.Sound管理.RemoveMixer( wc.rSound[ i ] );\r
-                                                               if (!wc.rSound[i].b演奏終了後も再生が続くチップである) // #32248 2013.10.16 yyagi\r
-                                                               {                                                                                                                       // DTX終了後も再生が続くチップの0xDB登録をなくすことはできず。\r
-                                                                       RemoveMixer(wc.rSound[i]);                                                      // (ミキサー解除のタイミングが遅延する場合の対応が面倒なので。)\r
-                                                               }                                                                                                                       // そこで、代わりにフラグをチェックしてミキサー削除ロジックへの遷移をカットする。\r
+                                                               if (!wc.rSound[i].b演奏終了後も再生が続くチップである)   // #32248 2013.10.16 yyagi\r
+                                                               {                                                           // DTX終了後も再生が続くチップの0xDB登録をなくすことはできず。\r
+                                                                       RemoveMixer(wc.rSound[i]);                          // (ミキサー解除のタイミングが遅延する場合の対応が面倒なので。)\r
+                                                               }                                                           // そこで、代わりにフラグをチェックしてミキサー削除ロジックへの遷移をカットする。\r
                                                        }\r
                                                        //else\r
                                                        //{\r
@@ -3264,11 +3163,11 @@ namespace DTXMania
 \r
                        // #34048 2014.7.16 yyagi\r
                        #region [ 読み込み画面に遷移する前に、設定変更した可能性があるパラメータをConfigIniクラスに書き戻す ]\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[i] = CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i];\r
+                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[i] = CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
                        }\r
-                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
+                       CDTXMania.Instance.ConfigIni.bDebugInfo = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
                        #endregion\r
                }\r
 \r
@@ -3277,10 +3176,10 @@ namespace DTXMania
                        CDTXMania.Instance.DTX.t全チップの再生停止とミキサーからの削除();\r
                        this.actAVI.Stop();\r
                        this.actBGA.Stop();\r
-                       this.actPanel.Stop();                           // PANEL表示停止\r
-                       CDTXMania.Instance.Timer.t一時停止();               // 再生時刻カウンタ停止\r
+                       this.actPanel.Stop();               // PANEL表示停止\r
+                       CDTXMania.Instance.Timer.t一時停止();       // 再生時刻カウンタ停止\r
 \r
-                       this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;       // 終端にシーク\r
+                       this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;   // 終端にシーク\r
 \r
                        // 自分自身のOn活性化()相当の処理もすべき。\r
                }\r
@@ -3298,7 +3197,8 @@ namespace DTXMania
                        this.actBGA.Stop();\r
 \r
                        #region [ 再生開始小節の変更 ]\r
-                       nStartBar++;                                                                    // +1が必要\r
+                       // +1が必要\r
+                       nStartBar++;\r
 \r
                        #region [ 演奏済みフラグのついたChipをリセットする ]\r
                        for (int i = 0; i < CDTXMania.Instance.DTX.listChip.Count; i++)\r
@@ -3333,16 +3233,16 @@ namespace DTXMania
                        if (!bSuccessSeek)\r
                        {\r
                                // this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;\r
-                               this.n現在のトップChip = 0;               // 対象小節が存在しないなら、最初から再生\r
+                               this.n現在のトップChip = 0;       // 対象小節が存在しないなら、最初から再生\r
                        }\r
                        #endregion\r
 \r
                        #region [ 演奏開始の発声時刻msを取得し、タイマに設定 ]\r
                        int nStartTime = CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].n発声時刻ms;\r
 \r
-                       CSound管理.rc演奏用タイマ.tリセット();      // これでPAUSE解除されるので、次のPAUSEチェックは不要\r
-                       //if ( !this.bPAUSE )\r
-                       //{\r
+                       CSound管理.rc演奏用タイマ.tリセット();  // これでPAUSE解除されるので、次のPAUSEチェックは不要\r
+                                                                                                                                       //if ( !this.bPAUSE )\r
+                                                                                                                                       //{\r
                        CSound管理.rc演奏用タイマ.t一時停止();\r
                        //}\r
                        CSound管理.rc演奏用タイマ.n現在時刻 = nStartTime;\r
@@ -3358,15 +3258,15 @@ namespace DTXMania
 \r
                                if ((pChip.n発声時刻ms + nDuration > 0) && (pChip.n発声時刻ms <= nStartTime) && (nStartTime <= pChip.n発声時刻ms + nDuration))\r
                                {\r
-                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
+                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
                                        {\r
                                                CDTX.CWAV wc;\r
                                                bool b = CDTXMania.Instance.DTX.listWAV.TryGetValue(pChip.n整数値_内部番号, out wc);\r
                                                if (!b) continue;\r
 \r
-                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGM音を発声する) || (!wc.bIsBGMSound))\r
+                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGMPlay) || (!wc.bIsBGMSound))\r
                                                {\r
-                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                        #region [ PAUSEする ]\r
                                                        int j = wc.n現在再生中のサウンド番号;\r
                                                        if (wc.rSound[j] != null)\r
@@ -3395,11 +3295,11 @@ namespace DTXMania
                        #endregion\r
                        #region [ タイマを再開して、PAUSEから復帰する ]\r
                        CSound管理.rc演奏用タイマ.n現在時刻 = nStartTime;\r
-                       CDTXMania.Instance.Timer.tリセット();                                               // これでPAUSE解除されるので、3行先の再開()は不要\r
-                       CDTXMania.Instance.Timer.n現在時刻 = nStartTime;                            // Debug表示のTime: 表記を正しくするために必要\r
+                       CDTXMania.Instance.Timer.tリセット();                       // これでPAUSE解除されるので、3行先の再開()は不要\r
+                       CDTXMania.Instance.Timer.n現在時刻 = nStartTime;                // Debug表示のTime: 表記を正しくするために必要\r
                        CSound管理.rc演奏用タイマ.t再開();\r
                        //CDTXMania.Instance.Timer.t再開();\r
-                       this.bPAUSE = false;                                                            // システムがPAUSE状態だったら、強制解除\r
+                       this.bPAUSE = false;                                // システムがPAUSE状態だったら、強制解除\r
                        this.actPanel.Start();\r
                        #endregion\r
                        #endregion\r
@@ -3412,94 +3312,71 @@ namespace DTXMania
                /// </summary>\r
                protected void tDTXV用の設定()\r
                {\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HH = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.SD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.CY = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.FT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.RD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LC = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtR = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtG = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtB = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtW = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsR = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsG = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsB = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsW = true;\r
-\r
-                       this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bAVI有効 = true;\r
-                       CDTXMania.Instance.ConfigIni.bBGA有効 = true;\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
-                       {\r
-                               CDTXMania.Instance.ConfigIni.bGraph = false;\r
-                               CDTXMania.Instance.ConfigIni.bHidden[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bLeft[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bLight[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bReverse[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bSudden[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.eInvisible[i] = EInvisible.OFF;\r
-                               CDTXMania.Instance.ConfigIni.eRandom[i] = Eランダムモード.OFF;\r
-                               CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数[i] = 65535;\r
-                               CDTXMania.Instance.ConfigIni.判定文字表示位置[i] = E判定文字表示位置.表示OFF;\r
-                               // CDTXMania.Instance.ConfigIni.n譜面スクロール速度[ i ] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[ i ];       // これだけはOn活性化()で行うこと。\r
-                               // そうしないと、演奏開始直後にスクロール速度が変化して見苦しい。\r
-                       }\r
-\r
-                       CDTXMania.Instance.ConfigIni.eDark = Eダークモード.OFF;\r
-\r
-                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
-                       CDTXMania.Instance.ConfigIni.bフィルイン有効 = true;\r
-                       CDTXMania.Instance.ConfigIni.bScoreIniを出力する = false;\r
-                       CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 = false;\r
-                       CDTXMania.Instance.ConfigIni.bTight = false;\r
-                       CDTXMania.Instance.ConfigIni.bストイックモード = false;\r
-                       CDTXMania.Instance.ConfigIni.bドラム打音を発声する = true;\r
-                       CDTXMania.Instance.ConfigIni.bBGM音を発声する = true;\r
-\r
-                       CDTXMania.Instance.ConfigIni.nRisky = 0;\r
-                       CDTXMania.Instance.ConfigIni.nShowLagType = 0;\r
-                       CDTXMania.Instance.ConfigIni.ドラムコンボ文字の表示位置 = Eドラムコンボ文字の表示位置.OFF;\r
+                       for (EPad i = EPad.Min; i < EPad.Max; ++i)\r
+                       {\r
+                               CDTXMania.Instance.ConfigIni.bAutoPlay[i].Value = true;\r
+                       }\r
+                       CDTXMania.Instance.ConfigIni.bAVI.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bBGA.Value = true;\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
+                       {\r
+                               CDTXMania.Instance.ConfigIni.bGraph[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.eSudHidInv[i].Value = ESudHidInv.Off;\r
+                               CDTXMania.Instance.ConfigIni.bLight[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.bReverse[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.eRandom[i].Value = ERandom.Off;\r
+                               CDTXMania.Instance.ConfigIni.nMinComboDisp[i].Value = 65535;\r
+                               CDTXMania.Instance.ConfigIni.bDisplayJudge[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.bDisplayCombo[i].Value = false;\r
+                       }\r
+                       CDTXMania.Instance.ConfigIni.eDark.Value = EDark.Off;\r
+                       CDTXMania.Instance.ConfigIni.bDebugInfo.Value = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
+                       CDTXMania.Instance.ConfigIni.bFillin.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bScoreIni.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bStageFailed.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bTight.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bStoicMode.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bDrumsHitSound.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bBGMPlay.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.nRisky.Value = 0;\r
+                       CDTXMania.Instance.ConfigIni.nShowLagType.Value = EShowLagType.Off;\r
                }\r
 \r
-\r
                private void t進行描画_チップ_ウェイリング(ref CChip pChip)\r
                {\r
                        if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                        {\r
-                               E楽器パート indexInst = pChip.bGuitar可視チップ_Wailing含む ? E楽器パート.GUITAR : E楽器パート.BASS;\r
-                               #region [ Invisible処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.eInvisible[indexInst] != EInvisible.OFF)\r
+                               EPart indexInst = pChip.bGuitar可視チップ_Wailing含む ? EPart.Guitar : EPart.Bass;\r
+                               #region [ Sud Hid Inv 処理 ]\r
+                               if (\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.FullInv ||\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SemiInv)\r
                                {\r
                                        cInvisibleChip.SetInvisibleStatus(ref pChip);\r
                                }\r
-                               #endregion\r
-                               #region [ Sudden/Hidden処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.bSudden[indexInst])\r
-                               {\r
-                                       pChip.b可視 = (pChip.nバーからの距離dot[indexInst] < 200 * Scale.Y);\r
-                               }\r
-                               if (CDTXMania.Instance.ConfigIni.bHidden[indexInst] && (pChip.nバーからの距離dot[indexInst] < 100 * Scale.Y))\r
+                               else\r
                                {\r
-                                       pChip.b可視 = false;\r
+                                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.Sudden ||\r
+                                               CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SudHid)\r
+                                       {\r
+                                               pChip.b可視 = (pChip.nバーからの距離dot[indexInst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[indexInst]);\r
+                                       }\r
+                                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.Hidden ||\r
+                                               CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SudHid)\r
+                                       {\r
+                                               pChip.b可視 = pChip.nバーからの距離dot[indexInst] >= CDTXMania.Instance.ConfigIni.nHiddenFrom[indexInst];\r
+                                       }\r
                                }\r
                                #endregion\r
-\r
                                cWailingChip[(int)indexInst].t進行描画_チップ_ウェイリング(ref pChip, ref txチップGB, ref ctWailingチップ模様アニメ);\r
 \r
                                if (!pChip.bHit && (pChip.nバーからの距離dot[indexInst] < 0))\r
                                {\r
-                                       if (pChip.nバーからの距離dot[indexInst] < -234 * Scale.Y)        // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec). \r
+                                       if (pChip.nバーからの距離dot[indexInst] < -234 * Scale.Y)  // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec). \r
                                        {\r
                                                pChip.bHit = true;\r
                                        }\r
-                                       bool autoW = (indexInst == E楽器パート.GUITAR) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtW : CDTXMania.Instance.ConfigIni.bAutoPlay.BsW;\r
+                                       bool autoW = (indexInst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail : CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail;\r
                                        if (autoW)\r
                                        {\r
                                                // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
@@ -3519,7 +3396,7 @@ namespace DTXMania
 \r
                protected void t進行描画_チップアニメ()\r
                {\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)                      // 0=drums, 1=guitar, 2=bass\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)            // 0=drums, 1=guitar, 2=bass\r
                        {\r
                                if (this.ctチップ模様アニメ[i] != null)\r
                                {\r
@@ -3561,62 +3438,31 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
-               protected void t進行描画_レーンフラッシュD()\r
-               {\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
-                       {\r
-                               this.actLaneFlushD.On進行描画();\r
-                       }\r
-               }\r
-               protected void t進行描画_レーンフラッシュGB()\r
-               {\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               this.actLaneFlushGB.On進行描画();\r
-                       }\r
-               }\r
-\r
 \r
-\r
-               protected void t進行描画_判定文字列()\r
-               {\r
-                       this.actJudgeString.On進行描画();\r
-               }\r
-               protected void t進行描画_判定文字列1_通常位置指定の場合()\r
-               {\r
-                       this.actJudgeString.On進行描画();\r
-               }\r
-               protected void t進行描画_判定文字列2_判定ライン上指定の場合()\r
-               {\r
-                       if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.コンボ下) // 判定ライン上または横\r
-                       {\r
-                               this.actJudgeString.On進行描画();\r
-                       }\r
-               }\r
-\r
-               protected void t進行描画_譜面スクロール速度()\r
-               {\r
-                       this.act譜面スクロール速度.On進行描画();\r
-               }\r
-\r
-               protected virtual void t入力処理_ギターベース(E楽器パート inst)\r
+               protected virtual void t入力処理_ギターベース(EPart inst)\r
                {\r
                        #region [ スクロール速度変更 ]\r
-                       int scrollSpeed = CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst];\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed[inst];\r
                        bool scrollSpeedChanged = false;\r
                        float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] / (scrollSpeed + 1);\r
-                       if (CDTXMania.Instance.Pad.b押されている(inst, Eパッド.Decide) && CDTXMania.Instance.Pad.b押された(inst, Eパッド.B))\r
+                       if (\r
+                               CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtDecide : EPad.BsDecide) &&\r
+                               CDTXMania.Instance.Pad.b押された(inst == EPart.Guitar ? EPad.GtB : EPad.BsB)\r
+                               )\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst] = Math.Min(scrollSpeed + 1, 1999);\r
-                               if (scrollSpeed < CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst])\r
+                               CDTXMania.Instance.ConfigIni.nScrollSpeed[inst].Value = scrollSpeed + 1;\r
+                               if (scrollSpeed < CDTXMania.Instance.ConfigIni.nScrollSpeed[inst])\r
                                {\r
                                        scrollSpeedChanged = true;\r
                                }\r
                        }\r
-                       if (CDTXMania.Instance.Pad.b押されている(inst, Eパッド.Decide) && CDTXMania.Instance.Pad.b押された(inst, Eパッド.R))\r
+                       if (\r
+                               CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtDecide : EPad.BsDecide) &&\r
+                               CDTXMania.Instance.Pad.b押された(inst == EPart.Guitar ? EPad.GtR : EPad.BsR)\r
+                               )\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst] = Math.Max(scrollSpeed - 1, 0);\r
-                               if (scrollSpeed > CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst])\r
+                               CDTXMania.Instance.ConfigIni.nScrollSpeed[inst].Value = scrollSpeed - 1;\r
+                               if (scrollSpeed > CDTXMania.Instance.ConfigIni.nScrollSpeed[inst])\r
                                {\r
                                        scrollSpeedChanged = true;\r
                                }\r
@@ -3624,7 +3470,7 @@ namespace DTXMania
                        if (scrollSpeedChanged)\r
                        {\r
                                // 判定ラインも付随\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] = (int)(f * CDTXMania.Instance.ConfigIni.n譜面スクロール速度[inst] + 0.5);\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst].Value = (int)(f * CDTXMania.Instance.ConfigIni.nScrollSpeed[inst] + 0.5);\r
                        }\r
                        #endregion\r
 \r
@@ -3633,14 +3479,14 @@ namespace DTXMania
                                return;\r
                        }\r
 \r
-                       int R = (inst == E楽器パート.GUITAR) ? 0 : 3;\r
+                       int R = (inst == EPart.Guitar) ? 0 : 3;\r
                        int G = R + 1;\r
                        int B = R + 2;\r
-                       bool autoW = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtW : bIsAutoPlay.BsW;\r
-                       bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR;\r
-                       bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG;\r
-                       bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB;\r
-                       bool autoPick = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick;\r
+                       bool autoW = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail : CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail;\r
+                       bool autoR = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtR : CDTXMania.Instance.ConfigIni.bAutoPlay.BsR;\r
+                       bool autoG = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtG : CDTXMania.Instance.ConfigIni.bAutoPlay.BsG;\r
+                       bool autoB = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtB : CDTXMania.Instance.ConfigIni.bAutoPlay.BsB;\r
+                       bool autoPick = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick : CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick;\r
                        int nAutoW = (autoW) ? 8 : 0;\r
                        int nAutoR = (autoR) ? 4 : 0;\r
                        int nAutoG = (autoG) ? 2 : 0;\r
@@ -3667,11 +3513,11 @@ namespace DTXMania
                                }\r
                        }\r
 \r
-                       int pressingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R) ? 4 : 0;\r
+                       int pressingR = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtR : EPad.BsR) ? 4 : 0;\r
                        this.t入力メソッド記憶(inst);\r
-                       int pressingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G) ? 2 : 0;\r
+                       int pressingG = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtG : EPad.BsG) ? 2 : 0;\r
                        this.t入力メソッド記憶(inst);\r
-                       int pressingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B) ? 1 : 0;\r
+                       int pressingB = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtB : EPad.BsB) ? 1 : 0;\r
                        this.t入力メソッド記憶(inst);\r
                        int pressingRGB = pressingR | pressingG | pressingB;\r
                        if (pressingR != 0)\r
@@ -3690,7 +3536,7 @@ namespace DTXMania
                                this.actRGB.Push(B);\r
                        }\r
                        // auto pickだとここから先に行かないので注意\r
-                       List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Pick);\r
+                       List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst == EPart.Guitar ? EPad.GtPick : EPad.BsPick);\r
                        if ((events != null) && (events.Count > 0))\r
                        {\r
                                foreach (STInputEvent eventPick in events)\r
@@ -3701,16 +3547,21 @@ namespace DTXMania
                                        }\r
                                        this.t入力メソッド記憶(inst);\r
                                        long nTime = eventPick.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
-                                       Ech定義 chWailingSound = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_WailingSound : Ech定義.Bass_WailingSound;\r
+                                       EChannel chWailingSound = (inst == EPart.Guitar) ? EChannel.Guitar_WailingSound : EChannel.Bass_WailingSound;\r
 \r
                                        // WailingSound チャンネルでE楽器パート.GUITARなチップ全てにヒットする\r
-                                       CChip pChip = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingSound, this.nInputAdjustTimeMs[inst], CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs[inst]);\r
+                                       CChip pChip = this.r指定時刻に一番近い未ヒットChip(\r
+                                                       nTime, chWailingSound,\r
+                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst],\r
+                                                       CDTXMania.Instance.nPoor範囲ms + 1);\r
+\r
+                                       EJudge e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip,\r
+                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst]);\r
                                        //Trace.TraceInformation("ch={0:x2}, mask1={1:x1}, mask2={2:x2}", pChip.nチャンネル番号,  ( pChip.nチャンネル番号 & ~nAutoMask ) & 0x0F, ( flagRGB & ~nAutoMask) & 0x0F );\r
                                        if (\r
-                                               (pChip != null) &&\r
-                                               ((((int)pChip.eチャンネル番号 & ~nAutoMask) & 0x0F) == ((pressingRGB & ~nAutoMask) & 0x0F)) &&\r
-                                               (e判定 != E判定.Miss))\r
+                                                       (pChip != null) &&\r
+                                                       ((((int)pChip.eチャンネル番号 & ~nAutoMask) & 0x0F) == ((pressingRGB & ~nAutoMask) & 0x0F)) &&\r
+                                                       (e判定 != EJudge.Miss))\r
                                        {\r
                                                bool bChipHasR = pChip.bGuitarBass_R;\r
                                                bool bChipHasG = pChip.bGuitarBass_G;\r
@@ -3731,9 +3582,9 @@ namespace DTXMania
                                                        this.actChipFireGB.Start(B);\r
                                                }\r
                                                this.tチップのヒット処理(nTime, pChip);\r
-                                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[inst], e判定 == E判定.Poor);\r
-                                               Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
-                                               CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, this.nInputAdjustTimeMs[inst], 140);\r
+                                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound[inst], e判定 == EJudge.Poor);\r
+                                               EChannel chWailingChip = (inst == EPart.Guitar) ? EChannel.Guitar_Wailing : EChannel.Bass_Wailing;\r
+                                               CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst], 140);\r
                                                if (item != null)\r
                                                {\r
                                                        this.queWailing[inst].Enqueue(item);\r
@@ -3742,10 +3593,10 @@ namespace DTXMania
                                        }\r
 \r
                                        // 以下、間違いレーンでのピック時\r
-                                       CChip NoChipPicked = (inst == E楽器パート.GUITAR) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
-                                       if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, this.nInputAdjustTimeMs[inst])) != null))\r
+                                       CChip NoChipPicked = (inst == EPart.Guitar) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
+                                       if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst])) != null))\r
                                        {\r
-                                               this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[inst], true);\r
+                                               this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound[inst], true);\r
                                        }\r
                                        if (!CDTXMania.Instance.ConfigIni.bLight[inst])\r
                                        {\r
@@ -3753,7 +3604,7 @@ namespace DTXMania
                                        }\r
                                }\r
                        }\r
-                       List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Wail);\r
+                       List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst == EPart.Guitar ? EPad.GtWail : EPad.BsWail);\r
                        if ((list != null) && (list.Count > 0))\r
                        {\r
                                foreach (STInputEvent eventWailed in list)\r
@@ -3767,13 +3618,13 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private void DoWailingFromQueue(E楽器パート inst, long nTimeStamp_Wailed, bool autoW)\r
+               private void DoWailingFromQueue(EPart inst, long nTimeStamp_Wailed, bool autoW)\r
                {\r
                        long nTimeWailed = nTimeStamp_Wailed - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
                        CChip chipWailing;\r
                        while ((this.queWailing[inst].Count > 0) && ((chipWailing = this.queWailing[inst].Dequeue()) != null))\r
                        {\r
-                               if ((nTimeWailed - chipWailing.n発声時刻ms) <= 1000)                // #24245 2011.1.26 yyagi: 800 -> 1000\r
+                               if ((nTimeWailed - chipWailing.n発声時刻ms) <= 1000)        // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                {\r
                                        chipWailing.bHit = true;\r
                                        this.actWailingBonus.Start(inst, this.r現在の歓声Chip[inst]);\r
@@ -3781,32 +3632,13 @@ namespace DTXMania
                                        {\r
                                                int nCombo = (this.actCombo.dgbコンボ数[inst].n現在値 < 500) ? this.actCombo.dgbコンボ数[inst].n現在値 : 500;\r
                                                // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
-                                               this.actScore.Add(inst, bIsAutoPlay, nCombo * 3000L);\r
+                                               this.actScore.Add(inst, nCombo * 3000L);\r
                                        }\r
                                }\r
                        }\r
                }\r
 \r
-               private void t進行描画_グラフ()\r
-               {\r
-                       if (!CDTXMania.Instance.ConfigIni.bストイックモード && CDTXMania.Instance.ConfigIni.bGraph)\r
-                       {\r
-                               this.actGraph.On進行描画();\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_チップファイアD()\r
-               {\r
-                       this.actChipFireD.On進行描画();\r
-               }\r
 \r
-               private void t進行描画_ドラムパッド()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
-                       {\r
-                               this.actPad.On進行描画();\r
-                       }\r
-               }\r
 \r
                // t入力処理・ドラム()からメソッドを抽出したもの。\r
                /// <summary>\r
@@ -3815,7 +3647,7 @@ namespace DTXMania
                /// <param name="chipArray">ソート対象chip群</param>\r
                /// <param name="e判定Array">ソート対象e判定群</param>\r
                /// <param name="NumOfChips">チップ数</param>\r
-               private static void SortChipsByNTime(CChip[] chipArray, E判定[] e判定Array, int NumOfChips)\r
+               private static void SortChipsByNTime(CChip[] chipArray, EJudge[] e判定Array, int NumOfChips)\r
                {\r
                        for (int i = 0; i < NumOfChips - 1; i++)\r
                        {\r
@@ -3827,14 +3659,14 @@ namespace DTXMania
                                                CChip chipTemp = chipArray[j - 1];\r
                                                chipArray[j - 1] = chipArray[j];\r
                                                chipArray[j] = chipTemp;\r
-                                               E判定 e判定Temp = e判定Array[j - 1];\r
+                                               EJudge e判定Temp = e判定Array[j - 1];\r
                                                e判定Array[j - 1] = e判定Array[j];\r
                                                e判定Array[j] = e判定Temp;\r
                                        }\r
                                }\r
                        }\r
                }\r
-               private bool tドラムヒット処理(long nHitTime, Eパッド type, CChip pChip, int n強弱度合い0to127)\r
+               private bool tドラムヒット処理(long nHitTime, EPad type, CChip pChip, int n強弱度合い0to127)\r
                {\r
                        if (pChip == null)\r
                        {\r
@@ -3850,41 +3682,41 @@ namespace DTXMania
                        {\r
                                index = pChip.nDrumsIndexHidden;\r
                        }\r
-                       int nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[index];\r
-                       int nPad = this.nチャンネル0Atoパッド08[index];\r
-                       bool bPChipIsAutoPlay = bIsAutoPlay[nLane];\r
-                       int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
-                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime);\r
-                       if (e判定 == E判定.Miss)\r
+                       ELane eLane = EnumConverter.LaneFromChannel(index + EChannel.HiHatClose);// nチャンネル0Atoレーン07[index];\r
+                       EPad ePad = EnumConverter.PadFromChannel(index + EChannel.HiHatClose); //nチャンネル0Atoパッド08[index];\r
+                       bool bPChipIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay[ePad];\r
+                       int nInputAdjustTime = bPChipIsAutoPlay ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
+                       EJudge e判定 = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime);\r
+                       if (e判定 == EJudge.Miss)\r
                        {\r
                                return false;\r
                        }\r
                        this.tチップのヒット処理(nHitTime, pChip);\r
-                       this.actLaneFlushD.Start((Eレーン)nLane, ((float)n強弱度合い0to127) / 127f);\r
-                       this.actPad.Hit(nPad);\r
-                       if ((e判定 != E判定.Poor) && (e判定 != E判定.Miss))\r
+                       this.actLaneFlushD.Start(eLane, ((float)n強弱度合い0to127) / 127f);\r
+                       this.actPad.Hit(ePad);\r
+                       if ((e判定 != EJudge.Poor) && (e判定 != EJudge.Miss))\r
                        {\r
                                bool flag = this.bフィルイン中;\r
                                bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである(pChip);\r
                                // bool flag3 = flag2;\r
                                // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加\r
-                               this.actChipFireD.Start((Eレーン)nLane, flag, flag2, flag2);\r
+                               this.actChipFireD.Start(eLane, flag, flag2, flag2);\r
                        }\r
-                       if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する)\r
+                       if (CDTXMania.Instance.ConfigIni.bDrumsHitSound)\r
                        {\r
                                CChip rChip = null;\r
                                bool bIsChipsoundPriorToPad = true;\r
-                               if (((type == Eパッド.HH) || (type == Eパッド.HHO)) || (type == Eパッド.LC))\r
+                               if (((type == EPad.HH) || (type == EPad.HHO)) || (type == EPad.LC))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH == EHitSoundPriority.Chip;\r
                                }\r
-                               else if ((type == Eパッド.LT) || (type == Eパッド.FT))\r
+                               else if ((type == EPad.LT) || (type == EPad.FT))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT == EHitSoundPriority.Chip;\r
                                }\r
-                               else if ((type == Eパッド.CY) || (type == Eパッド.RD))\r
+                               else if ((type == EPad.CY) || (type == EPad.RD))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY == EHitSoundPriority.Chip;\r
                                }\r
                                if (bIsChipsoundPriorToPad)\r
                                {\r
@@ -3892,26 +3724,26 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       Eパッド hH = type;\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (type == Eパッド.HHO))\r
+                                       EPad hH = type;\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (type == EPad.HHO))\r
                                        {\r
-                                               hH = Eパッド.HH;\r
+                                               hH = EPad.HH;\r
                                        }\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.Ride && (type == Eパッド.RD))\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.Ride && (type == EPad.RD))\r
                                        {\r
-                                               hH = Eパッド.CY;\r
+                                               hH = EPad.CY;\r
                                        }\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (type == Eパッド.LC))\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (type == EPad.LC))\r
                                        {\r
-                                               hH = Eパッド.HH;\r
+                                               hH = EPad.HH;\r
                                        }\r
-                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nHitTime, this.nパッド0Atoチャンネル0A[(int)hH], nInputAdjustTime);\r
+                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nHitTime, EnumConverter.ChannelFromPad(hH), nInputAdjustTime);\r
                                        if (rChip == null)\r
                                        {\r
                                                rChip = pChip;\r
                                        }\r
                                }\r
-                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
+                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                        }\r
                        return true;\r
                }\r
@@ -3926,7 +3758,7 @@ namespace DTXMania
                        for (int i = CDTXMania.Instance.DTX.listChip.IndexOf(pChip) + 1; i < CDTXMania.Instance.DTX.listChip.Count; i++)\r
                        {\r
                                pChip = CDTXMania.Instance.DTX.listChip[i];\r
-                               if ((pChip[Ech定義.FillIn]) && (pChip.n整数値 == 2))\r
+                               if ((pChip[EChannel.FillIn]) && (pChip.n整数値 == 2))\r
                                {\r
                                        return true;\r
                                }\r
@@ -3948,23 +3780,23 @@ namespace DTXMania
                                {\r
                                        switch (pChip.n整数値)\r
                                        {\r
-                                               case 0x01:      // フィルイン開始\r
-                                                       if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
+                                               case 0x01:  // フィルイン開始\r
+                                                       if (CDTXMania.Instance.ConfigIni.bFillin)\r
                                                        {\r
                                                                this.bフィルイン中 = true;\r
                                                        }\r
                                                        break;\r
 \r
-                                               case 0x02:      // フィルイン終了\r
-                                                       if (CDTXMania.Instance.ConfigIni.bフィルイン有効)\r
+                                               case 0x02:  // フィルイン終了\r
+                                                       if (CDTXMania.Instance.ConfigIni.bFillin)\r
                                                        {\r
                                                                this.bフィルイン中 = false;\r
                                                        }\r
-                                                       if (((this.actCombo.dgbコンボ数.Drums.n現在値 > 0) || CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである) && CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
+                                                       if (((this.actCombo.dgbコンボ数.Drums.n現在値 > 0) || CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums)) && CDTXMania.Instance.ConfigIni.bAudience)\r
                                                        {\r
                                                                if (this.r現在の歓声Chip.Drums != null)\r
                                                                {\r
-                                                                       CDTXMania.Instance.DTX.tチップの再生(this.r現在の歓声Chip.Drums, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                                       CDTXMania.Instance.DTX.tチップの再生(this.r現在の歓声Chip.Drums, CSound管理.rc演奏用タイマ.nシステム時刻, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                                }\r
                                                                else\r
                                                                {\r
@@ -3973,7 +3805,7 @@ namespace DTXMania
                                                                }\r
                                                        }\r
                                                        break;\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi TEST\r
+#if TEST_NOTEOFFMODE  // 2011.1.1 yyagi TEST\r
                                                                case 0x04:      // HH消音あり(従来同等)\r
                                                                        CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = true;\r
                                                                        break;\r
index e7c73d8..fd8eb22 100644 (file)
@@ -14,91 +14,52 @@ namespace DTXMania
 {\r
        internal partial class CStage演奏画面共通 : CStage\r
        {\r
-               protected void t進行描画_AVI()\r
+               void SudHidInvChip( EPart inst, ref CChip pChip )\r
                {\r
-                       if ((\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) &&\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
-                               (!CDTXMania.Instance.ConfigIni.bストイックモード && CDTXMania.Instance.ConfigIni.bAVI有効))\r
+                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SemiInv ||\r
+                               CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.FullInv)\r
                        {\r
-                               if (CDTXMania.Instance.ConfigIni.bGuitar有効 && !CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.actAVI.t進行描画(\r
-                                               CDTXMania.Instance.Coordinates.GtMovie.X, CDTXMania.Instance.Coordinates.GtMovie.Y,\r
-                                               CDTXMania.Instance.Coordinates.GtMovie.W, CDTXMania.Instance.Coordinates.GtMovie.H\r
-                                               );\r
-                               }\r
-                               else if (!CDTXMania.Instance.ConfigIni.bGuitar有効 && CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.actAVI.t進行描画(\r
-                                               CDTXMania.Instance.Coordinates.DrMovie.X, CDTXMania.Instance.Coordinates.DrMovie.Y,\r
-                                               CDTXMania.Instance.Coordinates.DrMovie.W, CDTXMania.Instance.Coordinates.DrMovie.H\r
-                                               );\r
-                               }\r
-                               else\r
-                               {\r
-                                       this.actAVI.t進行描画(\r
-                                               CDTXMania.Instance.Coordinates.Movie.X, CDTXMania.Instance.Coordinates.Movie.Y,\r
-                                               CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H\r
-                                               );\r
-                               }\r
+                               cInvisibleChip.SetInvisibleStatus(ref pChip);\r
                        }\r
-               }\r
-\r
-               private void t進行描画_BGA()\r
-               {\r
-                       if ((\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) &&\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
-                               (!CDTXMania.Instance.ConfigIni.bストイックモード && CDTXMania.Instance.ConfigIni.bBGA有効))\r
+                       else\r
                        {\r
-                               if (CDTXMania.Instance.ConfigIni.bGuitar有効 && !CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.actBGA.t進行描画(CDTXMania.Instance.Coordinates.GtMovie.X, CDTXMania.Instance.Coordinates.GtMovie.Y);\r
-                               }\r
-                               else if (!CDTXMania.Instance.ConfigIni.bGuitar有効 && CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                               {\r
-                                       this.actBGA.t進行描画(CDTXMania.Instance.Coordinates.DrMovie.X, CDTXMania.Instance.Coordinates.DrMovie.Y);\r
-                               }\r
-                               else\r
+                               if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.Sudden ||\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SudHid)\r
                                {\r
-                                       this.actBGA.t進行描画(CDTXMania.Instance.Coordinates.Movie.X, CDTXMania.Instance.Coordinates.Movie.Y);\r
+                                       if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[inst])\r
+                                       {\r
+                                               pChip.b可視 = true;\r
+                                               pChip.n透明度 = 0xff;\r
+                                       }\r
+                                       else if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[inst] + 100)\r
+                                       {\r
+                                               pChip.b可視 = true;\r
+                                               pChip.n透明度 = 0xff - (int)((pChip.nバーからの距離dot[inst] -\r
+                                                       CDTXMania.Instance.ConfigIni.nSuddenFrom[inst]) * 255.0 / 50.0);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pChip.b可視 = false;\r
+                                               pChip.n透明度 = 0;\r
+                                       }\r
                                }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_Wailing枠()\r
-               {\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               int GtWailingFrameX = CDTXMania.Instance.Coordinates.Lane.GtW.X +\r
-                                       (CDTXMania.Instance.Coordinates.Lane.GtW.W - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
-                               int BsWailingFrameX = CDTXMania.Instance.Coordinates.Lane.BsW.X +\r
-                                       (CDTXMania.Instance.Coordinates.Lane.BsW.W - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
-                               int GtWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(E楽器パート.GUITAR, true, true);\r
-                               int BsWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(E楽器パート.BASS, true, true);\r
-\r
-                               if (this.txWailing枠 != null)\r
+                               if (CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.Hidden ||\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[inst] == ESudHidInv.SudHid)\r
                                {\r
-                                       if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+                                       if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nHiddenFrom[inst])\r
                                        {\r
-                                               this.txWailing枠.t2D描画(CDTXMania.Instance.Device, GtWailingFrameX, GtWailingFrameY);\r
+                                               pChip.b可視 = false;\r
                                        }\r
-                                       if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+                                       else if (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.ConfigIni.nHiddenFrom[inst] + 100)\r
                                        {\r
-                                               this.txWailing枠.t2D描画(CDTXMania.Instance.Device, BsWailingFrameX, BsWailingFrameY);\r
+                                               pChip.b可視 = true;\r
+                                               pChip.n透明度 = (int)((pChip.nバーからの距離dot[inst] -\r
+                                                       CDTXMania.Instance.ConfigIni.nHiddenFrom[inst]) * 255.0 / 50.0);\r
                                        }\r
                                }\r
                        }\r
                }\r
 \r
-               protected void t進行描画_パネル文字列()\r
-               {\r
-                       if ((base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
-                       {\r
-                               this.actPanel.t進行描画(CDTXMania.Instance.Coordinates.Panel.X, CDTXMania.Instance.Coordinates.Panel.Y);\r
-                       }\r
-               }\r
 \r
                /// <summary>\r
                /// ギター・ベースのチップ表示\r
@@ -107,27 +68,11 @@ namespace DTXMania
                /// <param name="dTX"></param>\r
                /// <param name="pChip">描画するチップ</param>\r
                /// <param name="inst">楽器種別</param>\r
-               protected void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst)\r
+               protected void t進行描画_チップ_ギターベース(ref CChip pChip, EPart inst)\r
                {\r
                        if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                        {\r
-                               #region [ Invisible / Hidden / Sudden 処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.eInvisible[inst] != EInvisible.OFF)\r
-                               {\r
-                                       cInvisibleChip.SetInvisibleStatus(ref pChip);\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (CDTXMania.Instance.ConfigIni.bSudden[inst])\r
-                                       {\r
-                                               pChip.b可視 = (pChip.nバーからの距離dot[inst] < CDTXMania.Instance.Coordinates.SuddenFrom[inst].Y);\r
-                                       }\r
-                                       if (CDTXMania.Instance.ConfigIni.bHidden[inst])\r
-                                       {\r
-                                               pChip.b可視 = (pChip.nバーからの距離dot[inst] >= CDTXMania.Instance.Coordinates.HiddenFrom[inst].Y);\r
-                                       }\r
-                               }\r
-                               #endregion\r
+                               SudHidInvChip(inst, ref pChip);\r
 \r
                                bool bChipHasR = pChip.bGuitarBass_R;\r
                                bool bChipHasG = pChip.bGuitarBass_G;\r
@@ -157,9 +102,9 @@ namespace DTXMania
                                                {\r
                                                        int nアニメカウンタ現在の値 = this.ctチップ模様アニメ[inst].n現在の値;\r
                                                        #region [ OPENチップの描画 ]\r
-                                                       if (pChip[(inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Open : Ech定義.Bass_Open])\r
+                                                       if (pChip[(inst == EPart.Guitar) ? EChannel.Guitar_Open : EChannel.Bass_Open])\r
                                                        {\r
-                                                               int xo = (inst == E楽器パート.GUITAR) ? CDTXMania.Instance.Coordinates.Lane.GtO.X : CDTXMania.Instance.Coordinates.Lane.BsO.X;\r
+                                                               int xo = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst];\r
                                                                this.txチップGB.t2D描画(CDTXMania.Instance.Device, xo,\r
                                                                        y - CDTXMania.Instance.Coordinates.ImgGtChipOpen.H / 2,\r
                                                                        CDTXMania.Instance.Coordinates.ImgGtChipOpen.ApplyCounterY(nアニメカウンタ現在の値 % CDTXMania.Instance.Coordinates.ImgGtCountOpenChip, 2));\r
@@ -169,50 +114,26 @@ namespace DTXMania
                                                        #region [ RGBチップ描画 ]\r
                                                        if (bChipHasR)\r
                                                        {\r
-                                                               if (inst == E楽器パート.GUITAR)\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.GtR.X + (CDTXMania.Instance.Coordinates.Lane.GtR.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.BsR.X + (CDTXMania.Instance.Coordinates.Lane.BsR.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
+                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
+                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtR : ELane.BsR) +\r
+                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtR : ELane.BsR) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
+                                                                       y - rect.Height / 2, rect);\r
                                                        }\r
                                                        rect.X += rect.Width;\r
                                                        if (bChipHasG)\r
                                                        {\r
-                                                               if (inst == E楽器パート.GUITAR)\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.GtG.X + (CDTXMania.Instance.Coordinates.Lane.GtG.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.BsG.X + (CDTXMania.Instance.Coordinates.Lane.BsG.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
+                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
+                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtG : ELane.BsG) +\r
+                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtG : ELane.BsG) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
+                                                                       y - rect.Height / 2, rect);\r
                                                        }\r
                                                        rect.X += rect.Width;\r
                                                        if (bChipHasB)\r
                                                        {\r
-                                                               if (inst == E楽器パート.GUITAR)\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.GtB.X + (CDTXMania.Instance.Coordinates.Lane.GtB.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Lane.BsB.X + (CDTXMania.Instance.Coordinates.Lane.BsB.W - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
-                                                                               y - rect.Height / 2, rect);\r
-                                                               }\r
+                                                               this.txチップGB.t2D描画(CDTXMania.Instance.Device,\r
+                                                                       CDTXMania.Instance.ConfigIni.GetLaneX(inst == EPart.Guitar ? ELane.GtB : ELane.BsB) +\r
+                                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(inst == EPart.Guitar ? ELane.GtB : ELane.BsB) - CDTXMania.Instance.Coordinates.ImgGtRGBButton.W) / 2,\r
+                                                                       y - rect.Height / 2, rect);\r
                                                        }\r
                                                        #endregion\r
                                                }\r
@@ -228,13 +149,16 @@ namespace DTXMania
                                        cInvisibleChip.StartSemiInvisible(inst);\r
                                }\r
 \r
-                               bool autoPick = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick;\r
+                               bool autoPick = (inst == EPart.Guitar) ?\r
+                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick :\r
+                                                                               CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick;\r
+\r
                                autoPlayCondition = !pChip.bHit && autoPick;\r
                                long ghostLag = 0;\r
                                bool bUsePerfectGhost = true;\r
 \r
-                               if ((pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS) &&\r
-                                               CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] != EAutoGhostData.PERFECT &&\r
+                               if ((pChip.e楽器パート == EPart.Guitar || pChip.e楽器パート == EPart.Bass) &&\r
+                                               CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] != EAutoGhostData.Perfect &&\r
                                                CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート] != null &&\r
                                                0 <= pChip.n楽器パートでの出現順 &&\r
                                                pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート].Count)\r
@@ -244,7 +168,9 @@ namespace DTXMania
                                        ghostLag = CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート][pChip.n楽器パートでの出現順];\r
                                        bool resetCombo = ghostLag > 255;\r
                                        ghostLag = (ghostLag & 255) - 128;\r
-                                       ghostLag -= (pChip.e楽器パート == E楽器パート.GUITAR ? nInputAdjustTimeMs.Guitar : nInputAdjustTimeMs.Bass);\r
+                                       ghostLag -= (pChip.e楽器パート == EPart.Guitar ?\r
+                                                                                               CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar :\r
+                                                                                               CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);\r
                                        autoPlayCondition &= (pChip.n発声時刻ms + ghostLag <= CSound管理.rc演奏用タイマ.n現在時刻ms);\r
                                        if (resetCombo && autoPlayCondition)\r
                                        {\r
@@ -261,13 +187,14 @@ namespace DTXMania
 \r
                                if (autoPlayCondition)\r
                                {\r
-                                       int lo = (inst == E楽器パート.GUITAR) ? 0 : 3;     // lane offset\r
-                                       bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR;\r
-                                       bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG;\r
-                                       bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB;\r
-                                       bool pushingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R);\r
-                                       bool pushingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G);\r
-                                       bool pushingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B);\r
+                                       // lane offset\r
+                                       int lo = (inst == EPart.Guitar) ? 0 : 3;\r
+                                       bool autoR = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtR : CDTXMania.Instance.ConfigIni.bAutoPlay.BsR;\r
+                                       bool autoG = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtG : CDTXMania.Instance.ConfigIni.bAutoPlay.BsG;\r
+                                       bool autoB = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtB : CDTXMania.Instance.ConfigIni.bAutoPlay.BsB;\r
+                                       bool pushingR = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtR : EPad.BsR);\r
+                                       bool pushingG = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtG : EPad.BsG);\r
+                                       bool pushingB = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtB : EPad.BsB);\r
 \r
                                        #region [ Chip Fire effects (auto時用) ]\r
                                        // autoPickでない時の処理は、 t入力処理・ギターベース(E楽器パート) で行う\r
@@ -290,8 +217,8 @@ namespace DTXMania
                                        #region [ autopick ]\r
                                        {\r
                                                bool bMiss = true;\r
-                                               if (bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB)             // autoレーンとチップレーン一致時はOK\r
-                                               {                                                                                                                                                       // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。\r
+                                               if (bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB)   // autoレーンとチップレーン一致時はOK\r
+                                               {                                     // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。\r
                                                        bMiss = false;\r
                                                }\r
                                                else if ((autoR || (bChipHasR == pushingR)) && (autoG || (bChipHasG == pushingG)) && (autoB || (bChipHasB == pushingB)))\r
@@ -299,7 +226,7 @@ namespace DTXMania
                                                {\r
                                                        bMiss = false;\r
                                                }\r
-                                               else if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB)))     // OPEN時\r
+                                               else if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB))) // OPEN時\r
                                                {\r
                                                        bMiss = false;\r
                                                }\r
@@ -313,11 +240,11 @@ namespace DTXMania
                                                }\r
                                                else\r
                                                {\r
-                                                       pChip.nLag = 0;         // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入\r
+                                                       pChip.nLag = 0;   // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入\r
                                                        this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip, false);\r
                                                }\r
-                                               Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
-                                               CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[inst], 140);\r
+                                               EChannel chWailingChip = (inst == EPart.Guitar) ? EChannel.Guitar_Wailing : EChannel.Bass_Wailing;\r
+                                               CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst], 140);\r
                                                if (item != null && !bMiss)\r
                                                {\r
                                                        this.queWailing[inst].Enqueue(item);\r
@@ -328,7 +255,7 @@ namespace DTXMania
                                }\r
                                SetGhostTargetOnGraph(inst);\r
                                return;\r
-                       }       // end of "if configIni.bGuitar有効"\r
+                       } // end of "if configIni.bGuitar有効"\r
                        else\r
                        {\r
                                // Guitar/Bass無効の場合は、自動演奏する\r
@@ -340,17 +267,17 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               private void SetGhostTargetOnGraph(E楽器パート inst)\r
+               private void SetGhostTargetOnGraph(EPart inst)\r
                {\r
-                       if (inst != E楽器パート.UNKNOWN)\r
+                       if (inst != EPart.Unknown)\r
                        {\r
                                // #35411 2015.08.21 chnmr0 add\r
                                // 目標値グラフにゴーストの達成率を渡す\r
-                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.NONE &&\r
+                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None &&\r
                                                CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null)\r
                                {\r
                                        double val = 0;\r
-                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.ONLINE)\r
+                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Online)\r
                                        {\r
                                                if (CDTXMania.Instance.DTX.n可視チップ数[inst] > 0)\r
                                                {\r
@@ -364,13 +291,13 @@ namespace DTXMania
                                        else\r
                                        {\r
                                                val = CScoreIni.t演奏型スキルを計算して返す(\r
-                                                               CDTXMania.Instance.DTX.n可視チップ数[inst],\r
-                                                               this.nヒット数_TargetGhost[inst].Perfect,\r
-                                                               this.nヒット数_TargetGhost[inst].Great,\r
-                                                               this.nヒット数_TargetGhost[inst].Good,\r
-                                                               this.nヒット数_TargetGhost[inst].Poor,\r
-                                                               this.nヒット数_TargetGhost[inst].Miss,\r
-                                                               E楽器パート.DRUMS, new STAUTOPLAY());\r
+                                                                               CDTXMania.Instance.DTX.n可視チップ数[inst],\r
+                                                                               this.nヒット数_TargetGhost[inst].Perfect,\r
+                                                                               this.nヒット数_TargetGhost[inst].Great,\r
+                                                                               this.nヒット数_TargetGhost[inst].Good,\r
+                                                                               this.nヒット数_TargetGhost[inst].Poor,\r
+                                                                               this.nヒット数_TargetGhost[inst].Miss,\r
+                                                                               EPart.Drums, false);\r
                                        }\r
                                        if (val < 0)\r
                                        {\r
@@ -393,27 +320,31 @@ namespace DTXMania
                        {\r
                                pChip.bHit = true;\r
                                this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;\r
-                               if (CDTXMania.Instance.ConfigIni.bWave再生位置自動調整機能有効 && (bIsDirectSound || bUseOSTimer))\r
+                               if (CDTXMania.Instance.ConfigIni.bWaveAdjust && (bIsDirectSound || CDTXMania.Instance.ConfigIni.bUseOSTimer))\r
                                {\r
                                        CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
                                }\r
                                // dTX.tWaveBGM再生位置表示();            //デバッグ用\r
                        }\r
 \r
-                       E楽器パート ePhraseNumberDisplayInst = E楽器パート.DRUMS;\r
+                       EPart ePhraseNumberDisplayInst = EPart.Drums;\r
                        if (!CDTXMania.Instance.DTX.bチップがある.Drums)\r
                        {\r
-                               ePhraseNumberDisplayInst = E楽器パート.GUITAR;\r
+                               ePhraseNumberDisplayInst = EPart.Guitar;\r
                                if (!CDTXMania.Instance.DTX.bチップがある.Guitar)\r
                                {\r
-                                       ePhraseNumberDisplayInst = E楽器パート.BASS;\r
+                                       ePhraseNumberDisplayInst = EPart.Bass;\r
                                }\r
                        }\r
 \r
-                       for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                       for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                        {\r
-                               if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                               if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                {\r
+                                       if ((inst == EPart.Guitar || inst == EPart.Bass) && pChip[EChannel.BeatLine])\r
+                                       {\r
+                                               continue;\r
+                                       }\r
                                        this.txチップ.n透明度 = 255;\r
 \r
                                        int y = C演奏判定ライン座標共通.n判定ラインY座標(inst);\r
@@ -421,13 +352,13 @@ namespace DTXMania
                                        int ymax = SampleFramework.GameWindowSize.Height;\r
 \r
                                        int dy = 0;\r
-                                       Rectangle rc = pChip[Ech定義.BeatLine] ?\r
+                                       Rectangle rc = pChip[EChannel.BeatLine] ?\r
                                                CDTXMania.Instance.Coordinates.ImgBeatLine :\r
                                                CDTXMania.Instance.Coordinates.ImgBarLine;\r
 \r
                                        if (\r
-                                               (inst == E楽器パート.DRUMS && !CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
-                                               (inst != E楽器パート.DRUMS && CDTXMania.Instance.ConfigIni.bReverse[inst])\r
+                                               (inst == EPart.Drums && !CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
+                                               (inst != EPart.Drums && CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                )\r
                                        {\r
                                                // 上から下へくるパターン\r
@@ -435,8 +366,8 @@ namespace DTXMania
                                                dy = -dy;\r
                                        }\r
                                        else if (\r
-                                               (inst == E楽器パート.DRUMS && CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
-                                               (inst != E楽器パート.DRUMS && !CDTXMania.Instance.ConfigIni.bReverse[inst])\r
+                                               (inst == EPart.Drums && CDTXMania.Instance.ConfigIni.bReverse.Drums) ||\r
+                                               (inst != EPart.Drums && !CDTXMania.Instance.ConfigIni.bReverse[inst])\r
                                                )\r
                                        {\r
                                                // 下から上へくるパターン\r
@@ -445,32 +376,35 @@ namespace DTXMania
 \r
                                        // Reverse時の小節線消失位置を、RGBボタンの真ん中程度に。\r
                                        // 非Reverse時の消失処理は、従来通りt進行描画・チップ()にお任せ。\r
-                                       int n小節線消失距離dot = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true) - dy;\r
+                                       // int n小節線消失距離dot = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true) - dy;\r
 \r
-                                       if ((CDTXMania.Instance.DTX.bチップがある[(int)inst]) && (ymin < y) && (y < ymax)\r
-                                               /*&& (pChip.nバーからの距離dot[(int)inst] >= n小節線消失距離dot)*/)\r
+                                       if ((CDTXMania.Instance.DTX.bチップがある[(int)inst]) && (ymin < y) && (y < ymax) &&\r
+                                               (CDTXMania.Instance.ConfigIni.eDark == EDark.Off ||\r
+                                               (CDTXMania.Instance.ConfigIni.eDark == EDark.Half && pChip[EChannel.BarLine])))\r
+                                               /*&& (pChip.nバーからの距離dot[(int)inst] >= n小節線消失距離dot)*/\r
                                        {\r
+                                               int jx = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value;\r
+                                               int jy = CDTXMania.Instance.ConfigIni.cdJudgeLineY[inst];\r
+                                               int jw = CDTXMania.Instance.Coordinates.Instrument[inst].W;\r
                                                //小節線・拍線\r
-                                               for (int offsetX = 0; offsetX < CDTXMania.Instance.Coordinates.JudgeLine[inst].W; offsetX += rc.Width)\r
+                                               for (int offsetX = 0; offsetX < jw; offsetX += rc.Width)\r
                                                {\r
-                                                       int x = CDTXMania.Instance.Coordinates.JudgeLine[inst].X + offsetX;\r
-                                                       if (offsetX + rc.Width > CDTXMania.Instance.Coordinates.JudgeLine[inst].W)\r
+                                                       int x = jx + offsetX;\r
+                                                       if (offsetX + rc.Width > jw)\r
                                                        {\r
-                                                               rc.Width = CDTXMania.Instance.Coordinates.JudgeLine[inst].W - offsetX;\r
+                                                               rc.Width = jw - offsetX;\r
                                                        }\r
                                                        this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y, rc);\r
                                                }\r
                                                if (\r
-                                                       pChip[Ech定義.BarLine] &&\r
-                                                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する &&\r
-                                                       (CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF) &&\r
+                                                       pChip[EChannel.BarLine] &&\r
+                                                       CDTXMania.Instance.ConfigIni.bDebugInfo &&\r
+                                                       (CDTXMania.Instance.ConfigIni.eDark == EDark.Off) &&\r
                                                        inst == ePhraseNumberDisplayInst)\r
                                                {\r
                                                        // 小節番号の表示\r
                                                        int n小節番号 = n小節番号plus1 - 1;\r
-                                                       int x = CDTXMania.Instance.Coordinates.JudgeLine[inst].X +\r
-                                                               CDTXMania.Instance.Coordinates.JudgeLine[inst].W +\r
-                                                               CDTXMania.Instance.Coordinates.ImgConsoleFont.W;\r
+                                                       int x = jx + jw + CDTXMania.Instance.Coordinates.ImgConsoleFont.W;\r
                                                        CDTXMania.Instance.act文字コンソール.tPrint(x, y - CDTXMania.Instance.Coordinates.ImgConsoleFont.H / 2,\r
                                                                C文字コンソール.Eフォント種別.白, n小節番号.ToString()\r
                                                        );\r
@@ -480,46 +414,19 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected void t進行描画_演奏情報()\r
-               {\r
-                       if (!CDTXMania.Instance.ConfigIni.b演奏情報を表示しない)\r
-                       {\r
-                               this.actPlayInfo.t進行描画(CDTXMania.Instance.Coordinates.Debug.X, CDTXMania.Instance.Coordinates.Debug.Y);\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_背景()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF)\r
-                       {\r
-                               if (this.tx背景 != null)\r
-                               {\r
-                                       this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_レーン()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF)\r
-                       {\r
-                               this.actLane.On進行描画();\r
-                       }\r
-               }\r
-\r
                private void t進行描画_判定ライン()\r
                {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
+                       if (CDTXMania.Instance.ConfigIni.eDark != EDark.Full)\r
                        {\r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])\r
                                        {\r
                                                // #31602 2016.2.11 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
                                                int y = C演奏判定ライン座標共通.n判定ラインY座標(inst, false, true);\r
                                                if (this.txヒットバー != null)\r
                                                {\r
-                                                       int lineLength = CDTXMania.Instance.Coordinates.JudgeLine[inst].W;\r
+                                                       int lineLength = CDTXMania.Instance.Coordinates.Instrument[inst].W;\r
                                                        Rectangle rc = CDTXMania.Instance.Coordinates.ImgJudgeLine;\r
                                                        for (int tmpW = 0; tmpW < lineLength; tmpW += rc.Width)\r
                                                        {\r
@@ -528,7 +435,7 @@ namespace DTXMania
                                                                        rc.Width = lineLength - tmpW;\r
                                                                }\r
                                                                this.txヒットバー.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.Coordinates.JudgeLine[inst].X + tmpW, y, rc);\r
+                                                                       CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst] + tmpW, y, rc);\r
                                                        }\r
                                                }\r
                                        }\r
@@ -595,17 +502,17 @@ namespace DTXMania
                                                {\r
                                                        using (Graphics graphics2 = Graphics.FromImage(image))\r
                                                        {\r
-                                                               graphics2.FillRectangle(Brushes.Black, CDTXMania.Instance.Coordinates.Movie);\r
+                                                               graphics2.FillRectangle(Brushes.Black,\r
+                                                                       new Rectangle(\r
+                                                                               CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                                                               CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                                                               CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H));\r
                                                        }\r
                                                }\r
+                                               #endregion\r
                                        }\r
-                                       if (this.tx背景 != null)\r
-                                       {\r
-                                               TextureFactory.tテクスチャの解放(ref this.tx背景);\r
-                                               this.tx背景 = null;\r
-                                       }\r
+                                       TextureFactory.tテクスチャの解放(ref this.tx背景);\r
                                        this.tx背景 = TextureFactory.tテクスチャの生成(image, true);\r
-                                               #endregion\r
                                }\r
                        }\r
                }\r
@@ -614,157 +521,62 @@ namespace DTXMania
                {\r
                        if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                        {\r
-                               #region [ Invisible処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.eInvisible.Drums != EInvisible.OFF)\r
-                               {\r
-                                       cInvisibleChip.SetInvisibleStatus(ref pChip);\r
-                               }\r
-                               #endregion\r
-                               else\r
-                               {\r
-                                       #region [ Sudden処理 ]\r
-                                       if (CDTXMania.Instance.ConfigIni.bSudden.Drums)\r
-                                       {\r
-                                               if (pChip.nバーからの距離dot.Drums < CDTXMania.Instance.Coordinates.SuddenFrom.Drums.Y)\r
-                                               {\r
-                                                       pChip.b可視 = true;\r
-                                                       pChip.n透明度 = 0xff;\r
-                                               }\r
-                                               else if (pChip.nバーからの距離dot.Drums < CDTXMania.Instance.Coordinates.SuddenFadeInFrom.Drums.Y)\r
-                                               {\r
-                                                       pChip.b可視 = true;\r
-                                                       pChip.n透明度 = 0xff - (int)((pChip.nバーからの距離dot.Drums - CDTXMania.Instance.Coordinates.SuddenFrom.Drums.Y) * 255.0 / 50.0);\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       pChip.b可視 = false;\r
-                                                       pChip.n透明度 = 0;\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ Hidden処理 ]\r
-                                       if (CDTXMania.Instance.ConfigIni.bHidden.Drums)\r
-                                       {\r
-                                               if (pChip.nバーからの距離dot.Drums < CDTXMania.Instance.Coordinates.HiddenFrom.Drums.Y)\r
-                                               {\r
-                                                       pChip.b可視 = false;\r
-                                               }\r
-                                               else if (pChip.nバーからの距離dot.Drums < CDTXMania.Instance.Coordinates.HiddenFadeOutFrom.Drums.Y)\r
-                                               {\r
-                                                       pChip.b可視 = true;\r
-                                                       pChip.n透明度 = (int)((pChip.nバーからの距離dot.Drums - CDTXMania.Instance.Coordinates.HiddenFrom.Drums.Y) * 255.0 / 50.0);\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                               }\r
+                               SudHidInvChip(EPart.Drums, ref pChip);\r
+\r
                                if (!pChip.bHit && pChip.b可視)\r
                                {\r
                                        if (this.txチップ != null)\r
                                        {\r
                                                this.txチップ.n透明度 = pChip.n透明度;\r
                                        }\r
-                                       int jy = C演奏判定ライン座標共通.n判定ラインY座標(E楽器パート.DRUMS);\r
+                                       int jy = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Drums);\r
                                        int y = CDTXMania.Instance.ConfigIni.bReverse.Drums ? (int)(jy + pChip.nバーからの距離dot.Drums) : (int)(jy - pChip.nバーからの距離dot.Drums);\r
 \r
                                        if (this.txチップ != null)\r
                                        {\r
                                                this.txチップ.vc拡大縮小倍率 = new Vector3((float)(pChip.dbチップサイズ倍率), (float)pChip.dbチップサイズ倍率, 1f);\r
                                        }\r
-                                       int x;\r
+\r
                                        int num9 = this.ctチップ模様アニメ.Drums.n現在の値 % CDTXMania.Instance.Coordinates.ImgDrCountChip;\r
-                                       switch (pChip.eチャンネル番号)\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(EnumConverter.LaneFromChannel(pChip.eチャンネル番号)) +\r
+                                               (int)((CDTXMania.Instance.ConfigIni.GetLaneW(EnumConverter.LaneFromChannel(pChip.eチャンネル番号))\r
+                                               - (CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].W * (pChip.dbチップサイズ倍率))) / 2.0);\r
+                                       if (this.txチップ != null)\r
                                        {\r
-                                               case Ech定義.HiHatClose:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.HHC.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.HHC.W - (CDTXMania.Instance.Coordinates.ImgDrChipHHC.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHC.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHC.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case Ech定義.Snare:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.SD.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.SD.W - (CDTXMania.Instance.Coordinates.ImgDrChipSD.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipSD.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipSD.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case Ech定義.BassDrum:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.BD.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.BD.W - (CDTXMania.Instance.Coordinates.ImgDrChipBD.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipBD.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipBD.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case Ech定義.HighTom:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.HT.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.HT.W - (CDTXMania.Instance.Coordinates.ImgDrChipHT.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHT.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHT.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case Ech定義.LowTom:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.LT.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.LT.W - (CDTXMania.Instance.Coordinates.ImgDrChipLT.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipLT.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipLT.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
-\r
-                                               case Ech定義.Cymbal:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.CY.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.CY.W - (CDTXMania.Instance.Coordinates.ImgDrChipCY.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
-                                                       if (this.txチップ != null)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipCYDeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCYDeco);\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipCY.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCY.ApplyCounterY(num9, 2));\r
-                                                       }\r
-                                                       break;\r
+                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x,\r
+                                                       y - CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].H / 2,\r
+                                                       CDTXMania.Instance.Coordinates.ImgDrChip[EnumConverter.PadFromChannel(pChip.eチャンネル番号)].ApplyCounterY(num9, 2));\r
+                                       }\r
 \r
-                                               case Ech定義.FloorTom:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.FT.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.FT.W - (CDTXMania.Instance.Coordinates.ImgDrChipFT.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
+                                       // Chip Decoration\r
+                                       switch (pChip.eチャンネル番号)\r
+                                       {\r
+                                               case EChannel.Cymbal:\r
                                                        if (this.txチップ != null)\r
                                                        {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipFT.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipFT.ApplyCounterY(num9, 2));\r
+                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x,\r
+                                                                       y - CDTXMania.Instance.Coordinates.ImgDrChipCYDeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCYDeco);\r
                                                        }\r
                                                        break;\r
 \r
-                                               case Ech定義.HiHatOpen:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.HHO.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.HHO.W - (CDTXMania.Instance.Coordinates.ImgDrChipHHO.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
+                                               case EChannel.HiHatOpen:\r
                                                        if (this.txチップ != null)\r
                                                        {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHO.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHO.ApplyCounterY(num9, 2));\r
                                                                this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHODeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHODeco);\r
                                                        }\r
                                                        break;\r
 \r
-                                               case Ech定義.RideCymbal:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.RCY.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.RCY.W - (CDTXMania.Instance.Coordinates.ImgDrChipRCY.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
+                                               case EChannel.RideCymbal:\r
                                                        if (this.txチップ != null)\r
                                                        {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipRCY.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipRCY.ApplyCounterY(num9, 2));\r
                                                                this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipHHODeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipHHODeco);\r
                                                        }\r
                                                        break;\r
 \r
-                                               case Ech定義.LeftCymbal:\r
-                                                       x = CDTXMania.Instance.Coordinates.Lane.LCY.X +\r
-                                                               (int)((CDTXMania.Instance.Coordinates.Lane.LCY.W - (CDTXMania.Instance.Coordinates.ImgDrChipCY.W * (pChip.dbチップサイズ倍率))) / 2.0);\r
+                                               case EChannel.LeftCymbal:\r
                                                        if (this.txチップ != null)\r
                                                        {\r
                                                                this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipCYDeco.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCYDeco);\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device, x, y - CDTXMania.Instance.Coordinates.ImgDrChipCY.H / 2, CDTXMania.Instance.Coordinates.ImgDrChipCY.ApplyCounterY(num9, 2));\r
                                                        }\r
                                                        break;\r
                                        }\r
@@ -775,20 +587,19 @@ namespace DTXMania
                                        }\r
                                }\r
 \r
-                               int indexSevenLanes = CStage演奏画面共通.nチャンネル0Atoレーン07[pChip.eチャンネル番号 - Ech定義.HiHatClose];\r
                                // #35411 chnmr0 modified\r
-                               bool autoPlayCondition = (CDTXMania.Instance.ConfigIni.bAutoPlay[indexSevenLanes] && !pChip.bHit);\r
+                               bool autoPlayCondition = (CDTXMania.Instance.ConfigIni.bAutoPlay[EnumConverter.PadFromChannel(pChip.eチャンネル番号)] && !pChip.bHit);\r
                                bool UsePerfectGhost = true;\r
                                long ghostLag = 0;\r
 \r
-                               if (CDTXMania.Instance.ConfigIni.eAutoGhost.Drums != EAutoGhostData.PERFECT &&\r
+                               if (CDTXMania.Instance.ConfigIni.eAutoGhost.Drums != EAutoGhostData.Perfect &&\r
                                                CDTXMania.Instance.DTX.listAutoGhostLag.Drums != null &&\r
                                                0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listAutoGhostLag.Drums.Count)\r
                                {\r
                                        // ゴーストデータが有効 : ラグに合わせて判定\r
                                        ghostLag = CDTXMania.Instance.DTX.listAutoGhostLag.Drums[pChip.n楽器パートでの出現順];\r
                                        ghostLag = (ghostLag & 255) - 128;\r
-                                       ghostLag -= this.nInputAdjustTimeMs.Drums;\r
+                                       ghostLag -= CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
                                        autoPlayCondition &= !pChip.bHit && (ghostLag + pChip.n発声時刻ms <= CSound管理.rc演奏用タイマ.n現在時刻ms);\r
                                        UsePerfectGhost = false;\r
                                }\r
@@ -801,27 +612,27 @@ namespace DTXMania
                                if (autoPlayCondition)\r
                                {\r
                                        pChip.bHit = true;\r
-                                       this.actLaneFlushD.Start((Eレーン)indexSevenLanes, ((float)CInput管理.n通常音量) / 127f);\r
+                                       this.actLaneFlushD.Start(EnumConverter.LaneFromChannel(pChip.eチャンネル番号), ((float)CInput管理.n通常音量) / 127f);\r
                                        bool flag = this.bフィルイン中;\r
                                        bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである(pChip);\r
                                        //bool flag3 = flag2;\r
                                        // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加\r
-                                       this.actChipFireD.Start((Eレーン)indexSevenLanes, flag, flag2, flag2);\r
-                                       this.actPad.Hit(this.nチャンネル0Atoパッド08[pChip.eチャンネル番号 - Ech定義.HiHatClose]);\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
+                                       this.actChipFireD.Start(EnumConverter.LaneFromChannel(pChip.eチャンネル番号), flag, flag2, flag2);\r
+                                       this.actPad.Hit(EnumConverter.PadFromChannel(pChip.eチャンネル番号));\r
+                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, EPart.Drums, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Drums));\r
                                        this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
-                                       cInvisibleChip.StartSemiInvisible(E楽器パート.DRUMS);\r
+                                       cInvisibleChip.StartSemiInvisible(EPart.Drums);\r
                                }\r
                                // #35411 modify end\r
 \r
-                               SetGhostTargetOnGraph(E楽器パート.DRUMS);\r
+                               SetGhostTargetOnGraph(EPart.Drums);\r
                                return;\r
                        }\r
                        else\r
                        {\r
                                if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.DRUMS));\r
+                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, EPart.Drums, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Drums));\r
                                        pChip.bHit = true;\r
                                }\r
                        }\r
index 0a1d4ab..7139f14 100644 (file)
@@ -37,17 +37,11 @@ namespace DTXMania
                                                txチップGB.n透明度 = pChip.n透明度;\r
                                        }\r
 \r
-                                       E楽器パート gb = pChip.bGuitar可視チップ_Wailing含む ? E楽器パート.GUITAR : E楽器パート.BASS;\r
+                                       EPart gb = pChip.bGuitar可視チップ_Wailing含む ? EPart.Guitar : EPart.Bass;\r
 \r
-                                       int x = 0;\r
-                                       if (gb == E楽器パート.GUITAR)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.GtW.X + (CDTXMania.Instance.Coordinates.Lane.GtW.W - CDTXMania.Instance.Coordinates.ImgGtWailingChip.W) / 2;\r
-                                       }\r
-                                       else if (gb == E楽器パート.BASS)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BsW.X + (CDTXMania.Instance.Coordinates.Lane.BsW.W - CDTXMania.Instance.Coordinates.ImgGtWailingChip.W) / 2;\r
-                                       }\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(gb == EPart.Guitar ? ELane.GtW : ELane.BsW)\r
+                                                       + (CDTXMania.Instance.ConfigIni.GetLaneW(gb == EPart.Guitar ? ELane.GtW : ELane.BsW)\r
+                                                       - CDTXMania.Instance.Coordinates.ImgGtWailingChip.W) / 2;\r
 \r
                                        int y = C演奏判定ライン座標共通.n判定ラインY座標(gb);\r
 \r
@@ -60,8 +54,8 @@ namespace DTXMania
                                                y = y + (int)(pChip.nバーからの距離dot[gb]);\r
                                        }\r
 \r
-                                       int numA = (int)(26 * Scale.Y);                 // ドラム画面かギター画面かで変わる値\r
-                                       int showRangeY1 = (int)(355 * Scale.Y); // ドラム画面かギター画面かで変わる値\r
+                                       int numA = (int)(26 * Scale.Y);     // ドラム画面かギター画面かで変わる値\r
+                                       int showRangeY1 = (int)(355 * Scale.Y); // ドラム画面かギター画面かで変わる値\r
                                        int numB = y - (int)(0x39 * Scale.Y);\r
                                        int numC = 0;\r
                                        if ((numB < (showRangeY1 + numA)) && (numB > -numA))\r
index 17514fe..b3fdc4b 100644 (file)
@@ -40,16 +40,15 @@ namespace DTXMania
                /// <param name="bWailingFrame">Wailing枠の座標か、判定ラインの座標か</param>\r
                /// <param name="b補正あり">プレーヤーのライン表示位置補正情報を加えるかどうか</param>\r
                /// <returns></returns>\r
-               public static int n判定ラインY座標(E楽器パート eInst, bool bWailingFrame = false, bool b補正あり = false, Reverse rt = Reverse.UseConfig)\r
+               public static int n判定ラインY座標(EPart eInst, bool bWailingFrame = false, bool b補正あり = false, Reverse rt = Reverse.UseConfig)\r
                {\r
-                       if (eInst == E楽器パート.UNKNOWN)\r
+                       if (eInst == EPart.Unknown)\r
                        {\r
                                throw new ArgumentOutOfRangeException();\r
                        }\r
                        else\r
                        {\r
-                               int ret = CDTXMania.Instance.Coordinates.JudgeLine[eInst].Y;\r
-\r
+                               int ret = CDTXMania.Instance.ConfigIni.cdJudgeLineY[eInst];\r
                                int delta = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[eInst];\r
 \r
                                bool rev = false;\r
@@ -69,7 +68,7 @@ namespace DTXMania
                                        {\r
                                                ret -= CDTXMania.Instance.Coordinates.ImgGtWailingFrame.H / 2;\r
                                        }\r
-                                       if (eInst == E楽器パート.DRUMS)\r
+                                       if (eInst == EPart.Drums)\r
                                        {\r
                                                delta = -delta;\r
                                        }\r
@@ -80,7 +79,7 @@ namespace DTXMania
                                        {\r
                                                ret -= CDTXMania.Instance.Coordinates.ImgGtWailingFrame.H / 2;\r
                                        }\r
-                                       if (eInst != E楽器パート.DRUMS)\r
+                                       if (eInst != EPart.Drums)\r
                                        {\r
                                                delta = -delta;\r
                                        }\r
@@ -93,13 +92,13 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               public static int n演奏RGBボタンY座標(E楽器パート eInst)\r
+               public static int n演奏RGBボタンY座標(EPart eInst)\r
                {\r
-                       if (eInst == E楽器パート.DRUMS)\r
+                       if (eInst == EPart.Drums)\r
                        {\r
                                throw new NotImplementedException();\r
                        }\r
-                       else if (eInst == E楽器パート.UNKNOWN)\r
+                       else if (eInst == EPart.Unknown)\r
                        {\r
                                throw new ArgumentOutOfRangeException();\r
                        }\r
index 5e9074c..78a131c 100644 (file)
@@ -22,14 +22,14 @@ namespace DTXMania
                // 修正等\r
                // ・画像がないと落ちる→修正済\r
 \r
-               public STDGBVALUE<double> dbTarget;\r
-               private STDGBVALUE<double> dbTargetDisp;\r
-               public STDGBVALUE<double> dbCurrent;\r
-               private STDGBVALUE<double> dbCurrentDisp;\r
+               public STDGBSValue<double> dbTarget;\r
+               private STDGBSValue<double> dbTargetDisp;\r
+               public STDGBSValue<double> dbCurrent;\r
+               private STDGBSValue<double> dbCurrentDisp;\r
 \r
                private CTexture txグラフ;\r
 \r
-               private STDGBVALUE<CCounter> counterYposInImg;\r
+               private STDGBSValue<CCounter> counterYposInImg;\r
                private readonly int slices = 10;\r
 \r
                public CAct演奏グラフ()\r
@@ -41,11 +41,11 @@ namespace DTXMania
                {\r
                        if (base.b活性化してない)\r
                        {\r
-                               this.dbTarget = new STDGBVALUE<double>();\r
+                               this.dbTarget = new STDGBSValue<double>();\r
                                dbTarget.Drums = dbTarget.Guitar = dbTarget.Bass = 80.0;\r
-                               this.dbCurrent = new STDGBVALUE<double>();\r
+                               this.dbCurrent = new STDGBSValue<double>();\r
                                dbCurrent.Drums = dbCurrent.Guitar = dbCurrent.Bass = 0.0;\r
-                               counterYposInImg = new STDGBVALUE<CCounter>();\r
+                               counterYposInImg = new STDGBSValue<CCounter>();\r
                                base.On活性化();\r
                        }\r
                }\r
@@ -71,15 +71,17 @@ namespace DTXMania
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
-               \r
+\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる && !CDTXMania.Instance.ConfigIni.bStoicMode)\r
                        {\r
 \r
-                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.b楽器有効[inst])\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) &&\r
+                                               CDTXMania.Instance.ConfigIni.bGraph[inst] &&\r
+                                               CDTXMania.Instance.DTX.bチップがある[inst])\r
                                        {\r
 \r
                                                if (base.b初めての進行描画)\r
@@ -93,6 +95,10 @@ namespace DTXMania
                                                counterYposInImg[inst].t進行Loop();\r
                                                int stYposInImg = counterYposInImg[inst].n現在の値;\r
 \r
+                                               int gx = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value\r
+                                                       + CDTXMania.Instance.Coordinates.Instrument[inst].W;\r
+                                               int gy = 0;\r
+\r
                                                // 背景暗幕\r
                                                if (this.txグラフ != null)\r
                                                {\r
@@ -100,12 +106,7 @@ namespace DTXMania
                                                        this.txグラフ.vc拡大縮小倍率.Y = CDTXMania.Instance.Coordinates.Graph[inst].H;\r
 \r
                                                        this.txグラフ.n透明度 = 128;\r
-                                                       this.txグラフ.t2D描画(\r
-                                                               CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y,\r
-                                                               new Rectangle(62, 0, 1, 1)\r
-                                                               );\r
+                                                       this.txグラフ.t2D描画(CDTXMania.Instance.Device, gx, gy, new Rectangle(62, 0, 1, 1));\r
 \r
                                                        // 基準線\r
 \r
@@ -115,12 +116,8 @@ namespace DTXMania
 \r
                                                        for (int i = 0; i < slices; i++)\r
                                                        {\r
-                                                               this.txグラフ.t2D描画(\r
-                                                                       CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                                       CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H * i / slices,\r
-                                                                       new Rectangle(60, 0, 1, 1)\r
-                                                                       );\r
+                                                               this.txグラフ.t2D描画(CDTXMania.Instance.Device,\r
+                                                                       gx, gy + CDTXMania.Instance.Coordinates.Graph[inst].H * i / slices, new Rectangle(60, 0, 1, 1));\r
                                                        }\r
 \r
                                                        for (int i = 0; i < 5; i++)\r
@@ -129,7 +126,7 @@ namespace DTXMania
                                                                // 基準線を越えたら線が黄色くなる\r
                                                                if (this.dbCurrent[inst] >= (100 - i * slices))\r
                                                                {\r
-                                                                       rectangle = new Rectangle(61, 0, 1, 1); //黄色\r
+                                                                       rectangle = new Rectangle(61, 0, 1, 1); //黄色\r
                                                                        if (this.txグラフ != null)\r
                                                                        {\r
                                                                                this.txグラフ.n透明度 = 224;\r
@@ -148,8 +145,7 @@ namespace DTXMania
                                                                {\r
                                                                        this.txグラフ.t2D描画(\r
                                                                                CDTXMania.Instance.Device,\r
-                                                                               CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y + i * CDTXMania.Instance.Coordinates.Graph[inst].H / slices,\r
+                                                                               gx, gy + i * CDTXMania.Instance.Coordinates.Graph[inst].H / slices,\r
                                                                                rectangle\r
                                                                                );\r
                                                                }\r
@@ -171,14 +167,12 @@ namespace DTXMania
                                                        this.txグラフ.n透明度 = 255;\r
                                                        this.txグラフ.t2D描画(\r
                                                                CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
+                                                               gx, gy + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
                                                                new Rectangle(0, 5 + stYposInImg, 30, ar)\r
                                                                );\r
                                                        this.txグラフ.t2D描画( // 上部白いバー\r
                                                                CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
+                                                               gx, gy + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
                                                                new Rectangle(0, 0, 30, 5)\r
                                                        );\r
 \r
@@ -190,8 +184,7 @@ namespace DTXMania
                                                                this.txグラフ.b加算合成 = true;\r
                                                                this.txグラフ.t2D描画(\r
                                                                        CDTXMania.Instance.Device,\r
-                                                                       CDTXMania.Instance.Coordinates.Graph[inst].X,\r
-                                                                       CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
+                                                                       gx, gy + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
                                                                        new Rectangle(0, 5 + stYposInImg, 30, ar)\r
                                                                        );\r
                                                                this.txグラフ.b加算合成 = false;\r
@@ -209,15 +202,13 @@ namespace DTXMania
 \r
                                                        this.txグラフ.t2D描画(\r
                                                                CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].X + 30,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
+                                                               gx + 30,\r
+                                                               gy + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
                                                                new Rectangle(30, 5 + stYposInImg, 30, ar)\r
                                                                );\r
                                                        this.txグラフ.n透明度 = 255;\r
                                                        this.txグラフ.t2D描画( // 上部白いバー\r
-                                                               CDTXMania.Instance.Device,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].X + 30,\r
-                                                               CDTXMania.Instance.Coordinates.Graph[inst].Y + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
+                                                               CDTXMania.Instance.Device, gx + 30, gy + CDTXMania.Instance.Coordinates.Graph[inst].H - ar,\r
                                                                new Rectangle(30, 0, 30, 5)\r
                                                        );\r
                                                }\r
index c3b15db..ff9802e 100644 (file)
@@ -14,7 +14,7 @@ namespace DTXMania
                }\r
 \r
                [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST火花\r
+               struct ST火花\r
                {\r
                        public int nLane;\r
                        public bool b使用中;\r
@@ -25,7 +25,7 @@ namespace DTXMania
                }\r
 \r
                [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST細波\r
+               struct ST細波\r
                {\r
                        public int nLane;\r
                        public bool b使用中;\r
@@ -37,7 +37,7 @@ namespace DTXMania
                }\r
 \r
                [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST青い星\r
+               struct ST青い星\r
                {\r
                        public int nLane;\r
                        public bool b使用中;\r
@@ -54,7 +54,7 @@ namespace DTXMania
                }\r
 \r
                [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST大波\r
+               struct ST大波\r
                {\r
                        public int nLane;\r
                        public bool b使用中;\r
@@ -67,44 +67,44 @@ namespace DTXMania
                        public float f回転方向;\r
                }\r
 \r
-               private const int BIGWAVE_MAX = 20;\r
-               private bool b細波Balance;\r
-               private bool b大波Balance;\r
-               private const int FIRE_MAX = 8 * 8;\r
-               private readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
-               private readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
-               private readonly int[] nレーンの中央X座標 = new int[]\r
-               { \r
-                       CDTXMania.Instance.Coordinates.Lane.LCY.X + CDTXMania.Instance.Coordinates.Lane.LCY.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.HHC.X + CDTXMania.Instance.Coordinates.Lane.HHC.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.SD.X + CDTXMania.Instance.Coordinates.Lane.SD.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.BD.X + CDTXMania.Instance.Coordinates.Lane.BD.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.HT.X + CDTXMania.Instance.Coordinates.Lane.HT.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.LT.X + CDTXMania.Instance.Coordinates.Lane.LT.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.FT.X + CDTXMania.Instance.Coordinates.Lane.FT.W/2,\r
-                       CDTXMania.Instance.Coordinates.Lane.CY.X + CDTXMania.Instance.Coordinates.Lane.CY.W/2,\r
+               const int BIGWAVE_MAX = 20;\r
+               bool b細波Balance;\r
+               bool b大波Balance;\r
+               const int FIRE_MAX = 8 * 8;\r
+               readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
+               readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
+               readonly int[] nレーンの中央X座標 = new int[]\r
+               {\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.LC) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.LC)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.HH) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.HH)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.SD) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.SD)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BD) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.BD)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.HT) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.HT)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.LT) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.LT)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.FT) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.FT)/2,\r
+                       CDTXMania.Instance.ConfigIni.GetLaneX(ELane.CY) + CDTXMania.Instance.ConfigIni.GetLaneW(ELane.CY)/2,\r
                };\r
-               private const int STAR_MAX = 0x100;\r
-               private ST火花[] st火花 = new ST火花[FIRE_MAX];\r
-               private ST大波[] st大波 = new ST大波[BIGWAVE_MAX];\r
-               private ST細波[] st細波 = new ST細波[BIGWAVE_MAX];\r
-               private ST青い星[] st青い星 = new ST青い星[STAR_MAX];\r
-               private CTexture tx火花;\r
-               private CTexture tx細波;\r
-               private CTexture tx青い星;\r
-               private CTexture tx大波;\r
-               private int posY;\r
+               const int STAR_MAX = 0x100;\r
+               ST火花[] st火花 = new ST火花[FIRE_MAX];\r
+               ST大波[] st大波 = new ST大波[BIGWAVE_MAX];\r
+               ST細波[] st細波 = new ST細波[BIGWAVE_MAX];\r
+               ST青い星[] st青い星 = new ST青い星[STAR_MAX];\r
+               CTexture tx火花;\r
+               CTexture tx細波;\r
+               CTexture tx青い星;\r
+               CTexture tx大波;\r
+               int posY;\r
 \r
-               public void Start(Eレーン lane, bool bフィルイン = false, bool b大波 = false, bool b細波 = false)\r
+               public void Start(ELane lane, bool bフィルイン = false, bool b大波 = false, bool b細波 = false)\r
                {\r
-                       if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                       if (CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある.Drums)\r
                        {\r
-                               // nJudgeLinePosY_delta_Drums = _nJudgeLinePosY_delta_Drums;\r
                                if (this.tx火花 != null)\r
                                {\r
                                        for (int j = 0; j < FIRE_MAX; j++)\r
                                        {\r
-                                               if (this.st火花[j].b使用中 && this.st火花[j].nLane == (int)lane)         // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
+                                               // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
+                                               if (this.st火花[j].b使用中 && this.st火花[j].nLane == (int)lane)\r
                                                {\r
                                                        this.st火花[j].ct進行.t停止();\r
                                                        this.st火花[j].b使用中 = false;\r
@@ -205,38 +205,41 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
-                       for (int i = 0; i < FIRE_MAX; i++)\r
-                       {\r
-                               this.st火花[i] = new ST火花();\r
-                               this.st火花[i].b使用中 = false;\r
-                               this.st火花[i].ct進行 = new CCounter();\r
-                       }\r
-                       for (int i = 0; i < STAR_MAX; i++)\r
-                       {\r
-                               this.st青い星[i] = new ST青い星();\r
-                               this.st青い星[i].b使用中 = false;\r
-                               this.st青い星[i].ct進行 = new CCounter();\r
-                       }\r
-                       for (int i = 0; i < BIGWAVE_MAX; i++)\r
+                       if (b活性化してない)\r
                        {\r
-                               this.st大波[i] = new ST大波();\r
-                               this.st大波[i].b使用中 = false;\r
-                               this.st大波[i].ct進行 = new CCounter();\r
-                               this.st細波[i] = new ST細波();\r
-                               this.st細波[i].b使用中 = false;\r
-                               this.st細波[i].ct進行 = new CCounter();\r
-                       }\r
+                               for (int i = 0; i < FIRE_MAX; i++)\r
+                               {\r
+                                       this.st火花[i] = new ST火花();\r
+                                       this.st火花[i].b使用中 = false;\r
+                                       this.st火花[i].ct進行 = new CCounter();\r
+                               }\r
+                               for (int i = 0; i < STAR_MAX; i++)\r
+                               {\r
+                                       this.st青い星[i] = new ST青い星();\r
+                                       this.st青い星[i].b使用中 = false;\r
+                                       this.st青い星[i].ct進行 = new CCounter();\r
+                               }\r
+                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
+                               {\r
+                                       this.st大波[i] = new ST大波();\r
+                                       this.st大波[i].b使用中 = false;\r
+                                       this.st大波[i].ct進行 = new CCounter();\r
+                                       this.st細波[i] = new ST細波();\r
+                                       this.st細波[i].b使用中 = false;\r
+                                       this.st細波[i].ct進行 = new CCounter();\r
+                               }\r
 \r
-                       posY = C演奏判定ライン座標共通.n判定ラインY座標(E楽器パート.DRUMS, false, true);\r
-                       int offsety = CDTXMania.Instance.Coordinates.ImgJudgeLine.H / 2;\r
-                       posY += offsety;\r
+                               posY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Drums, false, true);\r
+                               int offsety = CDTXMania.Instance.Coordinates.ImgJudgeLine.H / 2;\r
+                               posY += offsety;\r
 \r
-                       base.On活性化();\r
+                               base.On活性化();\r
+                       }\r
                }\r
 \r
                public override void On非活性化()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる)\r
                        {\r
                                for (int i = 0; i < FIRE_MAX; i++)\r
                                {\r
@@ -257,7 +260,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                this.tx火花 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chip fire.png"));\r
                                if (this.tx火花 != null)\r
@@ -285,7 +288,7 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx火花);\r
                                TextureFactory.tテクスチャの解放(ref this.tx青い星);\r
@@ -297,161 +300,157 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる && CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある.Drums)\r
                        {\r
-                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                               for (int i = 0; i < FIRE_MAX; i++)\r
                                {\r
-\r
-\r
-                                       for (int i = 0; i < FIRE_MAX; i++)\r
+                                       if (this.st火花[i].b使用中)\r
                                        {\r
-                                               if (this.st火花[i].b使用中)\r
+                                               this.st火花[i].ct進行.t進行();\r
+                                               if (this.st火花[i].ct進行.b終了値に達した)\r
                                                {\r
-                                                       this.st火花[i].ct進行.t進行();\r
-                                                       if (this.st火花[i].ct進行.b終了値に達した)\r
-                                                       {\r
-                                                               this.st火花[i].ct進行.t停止();\r
-                                                               this.st火花[i].b使用中 = false;\r
-                                                       }\r
-                                                       Matrix identity = Matrix.Identity;\r
-                                                       float num2 = ((float)this.st火花[i].ct進行.n現在の値) / 70f;\r
-                                                       float num3 = this.st火花[i].f回転単位 + (this.st火花[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num2)));\r
-                                                       float num4 = ((float)(0.2 + (0.8 * Math.Cos((((double)this.st火花[i].ct進行.n現在の値) / 50.0) * Math.PI / 2)))) * this.st火花[i].fサイズ;\r
-                                                       identity *= Matrix.Scaling(0.2f + num4, 0.2f + this.st火花[i].fサイズ, 1f);\r
-                                                       identity *= Matrix.RotationZ(num3 + ((float)Math.PI / 2));\r
-                                                       float num5 = ((float)(0.8 * Math.Sin(num2 * Math.PI / 2))) * this.st火花[i].fサイズ;\r
+                                                       this.st火花[i].ct進行.t停止();\r
+                                                       this.st火花[i].b使用中 = false;\r
+                                               }\r
+                                               Matrix identity = Matrix.Identity;\r
+                                               float num2 = ((float)this.st火花[i].ct進行.n現在の値) / 70f;\r
+                                               float num3 = this.st火花[i].f回転単位 + (this.st火花[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num2)));\r
+                                               float num4 = ((float)(0.2 + (0.8 * Math.Cos((((double)this.st火花[i].ct進行.n現在の値) / 50.0) * Math.PI / 2)))) * this.st火花[i].fサイズ;\r
+                                               identity *= Matrix.Scaling(0.2f + num4, 0.2f + this.st火花[i].fサイズ, 1f);\r
+                                               identity *= Matrix.RotationZ(num3 + ((float)Math.PI / 2));\r
+                                               float num5 = ((float)(0.8 * Math.Sin(num2 * Math.PI / 2))) * this.st火花[i].fサイズ;\r
 \r
-                                                       float dx = (this.nレーンの中央X座標[this.st火花[i].nLane] + (((float)Math.Cos((double)num3)) * num5) - SampleFramework.GameWindowSize.Width / 2);\r
-                                                       float dy = -(posY + (((float)Math.Sin((double)num3)) * num5) - SampleFramework.GameWindowSize.Height / 2f);\r
-                                                       identity *= Matrix.Translation(dx, dy, 0f);\r
-                                                       if (this.tx火花 != null)\r
-                                                       {\r
-                                                               this.tx火花.t3D描画(CDTXMania.Instance.Device, identity);\r
-                                                       }\r
+                                               float dx = (this.nレーンの中央X座標[this.st火花[i].nLane] + (((float)Math.Cos((double)num3)) * num5) - SampleFramework.GameWindowSize.Width / 2);\r
+                                               float dy = -(posY + (((float)Math.Sin((double)num3)) * num5) - SampleFramework.GameWindowSize.Height / 2f);\r
+                                               identity *= Matrix.Translation(dx, dy, 0f);\r
+                                               if (this.tx火花 != null)\r
+                                               {\r
+                                                       this.tx火花.t3D描画(CDTXMania.Instance.Device, identity);\r
                                                }\r
                                        }\r
-                                       for (int i = 0; i < STAR_MAX; i++)\r
+                               }\r
+                               for (int i = 0; i < STAR_MAX; i++)\r
+                               {\r
+                                       if (this.st青い星[i].b使用中)\r
                                        {\r
-                                               if (this.st青い星[i].b使用中)\r
+                                               this.st青い星[i].n前回のValue = this.st青い星[i].ct進行.n現在の値;\r
+                                               this.st青い星[i].ct進行.t進行();\r
+                                               if (this.st青い星[i].ct進行.b終了値に達した)\r
+                                               {\r
+                                                       this.st青い星[i].ct進行.t停止();\r
+                                                       this.st青い星[i].b使用中 = false;\r
+                                               }\r
+                                               for (int n = this.st青い星[i].n前回のValue; n < this.st青い星[i].ct進行.n現在の値; n++)\r
                                                {\r
-                                                       this.st青い星[i].n前回のValue = this.st青い星[i].ct進行.n現在の値;\r
-                                                       this.st青い星[i].ct進行.t進行();\r
-                                                       if (this.st青い星[i].ct進行.b終了値に達した)\r
+                                                       this.st青い星[i].fX += this.st青い星[i].f加速度X;\r
+                                                       this.st青い星[i].fY -= this.st青い星[i].f加速度Y;\r
+                                                       this.st青い星[i].f加速度X *= this.st青い星[i].f加速度の加速度X;\r
+                                                       this.st青い星[i].f加速度Y *= this.st青い星[i].f加速度の加速度Y;\r
+                                                       this.st青い星[i].f加速度Y -= this.st青い星[i].f重力加速度;\r
+                                               }\r
+                                               Matrix mat = Matrix.Identity;\r
+                                               float x = (float)(this.st青い星[i].f半径 * Math.Cos((Math.PI / 2 * this.st青い星[i].ct進行.n現在の値) / 100.0));\r
+                                               mat *= Matrix.Scaling(x, x, 1f);\r
+                                               mat *= Matrix.Translation(\r
+                                                       this.st青い星[i].fX - SampleFramework.GameWindowSize.Width / 2,\r
+                                                       -(this.st青い星[i].fY - SampleFramework.GameWindowSize.Height / 2),\r
+                                                       0f\r
+                                               );\r
+                                               if (this.tx青い星 != null)\r
+                                               {\r
+                                                       this.tx青い星.t3D描画(CDTXMania.Instance.Device, mat);\r
+                                               }\r
+                                       }\r
+                               }\r
+                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
+                               {\r
+                                       if (this.st大波[i].b使用中)\r
+                                       {\r
+                                               this.st大波[i].ct進行.t進行();\r
+                                               if (this.st大波[i].ct進行.b終了値に達した)\r
+                                               {\r
+                                                       this.st大波[i].ct進行.t停止();\r
+                                                       this.st大波[i].b使用中 = false;\r
+                                               }\r
+                                               if (this.st大波[i].ct進行.n現在の値 >= 0)\r
+                                               {\r
+                                                       Matrix matrix3 = Matrix.Identity;\r
+                                                       float num10 = ((float)this.st大波[i].ct進行.n現在の値) / 100f;\r
+                                                       float angle = this.st大波[i].f回転単位 + (this.st大波[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num10)));\r
+                                                       float num12 = 1f;\r
+                                                       if (num10 < 0.4f)\r
                                                        {\r
-                                                               this.st青い星[i].ct進行.t停止();\r
-                                                               this.st青い星[i].b使用中 = false;\r
+                                                               num12 = 2.5f * num10;\r
                                                        }\r
-                                                       for (int n = this.st青い星[i].n前回のValue; n < this.st青い星[i].ct進行.n現在の値; n++)\r
+                                                       else if (num10 < 0.8f)\r
                                                        {\r
-                                                               this.st青い星[i].fX += this.st青い星[i].f加速度X;\r
-                                                               this.st青い星[i].fY -= this.st青い星[i].f加速度Y;\r
-                                                               this.st青い星[i].f加速度X *= this.st青い星[i].f加速度の加速度X;\r
-                                                               this.st青い星[i].f加速度Y *= this.st青い星[i].f加速度の加速度Y;\r
-                                                               this.st青い星[i].f加速度Y -= this.st青い星[i].f重力加速度;\r
+                                                               num12 = (float)(1.0 + (10.1 * (1.0 - Math.Cos((Math.PI / 2 * (num10 - 0.4)) * 2.5))));\r
                                                        }\r
-                                                       Matrix mat = Matrix.Identity;\r
-                                                       float x = (float)(this.st青い星[i].f半径 * Math.Cos((Math.PI / 2 * this.st青い星[i].ct進行.n現在の値) / 100.0));\r
-                                                       mat *= Matrix.Scaling(x, x, 1f);\r
-                                                       mat *= Matrix.Translation(\r
-                                                               this.st青い星[i].fX - SampleFramework.GameWindowSize.Width / 2,\r
-                                                               -(this.st青い星[i].fY - SampleFramework.GameWindowSize.Height / 2),\r
-                                                               0f\r
-                                                       );\r
-                                                       if (this.tx青い星 != null)\r
+                                                       else\r
                                                        {\r
-                                                               this.tx青い星.t3D描画(CDTXMania.Instance.Device, mat);\r
+                                                               num12 = 11.1f + (12.5f * (num10 - 0.8f));\r
                                                        }\r
-                                               }\r
-                                       }\r
-                                       for (int i = 0; i < BIGWAVE_MAX; i++)\r
-                                       {\r
-                                               if (this.st大波[i].b使用中)\r
-                                               {\r
-                                                       this.st大波[i].ct進行.t進行();\r
-                                                       if (this.st大波[i].ct進行.b終了値に達した)\r
+                                                       int num13 = 0xff;\r
+                                                       if (num10 < 0.75f)\r
                                                        {\r
-                                                               this.st大波[i].ct進行.t停止();\r
-                                                               this.st大波[i].b使用中 = false;\r
+                                                               num13 = 0x37;\r
                                                        }\r
-                                                       if (this.st大波[i].ct進行.n現在の値 >= 0)\r
+                                                       else\r
                                                        {\r
-                                                               Matrix matrix3 = Matrix.Identity;\r
-                                                               float num10 = ((float)this.st大波[i].ct進行.n現在の値) / 100f;\r
-                                                               float angle = this.st大波[i].f回転単位 + (this.st大波[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num10)));\r
-                                                               float num12 = 1f;\r
-                                                               if (num10 < 0.4f)\r
-                                                               {\r
-                                                                       num12 = 2.5f * num10;\r
-                                                               }\r
-                                                               else if (num10 < 0.8f)\r
-                                                               {\r
-                                                                       num12 = (float)(1.0 + (10.1 * (1.0 - Math.Cos((Math.PI / 2 * (num10 - 0.4)) * 2.5))));\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       num12 = 11.1f + (12.5f * (num10 - 0.8f));\r
-                                                               }\r
-                                                               int num13 = 0xff;\r
-                                                               if (num10 < 0.75f)\r
-                                                               {\r
-                                                                       num13 = 0x37;\r
-                                                               }\r
-                                                               else\r
-                                                               {\r
-                                                                       num13 = (int)((55f * (1f - num10)) / 0.25f);\r
-                                                               }\r
-                                                               matrix3 *= Matrix.Scaling(num12 * this.st大波[i].f半径, num12 * this.st大波[i].f半径, 1f);\r
-                                                               matrix3 *= Matrix.RotationZ(angle);\r
-                                                               matrix3 *= Matrix.RotationX(this.st大波[i].f角度X);\r
-                                                               matrix3 *= Matrix.RotationY(this.st大波[i].f角度Y);\r
+                                                               num13 = (int)((55f * (1f - num10)) / 0.25f);\r
+                                                       }\r
+                                                       matrix3 *= Matrix.Scaling(num12 * this.st大波[i].f半径, num12 * this.st大波[i].f半径, 1f);\r
+                                                       matrix3 *= Matrix.RotationZ(angle);\r
+                                                       matrix3 *= Matrix.RotationX(this.st大波[i].f角度X);\r
+                                                       matrix3 *= Matrix.RotationY(this.st大波[i].f角度Y);\r
 \r
-                                                               float dx = this.nレーンの中央X座標[this.st大波[i].nLane] - SampleFramework.GameWindowSize.Width / 2;\r
-                                                               float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
-                                                               matrix3 *= Matrix.Translation(dx, dy, 0f);\r
-                                                               if (this.tx大波 != null)\r
-                                                               {\r
-                                                                       this.tx大波.n透明度 = num13;\r
-                                                                       this.tx大波.t3D描画(CDTXMania.Instance.Device, matrix3);\r
-                                                               }\r
+                                                       float dx = this.nレーンの中央X座標[this.st大波[i].nLane] - SampleFramework.GameWindowSize.Width / 2;\r
+                                                       float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
+                                                       matrix3 *= Matrix.Translation(dx, dy, 0f);\r
+                                                       if (this.tx大波 != null)\r
+                                                       {\r
+                                                               this.tx大波.n透明度 = num13;\r
+                                                               this.tx大波.t3D描画(CDTXMania.Instance.Device, matrix3);\r
                                                        }\r
                                                }\r
                                        }\r
-                                       for (int i = 0; i < BIGWAVE_MAX; i++)\r
+                               }\r
+                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
+                               {\r
+                                       if (this.st細波[i].b使用中)\r
                                        {\r
-                                               if (this.st細波[i].b使用中)\r
+                                               this.st細波[i].ct進行.t進行();\r
+                                               if (this.st細波[i].ct進行.b終了値に達した)\r
                                                {\r
-                                                       this.st細波[i].ct進行.t進行();\r
-                                                       if (this.st細波[i].ct進行.b終了値に達した)\r
-                                                       {\r
-                                                               this.st細波[i].ct進行.t停止();\r
-                                                               this.st細波[i].b使用中 = false;\r
-                                                       }\r
-                                                       if (this.st細波[i].ct進行.n現在の値 >= 0)\r
-                                                       {\r
-                                                               Matrix matrix4 = Matrix.Identity;\r
-                                                               float num15 = ((float)this.st細波[i].ct進行.n現在の値) / 100f;\r
-                                                               float num16 = 14f * num15;\r
-                                                               int num17 = (num15 < 0.5f) ? 155 : ((int)((155f * (1f - num15)) / 1f));\r
-                                                               matrix4 *= Matrix.Scaling(\r
-                                                                                               num16 * this.st細波[i].f半径,\r
-                                                                                               num16 * this.st細波[i].f半径,\r
-                                                                                               1f\r
-                                                               );\r
-                                                               matrix4 *= Matrix.RotationX(this.st細波[i].f角度X);\r
-                                                               matrix4 *= Matrix.RotationY(this.st細波[i].f角度Y);\r
+                                                       this.st細波[i].ct進行.t停止();\r
+                                                       this.st細波[i].b使用中 = false;\r
+                                               }\r
+                                               if (this.st細波[i].ct進行.n現在の値 >= 0)\r
+                                               {\r
+                                                       Matrix matrix4 = Matrix.Identity;\r
+                                                       float num15 = ((float)this.st細波[i].ct進行.n現在の値) / 100f;\r
+                                                       float num16 = 14f * num15;\r
+                                                       int num17 = (num15 < 0.5f) ? 155 : ((int)((155f * (1f - num15)) / 1f));\r
+                                                       matrix4 *= Matrix.Scaling(\r
+                                                                                       num16 * this.st細波[i].f半径,\r
+                                                                                       num16 * this.st細波[i].f半径,\r
+                                                                                       1f\r
+                                                       );\r
+                                                       matrix4 *= Matrix.RotationX(this.st細波[i].f角度X);\r
+                                                       matrix4 *= Matrix.RotationY(this.st細波[i].f角度Y);\r
 \r
-                                                               float dx = this.nレーンの中央X座標[this.st細波[i].nLane] - SampleFramework.GameWindowSize.Width / 2;\r
-                                                               float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
-                                                               matrix4 *= Matrix.Translation(dx, dy, 0f);\r
-                                                               if (this.tx細波 != null)\r
-                                                               {\r
-                                                                       this.tx細波.n透明度 = num17;\r
-                                                                       this.tx細波.t3D描画(CDTXMania.Instance.Device, matrix4);\r
-                                                               }\r
+                                                       float dx = this.nレーンの中央X座標[this.st細波[i].nLane] - SampleFramework.GameWindowSize.Width / 2;\r
+                                                       float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
+                                                       matrix4 *= Matrix.Translation(dx, dy, 0f);\r
+                                                       if (this.tx細波 != null)\r
+                                                       {\r
+                                                               this.tx細波.n透明度 = num17;\r
+                                                               this.tx細波.t3D描画(CDTXMania.Instance.Device, matrix4);\r
                                                        }\r
                                                }\r
                                        }\r
                                }\r
+\r
                        }\r
                        return 0;\r
                }\r
index c747877..841aade 100644 (file)
@@ -9,15 +9,24 @@ namespace DTXMania
 {\r
        internal class CAct演奏Drumsパッド : CActivity\r
        {\r
-               private readonly int[] n描画順 = new int[] { 3, 6, 5, 4, 2, 1, 8, 7, 0 };\r
+               private readonly EPad[] n描画順 = new EPad[] {\r
+                                               EPad.BD,\r
+                                               EPad.FT,\r
+                                               EPad.LT,\r
+                                               EPad.HT,\r
+                                               EPad.SD,\r
+                                               EPad.CY,\r
+                                               EPad.HH,\r
+                                               EPad.RD,\r
+                                               EPad.LC\r
+                               };\r
                private long nY座標制御タイマ;\r
                private long nフラッシュ制御タイマ;\r
-               private STパッド状態[] stパッド状態 = new STパッド状態[9];\r
+               private STPadValue<STパッド状態> stパッド状態 = new STPadValue<STパッド状態>();\r
                private CTexture txパッド;\r
                private CTexture tx光るパッド;\r
 \r
-               [StructLayout(LayoutKind.Sequential)]\r
-               private struct STパッド状態\r
+               private class STパッド状態\r
                {\r
                        public int n明るさ;\r
                        public int nY座標オフセットdot;\r
@@ -30,25 +39,10 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST基本位置\r
+               public void Hit(EPad ePad)\r
                {\r
-                       public int x;\r
-                       public int y;\r
-                       public Rectangle rc;\r
-\r
-                       public ST基本位置(int x_, int y_, Rectangle rc_)\r
-                       {\r
-                               x = x_;\r
-                               y = y_;\r
-                               rc = rc_;\r
-                       }\r
-               }\r
-\r
-               public void Hit(int nLane)\r
-               {\r
-                       this.stパッド状態[nLane].n明るさ = 6;\r
-                       this.stパッド状態[nLane].nY座標加速度dot = 2;\r
+                       this.stパッド状態[ePad].n明るさ = 6;\r
+                       this.stパッド状態[ePad].nY座標加速度dot = 2;\r
                }\r
 \r
                public override void On活性化()\r
@@ -57,7 +51,7 @@ namespace DTXMania
                        {\r
                                this.nフラッシュ制御タイマ = -1;\r
                                this.nY座標制御タイマ = -1;\r
-                               for (int i = 0; i < 9; i++)\r
+                               for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; ++i)\r
                                {\r
                                        this.stパッド状態[i] = new STパッド状態(0, 0, 0);\r
                                }\r
@@ -87,13 +81,16 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してる)\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.bDrums有効 &&\r
+                               CDTXMania.Instance.DTX.bチップがある.Drums &&\r
+                               CDTXMania.Instance.ConfigIni.eDark != EDark.Full)\r
                        {\r
-                               if (base.b初めての進行描画)\r
+                               if (b初めての進行描画)\r
                                {\r
-                                       this.nフラッシュ制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
-                                       this.nY座標制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
-                                       base.b初めての進行描画 = false;\r
+                                       nフラッシュ制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+                                       nY座標制御タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
+                                       b初めての進行描画 = false;\r
                                }\r
                                long n現在時刻 = FDK.CSound管理.rc演奏用タイマ.n現在時刻;\r
                                if (n現在時刻 < this.nフラッシュ制御タイマ)\r
@@ -102,7 +99,7 @@ namespace DTXMania
                                }\r
                                while ((n現在時刻 - this.nフラッシュ制御タイマ) >= 15)\r
                                {\r
-                                       for (int i = 0; i < 9; i++)\r
+                                       for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; i++)\r
                                        {\r
                                                if (this.stパッド状態[i].n明るさ > 0)\r
                                                {\r
@@ -118,7 +115,7 @@ namespace DTXMania
                                }\r
                                while ((n現在時刻 - this.nY座標制御タイマ) >= 5)\r
                                {\r
-                                       for (int i = 0; i < 9; i++)\r
+                                       for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; i++)\r
                                        {\r
                                                this.stパッド状態[i].nY座標オフセットdot += this.stパッド状態[i].nY座標加速度dot;\r
                                                if (this.stパッド状態[i].nY座標オフセットdot > 15)\r
@@ -135,73 +132,14 @@ namespace DTXMania
                                        this.nY座標制御タイマ += 5;\r
                                }\r
                                #region [ 表示 ]\r
-                               for (int idx = 0; idx < 9; idx++)\r
+                               for (int idx = 0; idx < n描画順.Length; idx++)\r
                                {\r
-                                       Rectangle rc;\r
-                                       int x = 0;\r
-                                       int yoffset = 0;\r
-                                       int i = n描画順[idx];\r
-\r
-                                       if (i == 0)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadLCY;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.LCY.X + (CDTXMania.Instance.Coordinates.Lane.LCY.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadLCY.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetLCY.Y;\r
-                                       }\r
-                                       else if (i == 1)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadHH;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.HHC.X + (CDTXMania.Instance.Coordinates.Lane.HHC.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadHH.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetHH.Y;\r
-                                       }\r
-                                       else if (i == 2)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadSD;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.SD.X + (CDTXMania.Instance.Coordinates.Lane.SD.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadSD.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetSD.Y;\r
-                                       }\r
-                                       else if (i == 3)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadBD;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BD.X + (CDTXMania.Instance.Coordinates.Lane.BD.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadBD.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetBD.Y;\r
-                                       }\r
-                                       else if (i == 4)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadHT;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.HT.X + (CDTXMania.Instance.Coordinates.Lane.HT.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadHT.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetHT.Y;\r
-                                       }\r
-                                       else if (i == 5)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadLT;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.LT.X + (CDTXMania.Instance.Coordinates.Lane.LT.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadLT.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetLT.Y;\r
-                                       }\r
-                                       else if (i == 6)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadFT;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.FT.X + (CDTXMania.Instance.Coordinates.Lane.FT.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadFT.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetFT.Y;\r
-                                       }\r
-                                       else if (i == 7)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadCY;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.CY.X + (CDTXMania.Instance.Coordinates.Lane.CY.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadCY.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetCY.Y;\r
-                                       }\r
-                                       else if (i == 8)\r
-                                       {\r
-                                               rc = CDTXMania.Instance.Coordinates.ImgDrPadRCY;\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.RCY.X + CDTXMania.Instance.Coordinates.DrPadOffsetRCY.X +\r
-                                                       (CDTXMania.Instance.Coordinates.Lane.RCY.W / 2 - CDTXMania.Instance.Coordinates.ImgDrPadRCY.W / 2);\r
-                                               yoffset = CDTXMania.Instance.Coordinates.DrPadOffsetRCY.Y;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               rc = new Rectangle();\r
-                                       }\r
-\r
+                                       EPad i = n描画順[idx];\r
+                                       Rectangle rc = CDTXMania.Instance.Coordinates.ImgDrPad[i];\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(EnumConverter.LaneFromPad(i)) +\r
+                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(EnumConverter.LaneFromPad(i)) / 2 -\r
+                                                       CDTXMania.Instance.Coordinates.ImgDrPad[i].W / 2);\r
+                                       int yoffset = CDTXMania.Instance.Coordinates.DrPadOffset[i].Y;\r
                                        int y = (CDTXMania.Instance.ConfigIni.bReverse.Drums ?\r
                                                 SampleFramework.GameWindowSize.Height - CDTXMania.Instance.Coordinates.DrPad.Y - yoffset - rc.Height :\r
                                                 CDTXMania.Instance.Coordinates.DrPad.Y + yoffset) + 2 * this.stパッド状態[i].nY座標オフセットdot;\r
index 3639af8..7984e6f 100644 (file)
@@ -9,20 +9,9 @@ namespace DTXMania
 {\r
        internal class CAct演奏DrumsレーンフラッシュD : CActivity\r
        {\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               private struct STレーンサイズ\r
-               {\r
-                       public int x;\r
-                       public int w;\r
-                       public STレーンサイズ(int x_, int w_)\r
-                       {\r
-                               x = x_;\r
-                               w = w_;\r
-                       }\r
-               }\r
-\r
-               private CCounter[] ct進行 = new CCounter[8];\r
-               private CTexture tx = new CTexture();\r
+               static ELane[] lanes = new ELane[] { ELane.LC, ELane.HH, ELane.SD, ELane.BD, ELane.HT, ELane.LT, ELane.FT, ELane.CY };\r
+               CCounter[] ct進行 = new CCounter[8];\r
+               CTexture tx = new CTexture();\r
 \r
                // コンストラクタ\r
                public CAct演奏DrumsレーンフラッシュD()\r
@@ -32,7 +21,7 @@ namespace DTXMania
 \r
 \r
                // メソッド\r
-               public void Start(Eレーン lane, float f強弱度合い)\r
+               public void Start(ELane lane, float f強弱度合い)\r
                {\r
                        int num = (int)((1f - f強弱度合い) * 55f);\r
                        this.ct進行[(int)lane] = new CCounter(num, 100, 4, CDTXMania.Instance.Timer);\r
@@ -78,7 +67,10 @@ namespace DTXMania
 \r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる &&\r
+                               CDTXMania.Instance.ConfigIni.bDrums有効 &&\r
+                               CDTXMania.Instance.DTX.bチップがある.Drums &&\r
+                               CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                        {\r
                                for (int i = 0; i < 8; i++)\r
                                {\r
@@ -95,50 +87,8 @@ namespace DTXMania
                                int imgX = CDTXMania.Instance.Coordinates.ImgDrLaneFlash.X;\r
                                for (int i = 0; i < 8; i++)\r
                                {\r
-                                       int x = 0;\r
-                                       int w = 0;\r
-\r
-                                       if (i == 0)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.LCY.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.LCY.W;\r
-                                       }\r
-                                       else if (i == 1)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.HHC.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.HHC.W;\r
-                                       }\r
-                                       else if (i == 2)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.SD.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.SD.W;\r
-                                       }\r
-                                       else if (i == 3)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.BD.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.BD.W;\r
-                                       }\r
-                                       else if (i == 4)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.HT.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.HT.W;\r
-                                       }\r
-                                       else if (i == 5)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.LT.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.LT.W;\r
-                                       }\r
-                                       else if (i == 6)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.FT.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.FT.W;\r
-                                       }\r
-                                       else if (i == 7)\r
-                                       {\r
-                                               x = CDTXMania.Instance.Coordinates.Lane.CY.X;\r
-                                               w = CDTXMania.Instance.Coordinates.Lane.CY.W;\r
-                                       }\r
-\r
+                                       int x = CDTXMania.Instance.ConfigIni.GetLaneX(lanes[i]);\r
+                                       int w = CDTXMania.Instance.ConfigIni.GetLaneW(lanes[i]);\r
                                        if (!this.ct進行[i].b停止中)\r
                                        {\r
                                                if (tx != null)\r
index f62deda..9ffc301 100644 (file)
@@ -12,19 +12,19 @@ namespace DTXMania
 {\r
        internal class CActResultImage : CActivity\r
        {\r
-               // コンストラクタ\r
-\r
-               public CActResultImage()\r
-               {\r
-                       base.b活性化してない = true;\r
-               }\r
-\r
-\r
-               // メソッド\r
+               CDTX.CAVI rAVI;\r
+               CCounter ct登場用;\r
+               int n本体X;\r
+               int n本体Y;\r
+               CTexture r表示するリザルト画像;\r
+               string strAVIファイル名;\r
+               CTexture txパネル本体;\r
+               CTexture txリザルト画像;\r
+               CTexture txリザルト画像がないときの画像;\r
 \r
                public void tアニメを完了させる()\r
                {\r
-                       this.ct登場用.n現在の値 = this.ct登場用.n終了値;\r
+                       ct登場用.n現在の値 = ct登場用.n終了値;\r
                }\r
                public CAct演奏AVI actAVI\r
                {\r
@@ -32,185 +32,145 @@ namespace DTXMania
                        set;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.n本体X = 4;\r
-                       this.n本体Y = 0x3f;\r
-                       base.On活性化();\r
-                       this.actAVI.bIsPreviewMovie = true;\r
-                       this.actAVI.On活性化();\r
+                       if (b活性化してない)\r
+                       {\r
+                               n本体X = 4;\r
+                               n本体Y = 0x3f;\r
+                               base.On活性化();\r
+                               actAVI.bIsPreviewMovie = true;\r
+                               actAVI.On活性化();\r
+                       }\r
                }\r
                public override void On非活性化()\r
                {\r
-                       if (this.ct登場用 != null)\r
-                       {\r
-                               this.ct登場用 = null;\r
-                       }\r
-                       if (this.rAVI != null)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.rAVI.Dispose();\r
-                               this.rAVI = null;\r
+                               if (ct登場用 != null)\r
+                               {\r
+                                       ct登場用 = null;\r
+                               }\r
+                               if (rAVI != null)\r
+                               {\r
+                                       rAVI.Dispose();\r
+                                       rAVI = null;\r
+                               }\r
+                               base.On非活性化();\r
+                               actAVI.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
-                       this.actAVI.On非活性化();\r
-\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult resultimage panel.png"));\r
-                               this.txリザルト画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"));\r
-                               //this.sfリザルトAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.Instance.app.Device, 0xcc, 0x10d, CDTXMania.Instance.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Default );\r
-                               //this.sfリザルトAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.Instance.app.Device, 192, 269, CDTXMania.Instance.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Default );\r
-                               //this.nAVI再生開始時刻 = -1;\r
-                               //this.n前回描画したフレーム番号 = -1;\r
-                               //this.b動画フレームを作成した = false;\r
-                               //this.pAVIBmp = IntPtr.Zero;\r
+                               txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult resultimage panel.png"));\r
+                               txリザルト画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"));\r
                                base.OnManagedリソースの作成();\r
-                               this.actAVI.OnManagedリソースの作成();\r
+                               actAVI.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
-                               TextureFactory.tテクスチャの解放(ref this.txパネル本体);\r
-                               TextureFactory.tテクスチャの解放(ref this.txリザルト画像);\r
-                               TextureFactory.tテクスチャの解放(ref this.txリザルト画像がないときの画像);\r
-                               //if( this.sfリザルトAVI画像 != null )\r
-                               //{\r
-                               //    this.sfリザルトAVI画像.Dispose();\r
-                               //    this.sfリザルトAVI画像 = null;\r
-                               //}\r
+                               TextureFactory.tテクスチャの解放(ref txパネル本体);\r
+                               TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                               TextureFactory.tテクスチャの解放(ref txリザルト画像がないときの画像);\r
                                base.OnManagedリソースの解放();\r
-                               this.actAVI.OnManagedリソースの解放();\r
+                               actAVI.OnManagedリソースの解放();\r
                        }\r
                }\r
                public override unsafe int On進行描画()\r
                {\r
-                       if (base.b活性化してない)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       if (base.b初めての進行描画)\r
+                       if (b活性化してる)\r
                        {\r
-                               if (CDTXMania.Instance.ConfigIni.bストイックモード)\r
+                               if (b初めての進行描画)\r
                                {\r
-                                       this.r表示するリザルト画像 = this.txリザルト画像がないときの画像;\r
+                                       if (CDTXMania.Instance.ConfigIni.bStoicMode)\r
+                                       {\r
+                                               r表示するリザルト画像 = txリザルト画像がないときの画像;\r
+                                       }\r
+                                       else if (!tリザルト動画の指定があれば構築する() &&\r
+                                               !tリザルト画像の指定があれば構築する() &&\r
+                                               !tプレビュー動画の指定があれば構築する() &&\r
+                                               !tプレビュー画像の指定があれば構築する() &&\r
+                                               !t背景画像があればその一部からリザルト画像を構築する())\r
+                                       {\r
+                                               r表示するリザルト画像 = txリザルト画像がないときの画像;\r
+                                       }\r
+\r
+                                       ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
+                                       b初めての進行描画 = false;\r
                                }\r
-                               else if (((!this.tリザルト動画の指定があれば構築する() && !this.tリザルト画像の指定があれば構築する()) && (!this.tプレビュー動画の指定があれば構築する() && !this.tプレビュー画像の指定があれば構築する())) && !this.t背景画像があればその一部からリザルト画像を構築する())\r
+                               ct登場用.t進行();\r
+                               if (ct登場用.b終了値に達した)\r
                                {\r
-                                       this.r表示するリザルト画像 = this.txリザルト画像がないときの画像;\r
+                                       n本体X = 4;\r
+                                       n本体Y = 0x3f;\r
                                }\r
+                               else\r
+                               {\r
+                                       double num3 = ((double)ct登場用.n現在の値) / 100.0;\r
+                                       double num4 = Math.Cos((1.5 + (0.5 * num3)) * Math.PI);\r
+                                       n本体X = 4;\r
+                                       n本体Y = 0x3f - ((int)(((txパネル本体 != null) ?\r
+                                               ((double)txパネル本体.sz画像サイズ.Height) : ((double)0)) * (1.0 - (num4 * num4))));\r
+                               }\r
+                               if (txパネル本体 != null)\r
+                               {\r
+                                       txパネル本体.t2D描画(\r
+                                               CDTXMania.Instance.Device,\r
+                                               n本体X * Scale.X,\r
+                                               n本体Y * Scale.Y\r
+                                       );\r
+                               }\r
+                               int x = (int)((n本体X + 17) * Scale.X);\r
+                               int y = (int)((n本体Y + 16) * Scale.Y);\r
+                               if (rAVI != null)\r
+                               {\r
+                                       actAVI.t進行描画(x, y, 612, 605);\r
+                               }\r
+                               #region [ プレビュー画像表示 ]\r
+                               else if (r表示するリザルト画像 != null)\r
+                               {\r
+                                       CPreviewMagnifier cmg = new CPreviewMagnifier();\r
+                                       cmg.GetMagnifier(r表示するリザルト画像.sz画像サイズ.Width, r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f, true);\r
 \r
-                               this.ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       this.ct登場用.t進行();\r
-                       //if ( ( ( this.avi != null ) && ( this.sfリザルトAVI画像 != null ) ) && ( this.nAVI再生開始時刻 != -1 ) )\r
-                       //if ( ( this.avi != null ) && ( this.nAVI再生開始時刻 != -1 ) )\r
-                       //{\r
-                       //    int time = (int) ( ( CDTXMania.Instance.Timer.n現在時刻 - this.nAVI再生開始時刻 ) * ( ( (double) CDTXMania.Instance.ConfigIni.n演奏速度 ) / 20.0 ) );\r
-                       //    int frameNoFromTime = this.avi.GetFrameNoFromTime( time );\r
-                       //    if( frameNoFromTime >= this.avi.GetMaxFrameCount() )\r
-                       //    {\r
-                       //        this.nAVI再生開始時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
-                       //    }\r
-                       //    else if( ( this.n前回描画したフレーム番号 != frameNoFromTime ) && !this.b動画フレームを作成した )\r
-                       //    {\r
-                       //        this.b動画フレームを作成した = true;\r
-                       //        this.n前回描画したフレーム番号 = frameNoFromTime;\r
-                       //        //this.pAVIBmp = this.avi.GetFramePtr( frameNoFromTime );\r
-                       //    }\r
-                       //}\r
-                       if (this.ct登場用.b終了値に達した)\r
-                       {\r
-                               this.n本体X = 4;\r
-                               this.n本体Y = 0x3f;\r
-                       }\r
-                       else\r
-                       {\r
-                               double num3 = ((double)this.ct登場用.n現在の値) / 100.0;\r
-                               double num4 = Math.Cos((1.5 + (0.5 * num3)) * Math.PI);\r
-                               this.n本体X = 4;\r
-                               this.n本体Y = 0x3f - ((int)(((this.txパネル本体 != null) ? ((double)this.txパネル本体.sz画像サイズ.Height) : ((double)0)) * (1.0 - (num4 * num4))));\r
-                       }\r
-                       if (this.txパネル本体 != null)\r
-                       {\r
-                               this.txパネル本体.t2D描画(\r
-                                       CDTXMania.Instance.Device,\r
-                                       this.n本体X * Scale.X,\r
-                                       this.n本体Y * Scale.Y\r
-                               );\r
-                       }\r
-                       int x = (int)(( this.n本体X + 17 ) * Scale.X);\r
-                       int y = (int)(( this.n本体Y + 16 ) * Scale.Y);\r
-                       //if ( ( ( this.nAVI再生開始時刻 != -1 ) && ( this.avi != null ) ) && ( this.sfリザルトAVI画像 != null ) )\r
-                       if (this.rAVI != null)\r
-                       {\r
-                               this.actAVI.t進行描画((int)(x * Scale.X), (int)(y * Scale.Y), 612, 605);\r
-                       }\r
-                       #region [ プレビュー画像表示 ]\r
-                       else if (this.r表示するリザルト画像 != null)\r
-                       {\r
-                               CPreviewMagnifier cmg = new CPreviewMagnifier();\r
-                               cmg.GetMagnifier(this.r表示するリザルト画像.sz画像サイズ.Width, this.r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f, true);\r
-\r
-                               this.r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;\r
-                               this.r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;\r
-                               this.r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;\r
-                               x += (int)((612 - cmg.width * cmg.magX ) / 2 );\r
-                               y += (int)((605 - cmg.height * cmg.magY ) / 2 );\r
-                               this.r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
+                                       r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;\r
+                                       r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;\r
+                                       r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;\r
+                                       x += (int)((612 - cmg.width * cmg.magX) / 2);\r
+                                       y += (int)((605 - cmg.height * cmg.magY) / 2);\r
+                                       r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
 \r
 \r
+                               }\r
+                               #endregion\r
+                               if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))\r
+                               {\r
+                                       CDTXMania.Instance.act文字コンソール.tPrint(\r
+                                               (int)((n本体X + 0x12) * Scale.X),\r
+                                               (int)((n本体Y - 1) * Scale.Y),\r
+                                               C文字コンソール.Eフォント種別.赤細,\r
+                                               CDTXMania.Instance.DTX.GENRE\r
+                                       );\r
+                               }\r
+                               if (!ct登場用.b終了値に達した)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
                        }\r
-                       #endregion\r
-                       if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))\r
-                       {\r
-                               CDTXMania.Instance.act文字コンソール.tPrint(\r
-                                       (int)((this.n本体X + 0x12) * Scale.X),\r
-                                       (int)((this.n本体Y - 1) * Scale.Y),\r
-                                       C文字コンソール.Eフォント種別.赤細,\r
-                                       CDTXMania.Instance.DTX.GENRE\r
-                               );\r
-                       }\r
-                       if (!this.ct登場用.b終了値に達した)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
+                       return 0;\r
                }\r
 \r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               //private CAvi avi;\r
-               private CDTX.CAVI rAVI;\r
-               //private bool b動画フレームを作成した;\r
-               private CCounter ct登場用;\r
-               //private long nAVI再生開始時刻;\r
-               //private int n前回描画したフレーム番号;\r
-               private int n本体X;\r
-               private int n本体Y;\r
-               //private IntPtr pAVIBmp;\r
-               private CTexture r表示するリザルト画像;\r
-               //private Surface sfリザルトAVI画像;\r
-               private string strAVIファイル名;\r
-               private CTexture txパネル本体;\r
-               private CTexture txリザルト画像;\r
-               private CTexture txリザルト画像がないときの画像;\r
-\r
                private bool t背景画像があればその一部からリザルト画像を構築する()\r
                {\r
                        string strBackground = CDTXMania.Instance.DTX.BACKGROUND;\r
-                       if ( string.IsNullOrEmpty(strBackground) )\r
+                       if (string.IsNullOrEmpty(strBackground))\r
                        {\r
                                strBackground = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
                        }\r
@@ -218,154 +178,97 @@ namespace DTXMania
                        {\r
                                return false;\r
                        }\r
-                       TextureFactory.tテクスチャの解放(ref this.txリザルト画像);\r
-                       this.r表示するリザルト画像 = null;\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
                        strBackground = CDTXMania.Instance.DTX.strフォルダ名 + strBackground;\r
-                       Bitmap image = null;\r
-                       Bitmap bitmap2 = null;\r
-                       Bitmap bitmap3 = null;\r
-                       try\r
+                       using (Bitmap image = new Bitmap(strBackground))\r
                        {\r
-                               image = new Bitmap(strBackground);\r
-                               bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height);\r
-                               Graphics graphics = Graphics.FromImage(bitmap2);\r
-                               int x = 0;\r
-                               for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)\r
+                               using (Bitmap bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height))\r
                                {\r
-                                       for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)\r
+                                       using (Graphics graphics = Graphics.FromImage(bitmap2))\r
                                        {\r
-                                               graphics.DrawImage(image, x, i, image.Width, image.Height);\r
+                                               int x = 0;\r
+                                               for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)\r
+                                               {\r
+                                                       for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)\r
+                                                       {\r
+                                                               graphics.DrawImage(image, x, i, image.Width, image.Height);\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       using (Bitmap bitmap3 = new Bitmap(0xcc, 0x10d))\r
+                                       {\r
+                                               using (Graphics graphics = Graphics.FromImage(bitmap3))\r
+                                               {\r
+                                                       graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);\r
+                                               }\r
+                                               txリザルト画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);\r
                                        }\r
                                }\r
-                               graphics.Dispose();\r
-                               bitmap3 = new Bitmap(0xcc, 0x10d);\r
-                               graphics = Graphics.FromImage(bitmap3);\r
-                               graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);\r
-                               graphics.Dispose();\r
-                               this.txリザルト画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);\r
-                               this.r表示するリザルト画像 = this.txリザルト画像;\r
-                       }\r
-                       catch\r
-                       {\r
-                               Trace.TraceError("背景画像の読み込みに失敗しました。({0})", new object[] { strBackground });\r
-                               this.txリザルト画像 = null;\r
-                               return false;\r
-                       }\r
-                       finally\r
-                       {\r
-                               if (image != null)\r
-                               {\r
-                                       image.Dispose();\r
-                               }\r
-                               if (bitmap2 != null)\r
-                               {\r
-                                       bitmap2.Dispose();\r
-                               }\r
-                               if (bitmap3 != null)\r
-                               {\r
-                                       bitmap3.Dispose();\r
-                               }\r
+                               r表示するリザルト画像 = txリザルト画像;\r
                        }\r
                        return true;\r
                }\r
-               //private unsafe void tサーフェイスをクリアする( Surface sf )\r
-               //{\r
-               //    DataRectangle rectangle = sf.LockRectangle( LockFlags.None );\r
-               //    DataStream data = rectangle.Data;\r
-               //    switch ( ( rectangle.Pitch / sf.Description.Width ) )\r
-               //    {\r
-               //        case 4:\r
-               //            {\r
-               //                uint* numPtr = (uint*) data.DataPointer.ToPointer();\r
-               //                for ( int i = 0; i < sf.Description.Height; i++ )\r
-               //                {\r
-               //                    for ( int j = 0; j < sf.Description.Width; j++ )\r
-               //                    {\r
-               //                        ( numPtr + ( i * sf.Description.Width ) )[ j ] = 0;\r
-               //                    }\r
-               //                }\r
-               //                break;\r
-               //            }\r
-               //        case 2:\r
-               //            {\r
-               //                ushort* numPtr2 = (ushort*) data.DataPointer.ToPointer();\r
-               //                for ( int k = 0; k < sf.Description.Height; k++ )\r
-               //                {\r
-               //                    for ( int m = 0; m < sf.Description.Width; m++ )\r
-               //                    {\r
-               //                        ( numPtr2 + ( k * sf.Description.Width ) )[ m ] = 0;\r
-               //                    }\r
-               //                }\r
-               //                break;\r
-               //            }\r
-               //    }\r
-               //    sf.UnlockRectangle();\r
-               //}\r
+\r
                private bool tプレビュー画像の指定があれば構築する()\r
                {\r
                        if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREIMAGE))\r
                        {\r
                                return false;\r
                        }\r
-                       TextureFactory.tテクスチャの解放(ref this.txリザルト画像);\r
-                       this.r表示するリザルト画像 = null;\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
                        string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREIMAGE;\r
                        if (!File.Exists(path))\r
                        {\r
                                Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
                                return false;\r
                        }\r
-                       this.txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
-                       this.r表示するリザルト画像 = this.txリザルト画像;\r
-                       return (this.r表示するリザルト画像 != null);\r
+                       txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
+                       r表示するリザルト画像 = txリザルト画像;\r
+                       return (r表示するリザルト画像 != null);\r
                }\r
+\r
                private bool tプレビュー動画の指定があれば構築する()\r
                {\r
-                       if (!CDTXMania.Instance.ConfigIni.bAVI有効)\r
+                       if (!CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                return false;\r
                        }\r
-                       this.actAVI.Stop();\r
+                       actAVI.Stop();\r
                        if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREMOVIE))\r
                        {\r
                                return false;\r
                        }\r
-                       this.strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREMOVIE;\r
+                       strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREMOVIE;\r
                        if (!File.Exists(this.strAVIファイル名))\r
                        {\r
-                               Trace.TraceWarning("プレビュー動画のファイルが存在しません。({0})", this.strAVIファイル名);\r
+                               Trace.TraceWarning("プレビュー動画のファイルが存在しません。({0})", strAVIファイル名);\r
                                return false;\r
                        }\r
-                       if (this.rAVI != null)\r
+                       if (rAVI != null)\r
                        {\r
-                               this.rAVI.Dispose();\r
-                               this.rAVI = null;\r
+                               rAVI.Dispose();\r
+                               rAVI = null;\r
                        }\r
                        try\r
                        {\r
-                               this.rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.n演奏速度);\r
-                               this.rAVI.OnDeviceCreated();\r
-                               this.actAVI.Start(Ech定義.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
-\r
-                               //this.avi = new CAvi( this.strAVIファイル名 );\r
-                               //this.nAVI再生開始時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
-                               //this.n前回描画したフレーム番号 = -1;\r
-                               //this.b動画フレームを作成した = false;\r
-                               //this.tサーフェイスをクリアする( this.sfリザルトAVI画像 );\r
-                               //Trace.TraceInformation( "プレビュー動画を生成しました。({0})", this.strAVIファイル名 );\r
+                               rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               rAVI.OnDeviceCreated();\r
+                               actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
                        }\r
                        catch\r
                        {\r
-                               Trace.TraceError("プレビュー動画の生成に失敗しました。({0})", this.strAVIファイル名);\r
-                               this.rAVI = null;\r
-                               //this.nAVI再生開始時刻 = -1;\r
+                               Trace.TraceError("プレビュー動画の生成に失敗しました。({0})", strAVIファイル名);\r
+                               rAVI = null;\r
                        }\r
                        return true;\r
                }\r
+\r
                private bool tリザルト画像の指定があれば構築する()\r
                {\r
                        CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
-                       if (rank == CScoreIni.ERANK.UNKNOWN)    // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       if (rank == CScoreIni.ERANK.UNKNOWN)  // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
                        {\r
                                rank = CScoreIni.ERANK.E;\r
                        }\r
@@ -373,26 +276,28 @@ namespace DTXMania
                        {\r
                                return false;\r
                        }\r
-                       TextureFactory.tテクスチャの解放(ref this.txリザルト画像);\r
-                       this.r表示するリザルト画像 = null;\r
+                       TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
+                       r表示するリザルト画像 = null;\r
                        string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank];\r
                        if (!File.Exists(path))\r
                        {\r
                                Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
                                return false;\r
                        }\r
-                       this.txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
-                       this.r表示するリザルト画像 = this.txリザルト画像;\r
+                       txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
+                       r表示するリザルト画像 = this.txリザルト画像;\r
                        return (this.r表示するリザルト画像 != null);\r
                }\r
+\r
                private bool tリザルト動画の指定があれば構築する()\r
                {\r
-                       if (!CDTXMania.Instance.ConfigIni.bAVI有効)\r
+                       if (!CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                return false;\r
                        }\r
                        CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
-                       if (rank == CScoreIni.ERANK.UNKNOWN)    // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                       if (rank == CScoreIni.ERANK.UNKNOWN)\r
                        {\r
                                rank = CScoreIni.ERANK.E;\r
                        }\r
@@ -401,39 +306,29 @@ namespace DTXMania
                        {\r
                                return false;\r
                        }\r
-                       this.strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank];\r
+                       strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank];\r
                        if (!File.Exists(this.strAVIファイル名))\r
                        {\r
                                Trace.TraceWarning("リザルト動画のファイルが存在しません。({0})", this.strAVIファイル名);\r
                                return false;\r
                        }\r
-                       if (this.rAVI != null)\r
+                       if (rAVI != null)\r
                        {\r
-                               this.rAVI.Dispose();\r
-                               this.rAVI = null;\r
+                               rAVI.Dispose();\r
+                               rAVI = null;\r
                        }\r
                        try\r
                        {\r
-                               this.rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.n演奏速度);\r
-                               this.rAVI.OnDeviceCreated();\r
-                               this.actAVI.Start(Ech定義.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
-\r
-                               //this.avi = new CAvi( this.strAVIファイル名 );\r
-                               //this.nAVI再生開始時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
-                               //this.n前回描画したフレーム番号 = -1;\r
-                               //this.b動画フレームを作成した = false;\r
-                               //this.tサーフェイスをクリアする( this.sfリザルトAVI画像 );\r
-                               //Trace.TraceInformation( "リザルト動画を生成しました。({0})", this.strAVIファイル名 );\r
+                               rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               rAVI.OnDeviceCreated();\r
+                               actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
                        }\r
                        catch\r
                        {\r
                                Trace.TraceError("リザルト動画の生成に失敗しました。({0})", this.strAVIファイル名);\r
-                               this.rAVI = null;\r
-                               //this.nAVI再生開始時刻 = -1;\r
+                               rAVI = null;\r
                        }\r
                        return true;\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 8713db5..2925795 100644 (file)
@@ -11,8 +11,6 @@ namespace DTXMania
 {\r
        internal class CActResultParameterPanel : CActivity\r
        {\r
-               // コンストラクタ\r
-\r
                public CActResultParameterPanel()\r
                {\r
                        ST文字位置[] st文字位置Array = new ST文字位置[11];\r
@@ -187,12 +185,12 @@ namespace DTXMania
                                );\r
                        }\r
                        int num = this.ct表示用.n現在の値;\r
-                       STDGBVALUE<Point> pointArray = new STDGBVALUE<Point>();\r
+                       STDGBSValue<Point> pointArray = new STDGBSValue<Point>();\r
                        pointArray.Drums = new Point((int)(0x68 * Scale.X), (int)(0x29 * Scale.Y));\r
                        pointArray.Guitar = new Point((int)(0xc7 * Scale.X), (int)(0x29 * Scale.Y));\r
                        pointArray.Bass = new Point((int)(0x129 * Scale.X), (int)(0x29 * Scale.Y));\r
-                       \r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
                                int x = this.n本体X + pointArray[i].X;\r
                                int y = this.n本体Y + pointArray[i].Y;\r
@@ -294,7 +292,7 @@ namespace DTXMania
                        }\r
                        if (this.ct表示用.n現在の値 >= 900)\r
                        {\r
-                               for (E楽器パート j = E楽器パート.DRUMS; j <= E楽器パート.BASS; j++)\r
+                               for (EPart j = EPart.Drums; j <= EPart.Bass; j++)\r
                                {\r
                                        if (CDTXMania.Instance.stage結果.st演奏記録[j].bフルコンボである)\r
                                        {\r
index 56c9fdb..b524510 100644 (file)
@@ -9,45 +9,53 @@ namespace DTXMania
 {\r
        internal class CActResultRank : CActivity\r
        {\r
-               // コンストラクタ\r
+               private CCounter ctランク表示;\r
+               private CCounter ct白波移動;\r
+               private int n本体X;\r
+               private int n本体Y;\r
+               private CTexture txランクパネル;\r
+               private CTexture txランク文字;\r
+               private CTexture tx白波;\r
 \r
                public CActResultRank()\r
                {\r
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
                public void tアニメを完了させる()\r
                {\r
                        this.ctランク表示.n現在の値 = this.ctランク表示.n終了値;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.n本体X = 0x1ed;\r
-                       this.n本体Y = 0x153;\r
-                       base.On活性化();\r
+                       if (b活性化してない)\r
+                       {\r
+                               this.n本体X = 0x1ed;\r
+                               this.n本体Y = 0x153;\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       if (this.ct白波移動 != null)\r
-                       {\r
-                               this.ct白波移動 = null;\r
-                       }\r
-                       if (this.ctランク表示 != null)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.ctランク表示 = null;\r
+                               if (this.ct白波移動 != null)\r
+                               {\r
+                                       this.ct白波移動 = null;\r
+                               }\r
+                               if (this.ctランク表示 != null)\r
+                               {\r
+                                       this.ctランク表示 = null;\r
+                               }\r
+                               base.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.txランクパネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult rank panel.png"));\r
                                this.tx白波 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult rank wave.png"));\r
@@ -78,7 +86,7 @@ namespace DTXMania
                                                break;\r
 \r
                                        case CScoreIni.ERANK.E:\r
-                                       case CScoreIni.ERANK.UNKNOWN:   // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                                       case CScoreIni.ERANK.UNKNOWN: // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
                                                this.txランク文字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult rankE.png"));\r
                                                break;\r
 \r
@@ -89,9 +97,10 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txランクパネル);\r
                                TextureFactory.tテクスチャの解放(ref this.tx白波);\r
@@ -99,73 +108,61 @@ namespace DTXMania
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してない)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       if (base.b初めての進行描画)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               this.ct白波移動 = new CCounter(-132, 0x170, 10, CDTXMania.Instance.Timer);\r
-                               this.ctランク表示 = new CCounter(0, 0x514, 2, CDTXMania.Instance.Timer);\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       this.ct白波移動.t進行Loop();\r
-                       this.ctランク表示.t進行();\r
-                       if (this.ctランク表示.n現在の値 >= 700)\r
-                       {\r
-                               float y = (this.ctランク表示.n現在の値 > 0x3e8) ? 1f : (((float)(this.ctランク表示.n現在の値 - 700)) / 300f);\r
-                               if (this.txランクパネル != null)\r
+                               if (base.b初めての進行描画)\r
                                {\r
-                                       this.txランクパネル.n透明度 = (int)(255f * y);\r
-                                       this.txランクパネル.vc拡大縮小倍率 = new Vector3(1f, y, 1f);\r
-                                       this.txランクパネル.t2D描画(\r
-                                               CDTXMania.Instance.Device,\r
-                                               this.n本体X * Scale.X,\r
-                                               (this.n本体Y + ((int)((1f - y) * 64f))) * Scale.Y\r
-                                       );\r
+                                       this.ct白波移動 = new CCounter(-132, 0x170, 10, CDTXMania.Instance.Timer);\r
+                                       this.ctランク表示 = new CCounter(0, 0x514, 2, CDTXMania.Instance.Timer);\r
+                                       base.b初めての進行描画 = false;\r
                                }\r
-                       }\r
-                       if (this.ctランク表示.n現在の値 >= 0x3e8)\r
-                       {\r
-                               double num2 = ((double)(this.ctランク表示.n現在の値 - 0x3e8)) / 300.0;\r
-                               if (this.txランク文字 != null)\r
+                               this.ct白波移動.t進行Loop();\r
+                               this.ctランク表示.t進行();\r
+                               if (this.ctランク表示.n現在の値 >= 700)\r
+                               {\r
+                                       float y = (this.ctランク表示.n現在の値 > 0x3e8) ? 1f : (((float)(this.ctランク表示.n現在の値 - 700)) / 300f);\r
+                                       if (this.txランクパネル != null)\r
+                                       {\r
+                                               this.txランクパネル.n透明度 = (int)(255f * y);\r
+                                               this.txランクパネル.vc拡大縮小倍率 = new Vector3(1f, y, 1f);\r
+                                               this.txランクパネル.t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       this.n本体X * Scale.X,\r
+                                                       (this.n本体Y + ((int)((1f - y) * 64f))) * Scale.Y\r
+                                               );\r
+                                       }\r
+                               }\r
+                               if (this.ctランク表示.n現在の値 >= 0x3e8)\r
                                {\r
-                                       this.txランク文字.t2D描画(\r
-                                               CDTXMania.Instance.Device,\r
-                                               this.n本体X * Scale.X,\r
-                                               this.n本体Y * Scale.Y,\r
-                                               new Rectangle(\r
-                                                       0,\r
-                                                       0,\r
-                                                       (int)(128.0 * num2 * Scale.X),\r
-                                                       (int)(0x80 * Scale.Y)\r
-                                               )\r
-                                       );\r
+                                       double num2 = ((double)(this.ctランク表示.n現在の値 - 0x3e8)) / 300.0;\r
+                                       if (this.txランク文字 != null)\r
+                                       {\r
+                                               this.txランク文字.t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       this.n本体X * Scale.X,\r
+                                                       this.n本体Y * Scale.Y,\r
+                                                       new Rectangle(\r
+                                                               0,\r
+                                                               0,\r
+                                                               (int)(128.0 * num2 * Scale.X),\r
+                                                               (int)(0x80 * Scale.Y)\r
+                                                       )\r
+                                               );\r
+                                       }\r
                                }\r
+                               this.t描画_白波();\r
+                               if (!this.ctランク表示.b終了値に達した)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
                        }\r
-                       this.t描画_白波();\r
-                       if (!this.ctランク表示.b終了値に達した)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
+                       return 0;\r
                }\r
 \r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter ctランク表示;\r
-               private CCounter ct白波移動;\r
-               private int n本体X;\r
-               private int n本体Y;\r
-               private CTexture txランクパネル;\r
-               private CTexture txランク文字;\r
-               private CTexture tx白波;\r
-\r
                private void t描画_白波()\r
                {\r
                        if (!this.ctランク表示.b終了値に達してない)\r
@@ -209,7 +206,5 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index d978a4d..f7eaa88 100644 (file)
@@ -10,47 +10,53 @@ namespace DTXMania
 {\r
        internal class CActResultSongBar : CActivity\r
        {\r
-               // コンストラクタ\r
+               private CCounter ct登場用;\r
+               private Font ft曲名用フォント;\r
+               private int n本体X;\r
+               private int n本体Y;\r
+               private CTextureAf txバー;\r
+               private CTexture tx曲名;\r
 \r
                public CActResultSongBar()\r
                {\r
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
                public void tアニメを完了させる()\r
                {\r
                        this.ct登場用.n現在の値 = this.ct登場用.n終了値;\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.n本体X = 0;\r
-                       this.n本体Y = 0x18b;\r
-                       this.ft曲名用フォント = new Font("MS PGothic", 44f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);\r
-                       base.On活性化();\r
+                       if (b活性化してない)\r
+                       {\r
+                               this.n本体X = 0;\r
+                               this.n本体Y = 0x18b;\r
+                               this.ft曲名用フォント = new Font("MS PGothic", 44f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       if (this.ft曲名用フォント != null)\r
-                       {\r
-                               this.ft曲名用フォント.Dispose();\r
-                               this.ft曲名用フォント = null;\r
-                       }\r
-                       if (this.ct登場用 != null)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.ct登場用 = null;\r
+                               if (this.ft曲名用フォント != null)\r
+                               {\r
+                                       this.ft曲名用フォント.Dispose();\r
+                                       this.ft曲名用フォント = null;\r
+                               }\r
+                               if (this.ct登場用 != null)\r
+                               {\r
+                                       this.ct登場用 = null;\r
+                               }\r
+                               base.On非活性化();\r
                        }\r
-                       base.On非活性化();\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.txバー = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenResult song bar.png"), false);\r
                                try\r
@@ -74,7 +80,7 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txバー);\r
                                TextureFactory.tテクスチャの解放(ref this.tx曲名);\r
@@ -83,111 +89,97 @@ namespace DTXMania
                }\r
                public override int On進行描画()\r
                {\r
-                       if (base.bæ´»æ\80§å\8c\96ã\81\97ã\81¦ã\81ªã\81\84)\r
+                       if (base.bæ´»æ\80§å\8c\96ã\81\97ã\81¦ã\82\8b)\r
                        {\r
-                               return 0;\r
-                       }\r
-                       if (base.b初めての進行描画)\r
-                       {\r
-                               this.ct登場用 = new CCounter(0, 270, 4, CDTXMania.Instance.Timer);\r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       this.ct登場用.t進行();\r
-                       int num = 0x1d4;\r
-                       int num2 = num - 0x40;\r
-                       if (this.ct登場用.b進行中)\r
-                       {\r
-                               if (this.ct登場用.n現在の値 <= 100)\r
+                               if (base.b初めての進行描画)\r
                                {\r
-                                       double num3 = 1.0 - (((double)this.ct登場用.n現在の値) / 100.0);\r
-                                       this.n本体X = -((int)(num * Math.Sin(Math.PI / 2 * num3)));\r
-                                       this.n本体Y = 0x18b;\r
+                                       this.ct登場用 = new CCounter(0, 270, 4, CDTXMania.Instance.Timer);\r
+                                       base.b初めての進行描画 = false;\r
                                }\r
-                               else if (this.ct登場用.n現在の値 <= 200)\r
+                               this.ct登場用.t進行();\r
+                               int num = 0x1d4;\r
+                               int num2 = num - 0x40;\r
+                               if (this.ct登場用.b進行中)\r
                                {\r
-                                       double num4 = ((double)(this.ct登場用.n現在の値 - 100)) / 100.0;\r
-                                       this.n本体X = -((int)((((double)num) / 6.0) * Math.Sin(Math.PI * num4)));\r
-                                       this.n本体Y = 0x18b;\r
+                                       if (this.ct登場用.n現在の値 <= 100)\r
+                                       {\r
+                                               double num3 = 1.0 - (((double)this.ct登場用.n現在の値) / 100.0);\r
+                                               this.n本体X = -((int)(num * Math.Sin(Math.PI / 2 * num3)));\r
+                                               this.n本体Y = 0x18b;\r
+                                       }\r
+                                       else if (this.ct登場用.n現在の値 <= 200)\r
+                                       {\r
+                                               double num4 = ((double)(this.ct登場用.n現在の値 - 100)) / 100.0;\r
+                                               this.n本体X = -((int)((((double)num) / 6.0) * Math.Sin(Math.PI * num4)));\r
+                                               this.n本体Y = 0x18b;\r
+                                       }\r
+                                       else if (this.ct登場用.n現在の値 <= 270)\r
+                                       {\r
+                                               double num5 = ((double)(this.ct登場用.n現在の値 - 200)) / 70.0;\r
+                                               this.n本体X = -((int)((((double)num) / 18.0) * Math.Sin(Math.PI * num5)));\r
+                                               this.n本体Y = 0x18b;\r
+                                       }\r
                                }\r
-                               else if (this.ct登場用.n現在の値 <= 270)\r
+                               else\r
                                {\r
-                                       double num5 = ((double)(this.ct登場用.n現在の値 - 200)) / 70.0;\r
-                                       this.n本体X = -((int)((((double)num) / 18.0) * Math.Sin(Math.PI * num5)));\r
+                                       this.n本体X = 0;\r
                                        this.n本体Y = 0x18b;\r
                                }\r
-                       }\r
-                       else\r
-                       {\r
-                               this.n本体X = 0;\r
-                               this.n本体Y = 0x18b;\r
-                       }\r
-                       int num6 = this.n本体X;\r
-                       int y = this.n本体Y;\r
-                       int num8 = 0;\r
-                       while (num8 < num2)\r
-                       {\r
-                               Rectangle rectangle = new Rectangle(0, 0, 0x40, 0x40);\r
-                               if ((num8 + rectangle.Width) >= num2)\r
+                               int num6 = this.n本体X;\r
+                               int y = this.n本体Y;\r
+                               int num8 = 0;\r
+                               while (num8 < num2)\r
                                {\r
-                                       rectangle.Width -= (num8 + rectangle.Width) - num2;\r
+                                       Rectangle rectangle = new Rectangle(0, 0, 0x40, 0x40);\r
+                                       if ((num8 + rectangle.Width) >= num2)\r
+                                       {\r
+                                               rectangle.Width -= (num8 + rectangle.Width) - num2;\r
+                                       }\r
+                                       if (this.txバー != null)\r
+                                       {\r
+                                               Rectangle rectangle1 = rectangle;\r
+                                               rectangle1.X = (int)(rectangle1.X * Scale.X);\r
+                                               rectangle1.Y = (int)(rectangle1.Y * Scale.Y);\r
+                                               rectangle1.Width = (int)(rectangle1.Width * Scale.X);\r
+                                               rectangle1.Height = (int)(rectangle1.Height * Scale.Y);\r
+                                               this.txバー.t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       (num6 + num8) * Scale.X,\r
+                                                       y * Scale.Y,\r
+                                                       rectangle1\r
+                                               );\r
+                                       }\r
+                                       num8 += rectangle.Width;\r
                                }\r
                                if (this.txバー != null)\r
                                {\r
-                                       Rectangle rectangle1 = rectangle;\r
-                                       rectangle1.X = (int)(rectangle1.X * Scale.X);\r
-                                       rectangle1.Y = (int)(rectangle1.Y * Scale.Y);\r
-                                       rectangle1.Width = (int)(rectangle1.Width * Scale.X);\r
-                                       rectangle1.Height = (int)(rectangle1.Height * Scale.Y);\r
                                        this.txバー.t2D描画(\r
                                                CDTXMania.Instance.Device,\r
                                                (num6 + num8) * Scale.X,\r
                                                y * Scale.Y,\r
-                                               rectangle1\r
-                                       );\r
+                                               new Rectangle(\r
+                                                       (int)(0x40 * Scale.X),\r
+                                                       0,\r
+                                                       (int)(0x40 * Scale.X),\r
+                                                       (int)(0x40 * Scale.Y)\r
+                                                       )\r
+                                               );\r
                                }\r
-                               num8 += rectangle.Width;\r
-                       }\r
-                       if (this.txバー != null)\r
-                       {\r
-                               this.txバー.t2D描画(\r
-                                       CDTXMania.Instance.Device,\r
-                                       (num6 + num8) * Scale.X,\r
-                                       y * Scale.Y,\r
-                                       new Rectangle(\r
-                                               (int)(0x40 * Scale.X),\r
-                                               0,\r
-                                               (int)(0x40 * Scale.X),\r
-                                               (int)(0x40 * Scale.Y)\r
-                                               )\r
+                               if (this.tx曲名 != null)\r
+                               {\r
+                                       this.tx曲名.t2D描画(\r
+                                               CDTXMania.Instance.Device,\r
+                                               this.n本体X * Scale.X,\r
+                                               (this.n本体Y + 20) * Scale.Y\r
                                        );\r
+                               }\r
+                               if (!this.ct登場用.b終了値に達した)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
                        }\r
-                       if (this.tx曲名 != null)\r
-                       {\r
-                               this.tx曲名.t2D描画(\r
-                                       CDTXMania.Instance.Device,\r
-                                       this.n本体X * Scale.X,\r
-                                       (this.n本体Y + 20) * Scale.Y\r
-                               );\r
-                       }\r
-                       if (!this.ct登場用.b終了値に達した)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
+                       return 0;\r
                }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter ct登場用;\r
-               private Font ft曲名用フォント;\r
-               private int n本体X;\r
-               private int n本体Y;\r
-               private CTextureAf txバー;\r
-               private CTexture tx曲名;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 6d6bf66..2e62bed 100644 (file)
@@ -10,28 +10,55 @@ namespace DTXMania
 {\r
        internal class CStage結果 : CStage\r
        {\r
-               public STDGBVALUE<bool> b新記録スキル;\r
-               public STDGBVALUE<bool> b新記録スコア;\r
-               public STDGBVALUE<bool> b新記録ランク;\r
-               public STDGBVALUE<float> fPerfect率;\r
-               public STDGBVALUE<float> fGreat率;\r
-               public STDGBVALUE<float> fGood率;\r
-               public STDGBVALUE<float> fPoor率;\r
-               public STDGBVALUE<float> fMiss率;\r
-               public STDGBVALUE<bool> bオート;        // #23596 10.11.16 add ikanick\r
+               public enum E戻り値 : int\r
+               {\r
+                       継続,\r
+                       完了\r
+               }\r
+\r
+               public STDGBSValue<bool> b新記録スキル;\r
+               public STDGBSValue<bool> b新記録スコア;\r
+               public STDGBSValue<bool> b新記録ランク;\r
+               public STDGBSValue<float> fPerfect率;\r
+               public STDGBSValue<float> fGreat率;\r
+               public STDGBSValue<float> fGood率;\r
+               public STDGBSValue<float> fPoor率;\r
+               public STDGBSValue<float> fMiss率;\r
+               // #23596 10.11.16 add ikanick\r
                //        10.11.17 change (int to bool) ikanick\r
-               public STDGBVALUE<CScoreIni.ERANK> nランク値;\r
-               public STDGBVALUE<int> n演奏回数;\r
+               public STDGBSValue<bool> bオート;\r
+               public STDGBSValue<CScoreIni.ERANK> nランク値;\r
+               public STDGBSValue<int> n演奏回数;\r
                public CScoreIni.ERANK n総合ランク値;\r
-               public CChip[] r空うちドラムチップ;\r
-               public STDGBVALUE<CScoreIni.C演奏記録> st演奏記録;\r
+               public STPadValue<CChip> r空うちドラムチップ;\r
+               public STDGBSValue<CScoreIni.C演奏記録> st演奏記録;\r
+\r
+               private CCounter ct登場用;\r
+               private E戻り値 eフェードアウト完了時の戻り値;\r
+               private CActFIFOWhite actFI;\r
+               private CActFIFOBlack actFO;\r
+               private CActオプションパネル actOption;\r
+               private CAct演奏AVI actAVI;\r
+               private CActResultParameterPanel actParameterPanel;\r
+               private CActResultRank actRank;\r
+               private CActResultImage actResultImage;\r
+               private CActResultSongBar actSongBar;\r
+               private bool bアニメが完了;\r
+               private bool bIsCheckedWhetherResultScreenShouldSaveOrNot;        // #24509 2011.3.14 yyagi\r
+               private readonly int[] nチャンネル0Atoレーン07;\r
+               private int n最後に再生したHHのWAV番号;\r
+               private EChannel e最後に再生したHHのチャンネル番号;\r
+               private CSound rResultSound;\r
+               //private CTexture txオプションパネル;\r
+               private CTextureAf tx下部パネル;\r
+               private CTextureAf tx上部パネル;\r
+               private CTexture tx背景;\r
 \r
                public CStage結果()\r
                {\r
                        this.st演奏記録.Drums = new CScoreIni.C演奏記録();\r
                        this.st演奏記録.Guitar = new CScoreIni.C演奏記録();\r
                        this.st演奏記録.Bass = new CScoreIni.C演奏記録();\r
-                       this.r空うちドラムチップ = new CChip[10];\r
                        this.n総合ランク値 = CScoreIni.ERANK.UNKNOWN;\r
                        this.nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
                        base.eステージID = CStage.Eステージ.結果;\r
@@ -41,7 +68,7 @@ namespace DTXMania
                        base.list子Activities.Add(this.actParameterPanel = new CActResultParameterPanel());\r
                        base.list子Activities.Add(this.actRank = new CActResultRank());\r
                        base.list子Activities.Add(this.actSongBar = new CActResultSongBar());\r
-                       base.list子Activities.Add(this.actOption = new CActオプションパネル());\r
+                       base.list子Activities.Add(this.actOption = new CActオプションパネル(EOptionPanelDirection.Horizontal));\r
                        base.list子Activities.Add(this.actFI = new CActFIFOWhite());\r
                        base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
                        base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
@@ -59,52 +86,41 @@ namespace DTXMania
                                //---------------------\r
                                this.eフェードアウト完了時の戻り値 = E戻り値.継続;\r
                                this.bアニメが完了 = false;\r
-                               this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;                              // #24609 2011.3.14 yyagi\r
+                               this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false;        // #24609 2011.3.14 yyagi\r
                                this.n最後に再生したHHのWAV番号 = -1;\r
-                               this.e最後に再生したHHのチャンネル番号 = Ech定義.Invalid;\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               this.e最後に再生したHHのチャンネル番号 = EChannel.Invalid;\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        this.b新記録スキル[i] = false;\r
                                        this.b新記録スコア[i] = false;\r
                                        this.b新記録ランク[i] = false;\r
                                }\r
+                               actOption.Pos = CDTXMania.Instance.Coordinates.OptionPanelSelect;\r
                                //---------------------\r
                                #endregion\r
 \r
                                #region [ 結果の計算 ]\r
                                //---------------------\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        this.nランク値[i] = CScoreIni.ERANK.UNKNOWN;\r
-                                       this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f;        // #28500 2011.5.24 yyagi\r
+                                       this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f;  // #28500 2011.5.24 yyagi\r
                                        if ((\r
-                                               ((i != E楽器パート.DRUMS) || (CDTXMania.Instance.DTX.bチップがある.Drums )) &&\r
-                                               ((i != E楽器パート.GUITAR) || CDTXMania.Instance.DTX.bチップがある.Guitar)) &&\r
-                                               ((i != E楽器パート.BASS) || CDTXMania.Instance.DTX.bチップがある.Bass))\r
+                                               ((i != EPart.Drums) || (CDTXMania.Instance.DTX.bチップがある.Drums)) &&\r
+                                               ((i != EPart.Guitar) || CDTXMania.Instance.DTX.bチップがある.Guitar)) &&\r
+                                               ((i != EPart.Bass) || CDTXMania.Instance.DTX.bチップがある.Bass))\r
                                        {\r
                                                CScoreIni.C演奏記録 part = this.st演奏記録[i];\r
-                                               bool bIsAutoPlay = true;\r
-                                               switch (i)\r
-                                               {\r
-                                                       case E楽器パート.DRUMS:\r
-                                                               bIsAutoPlay = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bDrums有効; // #35411 chnmr0 add Drums が有効でない場合 AUTO 扱いとして LastPlay 更新しない\r
-                                                               break;\r
-\r
-                                                       case E楽器パート.GUITAR:\r
-                                                               bIsAutoPlay = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bGuitar有効; // #35411 chnmr0 add\r
-                                                               break;\r
-\r
-                                                       case E楽器パート.BASS:\r
-                                                               bIsAutoPlay = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bGuitar有効;\r
-                                                               break;\r
-                                               }\r
+                                               bool bIsAutoPlay = CDTXMania.Instance.ConfigIni.bIsAutoPlay(i) || !CDTXMania.Instance.ConfigIni.b楽器有効(i);\r
                                                this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));\r
                                                this.fGreat率[i] = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));\r
                                                this.fGood率[i] = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));\r
                                                this.fPoor率[i] = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));\r
                                                this.fMiss率[i] = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));\r
-                                               this.bオート[i] = bIsAutoPlay;       // #23596 10.11.16 add ikanick そのパートがオートなら1\r
+\r
+                                               // #23596 10.11.16 add ikanick そのパートがオートなら1\r
                                                //        10.11.17 change (int to bool) ikanick\r
+                                               this.bオート[i] = bIsAutoPlay;\r
                                                this.nランク値[i] = CScoreIni.tランク値を計算して返す(part);\r
                                        }\r
                                }\r
@@ -117,12 +133,13 @@ namespace DTXMania
                                string str = CDTXMania.Instance.DTX.strファイル名の絶対パス + ".score.ini";\r
                                CScoreIni ini = new CScoreIni(str);\r
 \r
-                               STDGBVALUE<bool> b今までにフルコンボしたことがある =\r
-                                       new STDGBVALUE<bool>();\r
+                               STDGBSValue<bool> b今までにフルコンボしたことがある =\r
+                                       new STDGBSValue<bool>();\r
 \r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)\r
+                                       // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、\r
+                                       // スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)\r
 \r
                                        b今までにフルコンボしたことがある[i] =\r
                                                ini.stセクション.HiScore[i].bフルコンボである ||\r
@@ -141,11 +158,11 @@ namespace DTXMania
                                                this.b新記録スコア[i] = true;\r
                                                ini.stセクション.HiScore[i] = this.st演奏記録[i];\r
                                                CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.HiScoreDrums;\r
-                                               if (i == E楽器パート.GUITAR)\r
+                                               if (i == EPart.Guitar)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.HiScoreGuitar;\r
                                                }\r
-                                               else if (i == E楽器パート.BASS)\r
+                                               else if (i == EPart.Bass)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.HiScoreBass;\r
                                                }\r
@@ -158,11 +175,11 @@ namespace DTXMania
                                                this.b新記録スキル[i] = true;\r
                                                ini.stセクション.HiSkill[i] = this.st演奏記録[i];\r
                                                CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.HiSkillDrums;\r
-                                               if (i == E楽器パート.GUITAR)\r
+                                               if (i == EPart.Guitar)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.HiSkillGuitar;\r
                                                }\r
-                                               else if (i == E楽器パート.BASS)\r
+                                               else if (i == EPart.Bass)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.HiSkillBass;\r
                                                }\r
@@ -175,11 +192,11 @@ namespace DTXMania
                                        {\r
                                                ini.stセクション.LastPlay[i] = this.st演奏記録[i];\r
                                                CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.LastPlayDrums;\r
-                                               if (i == E楽器パート.GUITAR)\r
+                                               if (i == EPart.Guitar)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.LastPlayGuitar;\r
                                                }\r
-                                               else if (i == E楽器パート.BASS)\r
+                                               else if (i == EPart.Bass)\r
                                                {\r
                                                        esect = CScoreIni.Eセクション種別.LastPlayBass;\r
                                                }\r
@@ -188,19 +205,19 @@ namespace DTXMania
 \r
                                        // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす\r
                                        //        11.02.05 bオート to t更新条件を取得する use      ikanick\r
-                                       STDGBVALUE<bool> b更新が必要か否か;\r
+                                       STDGBSValue<bool> b更新が必要か否か;\r
                                        b更新が必要か否か = CScoreIni.t更新条件を取得する();\r
                                        if (b更新が必要か否か[i])\r
                                        {\r
                                                switch (i)\r
                                                {\r
-                                                       case E楽器パート.DRUMS:\r
+                                                       case EPart.Drums:\r
                                                                ini.stファイル.ClearCountDrums++;\r
                                                                break;\r
-                                                       case E楽器パート.GUITAR:\r
+                                                       case EPart.Guitar:\r
                                                                ini.stファイル.ClearCountGuitar++;\r
                                                                break;\r
-                                                       case E楽器パート.BASS:\r
+                                                       case EPart.Bass:\r
                                                                ini.stファイル.ClearCountBass++;\r
                                                                break;\r
                                                        default:\r
@@ -209,13 +226,13 @@ namespace DTXMania
                                        }\r
                                        //---------------------------------------------------------------------/\r
                                }\r
-                               if (CDTXMania.Instance.ConfigIni.bScoreIniを出力する)\r
+                               if (CDTXMania.Instance.ConfigIni.bScoreIni)\r
                                        ini.t書き出し(str);\r
                                //---------------------\r
                                #endregion\r
 \r
                                #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]\r
-                               if (CDTXMania.Instance.ConfigIni.bScoreIniを出力する)\r
+                               if (CDTXMania.Instance.ConfigIni.bScoreIni)\r
                                {\r
                                        this.n演奏回数.Drums = ini.stファイル.PlayCountDrums;\r
                                        this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;\r
@@ -227,9 +244,9 @@ namespace DTXMania
                                if (!CDTXMania.Instance.bコンパクトモード)\r
                                {\r
                                        Cスコア cスコア = CDTXMania.Instance.stage選曲.r確定されたスコア;\r
-                                       STDGBVALUE<bool> b更新が必要か否か;\r
+                                       STDGBSValue<bool> b更新が必要か否か;\r
                                        b更新が必要か否か = CScoreIni.t更新条件を取得する();\r
-                                       for (E楽器パート m = E楽器パート.DRUMS; m <= E楽器パート.BASS; m++)\r
+                                       for (EPart m = EPart.Drums; m <= EPart.Bass; m++)\r
                                        {\r
                                                if (b更新が必要か否か[m])\r
                                                {\r
@@ -256,7 +273,7 @@ namespace DTXMania
                                //---------------------\r
                                CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録);\r
 \r
-                               if (rank == CScoreIni.ERANK.UNKNOWN)    // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
+                               if (rank == CScoreIni.ERANK.UNKNOWN)  // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
                                {\r
                                        rank = CScoreIni.ERANK.E;\r
                                }\r
@@ -294,7 +311,7 @@ namespace DTXMania
                // #35411 chnmr0 add\r
                private void SaveGhost(CScoreIni.Eセクション種別 sect)\r
                {\r
-                       STDGBVALUE<bool> saveCond = new STDGBVALUE<bool>();\r
+                       STDGBSValue<bool> saveCond = new STDGBSValue<bool>();\r
                        saveCond.Drums = true;\r
                        saveCond.Guitar = true;\r
                        saveCond.Bass = true;\r
@@ -303,68 +320,68 @@ namespace DTXMania
                        {\r
                                if (chip.bIsAutoPlayed)\r
                                {\r
-                                       if (chip.eチャンネル番号 != Ech定義.Guitar_Wailing && chip.eチャンネル番号 != Ech定義.Bass_Wailing) // Guitar/Bass Wailing は OK\r
+                                       if (chip.eチャンネル番号 != EChannel.Guitar_Wailing && chip.eチャンネル番号 != EChannel.Bass_Wailing) // Guitar/Bass Wailing は OK\r
                                        {\r
                                                saveCond[chip.e楽器パート] = false;\r
                                        }\r
                                }\r
                        }\r
-                       for (E楽器パート instIndex = E楽器パート.DRUMS; instIndex <= E楽器パート.BASS; ++instIndex)\r
+                       for (EPart instIndex = EPart.Drums; instIndex <= EPart.Bass; ++instIndex)\r
                        {\r
                                saveCond[instIndex] &= CDTXMania.Instance.DTX.listAutoGhostLag.Drums == null;\r
                        }\r
 \r
                        string directory = CDTXMania.Instance.DTX.strフォルダ名;\r
                        string filename = CDTXMania.Instance.DTX.strファイル名 + ".";\r
-                       E楽器パート inst = E楽器パート.UNKNOWN;\r
+                       EPart inst = EPart.Unknown;\r
 \r
                        if (sect == CScoreIni.Eセクション種別.HiScoreDrums)\r
                        {\r
                                filename += "hiscore.dr.ghost";\r
-                               inst = E楽器パート.DRUMS;\r
+                               inst = EPart.Drums;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.HiSkillDrums)\r
                        {\r
                                filename += "hiskill.dr.ghost";\r
-                               inst = E楽器パート.DRUMS;\r
+                               inst = EPart.Drums;\r
                        }\r
                        if (sect == CScoreIni.Eセクション種別.HiScoreGuitar)\r
                        {\r
                                filename += "hiscore.gt.ghost";\r
-                               inst = E楽器パート.GUITAR;\r
+                               inst = EPart.Guitar;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.HiSkillGuitar)\r
                        {\r
                                filename += "hiskill.gt.ghost";\r
-                               inst = E楽器パート.GUITAR;\r
+                               inst = EPart.Guitar;\r
                        }\r
                        if (sect == CScoreIni.Eセクション種別.HiScoreBass)\r
                        {\r
                                filename += "hiscore.bs.ghost";\r
-                               inst = E楽器パート.BASS;\r
+                               inst = EPart.Bass;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.HiSkillBass)\r
                        {\r
                                filename += "hiskill.bs.ghost";\r
-                               inst = E楽器パート.BASS;\r
+                               inst = EPart.Bass;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.LastPlayDrums)\r
                        {\r
                                filename += "lastplay.dr.ghost";\r
-                               inst = E楽器パート.DRUMS;\r
+                               inst = EPart.Drums;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.LastPlayGuitar)\r
                        {\r
                                filename += "lastplay.gt.ghost";\r
-                               inst = E楽器パート.GUITAR;\r
+                               inst = EPart.Guitar;\r
                        }\r
                        else if (sect == CScoreIni.Eセクション種別.LastPlayBass)\r
                        {\r
                                filename += "lastplay.bs.ghost";\r
-                               inst = E楽器パート.BASS;\r
+                               inst = EPart.Bass;\r
                        }\r
 \r
-                       if (inst == E楽器パート.UNKNOWN)\r
+                       if (inst == EPart.Unknown)\r
                        {\r
                                return;\r
                        }\r
@@ -524,14 +541,14 @@ namespace DTXMania
                                                base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
                                        }\r
                                }\r
-                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_フェードアウト))                   //&& ( this.actFO.On進行描画() != 0 ) )\r
+                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_フェードアウト))     //&& ( this.actFO.On進行描画() != 0 ) )\r
                                {\r
                                        return (int)this.eフェードアウト完了時の戻り値;\r
                                }\r
                                #region [ #24609 2011.3.14 yyagi ランク更新or演奏型スキル更新時、リザルト画像をpngで保存する ]\r
-                               if (this.bアニメが完了 == true && this.bIsCheckedWhetherResultScreenShouldSaveOrNot == false      // #24609 2011.3.14 yyagi; to save result screen in case BestRank or HiSkill.\r
-                                       && CDTXMania.Instance.ConfigIni.bScoreIniを出力する\r
-                                       && CDTXMania.Instance.ConfigIni.bIsAutoResultCapture)                                                                                           // #25399 2011.6.9 yyagi\r
+                               if (this.bアニメが完了 == true && this.bIsCheckedWhetherResultScreenShouldSaveOrNot == false  // #24609 2011.3.14 yyagi; to save result screen in case BestRank or HiSkill.\r
+                                       && CDTXMania.Instance.ConfigIni.bScoreIni\r
+                                       && CDTXMania.Instance.ConfigIni.bIsAutoResultCapture)                       // #25399 2011.6.9 yyagi\r
                                {\r
                                        CheckAndSaveResultScreen(true);\r
                                        this.bIsCheckedWhetherResultScreenShouldSaveOrNot = true;\r
@@ -542,11 +559,11 @@ namespace DTXMania
 \r
                                if (CDTXMania.Instance.act現在入力を占有中のプラグイン == null)\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する && CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                                       if (CDTXMania.Instance.ConfigIni.bDrumsHitSound && CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                        {\r
-                                               for (int i = 0; i < 10; i++)\r
+                                               for (EPad i = EPad.DrumsPadMin; i < EPad.DrumsPadMax; i++)\r
                                                {\r
-                                                       List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(E楽器パート.DRUMS, (Eパッド)i);\r
+                                                       List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(i);\r
                                                        if ((events != null) && (events.Count > 0))\r
                                                        {\r
                                                                foreach (STInputEvent event2 in events)\r
@@ -558,81 +575,79 @@ namespace DTXMania
                                                                        CChip rChip = this.r空うちドラムチップ[i];\r
                                                                        if (rChip == null)\r
                                                                        {\r
-                                                                               switch (((Eパッド)i))\r
+                                                                               switch (i)\r
                                                                                {\r
-                                                                                       case Eパッド.HH:\r
-                                                                                               rChip = this.r空うちドラムチップ[7];\r
+                                                                                       case EPad.HH:\r
+                                                                                               rChip = this.r空うちドラムチップ.HHO;\r
                                                                                                if (rChip == null)\r
                                                                                                {\r
-                                                                                                       rChip = this.r空うちドラムチップ[9];\r
+                                                                                                       rChip = this.r空うちドラムチップ.LC;\r
                                                                                                }\r
                                                                                                break;\r
 \r
-                                                                                       case Eパッド.FT:\r
-                                                                                               rChip = this.r空うちドラムチップ[4];\r
+                                                                                       case EPad.FT:\r
+                                                                                               rChip = this.r空うちドラムチップ.LT;\r
                                                                                                break;\r
 \r
-                                                                                       case Eパッド.CY:\r
-                                                                                               rChip = this.r空うちドラムチップ[8];\r
+                                                                                       case EPad.CY:\r
+                                                                                               rChip = this.r空うちドラムチップ.RD;\r
                                                                                                break;\r
 \r
-                                                                                       case Eパッド.HHO:\r
-                                                                                               rChip = this.r空うちドラムチップ[0];\r
+                                                                                       case EPad.HHO:\r
+                                                                                               rChip = this.r空うちドラムチップ.HH;\r
                                                                                                if (rChip == null)\r
                                                                                                {\r
-                                                                                                       rChip = this.r空うちドラムチップ[9];\r
+                                                                                                       rChip = this.r空うちドラムチップ.LC;\r
                                                                                                }\r
                                                                                                break;\r
 \r
-                                                                                       case Eパッド.RD:\r
-                                                                                               rChip = this.r空うちドラムチップ[6];\r
+                                                                                       case EPad.RD:\r
+                                                                                               rChip = this.r空うちドラムチップ.CY;\r
                                                                                                break;\r
 \r
-                                                                                       case Eパッド.LC:\r
-                                                                                               rChip = this.r空うちドラムチップ[0];\r
+                                                                                       case EPad.LC:\r
+                                                                                               rChip = this.r空うちドラムチップ.HH;\r
                                                                                                if (rChip == null)\r
                                                                                                {\r
-                                                                                                       rChip = this.r空うちドラムチップ[7];\r
+                                                                                                       rChip = this.r空うちドラムチップ.HHO;\r
                                                                                                }\r
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
                                                                        if ((\r
                                                                                (rChip != null) &&\r
-                                                                               (rChip.eチャンネル番号 >= Ech定義.HiHatClose)) && (rChip.eチャンネル番号 <= Ech定義.LeftCymbal))\r
+                                                                               (rChip.eチャンネル番号 >= EChannel.HiHatClose)) && (rChip.eチャンネル番号 <= EChannel.LeftCymbal))\r
                                                                        {\r
-                                                                               int nLane = this.nチャンネル0Atoレーン07[rChip.eチャンネル番号 - Ech定義.HiHatClose];\r
+                                                                               int nLane = this.nチャンネル0Atoレーン07[rChip.eチャンネル番号 - EChannel.HiHatClose];\r
                                                                                if ((nLane == 1) && (\r
-                                                                                       (rChip.eチャンネル番号 == Ech定義.HiHatClose) ||\r
-                                                                                       ((rChip.eチャンネル番号 == Ech定義.HiHatOpen) && (this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen))))\r
+                                                                                       (rChip.eチャンネル番号 == EChannel.HiHatClose) ||\r
+                                                                                       ((rChip.eチャンネル番号 == EChannel.HiHatOpen) && (this.e最後に再生したHHのチャンネル番号 != EChannel.HiHatOpen))))\r
                                                                                {\r
                                                                                        CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生したHHのWAV番号);\r
                                                                                        this.n最後に再生したHHのWAV番号 = rChip.n整数値_内部番号;\r
                                                                                        this.e最後に再生したHHのチャンネル番号 = rChip.eチャンネル番号;\r
                                                                                }\r
-                                                                               CDTXMania.Instance.DTX.tチップの再生(rChip, CDTXMania.Instance.Timer.nシステム時刻, nLane, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
+                                                                               CDTXMania.Instance.DTX.tチップの再生(rChip, CDTXMania.Instance.Timer.nシステム時刻, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                                                                        }\r
                                                                }\r
                                                        }\r
                                                }\r
                                        }\r
-                                       if (((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) && !this.bアニメが完了)\r
+                                       if (\r
+                                               (CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+                                               (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+                                               CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) &&\r
+                                               !this.bアニメが完了)\r
                                        {\r
-                                               this.actFI.tフェードイン完了();                                 // #25406 2011.6.9 yyagi\r
+                                               // #25406 2011.6.9 yyagi\r
+                                               this.actFI.tフェードイン完了();\r
+\r
                                                this.actResultImage.tアニメを完了させる();\r
                                                this.actParameterPanel.tアニメを完了させる();\r
                                                this.actRank.tアニメを完了させる();\r
                                                this.actSongBar.tアニメを完了させる();\r
                                                this.ct登場用.t停止();\r
                                        }\r
-                                       #region [ #24609 2011.4.7 yyagi リザルト画面で[F12]を押下すると、リザルト画像をpngで保存する機能は、CDTXManiaに移管。 ]\r
-                                       //                                      if ( CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F12 ) &&\r
-                                       //                                              CDTXMania.Instance.ConfigIni.bScoreIniを出力する )\r
-                                       //                                      {\r
-                                       //                                              CheckAndSaveResultScreen(false);\r
-                                       //                                              this.bIsCheckedWhetherResultScreenShouldSaveOrNot = true;\r
-                                       //                                      }\r
-                                       #endregion\r
                                        if (base.eフェーズID == CStage.Eフェーズ.共通_通常状態)\r
                                        {\r
                                                if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))\r
@@ -642,10 +657,13 @@ namespace DTXMania
                                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                        this.eフェードアウト完了時の戻り値 = E戻り値.完了;\r
                                                }\r
-                                               if (((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) && this.bアニメが完了)\r
+                                               if (\r
+                                                       CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+                                                       (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+                                                       CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return)) &&\r
+                                                       this.bアニメが完了)\r
                                                {\r
                                                        CDTXMania.Instance.Skin.sound取消音.t再生する();\r
-                                                       //                                                      this.actFO.tフェードアウト開始();\r
                                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                        this.eフェードアウト完了時の戻り値 = E戻り値.完了;\r
                                                }\r
@@ -655,37 +673,7 @@ namespace DTXMania
                        return 0;\r
                }\r
 \r
-               public enum E戻り値 : int\r
-               {\r
-                       継続,\r
-                       完了\r
-               }\r
-\r
 \r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter ct登場用;\r
-               private E戻り値 eフェードアウト完了時の戻り値;\r
-               private CActFIFOWhite actFI;\r
-               private CActFIFOBlack actFO;\r
-               private CActオプションパネル actOption;\r
-               private CAct演奏AVI actAVI;\r
-               private CActResultParameterPanel actParameterPanel;\r
-               private CActResultRank actRank;\r
-               private CActResultImage actResultImage;\r
-               private CActResultSongBar actSongBar;\r
-               private bool bアニメが完了;\r
-               private bool bIsCheckedWhetherResultScreenShouldSaveOrNot;                              // #24509 2011.3.14 yyagi\r
-               private readonly int[] nチャンネル0Atoレーン07;\r
-               private int n最後に再生したHHのWAV番号;\r
-               private Ech定義 e最後に再生したHHのチャンネル番号;\r
-               private CSound rResultSound;\r
-               //private CTexture txオプションパネル;\r
-               private CTextureAf tx下部パネル;\r
-               private CTextureAf tx上部パネル;\r
-               private CTexture tx背景;\r
 \r
                #region [ #24609 リザルト画像をpngで保存する ]              // #24609 2011.3.14 yyagi; to save result screen in case BestRank or HiSkill.\r
                /// <summary>\r
@@ -701,11 +689,11 @@ namespace DTXMania
                        if (bIsAutoSave)\r
                        {\r
                                // リザルト画像を自動保存するときは、dtxファイル名.yyMMddHHmmss_DRUMS_SS.png という形式で保存。\r
-                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
                                        if (this.b新記録ランク[i] == true || this.b新記録スキル[i] == true)\r
                                        {\r
-                                               string strPart = ((E楽器パート)(i)).ToString();\r
+                                               string strPart = ((EPart)(i)).ToString();\r
                                                string strRank = ((CScoreIni.ERANK)(this.nランク値[i])).ToString();\r
                                                string strFullPath = CDTXMania.Instance.DTX.strファイル名の絶対パス + "." + datetime + "_" + strPart + "_" + strRank + ".png";\r
                                                //Surface.ToFile( pSurface, strFullPath, ImageFileFormat.Png );\r
@@ -715,7 +703,5 @@ namespace DTXMania
                        }\r
                }\r
                #endregion\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 3b4bef8..e34b23d 100644 (file)
@@ -8,7 +8,8 @@ namespace DTXMania
 {\r
        internal class CStage終了 : CStage\r
        {\r
-               // コンストラクタ\r
+               private CCounter ct時間稼ぎ;\r
+               private CTexture tx背景;\r
 \r
                public CStage終了()\r
                {\r
@@ -17,41 +18,44 @@ namespace DTXMania
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // CStage 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       Trace.TraceInformation("終了ステージを活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
-                       {\r
-                               this.ct時間稼ぎ = new CCounter();\r
-                               base.On活性化();\r
-                       }\r
-                       finally\r
+                       if (b活性化してない)\r
                        {\r
-                               Trace.TraceInformation("終了ステージの活性化を完了しました。");\r
-                               Trace.Unindent();\r
+                               Trace.TraceInformation("終了ステージを活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
+                               {\r
+                                       this.ct時間稼ぎ = new CCounter();\r
+                                       base.On活性化();\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.TraceInformation("終了ステージの活性化を完了しました。");\r
+                                       Trace.Unindent();\r
+                               }\r
                        }\r
                }\r
                public override void On非活性化()\r
                {\r
-                       Trace.TraceInformation("終了ステージを非活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
+                       if (b活性化してる)\r
                        {\r
-                               base.On非活性化();\r
-                       }\r
-                       finally\r
-                       {\r
-                               Trace.TraceInformation("終了ステージの非活性化を完了しました。");\r
-                               Trace.Unindent();\r
+                               Trace.TraceInformation("終了ステージを非活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
+                               {\r
+                                       base.On非活性化();\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.TraceInformation("終了ステージの非活性化を完了しました。");\r
+                                       Trace.Unindent();\r
+                               }\r
                        }\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.tx背景 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenExit background.jpg"), false);\r
                                base.OnManagedリソースの作成();\r
@@ -59,7 +63,7 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx背景);\r
                                base.OnManagedリソースの解放();\r
@@ -67,7 +71,7 @@ namespace DTXMania
                }\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                if (base.b初めての進行描画)\r
                                {\r
@@ -88,14 +92,5 @@ namespace DTXMania
                        return 0;\r
                }\r
 \r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter ct時間稼ぎ;\r
-               private CTexture tx背景;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index bc43740..32fbaca 100644 (file)
@@ -15,62 +15,51 @@ namespace DTXMania
        /// </summary>\r
        internal class CStageChangeSkin : CStage\r
        {\r
-               // コンストラクタ\r
-\r
                public CStageChangeSkin()\r
                {\r
                        base.eステージID = CStage.Eステージ.ChangeSkin;\r
                        base.b活性化してない = true;\r
                }\r
 \r
-\r
-               // CStage 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       Trace.TraceInformation("スキン変更ステージを活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
+                       if (b活性化してない)\r
                        {\r
-                               base.On活性化();\r
-                               Trace.TraceInformation("スキン変更ステージの活性化を完了しました。");\r
-                       }\r
-                       finally\r
-                       {\r
-                               Trace.Unindent();\r
+                               Trace.TraceInformation("スキン変更ステージを活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
+                               {\r
+                                       base.On活性化();\r
+                                       Trace.TraceInformation("スキン変更ステージの活性化を完了しました。");\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.Unindent();\r
+                               }\r
                        }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       Trace.TraceInformation("スキン変更ステージを非活性化します。");\r
-                       Trace.Indent();\r
-                       try\r
-                       {\r
-                               base.On非活性化();\r
-                               Trace.TraceInformation("スキン変更ステージの非活性化を完了しました。");\r
-                       }\r
-                       finally\r
-                       {\r
-                               Trace.Unindent();\r
-                       }\r
-               }\r
-               public override void OnManagedリソースの作成()\r
-               {\r
-                       if (!base.b活性化してない)\r
-                       {\r
-                               base.OnManagedリソースの作成();\r
-                       }\r
-               }\r
-               public override void OnManagedリソースの解放()\r
-               {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
-                               base.OnManagedリソースの解放();\r
+                               Trace.TraceInformation("スキン変更ステージを非活性化します。");\r
+                               Trace.Indent();\r
+                               try\r
+                               {\r
+                                       base.On非活性化();\r
+                                       Trace.TraceInformation("スキン変更ステージの非活性化を完了しました。");\r
+                               }\r
+                               finally\r
+                               {\r
+                                       Trace.Unindent();\r
+                               }\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                if (base.b初めての進行描画)\r
                                {\r
@@ -84,6 +73,7 @@ namespace DTXMania
                        }\r
                        return 0;\r
                }\r
+\r
                public void tChangeSkinMain()\r
                {\r
                        Trace.TraceInformation("スキン変更:" + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false));\r
index 1626b38..93e5175 100644 (file)
@@ -10,7 +10,16 @@ namespace DTXMania
 {\r
        internal class CActDFPFont : CActivity\r
        {\r
-               // コンストラクタ\r
+               [StructLayout(LayoutKind.Sequential)]\r
+               private struct ST文字領域\r
+               {\r
+                       public char ch;\r
+                       public Rectangle rc;\r
+               }\r
+\r
+               private readonly ST文字領域[] st文字領域;\r
+               private CTexture tx強調文字;\r
+               private CTexture tx通常文字;\r
 \r
                public CActDFPFont()\r
                {\r
@@ -480,7 +489,7 @@ namespace DTXMania
                        st文字領域93.rc = new Rectangle(0x12, 0xe3, 0x12, 0x1b);\r
                        st文字領域Array[0x5c] = st文字領域93;\r
 \r
-                       st文字領域Array[0x5d] = new ST文字領域();                                               // #24954 2011.4.23 yyagi\r
+                       st文字領域Array[0x5d] = new ST文字領域();           // #24954 2011.4.23 yyagi\r
                        st文字領域Array[0x5d].ch = '@';\r
                        st文字領域Array[0x5d].rc = new Rectangle(38, 227, 28, 28);\r
                        st文字領域Array[0x5e] = new ST文字領域();\r
@@ -491,9 +500,6 @@ namespace DTXMania
                        this.st文字領域 = st文字領域Array;\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
                public int n文字列長dot(string str)\r
                {\r
                        return this.n文字列長dot(str, 1f);\r
@@ -550,9 +556,6 @@ namespace DTXMania
                        }\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void OnManagedリソースの作成()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -562,6 +565,7 @@ namespace DTXMania
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
                        if (!base.b活性化してない)\r
@@ -579,23 +583,5 @@ namespace DTXMania
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               private struct ST文字領域\r
-               {\r
-                       public char ch;\r
-                       public Rectangle rc;\r
-               }\r
-\r
-               private readonly ST文字領域[] st文字領域;\r
-               private CTexture tx強調文字;\r
-               private CTexture tx通常文字;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 55eb354..a56cdf2 100644 (file)
@@ -59,7 +59,7 @@ namespace DTXMania
                                        TextureFactory.tテクスチャの解放(ref texDigit[i]);\r
                                }\r
 \r
-                               using (FontFamily ff = new FontFamily("Meiryo UI"))\r
+                               using (FontFamily ff = new FontFamily("MS PGothic"))\r
                                {\r
                                        using (CPrivateFont cpf = new CPrivateFont(ff, pt, FontStyle.Bold))\r
                                        {\r
index 8a65eb3..78df063 100644 (file)
@@ -9,25 +9,25 @@ namespace DTXMania
 {\r
        internal class CActFIFOBlack : CActivity\r
        {\r
-               // メソッド\r
+               private CCounter counter;\r
+               private EFIFOMode mode;\r
+               private CTexture tx黒タイル64x64;\r
 \r
                public void tフェードアウト開始()\r
                {\r
-                       this.mode = EFIFOモード.フェードアウト;\r
+                       this.mode = EFIFOMode.フェードアウト;\r
                        this.counter = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
                }\r
+\r
                public void tフェードイン開始()\r
                {\r
-                       this.mode = EFIFOモード.フェードイン;\r
+                       this.mode = EFIFOMode.フェードイン;\r
                        this.counter = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On非活性化()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx黒タイル64x64);\r
                                base.On非活性化();\r
@@ -35,7 +35,7 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.tx黒タイル64x64 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\Tile black 64x64.png"), false);\r
                                base.OnManagedリソースの作成();\r
@@ -43,39 +43,31 @@ namespace DTXMania
                }\r
                public override int On進行描画()\r
                {\r
-                       if (base.b活性化してない || (this.counter == null))\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       this.counter.t進行();\r
-                       // Size clientSize = CDTXMania.Instance.app.Window.ClientSize;  // #23510 2010.10.31 yyagi: delete as of no one use this any longer.\r
-                       if (this.tx黒タイル64x64 != null)\r
+                       if (base.b活性化してる && this.counter != null)\r
                        {\r
-                               this.tx黒タイル64x64.n透明度 = (this.mode == EFIFOモード.フェードイン) ? (((100 - this.counter.n現在の値) * 0xff) / 100) : ((this.counter.n現在の値 * 0xff) / 100);\r
-                               for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++)          // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size\r
+                               this.counter.t進行();\r
+                               // #23510 2010.10.31 yyagi: delete as of no one use this any longer.\r
+                               // Size clientSize = CDTXMania.Instance.app.Window.ClientSize;\r
+                               if (this.tx黒タイル64x64 != null)\r
                                {\r
-                                       for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size\r
+                                       this.tx黒タイル64x64.n透明度 = (this.mode == EFIFOMode.フェードイン) ? (((100 - this.counter.n現在の値) * 0xff) / 100) : ((this.counter.n現在の値 * 0xff) / 100);\r
+                                       // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size\r
+                                       for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++)\r
                                        {\r
-                                               this.tx黒タイル64x64.t2D描画(CDTXMania.Instance.Device, i * 64, j * 64);\r
+                                               // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size\r
+                                               for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++)\r
+                                               {\r
+                                                       this.tx黒タイル64x64.t2D描画(CDTXMania.Instance.Device, i * 64, j * 64);\r
+                                               }\r
                                        }\r
                                }\r
+                               if (this.counter.n現在の値 != 100)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
                        }\r
-                       if (this.counter.n現在の値 != 100)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
+                       return 0;\r
                }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter counter;\r
-               private EFIFOモード mode;\r
-               private CTexture tx黒タイル64x64;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index f8bf301..1b4cd7d 100644 (file)
@@ -8,28 +8,31 @@ namespace DTXMania
 {\r
        internal class CActFIFOWhite : CActivity\r
        {\r
-               // メソッド\r
+               private CCounter counter;\r
+               private EFIFOMode mode;\r
+               private CTexture tx白タイル64x64;\r
 \r
                public void tフェードアウト開始()\r
                {\r
-                       this.mode = EFIFOモード.フェードアウト;\r
+                       this.mode = EFIFOMode.フェードアウト;\r
                        this.counter = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
                }\r
+\r
                public void tフェードイン開始()\r
                {\r
-                       this.mode = EFIFOモード.フェードイン;\r
+                       this.mode = EFIFOMode.フェードイン;\r
                        this.counter = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
                }\r
-               public void tフェードイン完了()         // #25406 2011.6.9 yyagi\r
+\r
+               // #25406 2011.6.9 yyagi\r
+               public void tフェードイン完了()\r
                {\r
                        this.counter.n現在の値 = this.counter.n終了値;\r
                }\r
 \r
-               // CActivity 実装\r
-\r
                public override void On非活性化()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx白タイル64x64);\r
                                base.On非活性化();\r
@@ -37,7 +40,7 @@ namespace DTXMania
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.tx白タイル64x64 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\Tile white 64x64.png"), false);\r
                                base.OnManagedリソースの作成();\r
@@ -45,40 +48,29 @@ namespace DTXMania
                }\r
                public override int On進行描画()\r
                {\r
-                       if (base.bæ´»æ\80§å\8c\96ã\81\97ã\81¦ã\81ªã\81\84 || (this.counter == null))\r
+                       if (base.bæ´»æ\80§å\8c\96ã\81\97ã\81¦ã\82\8b && this.counter != null)\r
                        {\r
-                               return 0;\r
-                       }\r
-                       this.counter.t進行();\r
+                               this.counter.t進行();\r
 \r
-                       // Size clientSize = CDTXMania.Instance.app.Window.ClientSize;  // #23510 2010.10.31 yyagi: delete as of no one use this any longer.\r
-                       if (this.tx白タイル64x64 != null)\r
-                       {\r
-                               this.tx白タイル64x64.n透明度 = (this.mode == EFIFOモード.フェードイン) ? (((100 - this.counter.n現在の値) * 0xff) / 100) : ((this.counter.n現在の値 * 0xff) / 100);\r
-                               for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++)          // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size\r
+                               // Size clientSize = CDTXMania.Instance.app.Window.ClientSize;  // #23510 2010.10.31 yyagi: delete as of no one use this any longer.\r
+                               if (this.tx白タイル64x64 != null)\r
                                {\r
-                                       for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size\r
+                                       this.tx白タイル64x64.n透明度 = (this.mode == EFIFOMode.フェードイン) ? (((100 - this.counter.n現在の値) * 0xff) / 100) : ((this.counter.n現在の値 * 0xff) / 100);\r
+                                       for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++)    // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size\r
                                        {\r
-                                               this.tx白タイル64x64.t2D描画(CDTXMania.Instance.Device, i * 64, j * 64);\r
+                                               for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size\r
+                                               {\r
+                                                       this.tx白タイル64x64.t2D描画(CDTXMania.Instance.Device, i * 64, j * 64);\r
+                                               }\r
                                        }\r
                                }\r
+                               if (this.counter.n現在の値 != 100)\r
+                               {\r
+                                       return 0;\r
+                               }\r
+                               return 1;\r
                        }\r
-                       if (this.counter.n現在の値 != 100)\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       return 1;\r
+                       return 0;\r
                }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CCounter counter;\r
-               private EFIFOモード mode;\r
-               private CTexture tx白タイル64x64;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 2c335d9..38f13d4 100644 (file)
@@ -4,290 +4,149 @@ using System.Text;
 using System.Drawing;\r
 using SlimDX.Direct3D9;\r
 using FDK;\r
+using DTXMania.Coordinates;\r
 \r
 namespace DTXMania\r
 {\r
        internal class CActオプションパネル : CActivity\r
        {\r
-               // CActivity 実装\r
+               public STDGBSValue<CXY> Pos;\r
+\r
+               EOptionPanelDirection direction;\r
+               Rectangle rect;\r
+\r
+               readonly Point[] ptDark = new Point[] { new Point(1, 0), new Point(1, 1), new Point(1, 7) };\r
+               /// <summary>\r
+               /// Off, Hid, Sud, HidSud, SInv, FInv\r
+               /// </summary>\r
+               readonly Point[] ptSudHidInv = new Point[] { new Point(0, 0), new Point(0, 1), new Point(0, 2), new Point(0, 3), new Point(4, 7), new Point(5, 7) };\r
+               readonly Point[] ptLight = new Point[] { new Point(5, 4), new Point(5, 5) };\r
+               readonly Point[] ptRandom = new Point[] { new Point(3, 4), new Point(3, 5), new Point(3, 6), new Point(3, 7) };\r
+               readonly Point[] ptReverse = new Point[] { new Point(1, 2), new Point(1, 3) };\r
+               readonly Point[] ptTight = new Point[] { new Point(4, 4), new Point(4, 5) };\r
+               readonly Point[] ptScrollSpeed = new Point[]\r
+               {\r
+                       new Point(2, 0), new Point(2, 1), new Point(2, 2), new Point(2, 3),\r
+                       new Point(3, 0), new Point(3, 1), new Point(3, 2), new Point(3, 3),\r
+                       new Point(4, 0), new Point(4, 1), new Point(4, 2), new Point(4, 3),\r
+                       new Point(5, 0), new Point(5, 1), new Point(5, 2), new Point(5, 3)\r
+               };\r
+\r
+               private CTexture txオプションパネル;\r
+\r
+               public CActオプションパネル(EOptionPanelDirection dir)\r
+               {\r
+                       direction = dir;\r
+                       rect = new Rectangle();\r
+               }\r
 \r
                public override void On非活性化()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txオプションパネル);\r
                                base.On非活性化();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                this.txオプションパネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\Screen option panels.png"), false);\r
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
+               public override void OnManagedリソースの解放()\r
+               {\r
+                       if (base.b活性化してる)\r
+                       {\r
+                               TextureFactory.tテクスチャの解放(ref txオプションパネル);\r
+                               base.OnManagedリソースの解放();\r
+                       }\r
+               }\r
+\r
+               private void IncrementXY(ref int x, ref int y)\r
+               {\r
+                       if (direction == EOptionPanelDirection.Horizontal)\r
+                       {\r
+                               x += rect.Width;\r
+                       }\r
+                       else if (direction == EOptionPanelDirection.Vertical)\r
+                       {\r
+                               y += rect.Height;\r
+                       }\r
+               }\r
+\r
+               private void DrawOption(int idx, Point[] pts, int x, int y)\r
+               {\r
+                       if (idx >= pts.Length)\r
+                       {\r
+                               idx = pts.Length - 1;\r
+                       }\r
+                       if (idx < 0)\r
+                       {\r
+                               idx = 0;\r
+                       }\r
+                       Point p = pts[idx];\r
+                       rect.X = p.X * rect.Width;\r
+                       rect.Y = p.Y * rect.Height;\r
+                       txオプションパネル.t2D描画(CDTXMania.Instance.Device, x, y, rect);\r
+               }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               Device device = CDTXMania.Instance.Device;\r
-                               CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
                                if (this.txオプションパネル != null)\r
                                {\r
-                                       #region [ スクロール速度表示 ]\r
-                                       int drums = configIni.n譜面スクロール速度.Drums;\r
-                                       if (drums > 15)\r
-                                       {\r
-                                               drums = 15;\r
-                                       }\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x171 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rc譜面スピード[drums]\r
-                                       );\r
-                                       int guitar = configIni.n譜面スクロール速度.Guitar;\r
-                                       if (guitar > 15)\r
-                                       {\r
-                                               guitar = 15;\r
-                                       }\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x171 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rc譜面スピード[guitar]\r
-                                       );\r
-                                       int bass = configIni.n譜面スクロール速度.Bass;\r
-                                       if (bass > 15)\r
+\r
+                                       for (EPart part = EPart.Drums; part <= EPart.Bass; ++part)\r
                                        {\r
-                                               bass = 15;\r
+                                               int x = Pos[part].X;\r
+                                               int y = Pos[part].Y;\r
+                                               \r
+                                               rect.Width = CDTXMania.Instance.Coordinates.ImgOptionPanel.W;\r
+                                               rect.Height = CDTXMania.Instance.Coordinates.ImgOptionPanel.H;\r
+\r
+                                               // Dark\r
+                                               DrawOption((int)CDTXMania.Instance.ConfigIni.eDark.Value, ptDark, x, y);\r
+                                               IncrementXY(ref x, ref y);\r
+\r
+                                               // ScrollSpeed\r
+                                               DrawOption(CDTXMania.Instance.ConfigIni.nScrollSpeed[part]-1, ptScrollSpeed, x, y);\r
+                                               IncrementXY(ref x, ref y);\r
+\r
+                                               // Sud Hid Inv\r
+                                               DrawOption((int)CDTXMania.Instance.ConfigIni.eSudHidInv[part].Value, ptSudHidInv, x, y);\r
+                                               IncrementXY(ref x, ref y);\r
+\r
+                                               // Reverse\r
+                                               DrawOption(CDTXMania.Instance.ConfigIni.bReverse[part] ? 1 : 0, ptReverse, x, y);\r
+                                               IncrementXY(ref x, ref y);\r
+\r
+                                               if (part == EPart.Drums)\r
+                                               {\r
+                                                       // Tight\r
+                                                       DrawOption(CDTXMania.Instance.ConfigIni.bTight ? 1 : 0, ptTight, x, y);\r
+                                                       IncrementXY(ref x, ref y);\r
+                                               }\r
+\r
+                                               if (part == EPart.Guitar || part == EPart.Bass)\r
+                                               {\r
+                                                       // Random\r
+                                                       DrawOption((int)CDTXMania.Instance.ConfigIni.eRandom[part].Value, ptRandom, x, y);\r
+                                                       IncrementXY(ref x, ref y);\r
+\r
+                                                       // Light\r
+                                                       DrawOption(CDTXMania.Instance.ConfigIni.bLight[part].Value ? 1 : 0, ptLight, x, y);\r
+                                                       IncrementXY(ref x, ref y);\r
+                                               }\r
                                        }\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x171 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rc譜面スピード[bass]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Sudden/Hidden/Invisible ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x189 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcHS[(configIni.bHidden.Drums ? 1 : 0) + (configIni.bSudden.Drums ? 2 : 0) +\r
-                                                                       (configIni.eInvisible.Drums == EInvisible.SEMI ? 4 : 0) +\r
-                                                                       (configIni.eInvisible.Drums == EInvisible.FULL ? 5 : 0)]);\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x189 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcHS[(configIni.bHidden.Guitar ? 1 : 0) + (configIni.bSudden.Guitar ? 2 : 0) +\r
-                                                                       (configIni.eInvisible.Guitar == EInvisible.SEMI ? 4 : 0) +\r
-                                                                       (configIni.eInvisible.Guitar == EInvisible.FULL ? 5 : 0)]);\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x189 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcHS[(configIni.bHidden.Bass ? 1 : 0) + (configIni.bSudden.Bass ? 2 : 0) +\r
-                                                                       (configIni.eInvisible.Bass == EInvisible.SEMI ? 4 : 0) +\r
-                                                                       (configIni.eInvisible.Bass == EInvisible.FULL ? 5 : 0)]);\r
-                                       #endregion\r
-                                       #region [ Dark ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1a1 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcDark[(int)configIni.eDark]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1a1 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcDark[(int)configIni.eDark]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1a1 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcDark[(int)configIni.eDark]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Reverse ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1b9 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcReverse[configIni.bReverse.Drums ? 1 : 0]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1b9 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcReverse[configIni.bReverse.Guitar ? 1 : 0]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1b9 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcReverse[configIni.bReverse.Bass ? 1 : 0]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ 判定文字表示位置 ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1d1 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcPosition[(int)configIni.判定文字表示位置.Drums]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1d1 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcPosition[(int)configIni.判定文字表示位置.Guitar]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1d1 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcPosition[(int)configIni.判定文字表示位置.Bass]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Tight ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1e9 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcTight[configIni.bTight ? 1 : 0]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Random ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1e9 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcRandom[(int)configIni.eRandom.Guitar]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x1e9 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcRandom[(int)configIni.eRandom.Bass]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ ComboPosigion ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x201 * Scale.X,\r
-                                               12 * Scale.Y - 4,\r
-                                               this.rcComboPos[(int)configIni.ドラムコンボ文字の表示位置]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Light ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x201 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcLight[configIni.bLight.Guitar ? 1 : 0]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x201 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcLight[configIni.bLight.Bass ? 1 : 0]\r
-                                       );\r
-                                       #endregion\r
-                                       #region [ Left ]\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x219 * Scale.X,\r
-                                               0x18 * Scale.Y - 4,\r
-                                               this.rcLeft[configIni.bLeft.Guitar ? 1 : 0]\r
-                                       );\r
-                                       this.txオプションパネル.t2D描画(\r
-                                               device,\r
-                                               0x219 * Scale.X,\r
-                                               0x24 * Scale.Y - 4,\r
-                                               this.rcLeft[configIni.bLeft.Bass ? 1 : 0]\r
-                                       );\r
-                                       #endregion\r
                                }\r
                        }\r
                        return 0;\r
                }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private readonly Rectangle[] rcComboPos = new Rectangle[] {\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(0x48 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(60 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(0x30 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(0x48 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcDark = new Rectangle[] {\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(12 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(0x54 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcHS = new Rectangle[] {\r
-                       new Rectangle( (int)(0 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),            // OFF\r
-                       new Rectangle( (int)(0 * Scale.X), (int)(12 * Scale.Y),(int)( 0x18 * Scale.X), (int)(12 * Scale.Y) ),           // Hidden\r
-                       new Rectangle( (int)(0 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),         // Sudden\r
-                       new Rectangle( (int)(0 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),         // H/S\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0x54 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),      // Semi-Invisible\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(0x54 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )        // Full-Invisible\r
-               };\r
-               private readonly Rectangle[] rcLeft = new Rectangle[] {\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0x48 * Scale.Y),(int)( 0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X),(int)( 0x48 * Scale.Y),(int)( 0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcLight = new Rectangle[] {\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(0x30 * Scale.Y),(int)( 0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(60 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcPosition = new Rectangle[] {\r
-                       new Rectangle( (int)(24 * Scale.X), (int)( 72 * Scale.Y), (int)( 24 * Scale.X), (int)(12 * Scale.Y) ),          // OFF\r
-                       new Rectangle( (int)( 0 * Scale.X), (int)( 48 * Scale.Y), (int)( 24 * Scale.X), (int)(12 * Scale.Y) ),          // P-A\r
-                       new Rectangle( (int)( 0 * Scale.X), (int)( 60 * Scale.Y), (int)( 24 * Scale.X), (int)(12 * Scale.Y) ),          // P-B\r
-                       new Rectangle( (int)( 0 * Scale.X), (int)( 72 * Scale.Y), (int)( 24 * Scale.X), (int)(12 * Scale.Y) ),          // P-C\r
-               };\r
-               private readonly Rectangle[] rcRandom = new Rectangle[] {\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0x30 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(60 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0x48 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0x54 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcReverse = new Rectangle[] {\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x18 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rcTight = new Rectangle[] {\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0x30 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(60 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private readonly Rectangle[] rc譜面スピード = new Rectangle[] {\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(12 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x30 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(12 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x48 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(12 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(0x60 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(0 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(12 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(0x18 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) ),\r
-                       new Rectangle( (int)(120 * Scale.X), (int)(0x24 * Scale.Y), (int)(0x18 * Scale.X), (int)(12 * Scale.Y) )\r
-               };\r
-               private CTexture txオプションパネル;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 05badba..fcaebad 100644 (file)
@@ -177,7 +177,7 @@ namespace DTXMania
                /// <exception cref="FileNotFoundException"></exception>\r
                public bool bIsNeedReloadDTX(string filename)\r
                {\r
-                       if (!File.Exists(filename))                     // 指定したファイルが存在しないなら例外終了\r
+                       if (!File.Exists(filename))     // 指定したファイルが存在しないなら例外終了\r
                        {\r
                                Trace.TraceError("ファイルが見つかりません。({0})", filename);\r
                                throw new FileNotFoundException();\r
@@ -226,7 +226,7 @@ namespace DTXMania
                                        {\r
                                                analyzing = false;\r
                                        }\r
-                                       else if (arg.StartsWith("-V", StringComparison.OrdinalIgnoreCase))              // サウンド再生\r
+                                       else if (arg.StartsWith("-V", StringComparison.OrdinalIgnoreCase))    // サウンド再生\r
                                        {\r
                                                // -Vvvv,ppp,"filename"の形式。 vvv=volume, ppp=pan.\r
                                                this.Enabled = true;\r
@@ -235,12 +235,12 @@ namespace DTXMania
                                                ret = true;\r
                                                arg = arg.Substring(2);\r
 \r
-                                               int pVol = arg.IndexOf(',');                                                                    //Trace.TraceInformation( "pVol=" + pVol );\r
-                                               string strVol = arg.Substring(0, pVol);                                         //Trace.TraceInformation( "strVol=" + strVol );\r
-                                               this.previewVolume = Convert.ToInt32(strVol);                                   //Trace.TraceInformation( "previewVolume=" + previewVolume );\r
-                                               int pPan = arg.IndexOf(',', pVol + 1);                                          //Trace.TraceInformation( "pPan=" + pPan );\r
-                                               string strPan = arg.Substring(pVol + 1, pPan - pVol - 1);               //Trace.TraceInformation( "strPan=" + strPan );\r
-                                               this.previewPan = Convert.ToInt32(strPan);                                      //Trace.TraceInformation( "previewPan=" + previewPan );\r
+                                               int pVol = arg.IndexOf(',');                  //Trace.TraceInformation( "pVol=" + pVol );\r
+                                               string strVol = arg.Substring(0, pVol);           //Trace.TraceInformation( "strVol=" + strVol );\r
+                                               this.previewVolume = Convert.ToInt32(strVol);         //Trace.TraceInformation( "previewVolume=" + previewVolume );\r
+                                               int pPan = arg.IndexOf(',', pVol + 1);            //Trace.TraceInformation( "pPan=" + pPan );\r
+                                               string strPan = arg.Substring(pVol + 1, pPan - pVol - 1);   //Trace.TraceInformation( "strPan=" + strPan );\r
+                                               this.previewPan = Convert.ToInt32(strPan);          //Trace.TraceInformation( "previewPan=" + previewPan );\r
 \r
                                                arg = arg.Substring(pPan + 1);\r
                                                arg = arg.Trim(new char[] { '\"' });\r
@@ -248,7 +248,7 @@ namespace DTXMania
                                                analyzing = false;\r
                                        }\r
                                        // -S  -Nxxx  filename\r
-                                       else if (arg.StartsWith("-S", StringComparison.OrdinalIgnoreCase))              // DTXV再生停止\r
+                                       else if (arg.StartsWith("-S", StringComparison.OrdinalIgnoreCase))    // DTXV再生停止\r
                                        {\r
                                                this.Enabled = true;\r
                                                this.Command = ECommand.Stop;\r
@@ -259,7 +259,7 @@ namespace DTXMania
                                        else if (arg.StartsWith("-D", StringComparison.OrdinalIgnoreCase))\r
                                        {\r
                                                // -DW, -DA1など\r
-                                               arg = arg.Substring(2); // -D を削除\r
+                                               arg = arg.Substring(2); // -D を削除\r
                                                switch (arg[0])\r
                                                {\r
                                                        #region [ DirectSound ]\r
@@ -326,7 +326,7 @@ namespace DTXMania
                                                                        this.nASIOdevice = nAsioDev;\r
                                                                }\r
                                                                break;\r
-                                                       #endregion\r
+                                                               #endregion\r
                                                }\r
                                                #region [ GRmode, TimeStretch, VSyncWait ]\r
                                                {\r
@@ -345,22 +345,22 @@ namespace DTXMania
                                                this.Command = ECommand.Play;\r
                                                ret = true;\r
 \r
-                                               arg = arg.Substring(2);                                 // "-N"を除去\r
+                                               arg = arg.Substring(2);         // "-N"を除去\r
                                                string[] p = arg.Split(new char[] { ' ' });\r
-                                               this.nStartBar = int.Parse(p[0]);                       // 再生開始小節\r
+                                               this.nStartBar = int.Parse(p[0]);     // 再生開始小節\r
                                                if (this.nStartBar < 0)\r
                                                {\r
                                                        this.nStartBar = -1;\r
                                                }\r
 \r
                                                int startIndex = arg.IndexOf(' ');\r
-                                               string filename = arg.Substring(startIndex + 1);        // 再生ファイル名(フルパス) これで引数が終わっていることを想定\r
+                                               string filename = arg.Substring(startIndex + 1);  // 再生ファイル名(フルパス) これで引数が終わっていることを想定\r
                                                try\r
                                                {\r
                                                        filename = filename.Trim(new char[] { '\"' });\r
                                                        bIsNeedReloadDTX(filename);\r
                                                }\r
-                                               catch   // 指定ファイルが存在しない\r
+                                               catch // 指定ファイルが存在しない\r
                                                {\r
                                                }\r
                                                arg = "";\r
@@ -382,38 +382,43 @@ namespace DTXMania
                /// </summary>\r
                public void tUpdateConfigIni()\r
                {\r
-                       CConfigIni cc = new CConfigIni();\r
-                       string path = CDTXMania.Instance.strEXEのあるフォルダ + "Config.ini";\r
-                       if (File.Exists(path))\r
+                       CDTXMania.Instance.LoadConfig();\r
+\r
+                       // CConfigIni cc = new CConfigIni();\r
+                       //string path = CDTXMania.Instance.strEXEのあるフォルダ + "Config.ini";\r
+                       //if (File.Exists(path))\r
+                       //{\r
+                       //      FileInfo fi = new FileInfo(path);\r
+                       //      if (fi.Length > 0)      // Config.iniが0byteだったなら、読み込まない\r
+                       //      {\r
+                       //              try\r
+                       //              {\r
+                       //                      CDTXMania..tファイルから読み込み(path);\r
+                       //              }\r
+                       //              catch\r
+                       //              {\r
+                       //                      //ConfigIni = new CConfigIni(); // 存在してなければ新規生成\r
+                       //              }\r
+                       //      }\r
+                       //      fi = null;\r
+                       //}\r
+\r
+                       for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                        {\r
-                               FileInfo fi = new FileInfo(path);\r
-                               if (fi.Length > 0)      // Config.iniが0byteだったなら、読み込まない\r
-                               {\r
-                                       try\r
-                                       {\r
-                                               cc.tファイルから読み込み(path);\r
-                                       }\r
-                                       catch\r
-                                       {\r
-                                               //ConfigIni = new CConfigIni(); // 存在してなければ新規生成\r
-                                       }\r
-                               }\r
-                               fi = null;\r
+                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[inst].Value = CDTXMania.Instance.ConfigIni.nScrollSpeed[inst];\r
                        }\r
+                       CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus.Value = CDTXMania.Instance.ConfigIni.bDebugInfo;\r
+                       CDTXMania.Instance.ConfigIni.bViewerVSyncWait.Value = CDTXMania.Instance.ConfigIni.bVSyncWait;\r
+                       CDTXMania.Instance.ConfigIni.bViewerTimeStretch.Value = CDTXMania.Instance.ConfigIni.bTimeStretch;\r
+                       CDTXMania.Instance.ConfigIni.bViewerDrumsActive.Value = CDTXMania.Instance.ConfigIni.bDrums有効;\r
+                       CDTXMania.Instance.ConfigIni.bViewerGuitarActive.Value = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
 \r
-                       cc.nViewerScrollSpeed = CDTXMania.Instance.ConfigIni.n譜面スクロール速度;\r
-                       cc.bViewerShowDebugStatus = CDTXMania.Instance.ConfigIni.b演奏情報を表示する;\r
-                       cc.bViewerVSyncWait = CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う;\r
-                       cc.bViewerTimeStretch = CDTXMania.Instance.ConfigIni.bTimeStretch;\r
-                       cc.bViewerDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                       cc.bViewerGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
-\r
-                       cc.nViewerウインドウwidth = CDTXMania.Instance.ConfigIni.nウインドウwidth;\r
-                       cc.nViewerウインドウheight = CDTXMania.Instance.ConfigIni.nウインドウheight;\r
-                       cc.nViewer初期ウィンドウ開始位置X = CDTXMania.Instance.ConfigIni.n初期ウィンドウ開始位置X;\r
-                       cc.nViewer初期ウィンドウ開始位置Y = CDTXMania.Instance.ConfigIni.n初期ウィンドウ開始位置Y;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.W = CDTXMania.Instance.ConfigIni.rcWindow.W;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.H = CDTXMania.Instance.ConfigIni.rcWindow.H;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.X = CDTXMania.Instance.ConfigIni.rcWindow.X;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.Y = CDTXMania.Instance.ConfigIni.rcWindow.Y;\r
 \r
-                       cc.t書き出し(path);\r
+                       CDTXMania.Instance.SaveConfig();\r
                }\r
 \r
                private string last_path;\r
index c17d1cd..8b9038a 100644 (file)
@@ -32,7 +32,7 @@ namespace DTXMania
                        曲読み込み,\r
                        演奏,\r
                        結果,\r
-                       ChangeSkin,                                             // #28195 2011.5.4 yyagi\r
+                       ChangeSkin,           // #28195 2011.5.4 yyagi\r
                        終了\r
                }\r
 \r
index 9e1674a..f65e8ea 100644 (file)
@@ -62,7 +62,7 @@ namespace DTXMania
                /// <para>ステージが変わる度に呼び出されます。</para>\r
                /// <para>呼び出しタイミングは、新しいステージの活性化直後かつ描画開始前です。</para>\r
                /// </summary>\r
-               void Onステージ変更(CConfigIni config);\r
+               void Onステージ変更();\r
 \r
                /// <summary>\r
                /// <para>選曲画面で選択曲が変更された場合に呼び出されます。</para>\r
index f83c395..d3a36ef 100644 (file)
@@ -21,7 +21,7 @@ namespace DTXMania
                {\r
                        if (!base.b活性化してない)\r
                        {\r
-                               try                     // #xxxxx 2012.12.31 yyagi: to prepare flush, first of all, I create q queue to the GPU.\r
+                               try     // #xxxxx 2012.12.31 yyagi: to prepare flush, first of all, I create q queue to the GPU.\r
                                {\r
                                        IDirect3DQuery9 = new SlimDX.Direct3D9.Query(CDTXMania.Instance.Device, QueryType.Occlusion);\r
                                }\r
@@ -44,7 +44,7 @@ namespace DTXMania
                        {\r
                                IDirect3DQuery9.Issue(Issue.End);\r
                                DWM.Flush();\r
-                               IDirect3DQuery9.GetData<int>(true);     // flush GPU queue\r
+                               IDirect3DQuery9.GetData<int>(true); // flush GPU queue\r
                        }\r
                        return 0;\r
                }\r
index 334a7b0..5f28270 100644 (file)
@@ -1,3231 +1 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.IO;\r
-using System.Diagnostics;\r
-using System.Web;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
-       public class CConfigIni\r
-       {\r
-               // クラス\r
-\r
-               #region [ CKeyAssign ]\r
-               public class CKeyAssign\r
-               {\r
-                       public class CKeyAssignPad\r
-                       {\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] HH\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHH_R;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHH_R = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] R\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHH_R;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHH_R = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] SD\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padSD_G;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padSD_G = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] G\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padSD_G;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padSD_G = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] BD\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padBD_B;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padBD_B = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] B\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padBD_B;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padBD_B = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] HT\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHT_Pick;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHT_Pick = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] Pick\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHT_Pick;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHT_Pick = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] LT\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padLT_Wail;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padLT_Wail = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] Wail\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padLT_Wail;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padLT_Wail = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] FT\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padFT_Cancel;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padFT_Cancel = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] Cancel\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padFT_Cancel;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padFT_Cancel = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] CY\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padCY_Decide;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padCY_Decide = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] Decide\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padCY_Decide;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padCY_Decide = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] HHO\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHHO;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHHO = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] RD\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padRD;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padRD = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] LC\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padLC;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padLC = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] HP\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padHP;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padHP = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] Capture\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               return this.padCapture;\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               this.padCapture = value;\r
-                                       }\r
-                               }\r
-                               public CConfigIni.CKeyAssign.STKEYASSIGN[] this[int index]\r
-                               {\r
-                                       get\r
-                                       {\r
-                                               switch (index)\r
-                                               {\r
-                                                       case (int)EKeyConfigPad.HH:\r
-                                                               return this.padHH_R;\r
-\r
-                                                       case (int)EKeyConfigPad.SD:\r
-                                                               return this.padSD_G;\r
-\r
-                                                       case (int)EKeyConfigPad.BD:\r
-                                                               return this.padBD_B;\r
-\r
-                                                       case (int)EKeyConfigPad.HT:\r
-                                                               return this.padHT_Pick;\r
-\r
-                                                       case (int)EKeyConfigPad.LT:\r
-                                                               return this.padLT_Wail;\r
-\r
-                                                       case (int)EKeyConfigPad.FT:\r
-                                                               return this.padFT_Cancel;\r
-\r
-                                                       case (int)EKeyConfigPad.CY:\r
-                                                               return this.padCY_Decide;\r
-\r
-                                                       case (int)EKeyConfigPad.HHO:\r
-                                                               return this.padHHO;\r
-\r
-                                                       case (int)EKeyConfigPad.RD:\r
-                                                               return this.padRD;\r
-\r
-                                                       case (int)EKeyConfigPad.LC:\r
-                                                               return this.padLC;\r
-\r
-                                                       case (int)EKeyConfigPad.HP:     // #27029 2012.1.4 from\r
-                                                               return this.padHP;                      //\r
-\r
-                                                       case (int)EKeyConfigPad.Capture:\r
-                                                               return this.padCapture;\r
-                                               }\r
-                                               throw new IndexOutOfRangeException();\r
-                                       }\r
-                                       set\r
-                                       {\r
-                                               switch (index)\r
-                                               {\r
-                                                       case (int)EKeyConfigPad.HH:\r
-                                                               this.padHH_R = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.SD:\r
-                                                               this.padSD_G = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.BD:\r
-                                                               this.padBD_B = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.Pick:\r
-                                                               this.padHT_Pick = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.LT:\r
-                                                               this.padLT_Wail = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.FT:\r
-                                                               this.padFT_Cancel = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.CY:\r
-                                                               this.padCY_Decide = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.HHO:\r
-                                                               this.padHHO = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.RD:\r
-                                                               this.padRD = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.LC:\r
-                                                               this.padLC = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.HP:\r
-                                                               this.padHP = value;\r
-                                                               return;\r
-\r
-                                                       case (int)EKeyConfigPad.Capture:\r
-                                                               this.padCapture = value;\r
-                                                               return;\r
-                                               }\r
-                                               throw new IndexOutOfRangeException();\r
-                                       }\r
-                               }\r
-\r
-                               #region [ private ]\r
-                               //-----------------\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padBD_B;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padCY_Decide;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padFT_Cancel;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padHH_R;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padHHO;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padHT_Pick;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padLC;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padLT_Wail;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padRD;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padSD_G;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padHP;\r
-                               private CConfigIni.CKeyAssign.STKEYASSIGN[] padCapture;\r
-                               //-----------------\r
-                               #endregion\r
-                       }\r
-\r
-                       [StructLayout(LayoutKind.Sequential)]\r
-                       public struct STKEYASSIGN\r
-                       {\r
-                               public E入力デバイス 入力デバイス;\r
-                               public int ID;\r
-                               public int コード;\r
-                               public STKEYASSIGN(E入力デバイス DeviceType, int nID, int nCode)\r
-                               {\r
-                                       this.入力デバイス = DeviceType;\r
-                                       this.ID = nID;\r
-                                       this.コード = nCode;\r
-                               }\r
-                       }\r
-\r
-                       public CKeyAssignPad Bass = new CKeyAssignPad();\r
-                       public CKeyAssignPad Drums = new CKeyAssignPad();\r
-                       public CKeyAssignPad Guitar = new CKeyAssignPad();\r
-                       public CKeyAssignPad System = new CKeyAssignPad();\r
-                       public CKeyAssignPad this[int index]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case (int)EKeyConfigPart.DRUMS:\r
-                                                       return this.Drums;\r
-\r
-                                               case (int)EKeyConfigPart.GUITAR:\r
-                                                       return this.Guitar;\r
-\r
-                                               case (int)EKeyConfigPart.BASS:\r
-                                                       return this.Bass;\r
-\r
-                                               case (int)EKeyConfigPart.SYSTEM:\r
-                                                       return this.System;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case (int)EKeyConfigPart.DRUMS:\r
-                                                       this.Drums = value;\r
-                                                       return;\r
-\r
-                                               case (int)EKeyConfigPart.GUITAR:\r
-                                                       this.Guitar = value;\r
-                                                       return;\r
-\r
-                                               case (int)EKeyConfigPart.BASS:\r
-                                                       this.Bass = value;\r
-                                                       return;\r
-\r
-                                               case (int)EKeyConfigPart.SYSTEM:\r
-                                                       this.System = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-               #endregion\r
-\r
-               //\r
-               public enum ESoundDeviceTypeForConfig\r
-               {\r
-                       ACM = 0,\r
-                       // DirectSound,\r
-                       ASIO,\r
-                       WASAPI,\r
-                       Unknown = 99\r
-               }\r
-               // プロパティ\r
-\r
-#if false              // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
-               //----------------------------------------\r
-               public float[,] fGaugeFactor = new float[5,2];\r
-               public float[] fDamageLevelFactor = new float[3];\r
-               //----------------------------------------\r
-#endif\r
-               public int nBGAlpha;\r
-               public bool bForceAVIFullscreen;\r
-               public bool bAVI有効;\r
-               public bool bBGA有効;\r
-               public bool bBGM音を発声する;\r
-               public STDGBVALUE<bool> bHidden;\r
-               public STDGBVALUE<bool> bLeft;\r
-               public STDGBVALUE<bool> bLight;\r
-               public bool bLogDTX詳細ログ出力;\r
-               public bool bLog曲検索ログ出力;\r
-               public bool bLog作成解放ログ出力;\r
-               public STDGBVALUE<bool> bReverse;\r
-               //public STDGBVALUE<E判定表示優先度> e判定表示優先度;\r
-               public E判定表示優先度 e判定表示優先度;\r
-               public STDGBVALUE<E判定位置> e判定位置;                 // #33891 2014.6.26 yyagi\r
-               public Eドラムレーン表示位置 eドラムレーン表示位置;\r
-               public bool bScoreIniを出力する;\r
-               public bool bSTAGEFAILED有効;\r
-               public STDGBVALUE<bool> bSudden;\r
-               public bool bTight;\r
-               public bool bGraph;     // #24074 2011.01.23 add ikanick\r
-               public bool bWave再生位置自動調整機能有効;\r
-               public bool bシンバルフリー;\r
-               public bool bストイックモード;\r
-               public bool bドラム打音を発声する;\r
-               public bool bフィルイン有効;\r
-               public bool bランダムセレクトで子BOXを検索対象とする;\r
-               public bool bログ出力;\r
-               public STDGBVALUE<bool> b演奏音を強調する;\r
-               public bool b演奏情報を表示する;\r
-               public bool b歓声を発声する;\r
-               public bool b垂直帰線待ちを行う;\r
-               public bool b選曲リストフォントを斜体にする;\r
-               public bool b選曲リストフォントを太字にする;\r
-               public bool b全画面モード;\r
-               public int n初期ウィンドウ開始位置X; // #30675 2013.02.04 ikanick add\r
-               public int n初期ウィンドウ開始位置Y;\r
-               public int nウインドウwidth;                               // #23510 2010.10.31 yyagi add\r
-               public int nウインドウheight;                              // #23510 2010.10.31 yyagi add\r
-               public Dictionary<int, string> dicJoystick;\r
-               public ECYGroup eCYGroup;\r
-               public Eダークモード eDark;\r
-               public EFTGroup eFTGroup;\r
-               public EHHGroup eHHGroup;\r
-               public EBDGroup eBDGroup;                                       // #27029 2012.1.4 from add\r
-               public E打ち分け時の再生の優先順位 eHitSoundPriorityCY;\r
-               public E打ち分け時の再生の優先順位 eHitSoundPriorityFT;\r
-               public E打ち分け時の再生の優先順位 eHitSoundPriorityHH;\r
-               public STDGBVALUE<Eランダムモード> eRandom;\r
-               public Eダメージレベル eダメージレベル;\r
-               public CKeyAssign KeyAssign;\r
-               public int n非フォーカス時スリープms;       // #23568 2010.11.04 ikanick add\r
-               public int nフレーム毎スリープms;                      // #xxxxx 2011.11.27 yyagi add\r
-               public int n演奏速度;\r
-               public int n曲が選択されてからプレビュー音が鳴るまでのウェイトms;\r
-               public int n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms;\r
-               public int n自動再生音量;\r
-               public int n手動再生音量;\r
-               public int n選曲リストフォントのサイズdot;\r
-               public STDGBVALUE<int> n表示可能な最小コンボ数;\r
-               public STDGBVALUE<int> n譜面スクロール速度;\r
-               public string strDTXManiaのバージョン;\r
-               public string str曲データ検索パス;\r
-               public string str選曲リストフォント;\r
-               public Eドラムコンボ文字の表示位置 ドラムコンボ文字の表示位置;\r
-               public STDGBVALUE<E判定文字表示位置> 判定文字表示位置;\r
-               //              public int nハイハット切り捨て下限Velocity;\r
-               //              public int n切り捨て下限Velocity;                 // #23857 2010.12.12 yyagi VelocityMin\r
-               public STDGBVALUE<int> nInputAdjustTimeMs;      // #23580 2011.1.3 yyagi タイミングアジャスト機能\r
-               public STDGBVALUE<int> nJudgeLinePosOffset;     // #31602 2013.6.23 yyagi 判定ライン表示位置のオフセット\r
-               public STDGBVALUE<float> fJudgeLinePosOffsetBase;\r
-               public int nShowLagType;                                        // #25370 2011.6.5 yyagi ズレ時間表示機能\r
-               public bool bIsAutoResultCapture;                       // #25399 2011.6.9 yyagi リザルト画像自動保存機能のON/OFF制御\r
-               public int nPoliphonicSounds;                           // #28228 2012.5.1 yyagi レーン毎の最大同時発音数\r
-               public bool bバッファ入力を行う;\r
-               public bool bIsEnabledSystemMenu;                       // #28200 2012.5.1 yyagi System Menuの使用可否切替\r
-               public string strSystemSkinSubfolderFullName;   // #28195 2012.5.2 yyagi Skin切替用 System/以下のサブフォルダ名\r
-               public bool bUseBoxDefSkin;                                             // #28195 2012.5.6 yyagi Skin切替用 box.defによるスキン変更機能を使用するか否か\r
-               public STDGBVALUE<EAutoGhostData> eAutoGhost;               // #35411 2015.8.18 chnmr0 プレー時使用ゴーストデータ種別\r
-               public STDGBVALUE<ETargetGhostData> eTargetGhost;               // #35411 2015.8.18 chnmr0 ゴーストデータ再生方法\r
-               public bool b曲読み込みを高速化する;         // #36046 2016.2.21 ikanick\r
-\r
-               public bool bConfigIniがないかDTXManiaのバージョンが異なる\r
-               {\r
-                       get\r
-                       {\r
-                               return (!this.bConfigIniが存在している || !CDTXMania.VERSION.Equals(this.strDTXManiaのバージョン));\r
-                       }\r
-               }\r
-               public bool bDrums有効\r
-               {\r
-                       get\r
-                       {\r
-                               return this._bDrums有効;\r
-                       }\r
-                       set\r
-                       {\r
-                               this._bDrums有効 = value;\r
-                               if(!this.bGuitar有効 && !this.bDrums有効)\r
-                               {\r
-                                       this._bGuitar有効 = true;\r
-                               }\r
-                               _b楽器有効.Drums = value;\r
-                       }\r
-               }\r
-\r
-               public bool bEnterがキー割り当てのどこにも使用されていない\r
-               {\r
-                       get\r
-                       {\r
-                               for (int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++)\r
-                               {\r
-                                       for (int j = 0; j <= (int)EKeyConfigPad.Capture; j++)\r
-                                       {\r
-                                               for (int k = 0; k < 0x10; k++)\r
-                                               {\r
-                                                       if ((this.KeyAssign[i][j][k].入力デバイス == E入力デバイス.キーボード) && (this.KeyAssign[i][j][k].コード == (int)SlimDX.DirectInput.Key.Return))\r
-                                                       {\r
-                                                               return false;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               return true;\r
-                       }\r
-               }\r
-\r
-               public bool bGuitar有効\r
-               {\r
-                       get\r
-                       {\r
-                               return this._bGuitar有効;\r
-                       }\r
-                       set\r
-                       {\r
-                               this._bGuitar有効 = value;\r
-                               if (!this.bGuitar有効 && !this.bDrums有効)\r
-                               {\r
-                                       this._bDrums有効 = true;\r
-                               }\r
-                               _b楽器有効.Bass = value;\r
-                               _b楽器有効.Guitar = value;\r
-                       }\r
-               }\r
-\r
-               public STDGBVALUE<bool> b楽器有効\r
-               {\r
-                       get\r
-                       {\r
-                               return _b楽器有効;\r
-                       }\r
-               }\r
-\r
-               public bool bウィンドウモード\r
-               {\r
-                       get\r
-                       {\r
-                               return !this.b全画面モード;\r
-                       }\r
-                       set\r
-                       {\r
-                               this.b全画面モード = !value;\r
-                       }\r
-               }\r
-\r
-               public bool bドラムが全部オートプレイである\r
-               {\r
-                       get\r
-                       {\r
-                               for (int i = (int)Eレーン.LC; i <= (int)Eレーン.CY; i++)\r
-                               {\r
-                                       if (!this.bAutoPlay[i])\r
-                                       {\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                               return true;\r
-                       }\r
-               }\r
-\r
-               public bool bギターが全部オートプレイである\r
-               {\r
-                       get\r
-                       {\r
-                               for (int i = (int)Eレーン.GtR; i <= (int)Eレーン.GtW; i++)\r
-                               {\r
-                                       if (!this.bAutoPlay[i])\r
-                                       {\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                               return true;\r
-                       }\r
-               }\r
-               public bool bベースが全部オートプレイである\r
-               {\r
-                       get\r
-                       {\r
-                               for (int i = (int)Eレーン.BsR; i <= (int)Eレーン.BsW; i++)\r
-                               {\r
-                                       if (!this.bAutoPlay[i])\r
-                                       {\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                               return true;\r
-                       }\r
-               }\r
-               public bool b演奏情報を表示しない\r
-               {\r
-                       get\r
-                       {\r
-                               return !this.b演奏情報を表示する;\r
-                       }\r
-                       set\r
-                       {\r
-                               this.b演奏情報を表示する = !value;\r
-                       }\r
-               }\r
-               public int n背景の透過度\r
-               {\r
-                       get\r
-                       {\r
-                               return this.nBGAlpha;\r
-                       }\r
-                       set\r
-                       {\r
-                               if (value < 0)\r
-                               {\r
-                                       this.nBGAlpha = 0;\r
-                               }\r
-                               else if (value > 0xff)\r
-                               {\r
-                                       this.nBGAlpha = 0xff;\r
-                               }\r
-                               else\r
-                               {\r
-                                       this.nBGAlpha = value;\r
-                               }\r
-                       }\r
-               }\r
-               public int nRisky;                                              // #23559 2011.6.20 yyagi Riskyでの残ミス数。0で閉店\r
-               public bool bIsAllowedDoubleClickFullscreen;    // #26752 2011.11.27 yyagi ダブルクリックしてもフルスクリーンに移行しない\r
-               public bool bIsSwappedGuitarBass                        // #24063 2011.1.16 yyagi ギターとベースの切り替え中か否か\r
-               {\r
-                       get;\r
-                       set;\r
-               }\r
-               public bool bIsSwappedGuitarBass_AutoFlagsAreSwapped    // #24415 2011.2.21 yyagi FLIP中にalt-f4終了で、AUTOフラグがswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ\r
-               {\r
-                       get;\r
-                       set;\r
-               }\r
-               public bool bIsSwappedGuitarBass_PlaySettingsAreSwapped // #35417 2015.8.18 yyagi FLIP中にalt-f4終了で、演奏設定がswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ\r
-               {\r
-                       get;\r
-                       set;\r
-               }\r
-\r
-               public STAUTOPLAY bAutoPlay;\r
-               public int nSoundDeviceType;                            // #24820 2012.12.23 yyagi 出力サウンドデバイス(0=ACM(にしたいが設計がきつそうならDirectShow), 1=ASIO, 2=WASAPI)\r
-               public int nWASAPIBufferSizeMs;                         // #24820 2013.1.15 yyagi WASAPIのバッファサイズ\r
-               //              public int nASIOBufferSizeMs;                           // #24820 2012.12.28 yyagi ASIOのバッファサイズ\r
-               public int nASIODevice;                                         // #24820 2013.1.17 yyagi ASIOデバイス\r
-               public bool bUseOSTimer;                                        // #33689 2014.6.6 yyagi 演奏タイマーの種類\r
-               public bool bDynamicBassMixerManagement;        // #24820\r
-               public bool bTimeStretch;                                       // #23664 2013.2.24 yyagi ピッチ変更無しで再生速度を変更するかどうか\r
-               public STDGBVALUE<EInvisible> eInvisible;       // #32072 2013.9.20 yyagi チップを非表示にする\r
-               public int nChipDisplayTimeMs, nChipFadeoutTimeMs;      // Invisible対応\r
-\r
-               public STDGBVALUE<int> nViewerScrollSpeed;\r
-               public bool bViewerVSyncWait;\r
-               public bool bViewerShowDebugStatus;\r
-               public bool bViewerTimeStretch;\r
-               public bool bViewerDrums有効, bViewerGuitar有効;\r
-               public int nViewer初期ウィンドウ開始位置X;\r
-               public int nViewer初期ウィンドウ開始位置Y;\r
-               public int nViewerウインドウwidth;\r
-               public int nViewerウインドウheight;\r
-               //public bool bNoMP3Streaming;                          // 2014.4.14 yyagi; mp3のシーク位置がおかしくなる場合は、これをtrueにすることで、wavにデコードしてからオンメモリ再生する\r
-               public int nMasterVolume;\r
-\r
-               #region [ STRANGE ]\r
-               public STRANGE nヒット範囲ms;\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               public struct STRANGE\r
-               {\r
-                       public int Perfect;\r
-                       public int Great;\r
-                       public int Good;\r
-                       public int Poor;\r
-                       public int this[int index]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       return this.Perfect;\r
-\r
-                                               case 1:\r
-                                                       return this.Great;\r
-\r
-                                               case 2:\r
-                                                       return this.Good;\r
-\r
-                                               case 3:\r
-                                                       return this.Poor;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       this.Perfect = value;\r
-                                                       return;\r
-\r
-                                               case 1:\r
-                                                       this.Great = value;\r
-                                                       return;\r
-\r
-                                               case 2:\r
-                                                       this.Good = value;\r
-                                                       return;\r
-\r
-                                               case 3:\r
-                                                       this.Poor = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-               #endregion\r
-               #region [ STLANEVALUE ]\r
-               public STLANEVALUE nVelocityMin;\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               public struct STLANEVALUE\r
-               {\r
-                       public int LC;\r
-                       public int HH;\r
-                       public int SD;\r
-                       public int BD;\r
-                       public int HT;\r
-                       public int LT;\r
-                       public int FT;\r
-                       public int CY;\r
-                       public int RD;\r
-                       public int Guitar;\r
-                       public int Bass;\r
-                       public int this[int index]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       return this.LC;\r
-\r
-                                               case 1:\r
-                                                       return this.HH;\r
-\r
-                                               case 2:\r
-                                                       return this.SD;\r
-\r
-                                               case 3:\r
-                                                       return this.BD;\r
-\r
-                                               case 4:\r
-                                                       return this.HT;\r
-\r
-                                               case 5:\r
-                                                       return this.LT;\r
-\r
-                                               case 6:\r
-                                                       return this.FT;\r
-\r
-                                               case 7:\r
-                                                       return this.CY;\r
-\r
-                                               case 8:\r
-                                                       return this.RD;\r
-\r
-                                               case 9:\r
-                                                       return this.Guitar;\r
-\r
-                                               case 10:\r
-                                                       return this.Bass;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch (index)\r
-                                       {\r
-                                               case 0:\r
-                                                       this.LC = value;\r
-                                                       return;\r
-\r
-                                               case 1:\r
-                                                       this.HH = value;\r
-                                                       return;\r
-\r
-                                               case 2:\r
-                                                       this.SD = value;\r
-                                                       return;\r
-\r
-                                               case 3:\r
-                                                       this.BD = value;\r
-                                                       return;\r
-\r
-                                               case 4:\r
-                                                       this.HT = value;\r
-                                                       return;\r
-\r
-                                               case 5:\r
-                                                       this.LT = value;\r
-                                                       return;\r
-\r
-                                               case 6:\r
-                                                       this.FT = value;\r
-                                                       return;\r
-\r
-                                               case 7:\r
-                                                       this.CY = value;\r
-                                                       return;\r
-\r
-                                               case 8:\r
-                                                       this.RD = value;\r
-                                                       return;\r
-\r
-                                               case 9:\r
-                                                       this.Guitar = value;\r
-                                                       return;\r
-\r
-                                               case 10:\r
-                                                       this.Bass = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-               #endregion\r
-\r
-               // #27029 2012.1.5 from:\r
-               // BDGroup が FP|BD→FP&BD に変化した際に自動変化するパラメータの値のバックアップ。FP&BD→FP|BD の時に元に戻す。\r
-               // これらのバックアップ値は、BDGroup が FP&BD 状態の時にのみ Config.ini に出力され、BDGroup が FP|BD に戻ったら Config.ini から消える。\r
-               public class CBackupOf1BD\r
-               {\r
-                       public EHHGroup eHHGroup = EHHGroup.全部打ち分ける;\r
-                       public E打ち分け時の再生の優先順位 eHitSoundPriorityHH = E打ち分け時の再生の優先順位.ChipがPadより優先;\r
-               }\r
-               public CBackupOf1BD BackupOf1BD = null;\r
-\r
-               public void SwapGuitarBassInfos_AutoFlags()\r
-               {\r
-                       //bool ts = CDTXMania.Instance.ConfigIni.bAutoPlay.Bass;                        // #24415 2011.2.21 yyagi: FLIP時のリザルトにAUTOの記録が混ざらないよう、AUTOのフラグもswapする\r
-                       //CDTXMania.Instance.ConfigIni.bAutoPlay.Bass = CDTXMania.Instance.ConfigIni.bAutoPlay.Guitar;\r
-                       //CDTXMania.Instance.ConfigIni.bAutoPlay.Guitar = ts;\r
-\r
-                       int looptime = (int)Eレーン.GtW - (int)Eレーン.GtR + 1;           // #29390 2013.1.25 yyagi ギターのAutoLane/AutoPick対応に伴い、FLIPもこれに対応\r
-                       for (int i = 0; i < looptime; i++)                                                      // こんなに離れたところを独立して修正しなければならない設計ではいけませんね・・・\r
-                       {\r
-                               bool b = CDTXMania.Instance.ConfigIni.bAutoPlay[i + (int)Eレーン.BsR];\r
-                               CDTXMania.Instance.ConfigIni.bAutoPlay[i + (int)Eレーン.BsR] = CDTXMania.Instance.ConfigIni.bAutoPlay[i + (int)Eレーン.GtR];\r
-                               CDTXMania.Instance.ConfigIni.bAutoPlay[i + (int)Eレーン.GtR] = b;\r
-                       }\r
-\r
-                       CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped = !CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped;\r
-               }\r
-               public void SwapGuitarBassInfos_PlaySettings()                  // #35417 2015.8.18 yyagi: 演奏設定のFLIP機能を追加\r
-               {\r
-                       bool b;\r
-                       b = bHidden.Bass; bHidden.Bass = bHidden.Guitar; bHidden.Guitar = b;\r
-                       b = bLeft.Bass; bLeft.Bass = bLeft.Guitar; bLeft.Guitar = b;\r
-                       b = bLight.Bass; bLight.Bass = bLight.Guitar; bLight.Guitar = b;\r
-                       b = bReverse.Bass; bReverse.Bass = bReverse.Guitar; bReverse.Guitar = b;\r
-                       b = bSudden.Bass; bSudden.Bass = bSudden.Guitar; bSudden.Guitar = b;\r
-\r
-                       EInvisible ei;\r
-                       ei = eInvisible.Bass; eInvisible.Bass = eInvisible.Guitar; eInvisible.Guitar = ei;\r
-                       Eランダムモード er;\r
-                       er = eRandom.Bass; eRandom.Bass = eRandom.Guitar; eRandom.Guitar = er;\r
-                       E判定文字表示位置 ej;\r
-                       ej = 判定文字表示位置.Bass; 判定文字表示位置.Bass = 判定文字表示位置.Guitar; 判定文字表示位置.Guitar = ej;\r
-                       int n;\r
-                       n = n表示可能な最小コンボ数.Bass; n表示可能な最小コンボ数.Bass = n表示可能な最小コンボ数.Guitar; n表示可能な最小コンボ数.Guitar = n;\r
-\r
-                       // 譜面スクロール速度の変更だけは、On活性化()で行うこと。そうしないと、演奏開始直後にスクロール速度が変化して見苦しい。\r
-                       n = n譜面スクロール速度.Bass; n譜面スクロール速度.Bass = n譜面スクロール速度.Guitar; n譜面スクロール速度.Guitar = n;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass_PlaySettingsAreSwapped = !CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass_PlaySettingsAreSwapped;\r
-\r
-               }\r
-               // コンストラクタ\r
-\r
-               public CConfigIni()\r
-               {\r
-                       this.strDTXManiaのバージョン = "Unknown";\r
-                       this.str曲データ検索パス = @".\";\r
-                       this.b全画面モード = false;\r
-                       this.b垂直帰線待ちを行う = true;\r
-                       this.n初期ウィンドウ開始位置X = 0; // #30675 2013.02.04 ikanick add\r
-                       this.n初期ウィンドウ開始位置Y = 0;\r
-                       this.nウインドウwidth = 0;                 // #34069 2014.7.23 yyagi 初回起動時のwindow sizeは、CDTXMania側で設定する(-> 1280x720にする)\r
-                       this.nウインドウheight = 0;                        //\r
-                       this.nフレーム毎スリープms = -1;                       // #xxxxx 2011.11.27 yyagi add\r
-                       this.n非フォーカス時スリープms = 1;                  // #23568 2010.11.04 ikanick add\r
-                       this._bGuitar有効 = true;\r
-                       this._bDrums有効 = true;\r
-                       this._b楽器有効 = new STDGBVALUE<bool>();\r
-                       this.nBGAlpha = 200;\r
-                       this.eダメージレベル = Eダメージレベル.普通;\r
-                       this.bSTAGEFAILED有効 = true;\r
-                       this.bForceAVIFullscreen = false;\r
-                       this.bAVI有効 = true;\r
-                       this.bBGA有効 = true;\r
-                       this.bフィルイン有効 = true;\r
-                       this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = 1000;\r
-                       this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = 100;\r
-                       this.bWave再生位置自動調整機能有効 = true;\r
-                       this.bBGM音を発声する = true;\r
-                       this.bドラム打音を発声する = true;\r
-                       this.b歓声を発声する = true;\r
-                       this.bScoreIniを出力する = true;\r
-                       this.bランダムセレクトで子BOXを検索対象とする = true;\r
-                       this.n表示可能な最小コンボ数 = new STDGBVALUE<int>();\r
-                       this.n表示可能な最小コンボ数.Drums = 11;\r
-                       this.n表示可能な最小コンボ数.Guitar = 2;\r
-                       this.n表示可能な最小コンボ数.Bass = 2;\r
-                       this.str選曲リストフォント = "MS PGothic";\r
-                       this.n選曲リストフォントのサイズdot = 20;\r
-                       this.b選曲リストフォントを太字にする = true;\r
-                       this.n自動再生音量 = 80;\r
-                       this.n手動再生音量 = 100;\r
-                       this.bログ出力 = true;\r
-                       this.b演奏音を強調する = new STDGBVALUE<bool>();\r
-                       this.bSudden = new STDGBVALUE<bool>();\r
-                       this.bHidden = new STDGBVALUE<bool>();\r
-                       this.bReverse = new STDGBVALUE<bool>();\r
-                       this.eRandom = new STDGBVALUE<Eランダムモード>();\r
-                       this.bLight = new STDGBVALUE<bool>();\r
-                       this.bLeft = new STDGBVALUE<bool>();\r
-                       this.e判定位置 = new STDGBVALUE<E判定位置>();           // #33891 2014.6.26 yyagi\r
-                       this.判定文字表示位置 = new STDGBVALUE<E判定文字表示位置>();\r
-                       this.eドラムレーン表示位置 = new Eドラムレーン表示位置();\r
-                       this.n譜面スクロール速度 = new STDGBVALUE<int>();\r
-                       this.nInputAdjustTimeMs = new STDGBVALUE<int>();        // #23580 2011.1.3 yyagi\r
-                       this.nJudgeLinePosOffset = new STDGBVALUE<int>();       // #31602 2013.6.23 yyagi\r
-                       this.e判定表示優先度 = E判定表示優先度.Chipより下;\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
-                       {\r
-                               this.b演奏音を強調する[i] = true;\r
-                               this.bSudden[i] = false;\r
-                               this.bHidden[i] = false;\r
-                               this.bReverse[i] = false;\r
-                               this.eRandom[i] = Eランダムモード.OFF;\r
-                               this.bLight[i] = false;\r
-                               this.bLeft[i] = false;\r
-                               this.判定文字表示位置[i] = E判定文字表示位置.レーン上;\r
-                               this.n譜面スクロール速度[i] = 1;\r
-                               this.nInputAdjustTimeMs[i] = 0;\r
-                               this.nJudgeLinePosOffset[i] = 0;\r
-                               this.fJudgeLinePosOffsetBase[i] = 0.0f;\r
-                               this.eInvisible[i] = EInvisible.OFF;\r
-                               this.nViewerScrollSpeed[i] = 1;\r
-                               this.e判定位置[i] = E判定位置.標準;\r
-                               //this.e判定表示優先度[ i ] = E判定表示優先度.Chipより下;\r
-                       }\r
-\r
-                       this.n演奏速度 = 20;\r
-                       #region [ AutoPlay ]\r
-                       this.bAutoPlay = new STAUTOPLAY();\r
-                       this.bAutoPlay.HH = false;\r
-                       this.bAutoPlay.SD = false;\r
-                       this.bAutoPlay.BD = false;\r
-                       this.bAutoPlay.HT = false;\r
-                       this.bAutoPlay.LT = false;\r
-                       this.bAutoPlay.FT = false;\r
-                       this.bAutoPlay.CY = false;\r
-                       this.bAutoPlay.LC = false;\r
-                       //this.bAutoPlay.Guitar = true;\r
-                       //this.bAutoPlay.Bass = true;\r
-                       this.bAutoPlay.GtR = true;\r
-                       this.bAutoPlay.GtG = true;\r
-                       this.bAutoPlay.GtB = true;\r
-                       this.bAutoPlay.GtPick = true;\r
-                       this.bAutoPlay.GtW = true;\r
-                       this.bAutoPlay.BsR = true;\r
-                       this.bAutoPlay.BsG = true;\r
-                       this.bAutoPlay.BsB = true;\r
-                       this.bAutoPlay.BsPick = true;\r
-                       this.bAutoPlay.BsW = true;\r
-                       #endregion\r
-                       this.nヒット範囲ms = new STRANGE();\r
-                       this.nヒット範囲ms.Perfect = 34;\r
-                       this.nヒット範囲ms.Great = 67;\r
-                       this.nヒット範囲ms.Good = 84;\r
-                       this.nヒット範囲ms.Poor = 117;\r
-                       this.ConfigIniファイル名 = "";\r
-                       this.dicJoystick = new Dictionary<int, string>(10);\r
-                       this.tデフォルトのキーアサインに設定する();\r
-                       #region [ velocityMin ]\r
-                       this.nVelocityMin.LC = 0;                                       // #23857 2011.1.31 yyagi VelocityMin\r
-                       this.nVelocityMin.HH = 20;\r
-                       this.nVelocityMin.SD = 0;\r
-                       this.nVelocityMin.BD = 0;\r
-                       this.nVelocityMin.HT = 0;\r
-                       this.nVelocityMin.LT = 0;\r
-                       this.nVelocityMin.FT = 0;\r
-                       this.nVelocityMin.CY = 0;\r
-                       this.nVelocityMin.RD = 0;\r
-                       #endregion\r
-                       this.nRisky = 0;                                                        // #23539 2011.7.26 yyagi RISKYモード\r
-                       this.nShowLagType = (int)EShowLagType.OFF;      // #25370 2011.6.3 yyagi ズレ時間表示\r
-                       this.bIsAutoResultCapture = false;                      // #25399 2011.6.9 yyagi リザルト画像自動保存機能ON/OFF\r
-\r
-                       this.bバッファ入力を行う = true;\r
-                       this.bIsSwappedGuitarBass = false;                      // #24063 2011.1.16 yyagi ギターとベースの切り替え\r
-                       this.bIsAllowedDoubleClickFullscreen = true;    // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可\r
-                       this.eBDGroup = EBDGroup.打ち分ける;               // #27029 2012.1.4 from HHPedalとBassPedalのグルーピング\r
-                       this.nPoliphonicSounds = 4;                                     // #28228 2012.5.1 yyagi レーン毎の最大同時発音数\r
-                       // #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。\r
-                       // #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。\r
-                       this.bIsEnabledSystemMenu = true;                       // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可)\r
-                       this.strSystemSkinSubfolderFullName = "";       // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名\r
-                       this.bUseBoxDefSkin = true;                                     // #28195 2012.5.6 yyagi box.defによるスキン切替機能を使用するか否か\r
-                       this.bTight = false;                        // #29500 2012.9.11 kairera0467 TIGHTモード\r
-                       #region [ WASAPI/ASIO ]\r
-                       this.nSoundDeviceType = FDK.COS.bIsVistaOrLater ?\r
-                               (int)ESoundDeviceTypeForConfig.WASAPI : (int)ESoundDeviceTypeForConfig.ACM;     // #24820 2012.12.23 yyagi 初期値はACM | #31927 2013.8.25 yyagi OSにより初期値変更\r
-                       this.nWASAPIBufferSizeMs = 50;                          // #24820 2013.1.15 yyagi 初期値は50(0で自動設定)\r
-                       this.nASIODevice = 0;                                           // #24820 2013.1.17 yyagi\r
-                       //                      this.nASIOBufferSizeMs = 0;                                     // #24820 2012.12.25 yyagi 初期値は0(自動設定)\r
-                       #endregion\r
-\r
-                       this.bUseOSTimer = false; ;                                     // #33689 2014.6.6 yyagi 初期値はfalse (FDKのタイマー。FROM氏考案の独自タイマー)\r
-                       this.bDynamicBassMixerManagement = true;        //\r
-                       this.bTimeStretch = false;                                      // #23664 2013.2.24 yyagi 初期値はfalse (再生速度変更を、ピッチ変更にて行う)\r
-                       this.nChipDisplayTimeMs = 3000;                         // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップ再表示期間\r
-                       this.nChipFadeoutTimeMs = 2000;                                 // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップフェードアウト時間\r
-\r
-                       this.bViewerVSyncWait = true;\r
-                       this.bViewerShowDebugStatus = true;\r
-                       this.bViewerTimeStretch = false;\r
-                       this.bViewerDrums有効 = true;\r
-                       this.bViewerGuitar有効 = true;\r
-                       this.nViewer初期ウィンドウ開始位置X = 0;\r
-                       this.nViewer初期ウィンドウ開始位置Y = 0;\r
-                       this.nViewerウインドウwidth = 640;\r
-                       this.nViewerウインドウheight = 360;\r
-\r
-                       //this.bNoMP3Streaming = false;\r
-                       this.nMasterVolume = 100;                                       // #33700 2014.4.26 yyagi マスターボリュームの設定(WASAPI/ASIO用)\r
-                       this.b曲読み込みを高速化する = true;\r
-               }\r
-               public CConfigIni(string iniファイル名)\r
-                       : this()\r
-               {\r
-                       this.tファイルから読み込み(iniファイル名);\r
-               }\r
-\r
-\r
-               // メソッド\r
-\r
-               public void t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス DeviceType, int nID, int nCode)\r
-               {\r
-                       for (int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++)\r
-                       {\r
-                               for (int j = 0; j <= (int)EKeyConfigPad.Capture; j++)\r
-                               {\r
-                                       for (int k = 0; k < 0x10; k++)\r
-                                       {\r
-                                               if (((this.KeyAssign[i][j][k].入力デバイス == DeviceType) && (this.KeyAssign[i][j][k].ID == nID)) && (this.KeyAssign[i][j][k].コード == nCode))\r
-                                               {\r
-                                                       for (int m = k; m < 15; m++)\r
-                                                       {\r
-                                                               this.KeyAssign[i][j][m] = this.KeyAssign[i][j][m + 1];\r
-                                                       }\r
-                                                       this.KeyAssign[i][j][15].入力デバイス = E入力デバイス.不明;\r
-                                                       this.KeyAssign[i][j][15].ID = 0;\r
-                                                       this.KeyAssign[i][j][15].コード = 0;\r
-                                                       k--;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               public void t書き出し(string iniファイル名)\r
-               {\r
-                       StreamWriter sw = new StreamWriter(iniファイル名, false, Encoding.GetEncoding("utf-16"));\r
-                       sw.WriteLine(";-------------------");\r
-\r
-                       #region [ System ]\r
-                       sw.WriteLine("[System]");\r
-                       sw.WriteLine();\r
-\r
-#if false              // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
-       //------------------------------\r
-                       sw.WriteLine("; ライフゲージのパラメータ調整(調整完了後削除予定)");\r
-                       sw.WriteLine("; GaugeFactorD: ドラムのPerfect, Great,... の回復量(ライフMAXを1.0としたときの値を指定)");\r
-                       sw.WriteLine("; GaugeFactorG:  Gt/BsのPerfect, Great,... の回復量(ライフMAXを1.0としたときの値を指定)");\r
-                       sw.WriteLine("; DamageFactorD: DamageLevelがSmall, Normal, Largeの時に対するダメージ係数");\r
-                       sw.WriteLine("GaugeFactorD={0}, {1}, {2}, {3}, {4}", this.fGaugeFactor[0, 0], this.fGaugeFactor[1, 0], this.fGaugeFactor[2, 0], this.fGaugeFactor[3, 0], this.fGaugeFactor[4, 0]);\r
-                       sw.WriteLine("GaugeFactorG={0}, {1}, {2}, {3}, {4}", this.fGaugeFactor[0, 1], this.fGaugeFactor[1, 1], this.fGaugeFactor[2, 1], this.fGaugeFactor[3, 1], this.fGaugeFactor[4, 1]);\r
-                       sw.WriteLine("DamageFactor={0}, {1}, {2}", this.fDamageLevelFactor[0], this.fDamageLevelFactor[1], fDamageLevelFactor[2]);\r
-                       sw.WriteLine();\r
-       //------------------------------\r
-#endif\r
-                       #region [ Version ]\r
-                       sw.WriteLine("; リリースバージョン");\r
-                       sw.WriteLine("; Release Version.");\r
-                       sw.WriteLine("Version={0}", CDTXMania.VERSION);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ DTXPath ]\r
-                       sw.WriteLine("; 演奏データの格納されているフォルダへのパス。");\r
-                       sw.WriteLine(@"; セミコロン(;)で区切ることにより複数のパスを指定できます。(例: d:\DTXFiles1\;e:\DTXFiles2\)");\r
-                       sw.WriteLine("; Pathes for DTX data.");\r
-                       sw.WriteLine(@"; You can specify many pathes separated with semicolon(;). (e.g. d:\DTXFiles1\;e:\DTXFiles2\)");\r
-                       sw.WriteLine("DTXPath={0}", this.str曲データ検索パス);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ スキン関連 ]\r
-                       #region [ Skinパスの絶対パス→相対パス変換 ]\r
-                       Uri uriRoot = new Uri(System.IO.Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "System" + System.IO.Path.DirectorySeparatorChar));\r
-                       if (strSystemSkinSubfolderFullName != null && strSystemSkinSubfolderFullName.Length == 0)\r
-                       {\r
-                               // Config.iniが空の状態でDTXManiaをViewerとして起動・終了すると、strSystemSkinSubfolderFullName が空の状態でここに来る。\r
-                               // → 初期値として Default/ を設定する。\r
-                               strSystemSkinSubfolderFullName = System.IO.Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "System" + System.IO.Path.DirectorySeparatorChar + "Default" + System.IO.Path.DirectorySeparatorChar);\r
-                       }\r
-                       Uri uriPath = new Uri(System.IO.Path.Combine(this.strSystemSkinSubfolderFullName, "." + System.IO.Path.DirectorySeparatorChar));\r
-                       string relPath = uriRoot.MakeRelativeUri(uriPath).ToString();                           // 相対パスを取得\r
-                       relPath = System.Web.HttpUtility.UrlDecode(relPath);                                            // デコードする\r
-                       relPath = relPath.Replace('/', System.IO.Path.DirectorySeparatorChar);  // 区切り文字が\ではなく/なので置換する\r
-                       #endregion\r
-                       sw.WriteLine("; 使用するSkinのフォルダ名。");\r
-                       sw.WriteLine("; 例えば System\\Default\\Graphics\\... などの場合は、SkinPath=.\\Default\\ を指定します。");\r
-                       sw.WriteLine("; Skin folder path.");\r
-                       sw.WriteLine("; e.g. System\\Default\\Graphics\\... -> Set SkinPath=.\\Default\\");\r
-                       sw.WriteLine("SkinPath={0}", relPath);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; box.defが指定するSkinに自動で切り替えるかどうか (0=切り替えない、1=切り替える)");\r
-                       sw.WriteLine("; Automatically change skin specified in box.def. (0=No 1=Yes)");\r
-                       sw.WriteLine("SkinChangeByBoxDef={0}", this.bUseBoxDefSkin ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ Window関連 ]\r
-                       sw.WriteLine("; 画面モード(0:ウィンドウ, 1:全画面)");\r
-                       sw.WriteLine("; Screen mode. (0:Window, 1:Fullscreen)");\r
-                       sw.WriteLine("FullScreen={0}", this.b全画面モード ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ウインドウモード時の画面幅");                              // #23510 2010.10.31 yyagi add\r
-                       sw.WriteLine("; A width size in the window mode.");                     //\r
-                       sw.WriteLine("WindowWidth={0}", this.nウインドウwidth);            //\r
-                       sw.WriteLine();                                                                                         //\r
-                       sw.WriteLine("; ウインドウモード時の画面高さ");                           //\r
-                       sw.WriteLine("; A height size in the window mode.");            //\r
-                       sw.WriteLine("WindowHeight={0}", this.nウインドウheight);  //\r
-                       sw.WriteLine();                                                                                         //\r
-                       sw.WriteLine("; ウィンドウモード時の位置X");                                            // #30675 2013.02.04 ikanick add\r
-                       sw.WriteLine("; X position in the window mode.");                                   //\r
-                       sw.WriteLine("WindowX={0}", this.n初期ウィンドウ開始位置X);                  //\r
-                       sw.WriteLine();                                                                                                 //\r
-                       sw.WriteLine("; ウィンドウモード時の位置Y");                                        //\r
-                       sw.WriteLine("; Y position in the window mode.");                           //\r
-                       sw.WriteLine("WindowY={0}", this.n初期ウィンドウ開始位置Y);                  //\r
-                       sw.WriteLine();                                                                                                     //\r
-\r
-                       sw.WriteLine("; ウインドウをダブルクリックした時にフルスクリーンに移行するか(0:移行しない,1:移行する)"); // #26752 2011.11.27 yyagi\r
-                       sw.WriteLine("; Whether double click to go full screen mode or not.(0:No, 1:Yes)");             //\r
-                       sw.WriteLine("DoubleClickFullScreen={0}", this.bIsAllowedDoubleClickFullscreen ? 1 : 0);        //\r
-                       sw.WriteLine();                                                                                                                                                         //\r
-                       sw.WriteLine("; ALT+SPACEのメニュー表示を抑制するかどうか(0:抑制する 1:抑制しない)");          // #28200 2012.5.1 yyagi\r
-                       sw.WriteLine("; Whether ALT+SPACE menu would be masked or not.(0=masked 1=not masked)");        //\r
-                       sw.WriteLine("EnableSystemMenu={0}", this.bIsEnabledSystemMenu ? 1 : 0);                                        //\r
-                       sw.WriteLine();                                                                                                                                                         //\r
-                       sw.WriteLine("; 非フォーカス時のsleep値[ms]");                             // #23568 2011.11.04 ikanick add\r
-                       sw.WriteLine("; A sleep time[ms] while the window is inactive.");       //\r
-                       sw.WriteLine("BackSleep={0}", this.n非フォーカス時スリープms);               // そのまま引用(苦笑)\r
-                       sw.WriteLine();                                                                                                                 //\r
-                       #endregion\r
-                       #region [ フレーム処理関連(VSync, フレーム毎のsleep) ]\r
-                       sw.WriteLine("; 垂直帰線同期(0:OFF,1:ON)");\r
-                       sw.WriteLine("VSyncWait={0}", this.b垂直帰線待ちを行う ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; フレーム毎のsleep値[ms] (-1でスリープ無し, 0以上で毎フレームスリープ。動画キャプチャ等で活用下さい)"); // #xxxxx 2011.11.27 yyagi add\r
-                       sw.WriteLine("; A sleep time[ms] per frame.");                                                  //\r
-                       sw.WriteLine("SleepTimePerFrame={0}", this.nフレーム毎スリープms);             //\r
-                       sw.WriteLine();                                                                                                                 //\r
-                       #endregion\r
-                       #region [ WASAPI/ASIO関連 ]\r
-                       sw.WriteLine("; サウンド出力方式(0=ACM(って今はまだDirectSoundですが), 1=ASIO, 2=WASAPI)");\r
-                       sw.WriteLine("; WASAPIはVista以降のOSで使用可能。推奨方式はWASAPI。");\r
-                       sw.WriteLine("; なお、WASAPIが使用不可ならASIOを、ASIOが使用不可ならACMを使用します。");\r
-                       sw.WriteLine("; Sound device type(0=ACM, 1=ASIO, 2=WASAPI)");\r
-                       sw.WriteLine("; WASAPI can use on Vista or later OSs.");\r
-                       sw.WriteLine("; If WASAPI is not available, DTXMania try to use ASIO. If ASIO can't be used, ACM is used.");\r
-                       sw.WriteLine("SoundDeviceType={0}", (int)this.nSoundDeviceType);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; WASAPI使用時のサウンドバッファサイズ");\r
-                       sw.WriteLine("; (0=デバイスに設定可能な最小値を自動設定, 1~9999=バッファサイズ(単位:ms)の手動指定");\r
-                       sw.WriteLine("; WASAPI Sound Buffer Size.");\r
-                       sw.WriteLine("; (0=set minimum buffer size automaticcaly, 1-9999=specify the buffer size(ms) by yourself)");\r
-                       sw.WriteLine("WASAPIBufferSizeMs={0}", (int)this.nWASAPIBufferSizeMs);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; ASIO使用時のサウンドデバイス");\r
-                       sw.WriteLine("; 存在しないデバイスを指定すると、DTXManiaが起動しないことがあります。");\r
-                       sw.WriteLine("; Sound device used by ASIO.");\r
-                       sw.WriteLine("; Don't specify unconnected device, as the DTXMania may not bootup.");\r
-                       string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();\r
-                       for (int i = 0; i < asiodev.Length; i++)\r
-                       {\r
-                               sw.WriteLine("; {0}: {1}", i, asiodev[i]);\r
-                       }\r
-                       sw.WriteLine("ASIODevice={0}", (int)this.nASIODevice);\r
-                       sw.WriteLine();\r
-\r
-                       //sw.WriteLine( "; ASIO使用時のサウンドバッファサイズ" );\r
-                       //sw.WriteLine( "; (0=デバイスに設定されている値を使用, 1~9999=バッファサイズ(単位:ms)の手動指定" );\r
-                       //sw.WriteLine( "; ASIO Sound Buffer Size." );\r
-                       //sw.WriteLine( "; (0=Use the value specified to the device, 1-9999=specify the buffer size(ms) by yourself)" );\r
-                       //sw.WriteLine( "ASIOBufferSizeMs={0}", (int) this.nASIOBufferSizeMs );\r
-                       //sw.WriteLine();\r
-\r
-                       //sw.WriteLine( "; Bass.Mixの制御を動的に行うか否か。" );\r
-                       //sw.WriteLine( "; ONにすると、ギター曲などチップ音の多い曲も再生できますが、画面が少しがたつきます。" );\r
-                       //sw.WriteLine( "; (0=行わない, 1=行う)" );\r
-                       //sw.WriteLine( "DynamicBassMixerManagement={0}", this.bDynamicBassMixerManagement ? 1 : 0 );\r
-                       //sw.WriteLine();\r
-\r
-                       sw.WriteLine("; WASAPI/ASIO時に使用する演奏タイマーの種類");\r
-                       sw.WriteLine("; Playback timer used for WASAPI/ASIO");\r
-                       sw.WriteLine("; (0=FDK Timer, 1=System Timer)");\r
-                       sw.WriteLine("SoundTimerType={0}", this.bUseOSTimer ? 1 : 0);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; 全体ボリュームの設定");\r
-                       sw.WriteLine("; (0=無音 ~ 100=最大。WASAPI/ASIO時のみ有効)");\r
-                       sw.WriteLine("; Master volume settings");\r
-                       sw.WriteLine("; (0=Silent - 100=Max)");\r
-                       sw.WriteLine("MasterVolume={0}", this.nMasterVolume);\r
-                       sw.WriteLine();\r
-\r
-                       #endregion\r
-                       #region [ ギター/ベース/ドラム 有効/無効 ]\r
-                       sw.WriteLine("; ギター/ベース有効(0:OFF,1:ON)");\r
-                       sw.WriteLine("; Enable Guitar/Bass or not.(0:OFF,1:ON)");\r
-                       sw.WriteLine("Guitar={0}", this.bGuitar有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ドラム有効(0:OFF,1:ON)");\r
-                       sw.WriteLine("; Enable Drums or not.(0:OFF,1:ON)");\r
-                       sw.WriteLine("Drums={0}", this.bDrums有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; 背景画像の半透明割合(0:不透明~255:透明)");\r
-                       sw.WriteLine("; Transparency for background image in playing screen.(0:no tranaparent - 255:transparent)");\r
-                       sw.WriteLine("BGAlpha={0}", this.nBGAlpha);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Missヒット時のゲージ減少割合(0:少, 1:普通, 2:大)");\r
-                       sw.WriteLine("DamageLevel={0}", (int)this.eダメージレベル);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ゲージゼロでSTAGE FAILED (0:OFF, 1:ON)");\r
-                       sw.WriteLine("StageFailed={0}", this.bSTAGEFAILED有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #region [ 打ち分け関連 ]\r
-                       sw.WriteLine("; LC/HHC/HHO 打ち分けモード (0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC|(HHC&HHO), 3:LC&HHC&HHO)");\r
-                       sw.WriteLine("; LC/HHC/HHO Grouping       (0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC|(HHC&HHO), 3:LC&HHC&HHO)");\r
-                       sw.WriteLine("HHGroup={0}", (int)this.eHHGroup);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; LT/FT 打ち分けモード (0:LT|FT, 1:LT&FT)");\r
-                       sw.WriteLine("; LT/FT Grouping       (0:LT|FT, 1:LT&FT)");\r
-                       sw.WriteLine("FTGroup={0}", (int)this.eFTGroup);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; CY/RD 打ち分けモード (0:CY|RD, 1:CY&RD)");\r
-                       sw.WriteLine("; CY/RD Grouping       (0:CY|RD, 1:CY&RD)");\r
-                       sw.WriteLine("CYGroup={0}", (int)this.eCYGroup);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; HP/BD 打ち分けモード (0:HP|BD, 1:HP&BD)");       // #27029 2012.1.4 from\r
-                       sw.WriteLine("; HP/BD Grouping (0:HP|BD, 1:HP&BD)");                    //\r
-                       sw.WriteLine("BDGroup={0}", (int)this.eBDGroup);                                // \r
-                       sw.WriteLine();                                                                                                 //\r
-                       sw.WriteLine("; 打ち分け時の再生音の優先順位(HHGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("; Grouping sound priority(HHGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("HitSoundPriorityHH={0}", (int)this.eHitSoundPriorityHH);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 打ち分け時の再生音の優先順位(FTGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("; Grouping sound priority(FTGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("HitSoundPriorityFT={0}", (int)this.eHitSoundPriorityFT);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 打ち分け時の再生音の優先順位(CYGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("; Grouping sound priority(CYGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                       sw.WriteLine("HitSoundPriorityCY={0}", (int)this.eHitSoundPriorityCY);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; シンバルフリーモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Grouping CY and LC (0:OFF, 1:ON)");\r
-                       sw.WriteLine("CymbalFree={0}", this.bシンバルフリー ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ AVI/BGA ]\r
-                       sw.WriteLine("; AVIの表示(0:OFF, 1:ON)");\r
-                       sw.WriteLine("AVI={0}", this.bAVI有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 旧サイズのAVI表示を強制的に全画面化する(0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Forcely show BGA-sized movie as Fullscreen.");\r
-                       sw.WriteLine("ForceAVIFullscreen={0}", this.bForceAVIFullscreen ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; BGAの表示(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BGA={0}", this.bBGA有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ フィルイン ]\r
-                       sw.WriteLine("; フィルイン効果(0:OFF, 1:ON)");\r
-                       sw.WriteLine("FillInEffect={0}", this.bフィルイン有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; フィルイン達成時の歓声の再生(0:OFF, 1:ON)");\r
-                       sw.WriteLine("AudienceSound={0}", this.b歓声を発声する ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ プレビュー音 ]\r
-                       sw.WriteLine("; 曲選択からプレビュー音の再生までのウェイト[ms]");\r
-                       sw.WriteLine("PreviewSoundWait={0}", this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 曲選択からプレビュー画像表示までのウェイト[ms]");\r
-                       sw.WriteLine("PreviewImageWait={0}", this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; Waveの再生位置自動補正(0:OFF, 1:ON)");\r
-                       sw.WriteLine("AdjustWaves={0}", this.bWave再生位置自動調整機能有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #region [ BGM/ドラムヒット音の再生 ]\r
-                       sw.WriteLine("; BGM の再生(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BGMSound={0}", this.bBGM音を発声する ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ドラム打音の再生(0:OFF, 1:ON)");\r
-                       sw.WriteLine("HitSound={0}", this.bドラム打音を発声する ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; 演奏記録(~.score.ini)の出力 (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SaveScoreIni={0}", this.bScoreIniを出力する ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; RANDOM SELECT で子BOXを検索対象に含める (0:OFF, 1:ON)");\r
-                       sw.WriteLine("RandomFromSubBox={0}", this.bランダムセレクトで子BOXを検索対象とする ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #region [ モニターサウンド(ヒット音の再生音量アップ) ]\r
-                       sw.WriteLine("; ドラム演奏時にドラム音を強調する (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SoundMonitorDrums={0}", this.b演奏音を強調する.Drums ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギター演奏時にギター音を強調する (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SoundMonitorGuitar={0}", this.b演奏音を強調する.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベース演奏時にベース音を強調する (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SoundMonitorBass={0}", this.b演奏音を強調する.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ コンボ表示数 ]\r
-                       sw.WriteLine("; ドラムの表示可能な最小コンボ数(1~99999)");\r
-                       sw.WriteLine("MinComboDrums={0}", this.n表示可能な最小コンボ数.Drums);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターの表示可能な最小コンボ数(1~99999)");\r
-                       sw.WriteLine("MinComboGuitar={0}", this.n表示可能な最小コンボ数.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースの表示可能な最小コンボ数(1~99999)");\r
-                       sw.WriteLine("MinComboBass={0}", this.n表示可能な最小コンボ数.Bass);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; 演奏情報を表示する (0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Showing playing info on the playing screen. (0:OFF, 1:ON)");\r
-                       sw.WriteLine("ShowDebugStatus={0}", this.b演奏情報を表示する ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #region [ 選曲リストのフォント ]\r
-                       sw.WriteLine("; 選曲リストのフォント名");\r
-                       sw.WriteLine("; Font name for select song item.");\r
-                       sw.WriteLine("SelectListFontName={0}", this.str選曲リストフォント);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 選曲リストのフォントのサイズ[dot]");\r
-                       sw.WriteLine("; Font size[dot] for select song item.");\r
-                       sw.WriteLine("SelectListFontSize={0}", this.n選曲リストフォントのサイズdot);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 選曲リストのフォントを斜体にする (0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Using italic font style select song list. (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SelectListFontItalic={0}", this.b選曲リストフォントを斜体にする ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 選曲リストのフォントを太字にする (0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Using bold font style select song list. (0:OFF, 1:ON)");\r
-                       sw.WriteLine("SelectListFontBold={0}", this.b選曲リストフォントを太字にする ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; 打音の音量(0~100%)");\r
-                       sw.WriteLine("; Sound volume (you're playing) (0-100%)");\r
-                       sw.WriteLine("ChipVolume={0}", this.n手動再生音量);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 自動再生音の音量(0~100%)");\r
-                       sw.WriteLine("; Sound volume (auto playing) (0-100%)");\r
-                       sw.WriteLine("AutoChipVolume={0}", this.n自動再生音量);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ストイックモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Stoic mode. (0:OFF, 1:ON)");\r
-                       sw.WriteLine("StoicMode={0}", this.bストイックモード ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; バッファ入力モード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("; Using Buffered input (0:OFF, 1:ON)");\r
-                       sw.WriteLine("BufferedInput={0}", this.bバッファ入力を行う ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; レーン毎の最大同時発音数(1~8)");\r
-                       sw.WriteLine("; Number of polyphonic sounds per lane. (1-8)");\r
-                       sw.WriteLine("PolyphonicSounds={0}", this.nPoliphonicSounds);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 判定ズレ時間表示(0:OFF, 1:ON, 2=GREAT-POOR)");                          // #25370 2011.6.3 yyagi\r
-                       sw.WriteLine("; Whether displaying the lag times from the just timing or not.");        //\r
-                       sw.WriteLine("ShowLagTime={0}", this.nShowLagType);                                                     //\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 判定・コンボ表示優先度(0:チップの下, 1:チップの上)");\r
-                       sw.WriteLine("; judgement/combo display priority (0:under chips, 1:over chips)");\r
-                       sw.WriteLine("JudgeDispPriority={0}", (int)this.e判定表示優先度);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; ドラムのレーン表示位置(0:左側, 1:中央)"); // #2\r
-                       sw.WriteLine("; drums lane position (0:LEFT, 1:CENTER)");\r
-                       sw.WriteLine("DrumsLanePosition={0}", (int)this.eドラムレーン表示位置);\r
-                       sw.WriteLine();\r
-\r
-\r
-                       sw.WriteLine("; リザルト画像自動保存機能(0:OFF, 1:ON)");                                            // #25399 2011.6.9 yyagi\r
-                       sw.WriteLine("; Set \"1\" if you'd like to save result screen image automatically");    //\r
-                       sw.WriteLine("; when you get hiscore/hiskill.");                                                                //\r
-                       sw.WriteLine("AutoResultCapture={0}", this.bIsAutoResultCapture ? 1 : 0);               //\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 再生速度変更を、ピッチ変更で行うかどうか(0:ピッチ変更, 1:タイムストレッチ");   // #23664 2013.2.24 yyagi\r
-                       sw.WriteLine("; (WASAPI/ASIO使用時のみ有効) ");\r
-                       sw.WriteLine("; Set \"0\" if you'd like to use pitch shift with PlaySpeed.");   //\r
-                       sw.WriteLine("; Set \"1\" for time stretch.");                                                          //\r
-                       sw.WriteLine("; (Only available when you're using using WASAPI or ASIO)");      //\r
-                       sw.WriteLine("TimeStretch={0}", this.bTimeStretch ? 1 : 0);                                     //\r
-                       sw.WriteLine();\r
-                       //sw.WriteLine( "; WASAPI/ASIO使用時に、MP3をストリーム再生するかどうか(0:ストリーム再生する, 1:しない)" );                      //\r
-                       //sw.WriteLine( "; (mp3のシークがおかしくなる場合は、これを1にしてください) " );       //\r
-                       //sw.WriteLine( "; Set \"0\" if you'd like to use mp3 streaming playback on WASAPI/ASIO." );            //\r
-                       //sw.WriteLine( "; Set \"1\" not to use streaming playback for mp3." );                 //\r
-                       //sw.WriteLine( "; (If you feel illegal seek with mp3, please set it to 1.)" ); //\r
-                       //sw.WriteLine( "NoMP3Streaming={0}", this.bNoMP3Streaming ? 1 : 0 );                           //\r
-                       //sw.WriteLine();\r
-                       #region [ Adjust ]\r
-                       sw.WriteLine("; 判定タイミング調整(ドラム, ギター, ベース)(-99~99)[ms]");           // #23580 2011.1.3 yyagi\r
-                       sw.WriteLine("; Revision value to adjust judgement timing for the drums, guitar and bass.");    //\r
-                       sw.WriteLine("InputAdjustTimeDrums={0}", this.nInputAdjustTimeMs.Drums);                //\r
-                       sw.WriteLine("InputAdjustTimeGuitar={0}", this.nInputAdjustTimeMs.Guitar);              //\r
-                       sw.WriteLine("InputAdjustTimeBass={0}", this.nInputAdjustTimeMs.Bass);                  //\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; 判定ラインの表示位置調整(x0.5相当;ドラム, ギター, ベース)[px]"); // #31602 2013.6.23 yyagi 判定ラインの表示位置オフセット\r
-                       sw.WriteLine("; Offset value to adjust displaying judgement line for the drums, guitar and bass.");     //\r
-                       sw.WriteLine("JudgeLinePosOffsetDrums={0}", (float)(this.nJudgeLinePosOffset.Drums / (this.n譜面スクロール速度.Drums + 1)));   //\r
-                       sw.WriteLine("JudgeLinePosOffsetGuitar={0}", (float)(this.nJudgeLinePosOffset.Guitar / (this.n譜面スクロール速度.Guitar + 1)));        //\r
-                       sw.WriteLine("JudgeLinePosOffsetBass={0}", (float)(this.nJudgeLinePosOffset.Bass / (this.n譜面スクロール速度.Bass + 1)));      //\r
-\r
-                       sw.WriteLine("; 判定ラインの表示位置(ギター, ベース)"); // #33891 2014.6.26 yyagi\r
-                       sw.WriteLine("; 0=Normal, 1=Lower");\r
-                       sw.WriteLine("; Position of the Judgement line and RGB button; Vseries compatible(1) or not(0).");      //\r
-                       sw.WriteLine("JudgeLinePosModeGuitar={0}", (int)this.e判定位置.Guitar);     //\r
-                       sw.WriteLine("JudgeLinePosModeBass={0}  ", (int)this.e判定位置.Bass);       //\r
-\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ VelocityMin ]\r
-                       sw.WriteLine("; LC, HH, SD,...の入力切り捨て下限Velocity値(0~127)");                        // #23857 2011.1.31 yyagi\r
-                       sw.WriteLine("; Minimum velocity value for LC, HH, SD, ... to accept.");                //\r
-                       sw.WriteLine("LCVelocityMin={0}", this.nVelocityMin.LC);                                                //\r
-                       sw.WriteLine("HHVelocityMin={0}", this.nVelocityMin.HH);                                                //\r
-                       //                      sw.WriteLine("; ハイハット以外の入力切り捨て下限Velocity値(0~127)");                 // #23857 2010.12.12 yyagi\r
-                       //                      sw.WriteLine("; Minimum velocity value to accept. (except HiHat)");                             //\r
-                       //                      sw.WriteLine("VelocityMin={0}", this.n切り捨て下限Velocity);                                      //\r
-                       //                      sw.WriteLine();                                                                                                                                 //\r
-                       sw.WriteLine("SDVelocityMin={0}", this.nVelocityMin.SD);                                                //\r
-                       sw.WriteLine("BDVelocityMin={0}", this.nVelocityMin.BD);                                                //\r
-                       sw.WriteLine("HTVelocityMin={0}", this.nVelocityMin.HT);                                                //\r
-                       sw.WriteLine("LTVelocityMin={0}", this.nVelocityMin.LT);                                                //\r
-                       sw.WriteLine("FTVelocityMin={0}", this.nVelocityMin.FT);                                                //\r
-                       sw.WriteLine("CYVelocityMin={0}", this.nVelocityMin.CY);                                                //\r
-                       sw.WriteLine("RDVelocityMin={0}", this.nVelocityMin.RD);                                                //\r
-                       sw.WriteLine();                                                                                                                                 //\r
-                       #endregion\r
-\r
-                       sw.WriteLine("; 曲の読み込み速度を変更(0:低速, 1:高速)"); // #36046 2016.2.21 add ikanick\r
-                       sw.WriteLine("; Load sounds speed (0:Low, 1:High)");\r
-                       sw.WriteLine("Loadsoundspeed={0}", this.b曲読み込みを高速化する ? 1 : 0);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-                       #region [ Log ]\r
-                       sw.WriteLine("[Log]");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Log出力(0:OFF, 1:ON)");\r
-                       sw.WriteLine("OutputLog={0}", this.bログ出力 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 曲データ検索に関するLog出力(0:OFF, 1:ON)");\r
-                       sw.WriteLine("TraceSongSearch={0}", this.bLog曲検索ログ出力 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 画像やサウンドの作成・解放に関するLog出力(0:OFF, 1:ON)");\r
-                       sw.WriteLine("TraceCreatedDisposed={0}", this.bLog作成解放ログ出力 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; DTX読み込み詳細に関するLog出力(0:OFF, 1:ON)");\r
-                       sw.WriteLine("TraceDTXDetails={0}", this.bLogDTX詳細ログ出力 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-\r
-                       #region [ PlayOption ]\r
-                       sw.WriteLine("[PlayOption]");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; DARKモード(0:OFF, 1:HALF, 2:FULL)");\r
-                       sw.WriteLine("Dark={0}", (int)this.eDark);\r
-                       sw.WriteLine();\r
-                       #region [ SUDDEN ]\r
-                       sw.WriteLine("; ドラムSUDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("DrumsSudden={0}", this.bSudden.Drums ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターSUDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("GuitarSudden={0}", this.bSudden.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースSUDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BassSudden={0}", this.bSudden.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ HIDDEN ]\r
-                       sw.WriteLine("; ドラムHIDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("DrumsHidden={0}", this.bHidden.Drums ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターHIDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("GuitarHidden={0}", this.bHidden.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースHIDDENモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BassHidden={0}", this.bHidden.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ Invisible ]\r
-                       sw.WriteLine("; ドラムチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)");\r
-                       sw.WriteLine("; Drums chip invisible mode");\r
-                       sw.WriteLine("DrumsInvisible={0}", (int)this.eInvisible.Drums);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)");\r
-                       sw.WriteLine("; Guitar chip invisible mode");\r
-                       sw.WriteLine("GuitarInvisible={0}", (int)this.eInvisible.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)");\r
-                       sw.WriteLine("; Bbass chip invisible mode");\r
-                       sw.WriteLine("BassInvisible={0}", (int)this.eInvisible.Bass);\r
-                       sw.WriteLine();\r
-                       //sw.WriteLine( "; Semi-InvisibleでMissった時のチップ再表示時間(ms)" );\r
-                       //sw.WriteLine( "InvisibleDisplayTimeMs={0}", (int) this.nDisplayTimesMs );\r
-                       //sw.WriteLine();\r
-                       //sw.WriteLine( "; Semi-InvisibleでMissってチップ再表示時間終了後のフェードアウト時間(ms)" );\r
-                       //sw.WriteLine( "InvisibleFadeoutTimeMs={0}", (int) this.nFadeoutTimeMs );\r
-                       //sw.WriteLine();\r
-                       #endregion\r
-                       sw.WriteLine("; ドラムREVERSEモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("DrumsReverse={0}", this.bReverse.Drums ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターREVERSEモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("GuitarReverse={0}", this.bReverse.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースREVERSEモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BassReverse={0}", this.bReverse.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)");\r
-                       sw.WriteLine("GuitarRandom={0}", (int)this.eRandom.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)");\r
-                       sw.WriteLine("BassRandom={0}", (int)this.eRandom.Bass);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターLIGHTモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("GuitarLight={0}", this.bLight.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースLIGHTモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BassLight={0}", this.bLight.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギターLEFTモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("GuitarLeft={0}", this.bLeft.Guitar ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベースLEFTモード(0:OFF, 1:ON)");\r
-                       sw.WriteLine("BassLeft={0}", this.bLeft.Bass ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; RISKYモード(0:OFF, 1-10)");                                                                  // #23559 2011.6.23 yyagi\r
-                       sw.WriteLine("; RISKY mode. 0=OFF, 1-10 is the times of misses to be Failed."); //\r
-                       sw.WriteLine("Risky={0}", this.nRisky);                 //\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; TIGHTモード(0:OFF, 1:ON)");                                                                  // #29500 2012.9.11 kairera0467\r
-                       sw.WriteLine("; TIGHT mode. 0=OFF, 1=ON ");\r
-                       sw.WriteLine("DrumsTight={0}", this.bTight ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ドラム判定文字表示位置(0:表示OFF, 1:レーン上, 2:判定ライン上)");\r
-                       sw.WriteLine("; Drums Judgement display position (0:OFF, 1:on the lane, 2:over the judge line)");\r
-                       sw.WriteLine("DrumsPosition={0}", (int)this.判定文字表示位置.Drums);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギター判定文字表示位置(0:表示IFF, 1:レーン上, 2:判定ライン上, 3:コンボ下)");\r
-                       sw.WriteLine("; Guitar Judgement display position (0:OFF, 1:on the lane, 2:over the judge line, 3:under combo)");\r
-                       sw.WriteLine("GuitarPosition={0}", (int)this.判定文字表示位置.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベース判定文字表示位置(0:表示OFF, 1:レーン上, 2:判定ライン上, 3:コンボ下)");\r
-                       sw.WriteLine("; Bass Judgement display position (0:OFF, 1:on the lane, 2:over the judge line, 3:under combo)");\r
-                       sw.WriteLine("BassPosition={0}", (int)this.判定文字表示位置.Bass);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ドラム譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("DrumsScrollSpeed={0}", this.n譜面スクロール速度.Drums);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ギター譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("GuitarScrollSpeed={0}", this.n譜面スクロール速度.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ベース譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("BassScrollSpeed={0}", this.n譜面スクロール速度.Bass);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 演奏速度(5~40)(→x5/20~x40/20)");\r
-                       sw.WriteLine("PlaySpeed={0}", this.n演奏速度);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ドラムCOMBO文字表示位置(0:左, 1:中, 2:右, 3:OFF)");\r
-                       sw.WriteLine("ComboPosition={0}", (int)this.ドラムコンボ文字の表示位置);\r
-                       sw.WriteLine();\r
-                       //sw.WriteLine( "; 判定・コンボ表示優先度(0:チップの下, 1:チップの上)" );\r
-                       //sw.WriteLine( "JudgeDispPriorityDrums={0}" , (int) this.e判定表示優先度.Drums );\r
-                       //sw.WriteLine( "JudgeDispPriorityGuitar={0}", (int) this.e判定表示優先度.Guitar );\r
-                       //sw.WriteLine( "JudgeDispPriorityBass={0}"  , (int) this.e判定表示優先度.Bass );\r
-                       //sw.WriteLine();\r
-\r
-                       // #24074 2011.01.23 add ikanick\r
-                       sw.WriteLine("; ドラムグラフ表示(0:OFF, 1:ON)");\r
-                       sw.WriteLine("Graph={0}", this.bGraph ? 1 : 0);\r
-                       sw.WriteLine();\r
-\r
-                       // #35411 2015.8.18 chnmr0 add\r
-                       sw.WriteLine("; AUTOゴースト種別 (0:PERFECT, 1:LAST_PLAY, 2:HI_SKILL, 3:HI_SCORE, 4:ONLINE)");\r
-                       sw.WriteLine("DrumAutoGhost={0}", (int)eAutoGhost.Drums);\r
-                       sw.WriteLine("GuitarAutoGhost={0}", (int)eAutoGhost.Guitar);\r
-                       sw.WriteLine("BassAutoGhost={0}", (int)eAutoGhost.Bass);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; ターゲットゴースト種別 (0:NONE, 1:PERFECT, 2:LAST_PLAY, 3:HI_SKILL, 4:HI_SCORE, 5:ONLINE)");\r
-                       sw.WriteLine("DrumTargetGhost={0}", (int)eTargetGhost.Drums);\r
-                       sw.WriteLine("GuitarTargetGhost={0}", (int)eTargetGhost.Guitar);\r
-                       sw.WriteLine("BassTargetGhost={0}", (int)eTargetGhost.Bass);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-\r
-                       #region [ ViewerOption ]\r
-                       sw.WriteLine("[ViewerOption]");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 ドラム譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("; for viewer mode; Drums Scroll Speed");\r
-                       sw.WriteLine("ViewerDrumsScrollSpeed={0}", this.nViewerScrollSpeed.Drums);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 ギター譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("; for viewer mode; Guitar Scroll Speed");\r
-                       sw.WriteLine("ViewerGuitarScrollSpeed={0}", this.nViewerScrollSpeed.Guitar);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 ベース譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
-                       sw.WriteLine("; for viewer mode; Bass Scroll Speed");\r
-                       sw.WriteLine("ViewerBassScrollSpeed={0}", this.nViewerScrollSpeed.Bass);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 垂直帰線同期(0:OFF,1:ON)");\r
-                       sw.WriteLine("; for viewer mode; Use whether Vertical Sync or not.");\r
-                       sw.WriteLine("ViewerVSyncWait={0}", this.bViewerVSyncWait ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 演奏情報を表示する (0:OFF, 1:ON) ");\r
-                       sw.WriteLine("; for viewer mode;");\r
-                       sw.WriteLine("; Showing playing info on the playing screen. (0:OFF, 1:ON) ");\r
-                       sw.WriteLine("ViewerShowDebugStatus={0}", this.bViewerShowDebugStatus ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 再生速度変更を、ピッチ変更で行うかどうか(0:ピッチ変更, 1:タイムストレッチ ");\r
-                       sw.WriteLine("; (WASAPI/ASIO使用時のみ有効)  ");\r
-                       sw.WriteLine("; for viewer mode;");\r
-                       sw.WriteLine("; Set \"0\" if you'd like to use pitch shift with PlaySpeed. ");\r
-                       sw.WriteLine("; Set \"1\" for time stretch. ");\r
-                       sw.WriteLine("; (Only available when you're using using WASAPI or ASIO) ");\r
-                       sw.WriteLine("ViewerTimeStretch={0}", this.bViewerTimeStretch ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 ギター/ベース有効(0:OFF,1:ON) ");\r
-                       sw.WriteLine("; for viewer mode;");\r
-                       sw.WriteLine("; Enable Guitar/Bass or not.(0:OFF,1:ON) ");\r
-                       sw.WriteLine("ViewerGuitar={0}", this.bViewerGuitar有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード時専用 ドラム有効(0:OFF,1:ON) ");\r
-                       sw.WriteLine("; for viewer mode;");\r
-                       sw.WriteLine("; Enable Drums or not.(0:OFF,1:ON) ");\r
-                       sw.WriteLine("ViewerDrums={0}", this.bViewerDrums有効 ? 1 : 0);\r
-                       sw.WriteLine();\r
-\r
-                       sw.WriteLine("; Viewerモード専用 ウインドウモード時の画面幅");\r
-                       sw.WriteLine("; A width size in the window mode, for viewer mode.");\r
-                       sw.WriteLine("ViewerWindowWidth={0}", this.nViewerウインドウwidth);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード専用 ウインドウモード時の画面高さ");\r
-                       sw.WriteLine("; A height size in the window mode, for viewer mode.");\r
-                       sw.WriteLine("ViewerWindowHeight={0}", this.nViewerウインドウheight);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード専用 ウィンドウモード時の位置X");\r
-                       sw.WriteLine("; X position in the window mode, for viewer mode.");\r
-                       sw.WriteLine("ViewerWindowX={0}", this.nViewer初期ウィンドウ開始位置X);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Viewerモード専用 ウィンドウモード時の位置Y");\r
-                       sw.WriteLine("; Y position in the window mode, for viewer mode.");\r
-                       sw.WriteLine("ViewerWindowY={0}", this.nViewer初期ウィンドウ開始位置Y);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-\r
-                       #region [ AutoPlay ]\r
-                       sw.WriteLine("[AutoPlay]");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; 自動演奏(0:OFF, 1:ON)");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Drums");\r
-                       sw.WriteLine("LC={0}", this.bAutoPlay.LC ? 1 : 0);\r
-                       sw.WriteLine("HH={0}", this.bAutoPlay.HH ? 1 : 0);\r
-                       sw.WriteLine("SD={0}", this.bAutoPlay.SD ? 1 : 0);\r
-                       sw.WriteLine("BD={0}", this.bAutoPlay.BD ? 1 : 0);\r
-                       sw.WriteLine("HT={0}", this.bAutoPlay.HT ? 1 : 0);\r
-                       sw.WriteLine("LT={0}", this.bAutoPlay.LT ? 1 : 0);\r
-                       sw.WriteLine("FT={0}", this.bAutoPlay.FT ? 1 : 0);\r
-                       sw.WriteLine("CY={0}", this.bAutoPlay.CY ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Guitar");\r
-                       //sw.WriteLine( "Guitar={0}", this.bAutoPlay.Guitar ? 1 : 0 );\r
-                       sw.WriteLine("GuitarR={0}", this.bAutoPlay.GtR ? 1 : 0);\r
-                       sw.WriteLine("GuitarG={0}", this.bAutoPlay.GtG ? 1 : 0);\r
-                       sw.WriteLine("GuitarB={0}", this.bAutoPlay.GtB ? 1 : 0);\r
-                       sw.WriteLine("GuitarPick={0}", this.bAutoPlay.GtPick ? 1 : 0);\r
-                       sw.WriteLine("GuitarWailing={0}", this.bAutoPlay.GtW ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Bass");\r
-                       // sw.WriteLine( "Bass={0}", this.bAutoPlay.Bass ? 1 : 0 );\r
-                       sw.WriteLine("BassR={0}", this.bAutoPlay.BsR ? 1 : 0);\r
-                       sw.WriteLine("BassG={0}", this.bAutoPlay.BsG ? 1 : 0);\r
-                       sw.WriteLine("BassB={0}", this.bAutoPlay.BsB ? 1 : 0);\r
-                       sw.WriteLine("BassPick={0}", this.bAutoPlay.BsPick ? 1 : 0);\r
-                       sw.WriteLine("BassWailing={0}", this.bAutoPlay.BsW ? 1 : 0);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-\r
-                       #region [ HitRange ]\r
-                       sw.WriteLine("[HitRange]");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("; Perfect~Poor とみなされる範囲[ms]");\r
-                       sw.WriteLine("Perfect={0}", this.nヒット範囲ms.Perfect);\r
-                       sw.WriteLine("Great={0}", this.nヒット範囲ms.Great);\r
-                       sw.WriteLine("Good={0}", this.nヒット範囲ms.Good);\r
-                       sw.WriteLine("Poor={0}", this.nヒット範囲ms.Poor);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-                       #region [ GUID ]\r
-                       sw.WriteLine("[GUID]");\r
-                       sw.WriteLine();\r
-                       foreach (KeyValuePair<int, string> pair in this.dicJoystick)\r
-                       {\r
-                               sw.WriteLine("JoystickID={0},{1}", pair.Key, pair.Value);\r
-                       }\r
-                       #endregion\r
-                       #region [ DrumsKeyAssign ]\r
-                       sw.WriteLine();\r
-                       sw.WriteLine(";-------------------");\r
-                       sw.WriteLine("; キーアサイン");\r
-                       sw.WriteLine(";   項 目:Keyboard → 'K'+'0'+キーコード(10進数)");\r
-                       sw.WriteLine(";           Mouse    → 'N'+'0'+ボタン番号(0~7)");\r
-                       sw.WriteLine(";           MIDI In  → 'M'+デバイス番号1桁(0~9,A~Z)+ノート番号(10進数)");\r
-                       sw.WriteLine(";           Joystick → 'J'+デバイス番号1桁(0~9,A~Z)+ 0 ...... X減少(左)ボタン");\r
-                       sw.WriteLine(";                                                         1 ...... X増加(右)ボタン");\r
-                       sw.WriteLine(";                                                         2 ...... Y減少(上)ボタン");\r
-                       sw.WriteLine(";                                                         3 ...... Y増加(下)ボタン");\r
-                       sw.WriteLine(";                                                         4 ...... Z減少(前)ボタン");\r
-                       sw.WriteLine(";                                                         5 ...... Z増加(後)ボタン");\r
-                       sw.WriteLine(";                                                         6~133.. ボタン1~128");\r
-                       sw.WriteLine(";           これらの項目を 16 個まで指定可能(',' で区切って記述)。");\r
-                       sw.WriteLine(";");\r
-                       sw.WriteLine(";   表記例:HH=K044,M042,J16");\r
-                       sw.WriteLine(";           → HiHat を Keyboard の 44 ('Z'), MidiIn#0 の 42, JoyPad#1 の 6(ボタン1) に割当て");\r
-                       sw.WriteLine(";");\r
-                       sw.WriteLine(";   ※Joystick のデバイス番号とデバイスとの関係は [GUID] セクションに記してあるものが有効。");\r
-                       sw.WriteLine(";");\r
-                       sw.WriteLine();\r
-                       sw.WriteLine("[DrumsKeyAssign]");\r
-                       sw.WriteLine();\r
-                       sw.Write("HH=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.HH);\r
-                       sw.WriteLine();\r
-                       sw.Write("SD=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.SD);\r
-                       sw.WriteLine();\r
-                       sw.Write("BD=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.BD);\r
-                       sw.WriteLine();\r
-                       sw.Write("HT=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.HT);\r
-                       sw.WriteLine();\r
-                       sw.Write("LT=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.LT);\r
-                       sw.WriteLine();\r
-                       sw.Write("FT=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.FT);\r
-                       sw.WriteLine();\r
-                       sw.Write("CY=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.CY);\r
-                       sw.WriteLine();\r
-                       sw.Write("HO=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.HHO);\r
-                       sw.WriteLine();\r
-                       sw.Write("RD=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.RD);\r
-                       sw.WriteLine();\r
-                       sw.Write("LC=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.LC);\r
-                       sw.WriteLine();\r
-                       sw.Write("HP=");                                                                                // #27029 2012.1.4 from\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Drums.HP);       //\r
-                       sw.WriteLine();                                                                                 //\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ GuitarKeyAssign ]\r
-                       sw.WriteLine("[GuitarKeyAssign]");\r
-                       sw.WriteLine();\r
-                       sw.Write("R=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.R);\r
-                       sw.WriteLine();\r
-                       sw.Write("G=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.G);\r
-                       sw.WriteLine();\r
-                       sw.Write("B=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.B);\r
-                       sw.WriteLine();\r
-                       sw.Write("Pick=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.Pick);\r
-                       sw.WriteLine();\r
-                       sw.Write("Wail=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.Wail);\r
-                       sw.WriteLine();\r
-                       sw.Write("Decide=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.Decide);\r
-                       sw.WriteLine();\r
-                       sw.Write("Cancel=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Guitar.Cancel);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ BassKeyAssign ]\r
-                       sw.WriteLine("[BassKeyAssign]");\r
-                       sw.WriteLine();\r
-                       sw.Write("R=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.R);\r
-                       sw.WriteLine();\r
-                       sw.Write("G=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.G);\r
-                       sw.WriteLine();\r
-                       sw.Write("B=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.B);\r
-                       sw.WriteLine();\r
-                       sw.Write("Pick=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.Pick);\r
-                       sw.WriteLine();\r
-                       sw.Write("Wail=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.Wail);\r
-                       sw.WriteLine();\r
-                       sw.Write("Decide=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.Decide);\r
-                       sw.WriteLine();\r
-                       sw.Write("Cancel=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.Bass.Cancel);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine();\r
-                       #endregion\r
-                       #region [ SystemkeyAssign ]\r
-                       sw.WriteLine("[SystemKeyAssign]");\r
-                       sw.WriteLine();\r
-                       sw.Write("Capture=");\r
-                       this.tキーの書き出し(sw, this.KeyAssign.System.Capture);\r
-                       sw.WriteLine();\r
-                       sw.WriteLine();\r
-                       #endregion\r
-\r
-                       #region [ Temp ]        - 2012.1.5 from add\r
-                       sw.WriteLine("[Temp]");\r
-                       sw.WriteLine();\r
-                       if ((this.eBDGroup == EBDGroup.どっちもBD) && (this.BackupOf1BD != null))           // #27029 2012.1.5 from: 有効な場合にのみ出力する。\r
-                       {\r
-                               sw.WriteLine("; BDGroup が FP|BD→FP&BD に変わった時の LC/HHC/HHO 打ち分けモード(0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC&HHC&HHO)");\r
-                               sw.WriteLine("BackupOf1BD_HHGroup={0}", (int)this.BackupOf1BD.eHHGroup);\r
-                               sw.WriteLine();\r
-                               sw.WriteLine(";BDGropu が FP|BD→FP&BD に変わった時の打ち分け時の再生音の優先順位(HHGroup)(0:Chip>Pad, 1:Pad>Chip)");\r
-                               sw.WriteLine("BackupOf1BD_HitSoundPriorityHH={0}", (int)this.BackupOf1BD.eHitSoundPriorityHH);\r
-                               sw.WriteLine();\r
-                       }\r
-                       sw.WriteLine(";-------------------");\r
-                       #endregion\r
-\r
-                       sw.Close();\r
-               }\r
-               public void tファイルから読み込み(string iniファイル名)\r
-               {\r
-                       this.ConfigIniファイル名 = iniファイル名;\r
-                       this.bConfigIniが存在している = File.Exists(this.ConfigIniファイル名);\r
-                       if (this.bConfigIniが存在している)\r
-                       {\r
-                               string str;\r
-                               this.tキーアサインを全部クリアする();\r
-                               using (StreamReader reader = new StreamReader(this.ConfigIniファイル名, Encoding.GetEncoding("Shift_JIS")))\r
-                               {\r
-                                       str = reader.ReadToEnd();\r
-                               }\r
-                               t文字列から読み込み(str);\r
-                               CDTXVersion version = new CDTXVersion(this.strDTXManiaのバージョン);\r
-                               if (version.n整数部 <= 69)\r
-                               {\r
-                                       this.tデフォルトのキーアサインに設定する();\r
-                               }\r
-                               if (version.n整数部 < 100)   // 99以下 → 100の時は、ウインドウサイズをVGA→HDに変更。縦横比変更のため、ウインドウサイズを初期化する。\r
-                               {\r
-                                       this.nウインドウwidth = 1280;\r
-                                       this.nウインドウheight = 720;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t文字列から読み込み(string strAllSettings)        // 2011.4.13 yyagi; refactored to make initial KeyConfig easier.\r
-               {\r
-                       Eセクション種別 unknown = Eセクション種別.Unknown;\r
-                       string[] delimiter = { "\n" };\r
-                       string[] strSingleLine = strAllSettings.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);\r
-                       foreach (string s in strSingleLine)\r
-                       {\r
-                               string str = s.Replace('\t', ' ').TrimStart(new char[] { '\t', ' ' });\r
-                               if ((str.Length != 0) && (str[0] != ';'))\r
-                               {\r
-                                       try\r
-                                       {\r
-                                               string str3;\r
-                                               string str4;\r
-                                               if (str[0] == '[')\r
-                                               {\r
-                                                       #region [ セクションの変更 ]\r
-                                                       //-----------------------------\r
-                                                       StringBuilder builder = new StringBuilder(0x20);\r
-                                                       int num = 1;\r
-                                                       while ((num < str.Length) && (str[num] != ']'))\r
-                                                       {\r
-                                                               builder.Append(str[num++]);\r
-                                                       }\r
-                                                       string str2 = builder.ToString();\r
-                                                       if (str2.Equals("System"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.System;\r
-                                                       }\r
-                                                       else if (str2.Equals("Log"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.Log;\r
-                                                       }\r
-                                                       else if (str2.Equals("PlayOption"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.PlayOption;\r
-                                                       }\r
-                                                       else if (str2.Equals("ViewerOption"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.ViewerOption;\r
-                                                       }\r
-                                                       else if (str2.Equals("AutoPlay"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.AutoPlay;\r
-                                                       }\r
-                                                       else if (str2.Equals("HitRange"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.HitRange;\r
-                                                       }\r
-                                                       else if (str2.Equals("GUID"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.GUID;\r
-                                                       }\r
-                                                       else if (str2.Equals("DrumsKeyAssign"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.DrumsKeyAssign;\r
-                                                       }\r
-                                                       else if (str2.Equals("GuitarKeyAssign"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.GuitarKeyAssign;\r
-                                                       }\r
-                                                       else if (str2.Equals("BassKeyAssign"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.BassKeyAssign;\r
-                                                       }\r
-                                                       else if (str2.Equals("SystemKeyAssign"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.SystemKeyAssign;\r
-                                                       }\r
-                                                       else if (str2.Equals("Temp"))\r
-                                                       {\r
-                                                               unknown = Eセクション種別.Temp;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               unknown = Eセクション種別.Unknown;\r
-                                                       }\r
-                                                       //-----------------------------\r
-                                                       #endregion\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       string[] strArray = str.Split(new char[] { '=' });\r
-                                                       if (strArray.Length == 2)\r
-                                                       {\r
-                                                               str3 = strArray[0].Trim();\r
-                                                               str4 = strArray[1].Trim();\r
-                                                               switch (unknown)\r
-                                                               {\r
-                                                                       #region [ [System] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.System:\r
-                                                                               {\r
-#if false              // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
-                                                                               //----------------------------------------\r
-                                                                                               if (str3.Equals("GaugeFactorD"))\r
-                                                                                               {\r
-                                                                                                       int p = 0;\r
-                                                                                                       string[] splittedFactor = str4.Split(',');\r
-                                                                                                       foreach (string s in splittedFactor) {\r
-                                                                                                               this.fGaugeFactor[p++, 0] = Convert.ToSingle(s);\r
-                                                                                                       }\r
-                                                                                               } else\r
-                                                                                               if (str3.Equals("GaugeFactorG"))\r
-                                                                                               {\r
-                                                                                                       int p = 0;\r
-                                                                                                       string[] splittedFactor = str4.Split(',');\r
-                                                                                                       foreach (string s in splittedFactor)\r
-                                                                                                       {\r
-                                                                                                               this.fGaugeFactor[p++, 1] = Convert.ToSingle(s);\r
-                                                                                                       }\r
-                                                                                               }\r
-                                                                                               else\r
-                                                                                               if (str3.Equals("DamageFactor"))\r
-                                                                                               {\r
-                                                                                                       int p = 0;\r
-                                                                                                       string[] splittedFactor = str4.Split(',');\r
-                                                                                                       foreach (string s in splittedFactor)\r
-                                                                                                       {\r
-                                                                                                               this.fDamageLevelFactor[p++] = Convert.ToSingle(s);\r
-                                                                                                       }\r
-                                                                                               }\r
-                                                                                               else\r
-                                                                               //----------------------------------------\r
-#endif\r
-                                                                                       #region [ Version ]\r
-                                                                                       if (str3.Equals("Version"))\r
-                                                                                       {\r
-                                                                                               this.strDTXManiaのバージョン = str4;\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ DTXPath ]\r
-                                                                                       else if (str3.Equals("DTXPath"))\r
-                                                                                       {\r
-                                                                                               this.str曲データ検索パス = str4;\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ skin関係 ]\r
-                                                                                       else if (str3.Equals("SkinPath"))\r
-                                                                                       {\r
-                                                                                               string absSkinPath = str4;\r
-                                                                                               if (!System.IO.Path.IsPathRooted(str4))\r
-                                                                                               {\r
-                                                                                                       absSkinPath = System.IO.Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "System");\r
-                                                                                                       absSkinPath = System.IO.Path.Combine(absSkinPath, str4);\r
-                                                                                                       Uri u = new Uri(absSkinPath);\r
-                                                                                                       absSkinPath = u.AbsolutePath.ToString();        // str4内に相対パスがある場合に備える\r
-                                                                                                       absSkinPath = System.Web.HttpUtility.UrlDecode(absSkinPath);                                            // デコードする\r
-                                                                                                       absSkinPath = absSkinPath.Replace('/', System.IO.Path.DirectorySeparatorChar);  // 区切り文字が\ではなく/なので置換する\r
-                                                                                               }\r
-                                                                                               if (absSkinPath[absSkinPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)       // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
-                                                                                               {\r
-                                                                                                       absSkinPath += System.IO.Path.DirectorySeparatorChar;\r
-                                                                                               }\r
-                                                                                               this.strSystemSkinSubfolderFullName = absSkinPath;\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SkinChangeByBoxDef"))\r
-                                                                                       {\r
-                                                                                               this.bUseBoxDefSkin = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ Window関係 ]\r
-                                                                                       else if (str3.Equals("FullScreen"))\r
-                                                                                       {\r
-                                                                                               this.b全画面モード = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("WindowX"))                // #30675 2013.02.04 ikanick add\r
-                                                                                       {\r
-                                                                                               this.n初期ウィンドウ開始位置X = C変換.n値を文字列から取得して範囲内に丸めて返す(\r
-                                                                                                                                                                                                               str4, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 1, this.n初期ウィンドウ開始位置X);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("WindowY"))                // #30675 2013.02.04 ikanick add\r
-                                                                                       {\r
-                                                                                               this.n初期ウィンドウ開始位置Y = C変換.n値を文字列から取得して範囲内に丸めて返す(\r
-                                                                                                                                                                                                               str4, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - 1, this.n初期ウィンドウ開始位置Y);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("WindowWidth"))            // #23510 2010.10.31 yyagi add\r
-                                                                                       {\r
-                                                                                               this.nウインドウwidth = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 65535, this.nウインドウwidth);\r
-                                                                                               if (this.nウインドウwidth <= 0)\r
-                                                                                               {\r
-                                                                                                       this.nウインドウwidth = SampleFramework.GameWindowSize.Width;\r
-                                                                                               }\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("WindowHeight"))           // #23510 2010.10.31 yyagi add\r
-                                                                                       {\r
-                                                                                               this.nウインドウheight = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 65535, this.nウインドウheight);\r
-                                                                                               if (this.nウインドウheight <= 0)\r
-                                                                                               {\r
-                                                                                                       this.nウインドウheight = SampleFramework.GameWindowSize.Height;\r
-                                                                                               }\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DoubleClickFullScreen"))  // #26752 2011.11.27 yyagi\r
-                                                                                       {\r
-                                                                                               this.bIsAllowedDoubleClickFullscreen = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("EnableSystemMenu"))               // #28200 2012.5.1 yyagi\r
-                                                                                       {\r
-                                                                                               this.bIsEnabledSystemMenu = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BackSleep"))                              // #23568 2010.11.04 ikanick add\r
-                                                                                       {\r
-                                                                                               this.n非フォーカス時スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す(str4, 0, 50, this.n非フォーカス時スリープms);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ WASAPI/ASIO関係 ]\r
-                                                                                       else if (str3.Equals("SoundDeviceType"))\r
-                                                                                       {\r
-                                                                                               this.nSoundDeviceType = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, this.nSoundDeviceType);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("WASAPIBufferSizeMs"))\r
-                                                                                       {\r
-                                                                                               this.nWASAPIBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 9999, this.nWASAPIBufferSizeMs);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ASIODevice"))\r
-                                                                                       {\r
-                                                                                               string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();\r
-                                                                                               this.nASIODevice = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, asiodev.Length - 1, this.nASIODevice);\r
-                                                                                       }\r
-                                                                                       //else if ( str3.Equals( "ASIOBufferSizeMs" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.nASIOBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999, this.nASIOBufferSizeMs );\r
-                                                                                       //}\r
-                                                                                       //else if ( str3.Equals( "DynamicBassMixerManagement" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.bDynamicBassMixerManagement = C変換.bONorOFF( str4[ 0 ] );\r
-                                                                                       //}\r
-                                                                                       else if (str3.Equals("SoundTimerType"))                 // #33689 2014.6.6 yyagi\r
-                                                                                       {\r
-                                                                                               this.bUseOSTimer = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("MasterVolume"))\r
-                                                                                       {\r
-                                                                                               this.nMasterVolume = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 100, this.nMasterVolume);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("VSyncWait"))\r
-                                                                                       {\r
-                                                                                               this.b垂直帰線待ちを行う = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SleepTimePerFrame"))              // #23568 2011.11.27 yyagi\r
-                                                                                       {\r
-                                                                                               this.nフレーム毎スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す(str4, -1, 50, this.nフレーム毎スリープms);\r
-                                                                                       }\r
-                                                                                       #region [ ギター/ベース/ドラム 有効/無効 ]\r
-                                                                                       else if (str3.Equals("Guitar"))\r
-                                                                                       {\r
-                                                                                               this.bGuitar有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Drums"))\r
-                                                                                       {\r
-                                                                                               this.bDrums有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("BGAlpha"))\r
-                                                                                       {\r
-                                                                                               this.n背景の透過度 = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0xff, this.n背景の透過度);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DamageLevel"))\r
-                                                                                       {\r
-                                                                                               this.eダメージレベル = (Eダメージレベル)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eダメージレベル);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("StageFailed"))\r
-                                                                                       {\r
-                                                                                               this.bSTAGEFAILED有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #region [ 打ち分け関連 ]\r
-                                                                                       else if (str3.Equals("HHGroup"))\r
-                                                                                       {\r
-                                                                                               this.eHHGroup = (EHHGroup)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.eHHGroup);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("FTGroup"))\r
-                                                                                       {\r
-                                                                                               this.eFTGroup = (EFTGroup)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eFTGroup);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("CYGroup"))\r
-                                                                                       {\r
-                                                                                               this.eCYGroup = (ECYGroup)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eCYGroup);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BDGroup"))                // #27029 2012.1.4 from\r
-                                                                                       {\r
-                                                                                               this.eBDGroup = (EBDGroup)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eBDGroup);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HitSoundPriorityHH"))\r
-                                                                                       {\r
-                                                                                               this.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1, (int)this.eHitSoundPriorityHH);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HitSoundPriorityFT"))\r
-                                                                                       {\r
-                                                                                               this.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1, (int)this.eHitSoundPriorityFT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HitSoundPriorityCY"))\r
-                                                                                       {\r
-                                                                                               this.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1, (int)this.eHitSoundPriorityCY);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("CymbalFree"))\r
-                                                                                       {\r
-                                                                                               this.bシンバルフリー = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ AVI/BGA ]\r
-                                                                                       else if (str3.Equals("AVI"))\r
-                                                                                       {\r
-                                                                                               this.bAVI有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ForceAVIFullscreen"))\r
-                                                                                       {\r
-                                                                                               this.bForceAVIFullscreen = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BGA"))\r
-                                                                                       {\r
-                                                                                               this.bBGA有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ フィルイン関係 ]\r
-                                                                                       else if (str3.Equals("FillInEffect"))\r
-                                                                                       {\r
-                                                                                               this.bフィルイン有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("AudienceSound"))\r
-                                                                                       {\r
-                                                                                               this.b歓声を発声する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ プレビュー音 ]\r
-                                                                                       else if (str3.Equals("PreviewSoundWait"))\r
-                                                                                       {\r
-                                                                                               this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("PreviewImageWait"))\r
-                                                                                       {\r
-                                                                                               this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("AdjustWaves"))\r
-                                                                                       {\r
-                                                                                               this.bWave再生位置自動調整機能有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #region [ BGM/ドラムのヒット音 ]\r
-                                                                                       else if (str3.Equals("BGMSound"))\r
-                                                                                       {\r
-                                                                                               this.bBGM音を発声する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HitSound"))\r
-                                                                                       {\r
-                                                                                               this.bドラム打音を発声する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("SaveScoreIni"))\r
-                                                                                       {\r
-                                                                                               this.bScoreIniを出力する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("RandomFromSubBox"))\r
-                                                                                       {\r
-                                                                                               this.bランダムセレクトで子BOXを検索対象とする = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #region [ SoundMonitor ]\r
-                                                                                       else if (str3.Equals("SoundMonitorDrums"))\r
-                                                                                       {\r
-                                                                                               this.b演奏音を強調する.Drums = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SoundMonitorGuitar"))\r
-                                                                                       {\r
-                                                                                               this.b演奏音を強調する.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SoundMonitorBass"))\r
-                                                                                       {\r
-                                                                                               this.b演奏音を強調する.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ コンボ数 ]\r
-                                                                                       else if (str3.Equals("MinComboDrums"))\r
-                                                                                       {\r
-                                                                                               this.n表示可能な最小コンボ数.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("MinComboGuitar"))\r
-                                                                                       {\r
-                                                                                               this.n表示可能な最小コンボ数.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("MinComboBass"))\r
-                                                                                       {\r
-                                                                                               this.n表示可能な最小コンボ数.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Bass);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("ShowDebugStatus"))\r
-                                                                                       {\r
-                                                                                               this.b演奏情報を表示する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #region [ 選曲リストフォント ]\r
-                                                                                       else if (str3.Equals("SelectListFontName"))\r
-                                                                                       {\r
-                                                                                               this.str選曲リストフォント = str4;\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SelectListFontSize"))\r
-                                                                                       {\r
-                                                                                               this.n選曲リストフォントのサイズdot = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 0x3e7, this.n選曲リストフォントのサイズdot);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SelectListFontItalic"))\r
-                                                                                       {\r
-                                                                                               this.b選曲リストフォントを斜体にする = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SelectListFontBold"))\r
-                                                                                       {\r
-                                                                                               this.b選曲リストフォントを太字にする = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("ChipVolume"))\r
-                                                                                       {\r
-                                                                                               this.n手動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 100, this.n手動再生音量);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("AutoChipVolume"))\r
-                                                                                       {\r
-                                                                                               this.n自動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 100, this.n自動再生音量);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("StoicMode"))\r
-                                                                                       {\r
-                                                                                               this.bストイックモード = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ShowLagTime"))                            // #25370 2011.6.3 yyagi\r
-                                                                                       {\r
-                                                                                               this.nShowLagType = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, this.nShowLagType);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeDispPriority"))\r
-                                                                                       {\r
-                                                                                               this.e判定表示優先度 = (E判定表示優先度)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1, (int)this.e判定表示優先度);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumsLanePosition"))\r
-                                                                                       {\r
-                                                                                               this.eドラムレーン表示位置 = (Eドラムレーン表示位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1, (int)this.eドラムレーン表示位置);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("AutoResultCapture"))                      // #25399 2011.6.9 yyagi\r
-                                                                                       {\r
-                                                                                               this.bIsAutoResultCapture = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("TimeStretch"))                            // #23664 2013.2.24 yyagi\r
-                                                                                       {\r
-                                                                                               this.bTimeStretch = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #region [ AdjustTime ]\r
-                                                                                       else if (str3.Equals("InputAdjustTimeDrums"))           // #23580 2011.1.3 yyagi\r
-                                                                                       {\r
-                                                                                               this.nInputAdjustTimeMs.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, -99, 99, this.nInputAdjustTimeMs.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("InputAdjustTimeGuitar"))  // #23580 2011.1.3 yyagi\r
-                                                                                       {\r
-                                                                                               this.nInputAdjustTimeMs.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, -99, 99, this.nInputAdjustTimeMs.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("InputAdjustTimeBass"))            // #23580 2011.1.3 yyagi\r
-                                                                                       {\r
-                                                                                               this.nInputAdjustTimeMs.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, -99, 99, this.nInputAdjustTimeMs.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeLinePosOffsetDrums"))                // #31602 2013.6.23 yyagi\r
-                                                                                       {\r
-                                                                                               this.fJudgeLinePosOffsetBase.Drums = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す(str4, -99, 99, this.nJudgeLinePosOffset.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeLinePosOffsetGuitar"))               // #31602 2013.6.23 yyagi\r
-                                                                                       {\r
-                                                                                               this.fJudgeLinePosOffsetBase.Guitar = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す(str4, -99, 99, this.nJudgeLinePosOffset.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeLinePosOffsetBass"))                 // #31602 2013.6.23 yyagi\r
-                                                                                       {\r
-                                                                                               this.fJudgeLinePosOffsetBase.Bass = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す(str4, -99, 99, this.nJudgeLinePosOffset.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeLinePosModeGuitar")) // #33891 2014.6.26 yyagi\r
-                                                                                       {\r
-                                                                                               this.e判定位置.Guitar = (E判定位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.e判定位置.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("JudgeLinePosModeBass"))           // #33891 2014.6.26 yyagi\r
-                                                                                       {\r
-                                                                                               this.e判定位置.Bass = (E判定位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.e判定位置.Bass);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("BufferedInput"))\r
-                                                                                       {\r
-                                                                                               this.bバッファ入力を行う = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("PolyphonicSounds"))               // #28228 2012.5.1 yyagi\r
-                                                                                       {\r
-                                                                                               this.nPoliphonicSounds = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 1, 8, this.nPoliphonicSounds);\r
-                                                                                       }\r
-                                                                                       #region [ VelocityMin ]\r
-                                                                                       else if (str3.Equals("LCVelocityMin"))                  // #23857 2010.12.12 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.LC = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.LC);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HHVelocityMin"))\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.HH = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.HH);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SDVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.SD = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.SD);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BDVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.BD = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.BD);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HTVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.HT = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.HT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("LTVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.LT = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.LT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("FTVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.FT = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.FT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("CYVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.CY = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.CY);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("RDVelocityMin"))                  // #23857 2011.1.31 yyagi\r
-                                                                                       {\r
-                                                                                               this.nVelocityMin.RD = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 127, this.nVelocityMin.RD);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("Loadsoundspeed"))\r
-                                                                                       {\r
-                                                                                               this.b曲読み込みを高速化する = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       //else if ( str3.Equals( "NoMP3Streaming" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.bNoMP3Streaming = C変換.bONorOFF( str4[ 0 ] );\r
-                                                                                       //}\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [Log] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.Log:\r
-                                                                               {\r
-                                                                                       if (str3.Equals("OutputLog"))\r
-                                                                                       {\r
-                                                                                               this.bログ出力 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("TraceCreatedDisposed"))\r
-                                                                                       {\r
-                                                                                               this.bLog作成解放ログ出力 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("TraceDTXDetails"))\r
-                                                                                       {\r
-                                                                                               this.bLogDTX詳細ログ出力 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("TraceSongSearch"))\r
-                                                                                       {\r
-                                                                                               this.bLog曲検索ログ出力 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [PlayOption] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.PlayOption:\r
-                                                                               {\r
-                                                                                       if (str3.Equals("Dark"))\r
-                                                                                       {\r
-                                                                                               this.eDark = (Eダークモード)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eDark);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Graph"))  // #24074 2011.01.23 addikanick\r
-                                                                                       {\r
-                                                                                               this.bGraph = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumAutoGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eAutoGhost.Drums = (EAutoGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarAutoGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eAutoGhost.Guitar = (EAutoGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassAutoGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eAutoGhost.Bass = (EAutoGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumTargetGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eTargetGhost.Drums = (ETargetGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarTargetGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eTargetGhost.Guitar = (ETargetGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassTargetGhost")) // #35411 2015.08.18 chnmr0 add\r
-                                                                                       {\r
-                                                                                               this.eTargetGhost.Bass = (ETargetGhostData)C変換.n値を文字列から取得して返す(str4, 0);\r
-                                                                                       }\r
-\r
-                                                                                       #region [ Sudden ]\r
-                                                                                       else if (str3.Equals("DrumsSudden"))\r
-                                                                                       {\r
-                                                                                               this.bSudden.Drums = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarSudden"))\r
-                                                                                       {\r
-                                                                                               this.bSudden.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassSudden"))\r
-                                                                                       {\r
-                                                                                               this.bSudden.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ Hidden ]\r
-                                                                                       else if (str3.Equals("DrumsHidden"))\r
-                                                                                       {\r
-                                                                                               this.bHidden.Drums = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarHidden"))\r
-                                                                                       {\r
-                                                                                               this.bHidden.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassHidden"))\r
-                                                                                       {\r
-                                                                                               this.bHidden.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       #endregion\r
-                                                                                       #region [ Invisible ]\r
-                                                                                       else if (str3.Equals("DrumsInvisible"))\r
-                                                                                       {\r
-                                                                                               this.eInvisible.Drums = (EInvisible)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eInvisible.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarInvisible"))\r
-                                                                                       {\r
-                                                                                               this.eInvisible.Guitar = (EInvisible)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eInvisible.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassInvisible"))\r
-                                                                                       {\r
-                                                                                               this.eInvisible.Bass = (EInvisible)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.eInvisible.Bass);\r
-                                                                                       }\r
-                                                                                       //else if ( str3.Equals( "InvisibleDisplayTimeMs" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.nDisplayTimesMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nDisplayTimesMs );\r
-                                                                                       //}\r
-                                                                                       //else if ( str3.Equals( "InvisibleFadeoutTimeMs" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.nFadeoutTimeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nFadeoutTimeMs );\r
-                                                                                       //}\r
-                                                                                       #endregion\r
-                                                                                       else if (str3.Equals("DrumsReverse"))\r
-                                                                                       {\r
-                                                                                               this.bReverse.Drums = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarReverse"))\r
-                                                                                       {\r
-                                                                                               this.bReverse.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassReverse"))\r
-                                                                                       {\r
-                                                                                               this.bReverse.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarRandom"))\r
-                                                                                       {\r
-                                                                                               this.eRandom.Guitar = (Eランダムモード)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.eRandom.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassRandom"))\r
-                                                                                       {\r
-                                                                                               this.eRandom.Bass = (Eランダムモード)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.eRandom.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarLight"))\r
-                                                                                       {\r
-                                                                                               this.bLight.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassLight"))\r
-                                                                                       {\r
-                                                                                               this.bLight.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarLeft"))\r
-                                                                                       {\r
-                                                                                               this.bLeft.Guitar = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassLeft"))\r
-                                                                                       {\r
-                                                                                               this.bLeft.Bass = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumsPosition"))\r
-                                                                                       {\r
-                                                                                               this.判定文字表示位置.Drums = (E判定文字表示位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 2, (int)this.判定文字表示位置.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarPosition"))\r
-                                                                                       {\r
-                                                                                               this.判定文字表示位置.Guitar = (E判定文字表示位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.判定文字表示位置.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassPosition"))\r
-                                                                                       {\r
-                                                                                               this.判定文字表示位置.Bass = (E判定文字表示位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.判定文字表示位置.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumsScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.n譜面スクロール速度.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x7cf, this.n譜面スクロール速度.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("GuitarScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.n譜面スクロール速度.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x7cf, this.n譜面スクロール速度.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BassScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.n譜面スクロール速度.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x7cf, this.n譜面スクロール速度.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("PlaySpeed"))\r
-                                                                                       {\r
-                                                                                               this.n演奏速度 = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 5, 40, this.n演奏速度);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ComboPosition"))\r
-                                                                                       {\r
-                                                                                               this.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.ドラムコンボ文字の表示位置);\r
-                                                                                       }\r
-                                                                                       //else if ( str3.Equals( "JudgeDispPriorityDrums" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.e判定表示優先度.Drums = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Drums );\r
-                                                                                       //}\r
-                                                                                       //else if ( str3.Equals( "JudgeDispPriorityGuitar" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.e判定表示優先度.Guitar = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Guitar );\r
-                                                                                       //}\r
-                                                                                       //else if ( str3.Equals( "JudgeDispPriorityBass" ) )\r
-                                                                                       //{\r
-                                                                                       //    this.e判定表示優先度.Bass = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Bass );\r
-                                                                                       //}\r
-                                                                                       else if (str3.Equals("Risky"))                                  // #23559 2011.6.23  yyagi\r
-                                                                                       {\r
-                                                                                               this.nRisky = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 10, this.nRisky);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("DrumsTight"))                             // #29500 2012.9.11 kairera0467\r
-                                                                                       {\r
-                                                                                               this.bTight = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [ViewerOption] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.ViewerOption:\r
-                                                                               {\r
-                                                                                       if (str3.Equals("ViewerDrumsScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.nViewerScrollSpeed.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1999, this.nViewerScrollSpeed.Drums);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerGuitarScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.nViewerScrollSpeed.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1999, this.nViewerScrollSpeed.Guitar);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerBassScrollSpeed"))\r
-                                                                                       {\r
-                                                                                               this.nViewerScrollSpeed.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 1999, this.nViewerScrollSpeed.Bass);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerVSyncWait"))\r
-                                                                                       {\r
-                                                                                               this.bViewerVSyncWait = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerShowDebugStatus"))\r
-                                                                                       {\r
-                                                                                               this.bViewerShowDebugStatus = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerTimeStretch"))\r
-                                                                                       {\r
-                                                                                               this.bViewerTimeStretch = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerGuitar"))\r
-                                                                                       {\r
-                                                                                               this.bViewerGuitar有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerDrums"))\r
-                                                                                       {\r
-                                                                                               this.bViewerDrums有効 = C変換.bONorOFF(str4[0]);\r
-                                                                                       }\r
-\r
-                                                                                       else if (str3.Equals("ViewerWindowWidth"))\r
-                                                                                       {\r
-                                                                                               this.nViewerウインドウwidth = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 65535, this.nViewerウインドウwidth);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerWindowHeight"))\r
-                                                                                       {\r
-                                                                                               this.nViewerウインドウheight = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 65535, this.nViewerウインドウheight);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerWindowX"))\r
-                                                                                       {\r
-                                                                                               this.nViewer初期ウィンドウ開始位置X = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 65535, this.nViewer初期ウィンドウ開始位置X);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("ViewerWindowY"))\r
-                                                                                       {\r
-                                                                                               this.nViewer初期ウィンドウ開始位置Y = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 65535, this.nViewer初期ウィンドウ開始位置Y);\r
-                                                                                       }\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [AutoPlay] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.AutoPlay:\r
-                                                                               if (str3.Equals("LC"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.LC = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               if (str3.Equals("HH"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.HH = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("SD"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.SD = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BD"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BD = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("HT"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.HT = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("LT"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.LT = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("FT"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.FT = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("CY"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.CY = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               //else if( str3.Equals( "Guitar" ) )\r
-                                                                               //{\r
-                                                                               //    this.bAutoPlay.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
-                                                                               //}\r
-                                                                               else if (str3.Equals("GuitarR"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.GtR = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("GuitarG"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.GtG = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("GuitarB"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.GtB = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("GuitarPick"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.GtPick = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("GuitarWailing"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.GtW = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               //else if ( str3.Equals( "Bass" ) )\r
-                                                                               //{\r
-                                                                               //    this.bAutoPlay.Bass = C変換.bONorOFF( str4[ 0 ] );\r
-                                                                               //}\r
-                                                                               else if (str3.Equals("BassR"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BsR = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BassG"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BsG = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BassB"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BsB = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BassPick"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BsPick = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BassWailing"))\r
-                                                                               {\r
-                                                                                       this.bAutoPlay.BsW = C変換.bONorOFF(str4[0]);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [HitRange] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.HitRange:\r
-                                                                               if (str3.Equals("Perfect"))\r
-                                                                               {\r
-                                                                                       this.nヒット範囲ms.Perfect = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Perfect);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Great"))\r
-                                                                               {\r
-                                                                                       this.nヒット範囲ms.Great = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Great);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Good"))\r
-                                                                               {\r
-                                                                                       this.nヒット範囲ms.Good = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Good);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Poor"))\r
-                                                                               {\r
-                                                                                       this.nヒット範囲ms.Poor = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Poor);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [GUID] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.GUID:\r
-                                                                               if (str3.Equals("JoystickID"))\r
-                                                                               {\r
-                                                                                       this.tJoystickIDの取得(str4);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [DrumsKeyAssign] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.DrumsKeyAssign:\r
-                                                                               {\r
-                                                                                       if (str3.Equals("HH"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.HH);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("SD"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.SD);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("BD"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.BD);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HT"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.HT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("LT"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.LT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("FT"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.FT);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("CY"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.CY);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HO"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.HHO);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("RD"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.RD);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("LC"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.LC);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("HP"))                                                                             // #27029 2012.1.4 from\r
-                                                                                       {                                                                                                                                       //\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Drums.HP);    //\r
-                                                                                       }                                                                                                                                       //\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [GuitarKeyAssign] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.GuitarKeyAssign:\r
-                                                                               {\r
-                                                                                       if (str3.Equals("R"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.R);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("G"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.G);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("B"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.B);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Pick"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.Pick);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Wail"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.Wail);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Decide"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.Decide);\r
-                                                                                       }\r
-                                                                                       else if (str3.Equals("Cancel"))\r
-                                                                                       {\r
-                                                                                               this.tキーの読み出しと設定(str4, this.KeyAssign.Guitar.Cancel);\r
-                                                                                       }\r
-                                                                                       continue;\r
-                                                                               }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [BassKeyAssign] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.BassKeyAssign:\r
-                                                                               if (str3.Equals("R"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.R);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("G"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.G);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("B"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.B);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Pick"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.Pick);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Wail"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.Wail);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Decide"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.Decide);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("Cancel"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.Bass.Cancel);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [SystemKeyAssign] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.SystemKeyAssign:\r
-                                                                               if (str3.Equals("Capture"))\r
-                                                                               {\r
-                                                                                       this.tキーの読み出しと設定(str4, this.KeyAssign.System.Capture);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-\r
-                                                                       #region [ [Temp] ]\r
-                                                                       //-----------------------------\r
-                                                                       case Eセクション種別.Temp:       // #27029 2012.1.5 from\r
-                                                                               if (str3.Equals("BackupOf1BD_HHGroup"))\r
-                                                                               {\r
-                                                                                       if (this.BackupOf1BD == null) this.BackupOf1BD = new CBackupOf1BD();\r
-                                                                                       this.BackupOf1BD.eHHGroup = (EHHGroup)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.BackupOf1BD.eHHGroup);\r
-                                                                               }\r
-                                                                               else if (str3.Equals("BackupOf1BD_HitSoundPriorityHH"))\r
-                                                                               {\r
-                                                                                       if (this.BackupOf1BD == null) this.BackupOf1BD = new CBackupOf1BD();\r
-                                                                                       this.BackupOf1BD.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位)C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 3, (int)this.BackupOf1BD.eHitSoundPriorityHH);\r
-                                                                               }\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                               continue;\r
-                                       }\r
-                                       catch (Exception exception)\r
-                                       {\r
-                                               Trace.TraceError(exception.Message);\r
-                                               continue;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
-                       {\r
-                               nJudgeLinePosOffset[i] = (int)(fJudgeLinePosOffsetBase[i] * (this.n譜面スクロール速度[i] + 1));\r
-                       }\r
-               }\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private enum Eセクション種別\r
-               {\r
-                       Unknown,\r
-                       System,\r
-                       Log,\r
-                       PlayOption,\r
-                       ViewerOption,\r
-                       AutoPlay,\r
-                       HitRange,\r
-                       GUID,\r
-                       DrumsKeyAssign,\r
-                       GuitarKeyAssign,\r
-                       BassKeyAssign,\r
-                       SystemKeyAssign,\r
-                       Temp,\r
-               }\r
-\r
-               private bool _bDrums有効;\r
-               private bool _bGuitar有効;\r
-               STDGBVALUE<bool> _b楽器有効;\r
-               private bool bConfigIniが存在している;\r
-               private string ConfigIniファイル名;\r
-\r
-               private void tJoystickIDの取得(string strキー記述)\r
-               {\r
-                       string[] strArray = strキー記述.Split(new char[] { ',' });\r
-                       if (strArray.Length >= 2)\r
-                       {\r
-                               int result = 0;\r
-                               if ((int.TryParse(strArray[0], out result) && (result >= 0)) && (result <= 9))\r
-                               {\r
-                                       if (this.dicJoystick.ContainsKey(result))\r
-                                       {\r
-                                               this.dicJoystick.Remove(result);\r
-                                       }\r
-                                       this.dicJoystick.Add(result, strArray[1]);\r
-                               }\r
-                       }\r
-               }\r
-               private void tキーアサインを全部クリアする()\r
-               {\r
-                       this.KeyAssign = new CKeyAssign();\r
-                       for (int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++)\r
-                       {\r
-                               for (int j = 0; j <= (int)EKeyConfigPad.Capture; j++)\r
-                               {\r
-                                       this.KeyAssign[i][j] = new CKeyAssign.STKEYASSIGN[16];\r
-                                       for (int k = 0; k < 16; k++)\r
-                                       {\r
-                                               this.KeyAssign[i][j][k] = new CKeyAssign.STKEYASSIGN(E入力デバイス.不明, 0, 0);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               private void tキーの書き出し(StreamWriter sw, CKeyAssign.STKEYASSIGN[] assign)\r
-               {\r
-                       bool flag = true;\r
-                       for (int i = 0; i < 0x10; i++)\r
-                       {\r
-                               if (assign[i].入力デバイス == E入力デバイス.不明)\r
-                               {\r
-                                       continue;\r
-                               }\r
-                               if (!flag)\r
-                               {\r
-                                       sw.Write(',');\r
-                               }\r
-                               flag = false;\r
-                               switch (assign[i].入力デバイス)\r
-                               {\r
-                                       case E入力デバイス.キーボード:\r
-                                               sw.Write('K');\r
-                                               break;\r
-\r
-                                       case E入力デバイス.MIDI入力:\r
-                                               sw.Write('M');\r
-                                               break;\r
-\r
-                                       case E入力デバイス.ジョイパッド:\r
-                                               sw.Write('J');\r
-                                               break;\r
-\r
-                                       case E入力デバイス.マウス:\r
-                                               sw.Write('N');\r
-                                               break;\r
-                               }\r
-                               sw.Write("{0}{1}", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(assign[i].ID, 1), assign[i].コード);     // #24166 2011.1.15 yyagi: to support ID > 10, change 2nd character from Decimal to 36-numeral system. (e.g. J1023 -> JA23)\r
-                       }\r
-               }\r
-               private void tキーの読み出しと設定(string strキー記述, CKeyAssign.STKEYASSIGN[] assign)\r
-               {\r
-                       string[] strArray = strキー記述.Split(new char[] { ',' });\r
-                       for (int i = 0; (i < strArray.Length) && (i < 0x10); i++)\r
-                       {\r
-                               E入力デバイス e入力デバイス;\r
-                               int id;\r
-                               int code;\r
-                               string str = strArray[i].Trim().ToUpper();\r
-                               if (str.Length >= 3)\r
-                               {\r
-                                       e入力デバイス = E入力デバイス.不明;\r
-                                       switch (str[0])\r
-                                       {\r
-                                               case 'J':\r
-                                                       e入力デバイス = E入力デバイス.ジョイパッド;\r
-                                                       break;\r
-\r
-                                               case 'K':\r
-                                                       e入力デバイス = E入力デバイス.キーボード;\r
-                                                       break;\r
-\r
-                                               case 'L':\r
-                                                       continue;\r
-\r
-                                               case 'M':\r
-                                                       e入力デバイス = E入力デバイス.MIDI入力;\r
-                                                       break;\r
-\r
-                                               case 'N':\r
-                                                       e入力デバイス = E入力デバイス.マウス;\r
-                                                       break;\r
-                                       }\r
-                               }\r
-                               else\r
-                               {\r
-                                       continue;\r
-                               }\r
-                               id = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".IndexOf(str[1]);    // #24166 2011.1.15 yyagi: to support ID > 10, change 2nd character from Decimal to 36-numeral system. (e.g. J1023 -> JA23)\r
-                               if (((id >= 0) && int.TryParse(str.Substring(2), out code)) && ((code >= 0) && (code <= 0xff)))\r
-                               {\r
-                                       this.t指定した入力が既にアサイン済みである場合はそれを全削除する(e入力デバイス, id, code);\r
-                                       assign[i].入力デバイス = e入力デバイス;\r
-                                       assign[i].ID = id;\r
-                                       assign[i].コード = code;\r
-                               }\r
-                       }\r
-               }\r
-               private void tデフォルトのキーアサインに設定する()\r
-               {\r
-                       this.tキーアサインを全部クリアする();\r
-\r
-                       string strDefaultKeyAssign = @"\r
-[DrumsKeyAssign]\r
-\r
-HH=K035,M042,M093\r
-SD=K033,M025,M026,M027,M028,M029,M031,M032,M034,M037,M038,M040,M0113\r
-BD=K012,K0126,M033,M035,M036,M0112\r
-HT=K031,M048,M050\r
-LT=K011,M047\r
-FT=K023,M041,M043,M045\r
-CY=K022,M049,M052,M055,M057,M091\r
-HO=K010,M046,M092\r
-RD=K020,M051,M053,M059,M089\r
-LC=K026\r
-HP=M044\r
-\r
-[GuitarKeyAssign]\r
-\r
-R=K055\r
-G=K056,J012\r
-B=K057\r
-Pick=K0115,K046,J06\r
-Wail=K0116\r
-Decide=K060\r
-Cancel=K061\r
-\r
-[BassKeyAssign]\r
-\r
-R=K090\r
-G=K091,J013\r
-B=K092\r
-Pick=K0103,K0100,J08\r
-Wail=K089\r
-Decide=K096\r
-Cancel=K097\r
-\r
-[SystemKeyAssign]\r
-Capture=K065\r
-";\r
-                       t文字列から読み込み(strDefaultKeyAssign);\r
-               }\r
-               //-----------------\r
-               #endregion\r
-       }\r
-}\r
+
\ No newline at end of file
index e6f5a22..bd573f1 100644 (file)
@@ -24,11 +24,11 @@ namespace DTXMania
                #region [ properties ]\r
                public static readonly string VERSION = "105(160214)";\r
                public static readonly string SLIMDXDLL = "c_net20x86_Jun2010";\r
-               public static readonly string D3DXDLL = "d3dx9_43.dll";         // June 2010\r
-               //public static readonly string D3DXDLL = "d3dx9_42.dll";       // February 2010\r
-               //public static readonly string D3DXDLL = "d3dx9_41.dll";       // March 2009\r
-\r
+               public static readonly string D3DXDLL = "d3dx9_43.dll";     // June 2010\r
+                                                                                                                                                                                                                                                               //public static readonly string D3DXDLL = "d3dx9_42.dll";       // February 2010\r
+                                                                                                                                                                                                                                                               //public static readonly string D3DXDLL = "d3dx9_41.dll";       // March 2009\r
                private static CDTXMania instance = new CDTXMania();\r
+\r
                public static CDTXMania Instance\r
                {\r
                        get\r
@@ -38,7 +38,8 @@ namespace DTXMania
                }\r
                public C文字コンソール act文字コンソール { get; private set; }\r
                public bool bコンパクトモード { get; private set; }\r
-               public CConfigIni ConfigIni { get; private set; }\r
+               public CConfigXml ConfigIni;\r
+\r
                public CDTX DTX\r
                {\r
                        get\r
@@ -74,7 +75,7 @@ namespace DTXMania
                                                return c曲リストノード.nPerfect範囲ms;\r
                                        }\r
                                }\r
-                               return ConfigIni.nヒット範囲ms.Perfect;\r
+                               return ConfigIni.nHitRange.Perfect;\r
                        }\r
                }\r
                public int nGreat範囲ms\r
@@ -89,7 +90,7 @@ namespace DTXMania
                                                return c曲リストノード.nGreat範囲ms;\r
                                        }\r
                                }\r
-                               return ConfigIni.nヒット範囲ms.Great;\r
+                               return ConfigIni.nHitRange.Great;\r
                        }\r
                }\r
                public int nGood範囲ms\r
@@ -104,7 +105,7 @@ namespace DTXMania
                                                return c曲リストノード.nGood範囲ms;\r
                                        }\r
                                }\r
-                               return ConfigIni.nヒット範囲ms.Good;\r
+                               return ConfigIni.nHitRange.Good;\r
                        }\r
                }\r
                public int nPoor範囲ms\r
@@ -119,7 +120,7 @@ namespace DTXMania
                                                return c曲リストノード.nPoor範囲ms;\r
                                        }\r
                                }\r
-                               return ConfigIni.nヒット範囲ms.Poor;\r
+                               return ConfigIni.nHitRange.Poor;\r
                        }\r
                }\r
                #endregion\r
@@ -151,7 +152,7 @@ namespace DTXMania
                public bool bApplicationActive { get; private set; }\r
                public bool b次のタイミングで垂直帰線同期切り替えを行う { get; set; }\r
                public bool b次のタイミングで全画面_ウィンドウ切り替えを行う { get; set; }\r
-               public Coordinates Coordinates { get; set; }\r
+               public Coordinates.CCoordinates Coordinates;\r
                public Device Device\r
                {\r
                        get\r
@@ -162,9 +163,9 @@ namespace DTXMania
                public CPluginHost PluginHost { get; private set; }\r
                public List<STPlugin> listプラグイン = new List<STPlugin>();\r
 \r
-               private Size currentClientSize { get; set; }    // #23510 2010.10.27 add yyagi to keep current window size\r
-               //              public static CTimer ct;\r
-               public IntPtr WindowHandle                                      // 2012.10.24 yyagi; to add ASIO support\r
+               private Size currentClientSize { get; set; }    // #23510 2010.10.27 add yyagi to keep current window size\r
+                                                                                                                                                                                                               //              public static CTimer ct;\r
+               public IntPtr WindowHandle                  // 2012.10.24 yyagi; to add ASIO support\r
                {\r
                        get\r
                        {\r
@@ -183,7 +184,6 @@ namespace DTXMania
                public void InitializeInstance()\r
                {\r
                        #region [ strEXEのあるフォルダを決定する ]\r
-                       //-----------------\r
                        // BEGIN #23629 2010.11.13 from: デバッグ時は Application.ExecutablePath が ($SolutionDir)/bin/x86/Debug/ などになり System/ の読み込みに失敗するので、カレントディレクトリを採用する。(プロジェクトのプロパティ→デバッグ→作業ディレクトリが有効になる)\r
 #if DEBUG\r
                        strEXEのあるフォルダ = Environment.CurrentDirectory + @"\";\r
@@ -192,51 +192,36 @@ namespace DTXMania
                        strEXEのあるフォルダ = Path.GetDirectoryName(Application.ExecutablePath) + @"\"; // #23629 2010.11.9 yyagi: set correct pathname where DTXManiaGR.exe is.\r
 #endif\r
                        // END #23629 2010.11.13 from\r
-                       //-----------------\r
                        #endregion\r
 \r
+\r
                        #region [ Config.ini の読込み ]\r
-                       //---------------------\r
-                       ConfigIni = new CConfigIni();\r
-                       string path = strEXEのあるフォルダ + "Config.ini";\r
-                       if (File.Exists(path))\r
-                       {\r
-                               try\r
-                               {\r
-                                       ConfigIni.tファイルから読み込み(path);\r
-                               }\r
-                               catch\r
-                               {\r
-                                       //ConfigIni = new CConfigIni(); // 存在してなければ新規生成\r
-                               }\r
-                       }\r
-                       this.Window.EnableSystemMenu = CDTXMania.Instance.ConfigIni.bIsEnabledSystemMenu;       // #28200 2011.5.1 yyagi\r
+                       ConfigIni = new CConfigXml();\r
+                       CDTXMania.Instance.LoadConfig();\r
+                       // #28200 2011.5.1 yyagi\r
+                       this.Window.EnableSystemMenu = CDTXMania.Instance.ConfigIni.bIsEnabledSystemMenu;\r
                        // 2012.8.22 Config.iniが無いときに初期値が適用されるよう、この設定行をifブロック外に移動\r
-\r
-                       //---------------------\r
                        #endregion\r
 \r
                        #region[座標値読み込み]\r
-                       Coordinates = new Coordinates();\r
-                       UpdateCoordinates();\r
+                       Coordinates = new Coordinates.CCoordinates();\r
                        #endregion\r
 \r
                        #region [ ログ出力開始 ]\r
-                       //---------------------\r
                        Trace.AutoFlush = true;\r
-                       if (ConfigIni.bログ出力)\r
+                       if (ConfigIni.bLog)\r
                        {\r
                                try\r
                                {\r
                                        Trace.Listeners.Add(new CTraceLogListener(new StreamWriter(System.IO.Path.Combine(strEXEのあるフォルダ, "DTXManiaLog.txt"), false, Encoding.GetEncoding("utf-16"))));\r
                                }\r
-                               catch (System.UnauthorizedAccessException)                      // #24481 2011.2.20 yyagi\r
+                               catch (System.UnauthorizedAccessException)          // #24481 2011.2.20 yyagi\r
                                {\r
                                        int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
                                        string[] mes_writeErr = {\r
-                                               "DTXManiaLog.txtへの書き込みができませんでした。書き込みできるようにしてから、再度起動してください。",\r
-                                               "Failed to write DTXManiaLog.txt. Please set it writable and try again."\r
-                                       };\r
+                                                                                               "DTXManiaLog.txtへの書き込みができませんでした。書き込みできるようにしてから、再度起動してください。",\r
+                                                                                               "Failed to write DTXManiaLog.txt. Please set it writable and try again."\r
+                                                                               };\r
                                        MessageBox.Show(mes_writeErr[c], "DTXMania boot error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
                                        Environment.Exit(1);\r
                                }\r
@@ -250,10 +235,8 @@ namespace DTXMania
                        Trace.TraceInformation("OS Version: " + Environment.OSVersion);\r
                        Trace.TraceInformation("ProcessorCount: " + Environment.ProcessorCount.ToString());\r
                        Trace.TraceInformation("CLR Version: " + Environment.Version.ToString());\r
-                       //---------------------\r
                        #endregion\r
                        #region [ DTXVmodeクラス の初期化 ]\r
-                       //---------------------\r
                        //Trace.TraceInformation( "DTXVモードの初期化を行います。" );\r
                        //Trace.Indent();\r
                        try\r
@@ -266,10 +249,8 @@ namespace DTXMania
                        {\r
                                //Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
                        #region [ コンパクトモードスイッチの有無、もしくは、DTXViewerとしての起動 ]\r
-                       //---------------------\r
                        bコンパクトモード = false;\r
                        strコンパクトモードファイル = "";\r
                        string[] commandLineArgs = Environment.GetCommandLineArgs();\r
@@ -292,39 +273,45 @@ namespace DTXMania
                                DTXVmode.ParseArguments(arg);\r
                                if (DTXVmode.Enabled)\r
                                {\r
-                                       DTXVmode.Refreshed = false;                                                             // 初回起動時は再読み込みに走らせない\r
+                                       DTXVmode.Refreshed = false;                             // 初回起動時は再読み込みに走らせない\r
                                        strコンパクトモードファイル = DTXVmode.filename;\r
-                                       switch (DTXVmode.soundDeviceType)                                               // サウンド再生方式の設定\r
+                                       switch (DTXVmode.soundDeviceType)                       // サウンド再生方式の設定\r
                                        {\r
                                                case ESoundDeviceType.DirectSound:\r
-                                                       ConfigIni.nSoundDeviceType = 0;\r
+                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.DSound;\r
                                                        break;\r
                                                case ESoundDeviceType.ExclusiveWASAPI:\r
-                                                       ConfigIni.nSoundDeviceType = 2;\r
+                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.WASAPI;\r
                                                        break;\r
                                                case ESoundDeviceType.ASIO:\r
-                                                       ConfigIni.nSoundDeviceType = 1;\r
-                                                       ConfigIni.nASIODevice = DTXVmode.nASIOdevice;\r
+                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.ASIO;\r
+                                                       ConfigIni.strASIODevice.Index = DTXVmode.nASIOdevice;\r
                                                        break;\r
                                        }\r
 \r
-                                       CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う = DTXVmode.VSyncWait;\r
-                                       CDTXMania.Instance.ConfigIni.bTimeStretch = DTXVmode.TimeStretch;\r
-                                       CDTXMania.Instance.ConfigIni.bDrums有効 = !DTXVmode.GRmode;\r
-                                       CDTXMania.Instance.ConfigIni.bGuitar有効 = true;\r
+                                       CDTXMania.Instance.ConfigIni.bVSyncWait.Value = DTXVmode.VSyncWait;\r
+                                       CDTXMania.Instance.ConfigIni.bTimeStretch.Value = DTXVmode.TimeStretch;\r
+                                       if (DTXVmode.GRmode)\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.eActiveInst.Value = EActiveInstrument.GBOnly;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.eActiveInst.Value = EActiveInstrument.Both;\r
+                                       }\r
 \r
-                                       CDTXMania.Instance.ConfigIni.b全画面モード = false;\r
-                                       CDTXMania.Instance.ConfigIni.nウインドウwidth = CDTXMania.Instance.ConfigIni.nViewerウインドウwidth;\r
-                                       CDTXMania.Instance.ConfigIni.nウインドウheight = CDTXMania.Instance.ConfigIni.nViewerウインドウheight;\r
-                                       CDTXMania.Instance.ConfigIni.n初期ウィンドウ開始位置X = CDTXMania.Instance.ConfigIni.nViewer初期ウィンドウ開始位置X;\r
-                                       CDTXMania.Instance.ConfigIni.n初期ウィンドウ開始位置Y = CDTXMania.Instance.ConfigIni.nViewer初期ウィンドウ開始位置Y;\r
+                                       CDTXMania.Instance.ConfigIni.bFullScreen.Value = false;\r
+                                       CDTXMania.Instance.ConfigIni.rcWindow.W = CDTXMania.Instance.ConfigIni.rcViewerWindow.W;\r
+                                       CDTXMania.Instance.ConfigIni.rcWindow.H = CDTXMania.Instance.ConfigIni.rcViewerWindow.H;\r
+                                       CDTXMania.Instance.ConfigIni.rcWindow.X = CDTXMania.Instance.ConfigIni.rcViewerWindow.X;\r
+                                       CDTXMania.Instance.ConfigIni.rcWindow.Y = CDTXMania.Instance.ConfigIni.rcViewerWindow.Y;\r
                                }\r
-                               else                                                                                                            // 通常のコンパクトモード\r
+                               else                                                        // 通常のコンパクトモード\r
                                {\r
                                        strコンパクトモードファイル = commandLineArgs[1];\r
                                }\r
 \r
-                               if (!File.Exists(strコンパクトモードファイル))              // #32985 2014.1.23 yyagi \r
+                               if (!File.Exists(strコンパクトモードファイル))      // #32985 2014.1.23 yyagi \r
                                {\r
                                        Trace.TraceError("コンパクトモードで指定されたファイルが見つかりません。DTXManiaを終了します。[{0}]", strコンパクトモードファイル);\r
 #if DEBUG\r
@@ -349,11 +336,9 @@ namespace DTXMania
                                        Trace.TraceInformation("コンパクトモードで起動します。[{0}]", strコンパクトモードファイル);\r
                                }\r
                        }\r
-                       //---------------------\r
                        #endregion\r
 \r
                        #region [ Input管理 の初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("DirectInput, MIDI入力の初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
@@ -362,21 +347,21 @@ namespace DTXMania
                                Input管理 = new CInput管理(base.Window.Handle, bUseMIDIIn);\r
                                foreach (IInputDevice device in Input管理.list入力デバイス)\r
                                {\r
-                                       if ((device.e入力デバイス種別 == E入力デバイス種別.Joystick) && !ConfigIni.dicJoystick.ContainsValue(device.GUID))\r
+                                       if ((device.e入力デバイス種別 == E入力デバイス種別.Joystick) && !ConfigIni.dicJoystick.Value.ContainsValue(device.GUID))\r
                                        {\r
                                                int key = 0;\r
-                                               while (ConfigIni.dicJoystick.ContainsKey(key))\r
+                                               while (ConfigIni.dicJoystick.Value.ContainsKey(key))\r
                                                {\r
                                                        key++;\r
                                                }\r
-                                               ConfigIni.dicJoystick.Add(key, device.GUID);\r
+                                               ConfigIni.dicJoystick.Value.Add(key, device.GUID);\r
                                        }\r
                                }\r
                                foreach (IInputDevice device2 in Input管理.list入力デバイス)\r
                                {\r
                                        if (device2.e入力デバイス種別 == E入力デバイス種別.Joystick)\r
                                        {\r
-                                               foreach (KeyValuePair<int, string> pair in ConfigIni.dicJoystick)\r
+                                               foreach (KeyValuePair<int, string> pair in ConfigIni.dicJoystick.Value)\r
                                                {\r
                                                        if (device2.GUID.Equals(pair.Value))\r
                                                        {\r
@@ -396,9 +381,9 @@ namespace DTXMania
 \r
                                int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
                                string[] mes_writeErr = {\r
-                                               "DirectInputまたはMIDI入力の初期化に失敗しました。DTXManiaGRを終了します。",\r
-                                               "Failed to initialize DirectInput (or MIDI-IN)."\r
-                               };\r
+                                                                                               "DirectInputまたはMIDI入力の初期化に失敗しました。DTXManiaGRを終了します。",\r
+                                                                                               "Failed to initialize DirectInput (or MIDI-IN)."\r
+                                                               };\r
                                MessageBox.Show(mes_writeErr[c], "DTXMania boot error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
                                Environment.Exit(1);\r
                        }\r
@@ -406,75 +391,66 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
 \r
                        #region [ ウィンドウ初期化 ]\r
-                       //---------------------\r
-                       base.Window.StartPosition = FormStartPosition.Manual;                                                       // #30675 2013.02.04 ikanick add\r
-                       base.Window.Location = new Point(ConfigIni.n初期ウィンドウ開始位置X, ConfigIni.n初期ウィンドウ開始位置Y);   // #30675 2013.02.04 ikanick add\r
-\r
-                       base.Window.Text = this.strWindowTitle;         // 事前にDTXVmodeの実体を作っておくこと\r
-\r
-                       base.Window.StartPosition = FormStartPosition.Manual;                                                       // #30675 2013.02.04 ikanick add\r
-                       base.Window.Location = new Point(ConfigIni.n初期ウィンドウ開始位置X, ConfigIni.n初期ウィンドウ開始位置Y);   // #30675 2013.02.04 ikanick add\r
-\r
-                       if (ConfigIni.nウインドウwidth <= 0 && ConfigIni.nウインドウheight <= 0)              // #34069 2014.7.24 yyagi 初回起動時は1280x720にする\r
-                       {\r
-                               ConfigIni.nウインドウwidth = 1280;\r
-                               ConfigIni.nウインドウheight = 720;\r
-                               //w = this.Window.Screen.WorkingArea.Width;\r
-                               //h = this.Window.Screen.WorkingArea.Height;\r
-                               //w = base.Window.Screen.Bounds.Width;\r
-                               //h = base.Window.Screen.Bounds.Height;\r
-                               //ConfigIni.nウインドウwidth = SampleFramework.GameWindowSize.Width;\r
-                               //ConfigIni.nウインドウheight = SampleFramework.GameWindowSize.Height;\r
-                       }\r
-\r
-                       base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight);   // #34510 yyagi 2010.10.31 to change window size got from Config.ini\r
+                       // #30675 2013.02.04 ikanick add\r
+                       base.Window.StartPosition = FormStartPosition.Manual;\r
+                       base.Window.Location = new Point(ConfigIni.rcWindow.X, ConfigIni.rcWindow.Y);\r
+                       // 事前にDTXVmodeの実体を作っておくこと\r
+                       base.Window.Text = this.strWindowTitle;\r
+                       base.Window.StartPosition = FormStartPosition.Manual;\r
+                       base.Window.Location = new Point(ConfigIni.rcWindow.X, ConfigIni.rcWindow.Y);\r
+\r
+                       // #34510 yyagi 2010.10.31 to change window size got from Config.ini\r
+                       base.Window.ClientSize = new Size(ConfigIni.rcWindow.W, ConfigIni.rcWindow.H);\r
 #if !WindowedFullscreen\r
                        if (!ConfigIni.bウィンドウモード)                                               // #23510 2010.11.02 yyagi: add; to recover window size in case bootup with fullscreen mode\r
                        {                                                                                                               // #30666 2013.02.02 yyagi: currentClientSize should be always made\r
 #endif\r
-                       currentClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight);\r
+                       currentClientSize = new Size(ConfigIni.rcWindow.W, ConfigIni.rcWindow.H);\r
 #if !WindowedFullscreen\r
                        }\r
 #endif\r
-                       base.Window.MaximizeBox = true;                                                 // #23510 2010.11.04 yyagi: to support maximizing window\r
-                       base.Window.FormBorderStyle = FormBorderStyle.Sizable;  // #23510 2010.10.27 yyagi: changed from FixedDialog to Sizable, to support window resize\r
+                       // #23510 2010.11.04 yyagi: to support maximizing window\r
+                       base.Window.MaximizeBox = true;\r
+                       // #23510 2010.10.27 yyagi: changed from FixedDialog to Sizable, to support window resize\r
+                       base.Window.FormBorderStyle = FormBorderStyle.Sizable;\r
                        // #30666 2013.02.02 yyagi: moved the code to t全画面・ウインドウモード切り替え()\r
                        base.Window.ShowIcon = true;\r
                        base.Window.Icon = Properties.Resources.dtx;\r
                        base.Window.KeyDown += new KeyEventHandler(this.Window_KeyDown);\r
                        base.Window.MouseUp += new MouseEventHandler(this.Window_MouseUp);\r
-                       base.Window.MouseDoubleClick += new MouseEventHandler(this.Window_MouseDoubleClick);    // #23510 2010.11.13 yyagi: to go fullscreen mode\r
-                       base.Window.ResizeEnd += new EventHandler(this.Window_ResizeEnd);                                               // #23510 2010.11.20 yyagi: to set resized window size in Config.ini\r
+                       // #23510 2010.11.13 yyagi: to go fullscreen mode\r
+                       base.Window.MouseDoubleClick += new MouseEventHandler(this.Window_MouseDoubleClick);\r
+                       // #23510 2010.11.20 yyagi: to set resized window size in Config.ini\r
+                       base.Window.ResizeEnd += new EventHandler(this.Window_ResizeEnd);\r
                        base.Window.ApplicationActivated += new EventHandler(this.Window_ApplicationActivated);\r
                        base.Window.ApplicationDeactivated += new EventHandler(this.Window_ApplicationDeactivated);\r
                        base.Window.MouseMove += new MouseEventHandler(this.Window_MouseMove);\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ Direct3D9Exを使うかどうか判定 ]\r
                        #endregion\r
+\r
                        #region [ Direct3D9 デバイスの生成 ]\r
-                       //---------------------\r
                        DeviceSettings settings = new DeviceSettings();\r
 #if WindowedFullscreen\r
-                       settings.Windowed = true;                                                               // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
+                       // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
+                       settings.Windowed = true;\r
 #else\r
                        settings.Windowed = ConfigIni.bウィンドウモード;\r
 #endif\r
                        settings.BackBufferWidth = SampleFramework.GameWindowSize.Width;\r
                        settings.BackBufferHeight = SampleFramework.GameWindowSize.Height;\r
                        //                      settings.BackBufferCount = 3;\r
-                       settings.EnableVSync = ConfigIni.b垂直帰線待ちを行う;\r
+                       settings.EnableVSync = ConfigIni.bVSyncWait;\r
                        //                      settings.BackBufferFormat = Format.A8R8G8B8;\r
-                       //                      settings.MultisampleType = MultisampleType.FourSamples;\r
-                       //                      settings.MultisampleQuality = 4;\r
+                       //      settings.MultisampleType = MultisampleType.FourSamples;\r
+                       //      settings.MultisampleQuality = 4;\r
                        //                      settings.MultisampleType = MultisampleType.None;\r
                        //                      settings.MultisampleQuality = 0;\r
                        settings.Multithreaded = true;\r
-                       \r
 \r
                        try\r
                        {\r
@@ -486,34 +462,38 @@ namespace DTXMania
                                MessageBox.Show(e.Message + e.ToString(), "DTXMania failed to boot: DirectX9 Initialize Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
                                Environment.Exit(-1);\r
                        }\r
-                       Trace.TraceInformation( "DeviceCaps       = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.DeviceCaps.ToString() );\r
-                       Trace.TraceInformation( "DeviceCaps2      = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.DeviceCaps2.ToString() );\r
-                       Trace.TraceInformation( "MaxTextureWidth  = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.MaxTextureWidth );\r
-                       Trace.TraceInformation( "MaxTextureHeight = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.MaxTextureHeight );\r
-                       Trace.TraceInformation( "TextureCaps      = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.TextureCaps.ToString() );\r
-                       \r
+                       Trace.TraceInformation("DeviceCaps       = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.DeviceCaps.ToString());\r
+                       Trace.TraceInformation("DeviceCaps2      = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.DeviceCaps2.ToString());\r
+                       Trace.TraceInformation("MaxTextureWidth  = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.MaxTextureWidth);\r
+                       Trace.TraceInformation("MaxTextureHeight = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.MaxTextureHeight);\r
+                       Trace.TraceInformation("TextureCaps      = " + base.GraphicsDeviceManager.Direct3D9.Device.Capabilities.TextureCaps.ToString());\r
+\r
                        base.IsFixedTimeStep = false;\r
                        //                      base.TargetElapsedTime = TimeSpan.FromTicks( 10000000 / 75 );\r
-                       base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight);   // #23510 2010.10.31 yyagi: to recover window size. width and height are able to get from Config.ini.\r
-                       base.InactiveSleepTime = TimeSpan.FromMilliseconds((float)(ConfigIni.n非フォーカス時スリープms));    // #23568 2010.11.3 yyagi: to support valiable sleep value when !IsActive\r
+                       // #23510 2010.10.31 yyagi: to recover window size. width and height are able to get from Config.ini.\r
+                       base.Window.ClientSize = new Size(ConfigIni.rcWindow.W, ConfigIni.rcWindow.H);\r
+                       // #23568 2010.11.3 yyagi: to support valiable sleep value when !IsActive\r
+                       base.InactiveSleepTime = TimeSpan.FromMilliseconds((float)(ConfigIni.nSleepUnfocusMs));\r
                        // #23568 2010.11.4 ikanick changed ( 1 -> ConfigIni )\r
 #if WindowedFullscreen\r
-                       this.t全画面_ウィンドウモード切り替え();                         // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
+                       // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
+                       this.t全画面_ウィンドウモード切り替え();\r
 #endif\r
                        actFlushGPU = new CActFlushGPU();\r
-                       //---------------------\r
                        #endregion\r
 \r
                        DTX = null;\r
 \r
                        #region [ Skin の初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("スキンの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
                        {\r
-                               Skin = new CSkin(CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderFullName, CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);\r
-                               CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderFullName = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);    // 旧指定のSkinフォルダが消滅していた場合に備える\r
+                               Skin = new CSkin(\r
+                                       CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath,\r
+                                       CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);\r
+                               // 旧指定のSkinフォルダが消滅していた場合に備える\r
+                               CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath.Value = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);\r
                                Trace.TraceInformation("スキンの初期化を完了しました。");\r
                        }\r
                        catch\r
@@ -525,11 +505,9 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
-                       //-----------\r
+\r
                        #region [ Timer の初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("タイマの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
@@ -541,15 +519,13 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ マウス消去用のタイマーを初期化 ]\r
                        ccMouseShow = new CCounter();\r
                        #endregion\r
-                       //-----------\r
 \r
                        #region [ FPS カウンタの初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("FPSカウンタの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
@@ -561,10 +537,9 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ act文字コンソールの初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("文字コンソールの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
@@ -584,15 +559,14 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ Pad の初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("パッドの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
                        {\r
-                               Pad = new CPad(ConfigIni, Input管理);\r
+                               Pad = new CPad();\r
                                Trace.TraceInformation("パッドの初期化を完了しました。");\r
                        }\r
                        catch (Exception exception3)\r
@@ -604,24 +578,23 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ Sound管理 の初期化 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("サウンドデバイスの初期化を行います。");\r
                        Trace.Indent();\r
                        try\r
                        {\r
                                ESoundDeviceType soundDeviceType;\r
-                               switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType)\r
+                               switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType.Value)\r
                                {\r
-                                       case 0:\r
+                                       case ESoundDeviceTypeForConfig.DSound:\r
                                                soundDeviceType = ESoundDeviceType.DirectSound;\r
                                                break;\r
-                                       case 1:\r
+                                       case ESoundDeviceTypeForConfig.ASIO:\r
                                                soundDeviceType = ESoundDeviceType.ASIO;\r
                                                break;\r
-                                       case 2:\r
+                                       case ESoundDeviceTypeForConfig.WASAPI:\r
                                                soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
                                                break;\r
                                        default:\r
@@ -629,12 +602,11 @@ namespace DTXMania
                                                break;\r
                                }\r
                                Sound管理 = new CSound管理(base.Window.Handle,\r
-                                                                                       soundDeviceType,\r
-                                                                                       CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
-                                       // CDTXMania.Instance.ConfigIni.nASIOBufferSizeMs,\r
-                                                                                       0,\r
-                                                                                       CDTXMania.Instance.ConfigIni.nASIODevice,\r
-                                                                                       CDTXMania.Instance.ConfigIni.bUseOSTimer\r
+                                                                                                                                               soundDeviceType,\r
+                                                                                                                                               CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
+                                                                                                                                               0,\r
+                                                                                                                                               CDTXMania.Instance.ConfigIni.strASIODevice.Index,\r
+                                                                                                                                               CDTXMania.Instance.ConfigIni.bUseOSTimer\r
                                );\r
                                //Sound管理 = FDK.CSound管理.Instance;\r
                                //Sound管理.t初期化( soundDeviceType, 0, 0, CDTXMania.Instance.ConfigIni.nASIODevice, base.Window.Handle );\r
@@ -654,8 +626,8 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ Songs管理 の初期化 ]\r
                        //---------------------\r
                        Trace.TraceInformation("曲リストの初期化を行います。");\r
@@ -679,23 +651,20 @@ namespace DTXMania
                        }\r
                        //---------------------\r
                        #endregion\r
+\r
                        #region [ CAvi の初期化 ]\r
-                       //---------------------\r
                        CAvi.t初期化();\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ Random の初期化 ]\r
-                       //---------------------\r
                        Random = new Random((int)Timer.nシステム時刻);\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ ステージの初期化 ]\r
-                       //---------------------\r
                        r現在のステージ = null;\r
                        r直前のステージ = null;\r
                        stage起動 = new CStage起動();\r
                        stageタイトル = new CStageタイトル();\r
-                       //                      stageオプション = new CStageオプション();\r
                        stageコンフィグ = new CStageコンフィグ();\r
                        stage選曲 = new CStage選曲();\r
                        stage曲読み込み = new CStage曲読み込み();\r
@@ -703,12 +672,12 @@ namespace DTXMania
                        stage結果 = new CStage結果();\r
                        stageChangeSkin = new CStageChangeSkin();\r
                        stage終了 = new CStage終了();\r
+\r
                        this.listトップレベルActivities = new List<CActivity>();\r
                        this.listトップレベルActivities.Add(actEnumSongs);\r
                        this.listトップレベルActivities.Add(act文字コンソール);\r
                        this.listトップレベルActivities.Add(stage起動);\r
                        this.listトップレベルActivities.Add(stageタイトル);\r
-                       //                      this.listトップレベルActivities.Add( stageオプション );\r
                        this.listトップレベルActivities.Add(stageコンフィグ);\r
                        this.listトップレベルActivities.Add(stage選曲);\r
                        this.listトップレベルActivities.Add(stage曲読み込み);\r
@@ -717,10 +686,9 @@ namespace DTXMania
                        this.listトップレベルActivities.Add(stageChangeSkin);\r
                        this.listトップレベルActivities.Add(stage終了);\r
                        this.listトップレベルActivities.Add(actFlushGPU);\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ プラグインの検索と生成 ]\r
-                       //---------------------\r
                        PluginHost = new CPluginHost();\r
 \r
                        Trace.TraceInformation("プラグインの検索と生成を行います。");\r
@@ -734,10 +702,9 @@ namespace DTXMania
                        {\r
                                Trace.Unindent();\r
                        }\r
-                       //---------------------\r
                        #endregion\r
+\r
                        #region [ プラグインの初期化 ]\r
-                       //---------------------\r
                        if (this.listプラグイン != null && this.listプラグイン.Count > 0)\r
                        {\r
                                Trace.TraceInformation("プラグインの初期化を行います。");\r
@@ -764,14 +731,11 @@ namespace DTXMania
                                        Trace.Unindent();\r
                                }\r
                        }\r
-\r
-                       //---------------------\r
                        #endregion\r
 \r
                        Trace.TraceInformation("アプリケーションの初期化を完了しました。");\r
 \r
                        #region [ 最初のステージの起動 ]\r
-                       //---------------------\r
                        Trace.TraceInformation("----------------------");\r
                        Trace.TraceInformation("■ 起動");\r
 \r
@@ -784,13 +748,9 @@ namespace DTXMania
                                r現在のステージ = stage起動;\r
                        }\r
                        r現在のステージ.On活性化();\r
-                       //---------------------\r
                        #endregion\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
                public void t全画面_ウィンドウモード切り替え()\r
                {\r
 #if WindowedFullscreen\r
@@ -803,17 +763,17 @@ namespace DTXMania
 #if !WindowedFullscreen\r
                                settings.Windowed = ConfigIni.bウィンドウモード;\r
 #endif\r
-                               if (ConfigIni.bウィンドウモード == false)       // #23510 2010.10.27 yyagi: backup current window size before going fullscreen mode\r
+                               if (ConfigIni.bウィンドウモード == false)   // #23510 2010.10.27 yyagi: backup current window size before going fullscreen mode\r
                                {\r
                                        currentClientSize = this.Window.ClientSize;\r
-                                       ConfigIni.nウインドウwidth = this.Window.ClientSize.Width;\r
-                                       ConfigIni.nウインドウheight = this.Window.ClientSize.Height;\r
+                                       ConfigIni.rcWindow.W = this.Window.ClientSize.Width;\r
+                                       ConfigIni.rcWindow.H = this.Window.ClientSize.Height;\r
                                        //                                      FDK.CTaskBar.ShowTaskBar( false );\r
                                }\r
 #if !WindowedFullscreen\r
                                base.GraphicsDeviceManager.ChangeDevice( settings );\r
 #endif\r
-                               if (ConfigIni.bウィンドウモード == true)        // #23510 2010.10.27 yyagi: to resume window size from backuped value\r
+                               if (ConfigIni.bウィンドウモード == true)    // #23510 2010.10.27 yyagi: to resume window size from backuped value\r
                                {\r
 #if WindowedFullscreen\r
                                        // #30666 2013.2.2 yyagi Don't use Fullscreen mode becasue NVIDIA GeForce is\r
@@ -824,7 +784,7 @@ namespace DTXMania
                                        Instance.Window.WindowState = FormWindowState.Normal;\r
 #endif\r
                                        base.Window.ClientSize =\r
-                                               new Size(currentClientSize.Width, currentClientSize.Height);\r
+                                                       new Size(currentClientSize.Width, currentClientSize.Height);\r
                                        //                                      FDK.CTaskBar.ShowTaskBar( true );\r
                                }\r
 #if WindowedFullscreen\r
@@ -986,8 +946,8 @@ namespace DTXMania
                }\r
                protected override void OnExiting(EventArgs e)\r
                {\r
-                       CPowerPlan.RestoreCurrentPowerPlan();                   // 電源プランを元のものに戻す\r
-                       CPowerManagement.tEnableMonitorSuspend();               // スリープ抑止状態を解除\r
+                       CPowerPlan.RestoreCurrentPowerPlan();           // 電源プランを元のものに戻す\r
+                       CPowerManagement.tEnableMonitorSuspend();       // スリープ抑止状態を解除\r
                        this.t終了処理();\r
                        base.OnExiting(e);\r
                }\r
@@ -1004,7 +964,7 @@ namespace DTXMania
                                CSound管理.rc演奏用タイマ.t更新();\r
 \r
                        if (Input管理 != null)\r
-                               Input管理.tポーリング(this.bApplicationActive, CDTXMania.Instance.ConfigIni.bバッファ入力を行う);\r
+                               Input管理.tポーリング(this.bApplicationActive, CDTXMania.Instance.ConfigIni.bBufferedInput);\r
 \r
                        if (FPS != null)\r
                                FPS.tカウンタ更新();\r
@@ -1015,19 +975,19 @@ namespace DTXMania
                        if (this.Device == null)\r
                                return;\r
 \r
-                       if (this.bApplicationActive)    // DTXMania本体起動中の本体/モニタの省電力モード移行を抑止\r
+                       if (this.bApplicationActive)    // DTXMania本体起動中の本体/モニタの省電力モード移行を抑止\r
                                CPowerManagement.tDisableMonitorSuspend();\r
 \r
                        // #xxxxx 2013.4.8 yyagi; sleepの挿入位置を、EndScnene~Present間から、BeginScene前に移動。描画遅延を小さくするため。\r
                        #region [ スリープ ]\r
-                       if (ConfigIni.nフレーム毎スリープms >= 0)                      // #xxxxx 2011.11.27 yyagi\r
+                       if (ConfigIni.nSleepPerFrameMs >= 0)            // #xxxxx 2011.11.27 yyagi\r
                        {\r
-                               Thread.Sleep(ConfigIni.nフレーム毎スリープms);\r
+                               Thread.Sleep(ConfigIni.nSleepPerFrameMs);\r
                        }\r
                        #endregion\r
 \r
                        #region [ DTXCreatorからの指示 ]\r
-                       if (this.Window.IsReceivedMessage)      // ウインドウメッセージで、\r
+                       if (this.Window.IsReceivedMessage)  // ウインドウメッセージで、\r
                        {\r
                                string strMes = this.Window.strMessage;\r
                                this.Window.IsReceivedMessage = false;\r
@@ -1100,7 +1060,7 @@ namespace DTXMania
 \r
                                CScoreIni scoreIni = null;\r
 \r
-                               if (Control.IsKeyLocked(Keys.CapsLock))                         // #30925 2013.3.11 yyagi; capslock=ON時は、EnumSongsしないようにして、起動負荷とASIOの音切れの関係を確認する\r
+                               if (Control.IsKeyLocked(Keys.CapsLock))             // #30925 2013.3.11 yyagi; capslock=ON時は、EnumSongsしないようにして、起動負荷とASIOの音切れの関係を確認する\r
                                {\r
                                        // → songs.db等の書き込み時だと音切れするっぽい\r
                                        actEnumSongs.On非活性化();\r
@@ -1110,7 +1070,7 @@ namespace DTXMania
                                #region [ 曲検索スレッドの起動/終了 ここに"Enumerating Songs..."表示を集約 ]\r
                                if (!CDTXMania.Instance.bコンパクトモード)\r
                                {\r
-                                       actEnumSongs.On進行描画();                                                  // "Enumerating Songs..."アイコンの描画\r
+                                       actEnumSongs.On進行描画();                          // "Enumerating Songs..."アイコンの描画\r
                                }\r
                                switch (r現在のステージ.eステージID)\r
                                {\r
@@ -1122,15 +1082,15 @@ namespace DTXMania
                                                {\r
                                                        #region [ (特定条件時) 曲検索スレッドの起動・開始 ]\r
                                                        if (r現在のステージ.eステージID == CStage.Eステージ.タイトル &&\r
-                                                                r直前のステージ.eステージID == CStage.Eステージ.起動 &&\r
-                                                                this.n進行描画の戻り値 == (int)CStageタイトル.E戻り値.継続 &&\r
-                                                                !EnumSongs.IsSongListEnumStarted)\r
+                                                                        r直前のステージ.eステージID == CStage.Eステージ.起動 &&\r
+                                                                        this.n進行描画の戻り値 == (int)CStageタイトル.E戻り値.継続 &&\r
+                                                                        !EnumSongs.IsSongListEnumStarted)\r
                                                        {\r
                                                                actEnumSongs.On活性化();\r
                                                                CDTXMania.Instance.stage選曲.bIsEnumeratingSongs = true;\r
-                                                               EnumSongs.Init(CDTXMania.Instance.Songs管理.listSongsDB, CDTXMania.Instance.Songs管理.nSongsDBから取得できたスコア数);   // songs.db情報と、取得した曲数を、新インスタンスにも与える\r
-                                                               EnumSongs.StartEnumFromDisk();          // 曲検索スレッドの起動・開始\r
-                                                               if (CDTXMania.Instance.Songs管理.nSongsDBから取得できたスコア数 == 0)      // もし初回起動なら、検索スレッドのプライオリティをLowestでなくNormalにする\r
+                                                               EnumSongs.Init(CDTXMania.Instance.Songs管理.listSongsDB, CDTXMania.Instance.Songs管理.nSongsDBから取得できたスコア数); // songs.db情報と、取得した曲数を、新インスタンスにも与える\r
+                                                               EnumSongs.StartEnumFromDisk();      // 曲検索スレッドの起動・開始\r
+                                                               if (CDTXMania.Instance.Songs管理.nSongsDBから取得できたスコア数 == 0)    // もし初回起動なら、検索スレッドのプライオリティをLowestでなくNormalにする\r
                                                                {\r
                                                                        EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);\r
                                                                }\r
@@ -1142,11 +1102,11 @@ namespace DTXMania
                                                        {\r
                                                                switch (this.n進行描画の戻り値)\r
                                                                {\r
-                                                                       case 0:         // 何もない\r
-                                                                               //if ( CDTXMania.Instance.stage選曲.bIsEnumeratingSongs )\r
+                                                                       case 0:     // 何もない\r
+                                                                                                                       //if ( CDTXMania.Instance.stage選曲.bIsEnumeratingSongs )\r
                                                                                if (!CDTXMania.Instance.stage選曲.bIsPlayingPremovie)\r
                                                                                {\r
-                                                                                       EnumSongs.Resume();                                             // #27060 2012.2.6 yyagi 中止していたバックグランド曲検索を再開\r
+                                                                                       EnumSongs.Resume();                     // #27060 2012.2.6 yyagi 中止していたバックグランド曲検索を再開\r
                                                                                        EnumSongs.IsSlowdown = false;\r
                                                                                }\r
                                                                                else\r
@@ -1157,8 +1117,8 @@ namespace DTXMania
                                                                                actEnumSongs.On活性化();\r
                                                                                break;\r
 \r
-                                                                       case 2:         // 曲決定\r
-                                                                               EnumSongs.Suspend();                                            // #27060 バックグラウンドの曲検索を一時停止\r
+                                                                       case 2:     // 曲決定\r
+                                                                               EnumSongs.Suspend();                        // #27060 バックグラウンドの曲検索を一時停止\r
                                                                                actEnumSongs.On非活性化();\r
                                                                                break;\r
                                                                }\r
@@ -1167,9 +1127,9 @@ namespace DTXMania
 \r
                                                        #region [ 曲探索中断待ち待機 ]\r
                                                        if (r現在のステージ.eステージID == CStage.Eステージ.曲読み込み && !EnumSongs.IsSongListEnumCompletelyDone &&\r
-                                                               EnumSongs.thDTXFileEnumerate != null)                                                   // #28700 2012.6.12 yyagi; at Compact mode, enumerating thread does not exist.\r
+                                                                       EnumSongs.thDTXFileEnumerate != null)                           // #28700 2012.6.12 yyagi; at Compact mode, enumerating thread does not exist.\r
                                                        {\r
-                                                               EnumSongs.WaitUntilSuspended();                                                                 // 念のため、曲検索が一時中断されるまで待機\r
+                                                               EnumSongs.WaitUntilSuspended();                                 // 念のため、曲検索が一時中断されるまで待機\r
                                                        }\r
                                                        #endregion\r
 \r
@@ -1222,7 +1182,7 @@ namespace DTXMania
                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                        {\r
                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                               pg.plugin.Onステージ変更();\r
                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                        }\r
 \r
@@ -1295,7 +1255,7 @@ namespace DTXMania
                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                {\r
                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                       pg.plugin.Onステージ変更();\r
                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                }\r
 \r
@@ -1304,62 +1264,6 @@ namespace DTXMania
                                                #endregion\r
                                                break;\r
 \r
-                                       //                                      case CStage.Eステージ.オプション:\r
-                                       #region [ *** ]\r
-                                       //                                              //-----------------------------\r
-                                       //                                              if( this.n進行描画の戻り値 != 0 )\r
-                                       //                                              {\r
-                                       //                                                      switch( r直前のステージ.eステージID )\r
-                                       //                                                      {\r
-                                       //                                                              case CStage.Eステージ.タイトル:\r
-                                       //                                                                      #region [ *** ]\r
-                                       //                                                                      //-----------------------------\r
-                                       //                                                                      r現在のステージ.On非活性化();\r
-                                       //                                                                      Trace.TraceInformation( "----------------------" );\r
-                                       //                                                                      Trace.TraceInformation( "■ タイトル" );\r
-                                       //                                                                      stageタイトル.On活性化();\r
-                                       //                                                                      r直前のステージ = r現在のステージ;\r
-                                       //                                                                      r現在のステージ = stageタイトル;\r
-                                       //                                              \r
-                                       //                                                                      foreach( STPlugin pg in this.listプラグイン )\r
-                                       //                                                                      {\r
-                                       //                                                                              Directory.SetCurrentDirectory( pg.strプラグインフォルダ );\r
-                                       //                                                                              pg.plugin.Onステージ変更();\r
-                                       //                                                                              Directory.SetCurrentDirectory( CDTXMania.Instance.strEXEのあるフォルダ );\r
-                                       //                                                                      }\r
-                                       //                                              \r
-                                       //                                                                      this.tガベージコレクションを実行する();\r
-                                       //                                                                      break;\r
-                                       //                                                              //-----------------------------\r
-                                       //                                                                      #endregion\r
-                                       //\r
-                                       //                                                              case CStage.Eステージ.選曲:\r
-                                       //                                                                      #region [ *** ]\r
-                                       //                                                                      //-----------------------------\r
-                                       //                                                                      r現在のステージ.On非活性化();\r
-                                       //                                                                      Trace.TraceInformation( "----------------------" );\r
-                                       //                                                                      Trace.TraceInformation( "■ 選曲" );\r
-                                       //                                                                      stage選曲.On活性化();\r
-                                       //                                                                      r直前のステージ = r現在のステージ;\r
-                                       //                                                                      r現在のステージ = stage選曲;\r
-                                       //\r
-                                       //                                                                      foreach( STPlugin pg in this.listプラグイン )\r
-                                       //                                                                      {\r
-                                       //                                                                              Directory.SetCurrentDirectory( pg.strプラグインフォルダ );\r
-                                       //                                                                              pg.plugin.Onステージ変更();\r
-                                       //                                                                              Directory.SetCurrentDirectory( CDTXMania.Instance.strEXEのあるフォルダ );\r
-                                       //                                                                      }\r
-                                       //\r
-                                       //                                                                      this.tガベージコレクションを実行する();\r
-                                       //                                                                      break;\r
-                                       //                                                              //-----------------------------\r
-                                       //                                                                      #endregion\r
-                                       //                                                      }\r
-                                       //                                              }\r
-                                       //                                              //-----------------------------\r
-                                       #endregion\r
-                                       //                                              break;\r
-\r
                                        case CStage.Eステージ.コンフィグ:\r
                                                #region [ *** ]\r
                                                //-----------------------------\r
@@ -1380,14 +1284,14 @@ namespace DTXMania
                                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                                        {\r
                                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                               pg.plugin.Onステージ変更();\r
                                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                        }\r
 \r
                                                                        this.tガベージコレクションを実行する();\r
                                                                        break;\r
                                                                //-----------------------------\r
-                                                                       #endregion\r
+                                                               #endregion\r
 \r
                                                                case CStage.Eステージ.選曲:\r
                                                                        #region [ *** ]\r
@@ -1402,13 +1306,13 @@ namespace DTXMania
                                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                                        {\r
                                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                               pg.plugin.Onステージ変更();\r
                                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                        }\r
 \r
                                                                        this.tガベージコレクションを実行する();\r
                                                                        break;\r
-                                                               //-----------------------------\r
+                                                                       //-----------------------------\r
                                                                        #endregion\r
                                                        }\r
                                                }\r
@@ -1434,14 +1338,14 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
 \r
                                                                this.tガベージコレクションを実行する();\r
                                                                break;\r
                                                        //-----------------------------\r
-                                                               #endregion\r
+                                                       #endregion\r
 \r
                                                        case (int)CStage選曲.E戻り値.選曲した:\r
                                                                #region [ *** ]\r
@@ -1456,35 +1360,13 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
 \r
                                                                this.tガベージコレクションを実行する();\r
                                                                break;\r
                                                        //-----------------------------\r
-                                                               #endregion\r
-\r
-                                                       //                                                      case (int) CStage選曲.E戻り値.オプション呼び出し:\r
-                                                       #region [ *** ]\r
-                                                       //                                                              //-----------------------------\r
-                                                       //                                                              r現在のステージ.On非活性化();\r
-                                                       //                                                              Trace.TraceInformation( "----------------------" );\r
-                                                       //                                                              Trace.TraceInformation( "■ オプション" );\r
-                                                       //                                                              stageオプション.On活性化();\r
-                                                       //                                                              r直前のステージ = r現在のステージ;\r
-                                                       //                                                              r現在のステージ = stageオプション;\r
-                                                       //\r
-                                                       //                                                              foreach( STPlugin pg in this.listプラグイン )\r
-                                                       //                                                              {\r
-                                                       //                                                                      Directory.SetCurrentDirectory( pg.strプラグインフォルダ );\r
-                                                       //                                                                      pg.plugin.Onステージ変更();\r
-                                                       //                                                                      Directory.SetCurrentDirectory( CDTXMania.Instance.strEXEのあるフォルダ );\r
-                                                       //                                                              }\r
-                                                       //\r
-                                                       //                                                              this.tガベージコレクションを実行する();\r
-                                                       //                                                              break;\r
-                                                       //                                                      //-----------------------------\r
                                                        #endregion\r
 \r
                                                        case (int)CStage選曲.E戻り値.コンフィグ呼び出し:\r
@@ -1500,14 +1382,14 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
 \r
                                                                this.tガベージコレクションを実行する();\r
                                                                break;\r
                                                        //-----------------------------\r
-                                                               #endregion\r
+                                                       #endregion\r
 \r
                                                        case (int)CStage選曲.E戻り値.スキン変更:\r
 \r
@@ -1520,7 +1402,7 @@ namespace DTXMania
                                                                r直前のステージ = r現在のステージ;\r
                                                                r現在のステージ = stageChangeSkin;\r
                                                                break;\r
-                                                       //-----------------------------\r
+                                                               //-----------------------------\r
                                                                #endregion\r
                                                }\r
                                                //-----------------------------\r
@@ -1530,10 +1412,10 @@ namespace DTXMania
                                        case CStage.Eステージ.曲読み込み:\r
                                                #region [ *** ]\r
                                                //-----------------------------\r
-                                               DTXVmode.Refreshed = false;             // 曲のリロード中に発生した再リロードは、無視する。\r
+                                               DTXVmode.Refreshed = false;     // 曲のリロード中に発生した再リロードは、無視する。\r
                                                if (this.n進行描画の戻り値 != 0)\r
                                                {\r
-                                                       CDTXMania.Instance.Pad.st検知したデバイス.Clear();      // 入力デバイスフラグクリア(2010.9.11)\r
+                                                       CDTXMania.Instance.Pad.st検知したデバイス.Clear();  // 入力デバイスフラグクリア(2010.9.11)\r
                                                        r現在のステージ.On非活性化();\r
                                                        #region [ ESC押下時は、曲の読み込みを中止して選曲画面に戻る ]\r
                                                        if (this.n進行描画の戻り値 == (int)E曲読込画面の戻り値.読込中止)\r
@@ -1550,7 +1432,7 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
                                                                break;\r
@@ -1565,7 +1447,7 @@ namespace DTXMania
                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                        {\r
                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                               pg.plugin.Onステージ変更();\r
                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                        }\r
 \r
@@ -1642,14 +1524,19 @@ namespace DTXMania
                                                                if (DTXVmode.NeedReload)\r
                                                                {\r
                                                                        CDTXMania.Instance.stage演奏画面.t再読込();\r
-\r
-                                                                       CDTXMania.Instance.ConfigIni.bDrums有効 = !DTXVmode.GRmode;\r
-                                                                       CDTXMania.Instance.ConfigIni.bGuitar有効 = true;\r
-                                                                       CDTXMania.Instance.ConfigIni.bTimeStretch = DTXVmode.TimeStretch;\r
+                                                                       if (DTXVmode.GRmode)\r
+                                                                       {\r
+                                                                               CDTXMania.Instance.ConfigIni.eActiveInst.Value = EActiveInstrument.GBOnly;\r
+                                                                       }\r
+                                                                       else\r
+                                                                       {\r
+                                                                               CDTXMania.Instance.ConfigIni.eActiveInst.Value = EActiveInstrument.Both;\r
+                                                                       }\r
+                                                                       CDTXMania.Instance.ConfigIni.bTimeStretch.Value = DTXVmode.TimeStretch;\r
                                                                        CSound管理.bIsTimeStretch = DTXVmode.TimeStretch;\r
-                                                                       if (CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う != DTXVmode.VSyncWait)\r
+                                                                       if (CDTXMania.Instance.ConfigIni.bVSyncWait != DTXVmode.VSyncWait)\r
                                                                        {\r
-                                                                               CDTXMania.Instance.ConfigIni.b垂直帰線待ちを行う = DTXVmode.VSyncWait;\r
+                                                                               CDTXMania.Instance.ConfigIni.bVSyncWait.Value = DTXVmode.VSyncWait;\r
                                                                                CDTXMania.Instance.b次のタイミングで垂直帰線同期切り替えを行う = true;\r
                                                                        }\r
                                                                }\r
@@ -1673,7 +1560,7 @@ namespace DTXMania
                                                                r現在のステージ = stage曲読み込み;\r
                                                                this.tガベージコレクションを実行する();\r
                                                                break;\r
-                                                               #endregion\r
+                                                       #endregion\r
 \r
                                                        //case (int) E演奏画面の戻り値.再演奏:\r
                                                        #region [ 再読み込み無しで、再演奏 ]\r
@@ -1687,7 +1574,7 @@ namespace DTXMania
                                                                #region [ 演奏キャンセル ]\r
                                                                //-----------------------------\r
                                                                scoreIni = this.tScoreIniへBGMAdjustとHistoryとPlayCountを更新("Play canceled");\r
-                                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)          // #35417 2015.8.18 yyagi Gt/Bsを入れ替えていたなら、演奏設定を元に戻す\r
+                                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)      // #35417 2015.8.18 yyagi Gt/Bsを入れ替えていたなら、演奏設定を元に戻す\r
                                                                {\r
                                                                        //CDTXMania.Instance.DTX.SwapGuitarBassInfos();                                         // 譜面情報も元に戻す (現在は再演奏機能なしのため、元に戻す必要はない)\r
                                                                }\r
@@ -1750,7 +1637,7 @@ namespace DTXMania
                                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                                        {\r
                                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                               pg.plugin.Onステージ変更();\r
                                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                        }\r
                                                                        //---------------------\r
@@ -1760,7 +1647,7 @@ namespace DTXMania
                                                                }\r
                                                                break;\r
                                                        //-----------------------------\r
-                                                               #endregion\r
+                                                       #endregion\r
 \r
                                                        case (int)E演奏画面の戻り値.ステージ失敗:\r
                                                                #region [ 演奏失敗(StageFailed) ]\r
@@ -1798,7 +1685,7 @@ namespace DTXMania
                                                                        foreach (STPlugin pg in this.listプラグイン)\r
                                                                        {\r
                                                                                Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                               pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                               pg.plugin.Onステージ変更();\r
                                                                                Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                        }\r
                                                                        //---------------------\r
@@ -1808,20 +1695,17 @@ namespace DTXMania
                                                                }\r
                                                                break;\r
                                                        //-----------------------------\r
-                                                               #endregion\r
+                                                       #endregion\r
 \r
                                                        case (int)E演奏画面の戻り値.ステージクリア:\r
                                                                #region [ 演奏クリア ]\r
                                                                //-----------------------------\r
-                                                               STDGBVALUE<CScoreIni.C演奏記録> record;\r
-                                                               CChip[] chipArray = new CChip[10];\r
-\r
-                                                               chipArray = stage演奏画面.GetNoChipDrums();\r
+                                                               STDGBSValue<CScoreIni.C演奏記録> record;\r
                                                                record = stage演奏画面.Record;\r
 \r
                                                                double playskill = 0.0;\r
 \r
-                                                               for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+                                                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                                                                {\r
                                                                        if (!record[inst].b全AUTOである && record[inst].n全チップ数 > 0)\r
                                                                        {\r
@@ -1860,7 +1744,7 @@ namespace DTXMania
                                                                                str = string.Format("Cleared (E: {0:F2})", playskill);\r
                                                                                break;\r
 \r
-                                                                       case CScoreIni.ERANK.UNKNOWN:   // #23534 2010.10.28 yyagi add: 演奏チップが0個のとき\r
+                                                                       case CScoreIni.ERANK.UNKNOWN:   // #23534 2010.10.28 yyagi add: 演奏チップが0個のとき\r
                                                                                str = "Cleared (No chips)";\r
                                                                                break;\r
                                                                }\r
@@ -1882,7 +1766,7 @@ namespace DTXMania
                                                                Trace.TraceInformation("----------------------");\r
                                                                Trace.TraceInformation("■ 結果");\r
                                                                stage結果.st演奏記録 = record;\r
-                                                               stage結果.r空うちドラムチップ = chipArray;\r
+                                                               stage結果.r空うちドラムチップ = stage演奏画面.GetNoChipDrums();\r
                                                                stage結果.On活性化();\r
                                                                r直前のステージ = r現在のステージ;\r
                                                                r現在のステージ = stage結果;\r
@@ -1892,14 +1776,14 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
                                                                //---------------------\r
                                                                #endregion\r
 \r
                                                                break;\r
-                                                       //-----------------------------\r
+                                                               //-----------------------------\r
                                                                #endregion\r
                                                }\r
                                                //-----------------------------\r
@@ -1913,9 +1797,9 @@ namespace DTXMania
                                                {\r
                                                        // #35417 2015.08.30 chnmr0 changed : ステージクリア処理で入れ替えるため元に戻した\r
                                                        // #35417 2015.8.18 yyagi: AUTO系のフラグ入れ替えは削除可能!?。以後AUTOフラグに全くアクセスしておらず、意味がないため。\r
-                                                       if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)          // #24415 2011.2.27 yyagi Gt/Bsを入れ替えていたなら、Auto状態をリザルト画面終了後に元に戻す\r
+                                                       if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)      // #24415 2011.2.27 yyagi Gt/Bsを入れ替えていたなら、Auto状態をリザルト画面終了後に元に戻す\r
                                                        {\r
-                                                               CDTXMania.Instance.ConfigIni.SwapGuitarBassInfos_AutoFlags();   // Auto入れ替え\r
+                                                               CDTXMania.Instance.ConfigIni.SwapGuitarBassInfos_AutoFlags();   // Auto入れ替え\r
                                                        }\r
 \r
                                                        DTX.t全チップの再生一時停止();\r
@@ -1932,7 +1816,7 @@ namespace DTXMania
                                                                foreach (STPlugin pg in this.listプラグイン)\r
                                                                {\r
                                                                        Directory.SetCurrentDirectory(pg.strプラグインフォルダ);\r
-                                                                       pg.plugin.Onステージ変更(CDTXMania.Instance.ConfigIni);\r
+                                                                       pg.plugin.Onステージ変更();\r
                                                                        Directory.SetCurrentDirectory(CDTXMania.Instance.strEXEのあるフォルダ);\r
                                                                }\r
 \r
@@ -1980,11 +1864,11 @@ namespace DTXMania
                        // Present()は game.csのOnFrameEnd()に登録された、GraphicsDeviceManager.game_FrameEnd() 内で実行されるので不要\r
                        // (つまり、Present()は、Draw()完了後に実行される)\r
 #if !GPUFlushAfterPresent\r
-                       actFlushGPU.On進行描画();           // Flush GPU    // EndScene()~Present()間 (つまりVSync前) でFlush実行\r
+                       actFlushGPU.On進行描画();       // Flush GPU        // EndScene()~Present()間 (つまりVSync前) でFlush実行\r
 #endif\r
                        if (Sound管理.GetCurrentSoundDeviceType() != "DirectSound")\r
                        {\r
-                               Sound管理.t再生中の処理をする();     // サウンドバッファの更新; 画面描画と同期させることで、スクロールをスムーズにする\r
+                               Sound管理.t再生中の処理をする();   // サウンドバッファの更新; 画面描画と同期させることで、スクロールをスムーズにする\r
                        }\r
 \r
                        #region [ マウスカーソル消去制御 ]\r
@@ -1998,7 +1882,7 @@ namespace DTXMania
                        #region [ 全画面・ウインドウ切り替え ]\r
                        if (this.b次のタイミングで全画面_ウィンドウ切り替えを行う)\r
                        {\r
-                               ConfigIni.b全画面モード = !ConfigIni.b全画面モード;\r
+                               // ConfigIni.bFullScreen.Value = !ConfigIni.bFullScreen;\r
                                Instance.t全画面_ウィンドウモード切り替え();\r
                                this.b次のタイミングで全画面_ウィンドウ切り替えを行う = false;\r
                        }\r
@@ -2006,57 +1890,86 @@ namespace DTXMania
                        #region [ 垂直基線同期切り替え ]\r
                        if (this.b次のタイミングで垂直帰線同期切り替えを行う)\r
                        {\r
-                               bool bIsMaximized = this.Window.IsMaximized;                                                                                    // #23510 2010.11.3 yyagi: to backup current window mode before changing VSyncWait\r
-                               currentClientSize = this.Window.ClientSize;                                                                                             // #23510 2010.11.3 yyagi: to backup current window size before changing VSyncWait\r
+                               bool bIsMaximized = this.Window.IsMaximized;                                            // #23510 2010.11.3 yyagi: to backup current window mode before changing VSyncWait\r
+                               currentClientSize = this.Window.ClientSize;                                             // #23510 2010.11.3 yyagi: to backup current window size before changing VSyncWait\r
                                DeviceSettings currentSettings = Instance.GraphicsDeviceManager.CurrentSettings;\r
-                               currentSettings.EnableVSync = ConfigIni.b垂直帰線待ちを行う;\r
+                               currentSettings.EnableVSync = ConfigIni.bVSyncWait;\r
                                Instance.GraphicsDeviceManager.ChangeDevice(currentSettings);\r
                                this.b次のタイミングで垂直帰線同期切り替えを行う = false;\r
-                               base.Window.ClientSize = new Size(currentClientSize.Width, currentClientSize.Height);   // #23510 2010.11.3 yyagi: to resume window size after changing VSyncWait\r
+                               base.Window.ClientSize = new Size(currentClientSize.Width, currentClientSize.Height);   // #23510 2010.11.3 yyagi: to resume window size after changing VSyncWait\r
                                if (bIsMaximized)\r
                                {\r
-                                       this.Window.WindowState = FormWindowState.Maximized;                                                            // #23510 2010.11.3 yyagi: to resume window mode after changing VSyncWait\r
+                                       this.Window.WindowState = FormWindowState.Maximized;                                // #23510 2010.11.3 yyagi: to resume window mode after changing VSyncWait\r
                                }\r
                        }\r
                        #endregion\r
                }\r
 \r
-               // その他\r
-\r
                /// <summary>\r
-               /// 座標値を読み込む。Coordinates メンバ初期化後いつ呼び出しても構わない\r
+               /// XML ファイルからオブジェクトを生成します\r
                /// </summary>\r
-               public void UpdateCoordinates()\r
+               /// <param name="xmlfile">オブジェクトが記述される XML のパス。これは DataContract によってシリアライズされていなければなりません。</param>\r
+               /// <returns>生成したオブジェクト。正しく生成できなかった場合 null 。</returns>\r
+               public static object DeserializeXML(string xmlpath, Type t)\r
                {\r
-                       string coordXml = strEXEのあるフォルダ + "Coordinates.xml";\r
-\r
-                       // デシリアライズ\r
-                       if (File.Exists(coordXml))\r
+                       object ret = null;\r
+                       try\r
                        {\r
-                               using (XmlReader xr = XmlReader.Create(coordXml))\r
+                               if (File.Exists(xmlpath))\r
                                {\r
-                                       DataContractSerializer serializer = new DataContractSerializer(typeof(Coordinates));\r
-                                       //Coordinates = (DisplayXML)serializer.ReadObject(xr);\r
+                                       using (XmlReader xr = XmlReader.Create(xmlpath))\r
+                                       {\r
+                                               DataContractSerializer serializer = new DataContractSerializer(t);\r
+                                               ret = serializer.ReadObject(xr);\r
+                                       }\r
                                }\r
                        }\r
-                       // シリアライズ\r
+                       catch\r
+                       {\r
+                               ret = null;\r
+                       }\r
+                       return ret;\r
+               }\r
+\r
+               /// <summary>\r
+               /// オブジェクトから XML ファイルを生成します。\r
+               /// </summary>\r
+               /// <param name="xmlfile">XML ファイルのパス。</param>\r
+               /// <param name="obj">XML としてシリアライズするオブジェクト。DataContract 属性を持つクラスからインスタンス化されたオブジェクトです。</param>\r
+               public static void SerializeXML(string xmlpath, object obj)\r
+               {\r
                        XmlWriterSettings settings = new XmlWriterSettings();\r
                        settings.IndentChars = "  ";\r
                        settings.Indent = true;\r
                        settings.NewLineChars = Environment.NewLine;\r
                        settings.Encoding = new System.Text.UTF8Encoding(false);\r
-                       using (XmlWriter xw = XmlWriter.Create(coordXml, settings))\r
+                       using (XmlWriter xw = XmlWriter.Create(xmlpath, settings))\r
+                       {\r
+                               DataContractSerializer serializer = new DataContractSerializer(obj.GetType());\r
+                               serializer.WriteObject(xw, obj);\r
+                       }\r
+               }\r
+\r
+               public void SaveConfig()\r
+               {\r
+                       CDTXMania.SerializeXML(strEXEのあるフォルダ + "Config.xml", ConfigIni);\r
+               }\r
+\r
+               public void LoadConfig()\r
+               {\r
+                       string path = strEXEのあるフォルダ + "Config.xml";\r
+\r
+                       if (!File.Exists(path))\r
                        {\r
-                               DataContractSerializer serializer = new DataContractSerializer(typeof(Coordinates));\r
-                               serializer.WriteObject(xw, Coordinates);\r
+                               SaveConfig();\r
                        }\r
-                       // もう一度デシリアライズ\r
-                       if (File.Exists(coordXml))\r
+                       if (File.Exists(path))\r
                        {\r
-                               using (XmlReader xr = XmlReader.Create(coordXml))\r
+                               ConfigIni = (CConfigXml)CDTXMania.DeserializeXML(path, typeof(CConfigXml));\r
+                               if (ConfigIni == null)\r
                                {\r
-                                       DataContractSerializer serializer = new DataContractSerializer(typeof(Coordinates));\r
-                                       Coordinates = (Coordinates)serializer.ReadObject(xr);\r
+                                       ConfigIni = new CConfigXml();\r
+                                       SaveConfig();\r
                                }\r
                        }\r
                }\r
@@ -2128,7 +2041,7 @@ namespace DTXMania
                                #endregion\r
                                #region [ 現在のステージの終了処理 ]\r
                                //---------------------\r
-                               if (CDTXMania.Instance.r現在のステージ != null && CDTXMania.Instance.r現在のステージ.b活性化してる)         // #25398 2011.06.07 MODIFY FROM\r
+                               if (CDTXMania.Instance.r現在のステージ != null && CDTXMania.Instance.r現在のステージ.b活性化してる)     // #25398 2011.06.07 MODIFY FROM\r
                                {\r
                                        Trace.TraceInformation("現在のステージを終了します。");\r
                                        Trace.Indent();\r
@@ -2358,14 +2271,16 @@ namespace DTXMania
                                //---------------------\r
                                Trace.TraceInformation("Config.ini を出力します。");\r
                                //                              if ( ConfigIni.bIsSwappedGuitarBass )                   // #24063 2011.1.16 yyagi ギターベースがスワップしているときは元に戻す\r
-                               if (ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped) // #24415 2011.2.21 yyagi FLIP中かつ演奏中にalt-f4で終了したときは、AUTOのフラグをswapして戻す\r
+                               if (ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped) // #24415 2011.2.21 yyagi FLIP中かつ演奏中にalt-f4で終了したときは、AUTOのフラグをswapして戻す\r
                                {\r
                                        ConfigIni.SwapGuitarBassInfos_AutoFlags();\r
                                }\r
-                               if (ConfigIni.bIsSwappedGuitarBass_PlaySettingsAreSwapped)      // #35417 2015/8/18 yyagi FLIP中かつ演奏中にalt-f4で終了したときは、演奏設定のフラグをswapして戻す\r
-                               {\r
-                                       ConfigIni.SwapGuitarBassInfos_PlaySettings();\r
-                               }\r
+                               /*\r
+                                       if (ConfigIni.bIsSwappedGuitarBass_PlaySettingsAreSwapped)  // #35417 2015/8/18 yyagi FLIP中かつ演奏中にalt-f4で終了したときは、演奏設定のフラグをswapして戻す\r
+                                       {\r
+                                                       ConfigIni.SwapGuitarBassInfos_PlaySettings();\r
+                                       }\r
+                                */\r
                                string str = strEXEのあるフォルダ + "Config.ini";\r
                                Trace.Indent();\r
                                try\r
@@ -2377,7 +2292,7 @@ namespace DTXMania
                                        }\r
                                        else\r
                                        {\r
-                                               ConfigIni.t書き出し(str);\r
+                                               CDTXMania.Instance.SaveConfig();\r
                                                Trace.TraceInformation("保存しました。({0})", str);\r
                                        }\r
                                }\r
@@ -2422,7 +2337,7 @@ namespace DTXMania
                }\r
                private CScoreIni tScoreIniへBGMAdjustとHistoryとPlayCountを更新(string str新ヒストリ行)\r
                {\r
-                       STDGBVALUE<bool> isUpdated = new STDGBVALUE<bool>();\r
+                       STDGBSValue<bool> isUpdated = new STDGBSValue<bool>();\r
                        string strFilename = DTX.strファイル名の絶対パス + ".score.ini";\r
                        CScoreIni ini = new CScoreIni(strFilename);\r
                        if (!File.Exists(strFilename))\r
@@ -2430,18 +2345,18 @@ namespace DTXMania
                                ini.stファイル.Title = DTX.TITLE;\r
                                ini.stファイル.Name = DTX.strファイル名;\r
                                ini.stファイル.Hash = CScoreIni.tファイルのMD5を求めて返す(DTX.strファイル名の絶対パス);\r
-                               for ( E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; ++i)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
                                {\r
                                        ini.stセクション.HiScore[i].nPerfectになる範囲ms = nPerfect範囲ms;\r
                                        ini.stセクション.HiScore[i].nGreatになる範囲ms = nGreat範囲ms;\r
                                        ini.stセクション.HiScore[i].nGoodになる範囲ms = nGood範囲ms;\r
                                        ini.stセクション.HiScore[i].nPoorになる範囲ms = nPoor範囲ms;\r
-                                       \r
+\r
                                        ini.stセクション.HiSkill[i].nPerfectになる範囲ms = nPerfect範囲ms;\r
                                        ini.stセクション.HiSkill[i].nGreatになる範囲ms = nGreat範囲ms;\r
                                        ini.stセクション.HiSkill[i].nGoodになる範囲ms = nGood範囲ms;\r
                                        ini.stセクション.HiSkill[i].nPoorになる範囲ms = nPoor範囲ms;\r
-                                       \r
+\r
                                        ini.stセクション.LastPlay[i].nPerfectになる範囲ms = nPerfect範囲ms;\r
                                        ini.stセクション.LastPlay[i].nGreatになる範囲ms = nGreat範囲ms;\r
                                        ini.stセクション.LastPlay[i].nGoodになる範囲ms = nGood範囲ms;\r
@@ -2450,7 +2365,7 @@ namespace DTXMania
                        }\r
                        ini.stファイル.BGMAdjust = DTX.nBGMAdjust;\r
                        isUpdated = CScoreIni.t更新条件を取得する();\r
-                       if ( isUpdated.Drums || isUpdated.Guitar || isUpdated.Bass )\r
+                       if (isUpdated.Drums || isUpdated.Guitar || isUpdated.Bass)\r
                        {\r
                                if (isUpdated.Drums)\r
                                {\r
@@ -2476,7 +2391,7 @@ namespace DTXMania
                                        }\r
                                }\r
                        }\r
-                       if (ConfigIni.bScoreIniを出力する)\r
+                       if (ConfigIni.bScoreIni)\r
                        {\r
                                ini.t書き出し(strFilename);\r
                        }\r
@@ -2624,14 +2539,14 @@ namespace DTXMania
                        }\r
                        else\r
                        {\r
-                               for (int i = 0; i < 0x10; i++)\r
+                               for (int i = 0; i < CConfigXml.AssignableCodes; i++)\r
                                {\r
-                                       if (ConfigIni.KeyAssign.System.Capture[i].コード > 0 &&\r
-                                                e.KeyCode == DeviceConstantConverter.KeyToKeyCode((SlimDX.DirectInput.Key)ConfigIni.KeyAssign.System.Capture[i].コード))\r
+                                       if (ConfigIni.KeyAssign[EPad.Capture][i].コード > 0 &&\r
+                                                        e.KeyCode == DeviceConstantConverter.KeyToKeyCode((SlimDX.DirectInput.Key)ConfigIni.KeyAssign[EPad.Capture][i].コード))\r
                                        {\r
                                                // Debug.WriteLine( "capture: " + string.Format( "{0:2x}", (int) e.KeyCode ) + " " + (int) e.KeyCode );\r
                                                string strFullPath =\r
-                                                        Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "Capture_img");\r
+                                                                Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "Capture_img");\r
                                                strFullPath = Path.Combine(strFullPath, DateTime.Now.ToString("yyyyMMddHHmmss") + ".png");\r
                                                SaveResultScreen(strFullPath);\r
                                        }\r
@@ -2643,9 +2558,9 @@ namespace DTXMania
                        mb = e.Button;\r
                }\r
 \r
-               private void Window_MouseDoubleClick(object sender, MouseEventArgs e)   // #23510 2010.11.13 yyagi: to go full screen mode\r
+               private void Window_MouseDoubleClick(object sender, MouseEventArgs e)   // #23510 2010.11.13 yyagi: to go full screen mode\r
                {\r
-                       if (mb.Equals(MouseButtons.Left) && ConfigIni.bIsAllowedDoubleClickFullscreen)  // #26752 2011.11.27 yyagi\r
+                       if (mb.Equals(MouseButtons.Left) && ConfigIni.bIsAllowedDoubleClickFullscreen)  // #26752 2011.11.27 yyagi\r
                        {\r
                                ConfigIni.bウィンドウモード = false;\r
                                this.t全画面_ウィンドウモード切り替え();\r
@@ -2653,7 +2568,7 @@ namespace DTXMania
                }\r
                private void Window_MouseMove(object sender, MouseEventArgs e)\r
                {\r
-                       if ( ConfigIni.bウィンドウモード == true && this.bマウスカーソル表示中 == false )     // #36168 2016.3.19 yyagi: do not to show mouse cursor in full screen mode\r
+                       if (ConfigIni.bウィンドウモード == true && this.bマウスカーソル表示中 == false)   // #36168 2016.3.19 yyagi: do not to show mouse cursor in full screen mode\r
                        {\r
                                Cursor.Show();\r
                                this.bマウスカーソル表示中 = true;\r
@@ -2661,16 +2576,16 @@ namespace DTXMania
                        ccMouseShow.t開始(0, 1, 2000, Timer);\r
                }\r
 \r
-               private void Window_ResizeEnd(object sender, EventArgs e)                               // #23510 2010.11.20 yyagi: to get resized window size\r
+               private void Window_ResizeEnd(object sender, EventArgs e)               // #23510 2010.11.20 yyagi: to get resized window size\r
                {\r
                        if (ConfigIni.bウィンドウモード)\r
                        {\r
-                               ConfigIni.n初期ウィンドウ開始位置X = base.Window.Location.X; // #30675 2013.02.04 ikanick add\r
-                               ConfigIni.n初期ウィンドウ開始位置Y = base.Window.Location.Y; //\r
+                               ConfigIni.rcWindow.X = base.Window.Location.X; // #30675 2013.02.04 ikanick add\r
+                               ConfigIni.rcWindow.Y = base.Window.Location.Y; //\r
                        }\r
 \r
-                       ConfigIni.nウインドウwidth = (ConfigIni.bウィンドウモード) ? base.Window.ClientSize.Width : currentClientSize.Width;       // #23510 2010.10.31 yyagi add\r
-                       ConfigIni.nウインドウheight = (ConfigIni.bウィンドウモード) ? base.Window.ClientSize.Height : currentClientSize.Height;\r
+                       ConfigIni.rcWindow.W = (ConfigIni.bウィンドウモード) ? base.Window.ClientSize.Width : currentClientSize.Width;   // #23510 2010.10.31 yyagi add\r
+                       ConfigIni.rcWindow.H = (ConfigIni.bウィンドウモード) ? base.Window.ClientSize.Height : currentClientSize.Height;\r
                }\r
                #endregion\r
 \r
index e7a2292..dabf203 100644 (file)
@@ -131,7 +131,7 @@ namespace DTXMania
                        // 英字部分(あれば)\r
                        if (this.n小数部 >= 1000000)\r
                        {\r
-                               int n英字 = Math.Min(this.n小数部 / 1000000, 26);  // 1~26\r
+                               int n英字 = Math.Min(this.n小数部 / 1000000, 26);  // 1~26\r
                                result.Append(CDTXVersion.DIG36[10 + (n英字 - 1)]);\r
                        }\r
 \r
@@ -175,7 +175,7 @@ namespace DTXMania
                {\r
                        return ((x.n整数部 < y.n整数部) || ((x.n整数部 == y.n整数部) && (x.n小数部 <= y.n小数部)));\r
                }\r
-               public override bool Equals(object obj)                 // 2011.1.3 yyagi: warningを無くすために追加\r
+               public override bool Equals(object obj)     // 2011.1.3 yyagi: warningを無くすために追加\r
                {\r
                        if (obj == null)\r
                        {\r
@@ -192,7 +192,7 @@ namespace DTXMania
                        }\r
                        return true;\r
                }\r
-               public override int GetHashCode()                               // 2011.1.3 yyagi: warningを無くすために追加\r
+               public override int GetHashCode()       // 2011.1.3 yyagi: warningを無くすために追加\r
                {\r
                        string v = this.toString();\r
                        return v.GetHashCode();\r
index 57ad093..a745095 100644 (file)
@@ -30,33 +30,31 @@ namespace DTXMania
 \r
                // コンストラクタ\r
 \r
-               internal CPad(CConfigIni configIni, CInput管理 mgrInput)\r
+               internal CPad()\r
                {\r
-                       this.rConfigIni = configIni;\r
-                       this.rInput管理 = mgrInput;\r
                        this.st検知したデバイス.Clear();\r
                }\r
 \r
 \r
                // メソッド\r
 \r
-               public List<STInputEvent> GetEvents(E楽器パート part, Eパッド pad)\r
+               public List<STInputEvent> GetEvents(EPad pad)\r
                {\r
-                       CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad];\r
+                       COptionKeyAssign[] stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[pad];\r
                        List<STInputEvent> list = new List<STInputEvent>();\r
 \r
                        // すべての入力デバイスについて…\r
-                       foreach (IInputDevice device in this.rInput管理.list入力デバイス)\r
+                       foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
                        {\r
                                if ((device.list入力イベント != null) && (device.list入力イベント.Count != 0))\r
                                {\r
                                        foreach (STInputEvent event2 in device.list入力イベント)\r
                                        {\r
-                                               for (int i = 0; i < stkeyassignArray.Length; i++)\r
+                                               for (int i = 0; i < CConfigXml.AssignableCodes; i++)\r
                                                {\r
                                                        switch (stkeyassignArray[i].入力デバイス)\r
                                                        {\r
-                                                               case E入力デバイス.キーボード:\r
+                                                               case EInputDevice.Keyboard:\r
                                                                        if ((device.e入力デバイス種別 == E入力デバイス種別.Keyboard) && (event2.nKey == stkeyassignArray[i].コード))\r
                                                                        {\r
                                                                                list.Add(event2);\r
@@ -64,7 +62,7 @@ namespace DTXMania
                                                                        }\r
                                                                        break;\r
 \r
-                                                               case E入力デバイス.MIDI入力:\r
+                                                               case EInputDevice.MIDIIn:\r
                                                                        if (((device.e入力デバイス種別 == E入力デバイス種別.MidiIn) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード))\r
                                                                        {\r
                                                                                list.Add(event2);\r
@@ -72,7 +70,7 @@ namespace DTXMania
                                                                        }\r
                                                                        break;\r
 \r
-                                                               case E入力デバイス.ジョイパッド:\r
+                                                               case EInputDevice.JoyPad:\r
                                                                        if (((device.e入力デバイス種別 == E入力デバイス種別.Joystick) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード))\r
                                                                        {\r
                                                                                list.Add(event2);\r
@@ -80,7 +78,7 @@ namespace DTXMania
                                                                        }\r
                                                                        break;\r
 \r
-                                                               case E入力デバイス.マウス:\r
+                                                               case EInputDevice.Mouse:\r
                                                                        if ((device.e入力デバイス種別 == E入力デバイス種別.Mouse) && (event2.nKey == stkeyassignArray[i].コード))\r
                                                                        {\r
                                                                                list.Add(event2);\r
@@ -95,131 +93,115 @@ namespace DTXMania
                        }\r
                        return list;\r
                }\r
-               public bool b押された(E楽器パート part, Eパッド pad)\r
+               public bool b押された(EPad pad)\r
                {\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       COptionKeyAssign[] stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[pad];\r
+                       for (int i = 0; i < CConfigXml.AssignableCodes; i++)\r
                        {\r
-\r
-                               CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad];\r
-                               for (int i = 0; i < stkeyassignArray.Length; i++)\r
+                               switch (stkeyassignArray[i].入力デバイス)\r
                                {\r
-                                       switch (stkeyassignArray[i].入力デバイス)\r
-                                       {\r
-                                               case E入力デバイス.キーボード:\r
-                                                       if (!this.rInput管理.Keyboard.bキーが押された(stkeyassignArray[i].コード))\r
-                                                               break;\r
-\r
-                                                       this.st検知したデバイス.Keyboard = true;\r
-                                                       return true;\r
+                                       case EInputDevice.Keyboard:\r
+                                               if (!CDTXMania.Instance.Input管理.Keyboard.bキーが押された(stkeyassignArray[i].コード))\r
+                                                       break;\r
 \r
-                                               case E入力デバイス.MIDI入力:\r
-                                                       {\r
-                                                               IInputDevice device2 = this.rInput管理.MidiIn(stkeyassignArray[i].ID);\r
-                                                               if ((device2 == null) || !device2.bキーが押された(stkeyassignArray[i].コード))\r
-                                                                       break;\r
+                                               this.st検知したデバイス.Keyboard = true;\r
+                                               return true;\r
 \r
-                                                               this.st検知したデバイス.MIDIIN = true;\r
-                                                               return true;\r
-                                                       }\r
-                                               case E入力デバイス.ジョイパッド:\r
-                                                       {\r
-                                                               if (!this.rConfigIni.dicJoystick.ContainsKey(stkeyassignArray[i].ID))\r
-                                                                       break;\r
+                                       case EInputDevice.MIDIIn:\r
+                                               {\r
+                                                       IInputDevice device2 = CDTXMania.Instance.Input管理.MidiIn(stkeyassignArray[i].ID);\r
+                                                       if ((device2 == null) || !device2.bキーが押された(stkeyassignArray[i].コード))\r
+                                                               break;\r
 \r
-                                                               IInputDevice device = this.rInput管理.Joystick(stkeyassignArray[i].ID);\r
-                                                               if ((device == null) || !device.bキーが押された(stkeyassignArray[i].コード))\r
-                                                                       break;\r
+                                                       this.st検知したデバイス.MIDIIN = true;\r
+                                                       return true;\r
+                                               }\r
+                                       case EInputDevice.JoyPad:\r
+                                               {\r
+                                                       if (!CDTXMania.Instance.ConfigIni.dicJoystick.Value.ContainsKey(stkeyassignArray[i].ID))\r
+                                                               break;\r
 \r
-                                                               this.st検知したデバイス.Joypad = true;\r
-                                                               return true;\r
-                                                       }\r
-                                               case E入力デバイス.マウス:\r
-                                                       if (!this.rInput管理.Mouse.bキーが押された(stkeyassignArray[i].コード))\r
+                                                       IInputDevice device = CDTXMania.Instance.Input管理.Joystick(stkeyassignArray[i].ID);\r
+                                                       if ((device == null) || !device.bキーが押された(stkeyassignArray[i].コード))\r
                                                                break;\r
 \r
-                                                       this.st検知したデバイス.Mouse = true;\r
+                                                       this.st検知したデバイス.Joypad = true;\r
                                                        return true;\r
-                                       }\r
+                                               }\r
+                                       case EInputDevice.Mouse:\r
+                                               if (!CDTXMania.Instance.Input管理.Mouse.bキーが押された(stkeyassignArray[i].コード))\r
+                                                       break;\r
+\r
+                                               this.st検知したデバイス.Mouse = true;\r
+                                               return true;\r
                                }\r
                        }\r
                        return false;\r
                }\r
-               public bool b押されたDGB(Eパッド pad)\r
+\r
+               public bool bDecidePadIsPressedDGB()\r
                {\r
-                       if (!this.b押された(E楽器パート.DRUMS, pad) && !this.b押された(E楽器パート.GUITAR, pad))\r
-                       {\r
-                               return this.b押された(E楽器パート.BASS, pad);\r
-                       }\r
-                       return true;\r
+                       return\r
+                               b押された(EPad.GtDecide) || b押された(EPad.BsDecide) || b押された(EPad.CY) ||\r
+                               b押された(EPad.LC) || b押された(EPad.RD);\r
                }\r
-               public bool b押されたGB(Eパッド pad)\r
+\r
+               public bool bDecidePadIsPressedGB()\r
                {\r
-                       if (!this.b押された(E楽器パート.GUITAR, pad))\r
-                       {\r
-                               return this.b押された(E楽器パート.BASS, pad);\r
-                       }\r
-                       return true;\r
+                       return\r
+                               b押された(EPad.GtDecide) || b押された(EPad.BsDecide);\r
                }\r
-               public bool b押されている(E楽器パート part, Eパッド pad)\r
+\r
+               public bool bCancelPadIsPressedDGB()\r
                {\r
-                       if (part != E楽器パート.UNKNOWN)\r
+                       return b押された(EPad.FT) || b押された(EPad.GtCancel) || b押された(EPad.BsCancel);\r
+               }\r
+\r
+               public bool bCancelPadIsPressedGB()\r
+               {\r
+                       return b押された(EPad.GtCancel) || b押された(EPad.BsCancel);\r
+               }\r
+\r
+               public bool b押されている(EPad pad)\r
+               {\r
+                       COptionKeyAssign[] stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[pad];\r
+                       for (int i = 0; i < CConfigXml.AssignableCodes; i++)\r
                        {\r
-                               CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad];\r
-                               for (int i = 0; i < stkeyassignArray.Length; i++)\r
+                               switch (stkeyassignArray[i].入力デバイス)\r
                                {\r
-                                       switch (stkeyassignArray[i].入力デバイス)\r
-                                       {\r
-                                               case E入力デバイス.キーボード:\r
-                                                       if (!this.rInput管理.Keyboard.bキーが押されている(stkeyassignArray[i].コード))\r
-                                                       {\r
-                                                               break;\r
-                                                       }\r
-                                                       this.st検知したデバイス.Keyboard = true;\r
-                                                       return true;\r
+                                       case EInputDevice.Keyboard:\r
+                                               if (!CDTXMania.Instance.Input管理.Keyboard.bキーが押されている(stkeyassignArray[i].コード))\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                               this.st検知したデバイス.Keyboard = true;\r
+                                               return true;\r
 \r
-                                               case E入力デバイス.ジョイパッド:\r
+                                       case EInputDevice.JoyPad:\r
+                                               {\r
+                                                       if (!CDTXMania.Instance.ConfigIni.dicJoystick.Value.ContainsKey(stkeyassignArray[i].ID))\r
                                                        {\r
-                                                               if (!this.rConfigIni.dicJoystick.ContainsKey(stkeyassignArray[i].ID))\r
-                                                               {\r
-                                                                       break;\r
-                                                               }\r
-                                                               IInputDevice device = this.rInput管理.Joystick(stkeyassignArray[i].ID);\r
-                                                               if ((device == null) || !device.bキーが押されている(stkeyassignArray[i].コード))\r
-                                                               {\r
-                                                                       break;\r
-                                                               }\r
-                                                               this.st検知したデバイス.Joypad = true;\r
-                                                               return true;\r
+                                                               break;\r
                                                        }\r
-                                               case E入力デバイス.マウス:\r
-                                                       if (!this.rInput管理.Mouse.bキーが押されている(stkeyassignArray[i].コード))\r
+                                                       IInputDevice device = CDTXMania.Instance.Input管理.Joystick(stkeyassignArray[i].ID);\r
+                                                       if ((device == null) || !device.bキーが押されている(stkeyassignArray[i].コード))\r
                                                        {\r
                                                                break;\r
                                                        }\r
-                                                       this.st検知したデバイス.Mouse = true;\r
+                                                       this.st検知したデバイス.Joypad = true;\r
                                                        return true;\r
-                                       }\r
+                                               }\r
+                                       case EInputDevice.Mouse:\r
+                                               if (!CDTXMania.Instance.Input管理.Mouse.bキーが押されている(stkeyassignArray[i].コード))\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                               this.st検知したデバイス.Mouse = true;\r
+                                               return true;\r
                                }\r
+\r
                        }\r
                        return false;\r
                }\r
-               public bool b押されているGB(Eパッド pad)\r
-               {\r
-                       if (!this.b押されている(E楽器パート.GUITAR, pad))\r
-                       {\r
-                               return this.b押されている(E楽器パート.BASS, pad);\r
-                       }\r
-                       return true;\r
-               }\r
-\r
-\r
-               // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
-               private CConfigIni rConfigIni;\r
-               private CInput管理 rInput管理;\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r
index 82b5bcf..efc98d0 100644 (file)
@@ -7,6 +7,7 @@ namespace DTXMania
 {\r
        public class CPreviewMagnifier\r
        {\r
+\r
                #region [ プロパティ(拡大率等の取得) ]\r
                /// <summary>\r
                /// 拡大後のwidth\r
@@ -33,16 +34,17 @@ namespace DTXMania
 \r
                #region [ 定数定義 ]\r
                // 配列の0,1要素はそれぞれ, Preview用, 演奏画面用\r
-               private int[] WIDTH_VGA_SET = { 204, 278 };                                                                                     // VGA版DTXManiaのプレビュー画像width値\r
-               private int[] HEIGHT_VGA_SET = { 269, 355 };                                                                                    // VGA版DTXManiaのプレビュー画像height値\r
-               private int[] WIDTH_HD_SET = { 400, 400 };                                                                                      // HD版DTXManiaのプレビュー画像width値\r
+               private int[] WIDTH_VGA_SET = { 204, 278 };                     // VGA版DTXManiaのプレビュー画像width値\r
+               private int[] HEIGHT_VGA_SET = { 269, 355 };                      // VGA版DTXManiaのプレビュー画像height値\r
+               private int[] WIDTH_HD_SET = { 400, 400 };                      // HD版DTXManiaのプレビュー画像width値\r
                private int[] HEIGHT_HD_SET = { 400, 600 }; // 600は仮                                                                // HD版DTXManiaのプレビュー画像height値\r
-               private int[] WIDTH_FHD_LIMIT = { 320, 320 };                                                                                   // VGA版/FullHD版どちらのプレビュー画像とみなすかのwidth閾値\r
-               private int[] HEIGHT_FHD_LIMIT = { 416, 416 };                                                                                  // VGA版/FullHD版どちらのプレビュー画像とみなすかのwidth閾値\r
-               private int[] WIDTH_FHD_SET = { (int)(204 * Scale.X), (int)(278 * Scale.X) };   // FHD版DTXManiaのプレビュー画像height値\r
-               private int[] HEIGHT_FHD_SET = { (int)(269 * Scale.Y), (int)(355 * Scale.Y) };  // FHD版DTXManiaのプレビュー画像height値\r
+               private int[] WIDTH_FHD_LIMIT = { 320, 320 };                     // VGA版/FullHD版どちらのプレビュー画像とみなすかのwidth閾値\r
+               private int[] HEIGHT_FHD_LIMIT = { 416, 416 };                      // VGA版/FullHD版どちらのプレビュー画像とみなすかのwidth閾値\r
+               private int[] WIDTH_FHD_SET = { (int)(204 * Scale.X), (int)(278 * Scale.X) }; // FHD版DTXManiaのプレビュー画像height値\r
+               private int[] HEIGHT_FHD_SET = { (int)(269 * Scale.Y), (int)(355 * Scale.Y) };  // FHD版DTXManiaのプレビュー画像height値\r
                #endregion\r
 \r
+\r
                #region [ コンストラクタ ]\r
                /// <summary>\r
                /// コンストラクタ\r
@@ -67,75 +69,15 @@ namespace DTXMania
 \r
                        // #35820 画像サイズに関係なく、プレビュー領域に合わせる add ikanick 15.12.08\r
                        // #36176 プレビュー画像については、前仕様(204x269)画像はアスペクト比を維持する change ikanick 16.03.20\r
-                       \r
+\r
                        this.width = width_org;\r
                        this.height = height_org;\r
                        this.magX = magX_org * width_fhd_set / width_org;\r
                        this.magY = magY_org * height_fhd_set / height_org;\r
-                       if (bIsPreview && width_org <= width_vga_set && height_org <= height_vga_set )\r
-                       {\r
-                               this.magX = magX_org * width_fhd_set / width_org * ( Convert.ToSingle( width_vga_set ) / height_vga_set );\r
-                       }\r
-                       return;\r
-\r
-#if false      // FHD対応の名残\r
-                       #region [ HD版DTXManiaのプレビュー画像は特別扱いする ]\r
-                       if ( width_org == width_hd_set && height_org == height_hd_set )                 // HD版DTXManiaのプレビュー画像は特別扱いする\r
-                       {\r
-                               this.width = width_org;\r
-                               this.height = height_org;\r
-                               this.magX = 1.5f * magX_org;\r
-                               this.magY = 1.5f * magY_org;\r
-                               return;\r
-                       }\r
-                       #endregion\r
-\r
-                       #region [ width ]\r
-                       if ( width_org <= width_vga_set )                                                                               // width <= 204 なら、拡大率だけ変更\r
-                       {\r
-                               this.width = width_org;\r
-                               this.magX = magX_org * Scale.X;\r
-                       }\r
-                       else if ( width_fhd_limit > width_org && width_org > width_vga_set )                    // width >= 320 なら原寸表示\r
-                       {\r
-                               this.width = width_vga_set;\r
-                               this.magX = magX_org * Scale.X;\r
-                       }\r
-                       else if ( width_org >= width_fhd_limit )\r
+                       if (bIsPreview && width_org <= width_vga_set && height_org <= height_vga_set)\r
                        {\r
-                               this.width = (int) ( width_vga_set * Scale.X );\r
-                               this.magX = magX_org;   // / width_hd_set;\r
+                               this.magX = magX_org * width_fhd_set / width_org * (Convert.ToSingle(width_vga_set) / height_vga_set);\r
                        }\r
-                       else\r
-                       {\r
-                               this.width = width_org;\r
-                               this.magX = magX_org * Scale.X;\r
-                       }\r
-                       #endregion\r
-\r
-                       #region [ height ]\r
-                       if ( height_org <= height_vga_set )                                                                                     // height <= 269 なら、拡大率だけ変更\r
-                       {\r
-                               this.height = height_org;\r
-                               this.magY = magY_org * Scale.Y;\r
-                       }\r
-                       else if ( height_fhd_limit > height_org && height_org > height_vga_set )                // height >= 416 なら原寸表示\r
-                       {\r
-                               this.height = height_vga_set;\r
-                               this.magY = magY_org * Scale.Y;\r
-                       }\r
-                       else if ( width_org >= height_fhd_limit )\r
-                       {\r
-                               this.height = (int) ( height_vga_set * Scale.Y );\r
-                               this.magY = magY_org; // / height_fhd_set;\r
-                       }\r
-                       else\r
-                       {\r
-                               this.height = height_org;\r
-                               this.magY = magY_org * Scale.Y;\r
-                       }\r
-                       #endregion\r
-#endif\r
                }\r
 \r
                #region [ bIsPreviewによる配列→定数読み替え ]\r
@@ -196,6 +138,5 @@ namespace DTXMania
                        }\r
                }\r
                #endregion\r
-\r
        }\r
 }\r
index 71ff69e..bc1c32e 100644 (file)
@@ -179,7 +179,7 @@ namespace DTXMania
                {\r
                        #region [ 以前レンダリングしたことのある文字列/フォントか? (キャッシュにヒットするか?) ]\r
                        int index = listFontCache.FindIndex(\r
-                               delegate(FontCache fontcache)\r
+                               delegate (FontCache fontcache)\r
                                {\r
                                        return (\r
                                                drawstr == fontcache.drawstr &&\r
@@ -188,7 +188,7 @@ namespace DTXMania
                                                edgeColor == fontcache.edgeColor &&\r
                                                gradationTopColor == fontcache.gradationTopColor &&\r
                                                gradationBottomColor == fontcache.gradationBottomColor\r
-                                               // _font == fontcache.font\r
+                                       // _font == fontcache.font\r
                                        );\r
                                }\r
                        );\r
index 046f402..0de68bf 100644 (file)
@@ -80,8 +80,8 @@ namespace DTXMania
                        {\r
                                try\r
                                {\r
-                                       this._pfc = new System.Drawing.Text.PrivateFontCollection();    //PrivateFontCollectionオブジェクトを作成する\r
-                                       this._pfc.AddFontFile(fontpath);                                                                //PrivateFontCollectionにフォントを追加する\r
+                                       this._pfc = new System.Drawing.Text.PrivateFontCollection();  //PrivateFontCollectionオブジェクトを作成する\r
+                                       this._pfc.AddFontFile(fontpath);                //PrivateFontCollectionにフォントを追加する\r
                                        _fontfamily = _pfc.Families[0];\r
                                }\r
                                catch (System.IO.FileNotFoundException)\r
@@ -115,7 +115,7 @@ namespace DTXMania
                                if (!_fontfamily.IsStyleAvailable(style))\r
                                {\r
                                        FontStyle[] FS = { FontStyle.Regular, FontStyle.Bold, FontStyle.Italic, FontStyle.Underline, FontStyle.Strikeout };\r
-                                       style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout;      // null非許容型なので、代わりに全盛をNGワードに設定\r
+                                       style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout;  // null非許容型なので、代わりに全盛をNGワードに設定\r
                                        foreach (FontStyle ff in FS)\r
                                        {\r
                                                if (this._fontfamily.IsStyleAvailable(ff))\r
@@ -132,14 +132,14 @@ namespace DTXMania
                                }\r
                                //this._font = new Font(this._fontfamily, pt, style);                   //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する\r
                                float emSize = pt * 96.0f / 72.0f;\r
-                               this._font = new Font(this._fontfamily, emSize, style, GraphicsUnit.Pixel);     //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する\r
-                               //HighDPI対応のため、pxサイズで指定\r
+                               this._font = new Font(this._fontfamily, emSize, style, GraphicsUnit.Pixel); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する\r
+                                                                                                                                                                                                                                                                                                                                               //HighDPI対応のため、pxサイズで指定\r
                        }\r
                        else\r
                        // フォントファイルが見つからなかった場合 (MS PGothicを代わりに指定する)\r
                        {\r
                                float emSize = pt * 96.0f / 72.0f;\r
-                               this._font = new Font("MS PGothic", emSize, style, GraphicsUnit.Pixel); //MS PGothicのFontオブジェクトを作成する\r
+                               this._font = new Font("MS PGothic", emSize, style, GraphicsUnit.Pixel); //MS PGothicのFontオブジェクトを作成する\r
                                FontFamily[] ffs = new System.Drawing.Text.InstalledFontCollection().Families;\r
                                int lcid = System.Globalization.CultureInfo.GetCultureInfo("en-us").LCID;\r
                                foreach (FontFamily ff in ffs)\r
index 0c395c2..0701661 100644 (file)
@@ -8,47 +8,19 @@ using FDK;
 \r
 namespace DTXMania\r
 {\r
-       // グローバル定数\r
-\r
-       public enum Eシステムサウンド\r
-       {\r
-               BGMオプション画面 = 0,\r
-               BGMコンフィグ画面,\r
-               BGM起動画面,\r
-               BGM選曲画面,\r
-               SOUNDステージ失敗音,\r
-               SOUNDカーソル移動音,\r
-               SOUNDゲーム開始音,\r
-               SOUNDゲーム終了音,\r
-               SOUNDステージクリア音,\r
-               SOUNDタイトル音,\r
-               SOUNDフルコンボ音,\r
-               SOUND歓声音,\r
-               SOUND曲読込開始音,\r
-               SOUND決定音,\r
-               SOUND取消音,\r
-               SOUND変更音,\r
-               Count                           // システムサウンド総数の計算用\r
-       }\r
-\r
        internal class CSkin : IDisposable\r
        {\r
-               // クラス\r
-\r
                public class Cシステムサウンド : IDisposable\r
                {\r
-                       // static フィールド\r
-\r
                        public static CSkin.Cシステムサウンド r最後に再生した排他システムサウンド;\r
 \r
-                       // フィールド、プロパティ\r
-\r
                        public bool bCompact対象;\r
                        public bool bループ;\r
                        public bool b読み込み未試行;\r
                        public bool b読み込み成功;\r
                        public bool b排他;\r
                        public string strファイル名 = "";\r
+\r
                        public bool b再生中\r
                        {\r
                                get\r
@@ -59,6 +31,7 @@ namespace DTXMania
                                        return this.rSound[1 - this.n次に鳴るサウンド番号].b再生中;\r
                                }\r
                        }\r
+\r
                        public int n位置_現在のサウンド\r
                        {\r
                                get\r
@@ -76,6 +49,7 @@ namespace DTXMania
                                                sound.n位置 = value;\r
                                }\r
                        }\r
+\r
                        public int n位置_次に鳴るサウンド\r
                        {\r
                                get\r
@@ -93,6 +67,7 @@ namespace DTXMania
                                                sound.n位置 = value;\r
                                }\r
                        }\r
+\r
                        public int n音量_現在のサウンド\r
                        {\r
                                get\r
@@ -110,6 +85,7 @@ namespace DTXMania
                                                sound.n音量 = value;\r
                                }\r
                        }\r
+\r
                        public int n音量_次に鳴るサウンド\r
                        {\r
                                get\r
@@ -130,6 +106,7 @@ namespace DTXMania
                                        }\r
                                }\r
                        }\r
+\r
                        public int n長さ_現在のサウンド\r
                        {\r
                                get\r
@@ -142,6 +119,7 @@ namespace DTXMania
                                        return sound.n総演奏時間ms;\r
                                }\r
                        }\r
+\r
                        public int n長さ_次に鳴るサウンド\r
                        {\r
                                get\r
@@ -171,14 +149,12 @@ namespace DTXMania
                                this.bCompact対象 = bCompact対象;\r
                                this.b読み込み未試行 = true;\r
                        }\r
+\r
                        public Cシステムサウンド()\r
                        {\r
                                this.b読み込み未試行 = true;\r
                        }\r
 \r
-\r
-                       // メソッド\r
-\r
                        public void t読み込み()\r
                        {\r
                                this.b読み込み未試行 = false;\r
@@ -190,30 +166,8 @@ namespace DTXMania
                                {\r
                                        throw new FileNotFoundException(this.strファイル名);\r
                                }\r
-                               ////                            for( int i = 0; i < 2; i++ )            // #27790 2012.3.10 yyagi 2回読み出しを、1回読みだし+1回メモリコピーに変更\r
-                               ////                            {\r
-                               //                    try\r
-                               //                    {\r
-                               //                        this.rSound[ 0 ] = CDTXMania.Instance.Sound管理.tサウンドを生成する( CSkin.Path( this.strファイル名 ) );\r
-                               //                    }\r
-                               //                    catch\r
-                               //                    {\r
-                               //                        this.rSound[ 0 ] = null;\r
-                               //                        throw;\r
-                               //                    }\r
-                               //                    if ( this.rSound[ 0 ] == null )   // #28243 2012.5.3 yyagi "this.rSound[ 0 ].bストリーム再生する"時もCloneするようにし、rSound[1]がnullにならないよう修正→rSound[1]の再生正常化\r
-                               //                    {\r
-                               //                        this.rSound[ 1 ] = null;\r
-                               //                    }\r
-                               //                    else\r
-                               //                    {\r
-                               //                        this.rSound[ 1 ] = ( CSound ) this.rSound[ 0 ].Clone();       // #27790 2012.3.10 yyagi add: to accelerate loading chip sounds\r
-                               //                        CDTXMania.Instance.Sound管理.tサウンドを登録する( this.rSound[ 1 ] );      // #28243 2012.5.3 yyagi add (登録漏れによりストリーム再生処理が発生していなかった)\r
-                               //                    }\r
-\r
-                               ////                            }\r
-\r
-                               for (int i = 0; i < 2; i++)             // 一旦Cloneを止めてASIO対応に専念\r
+\r
+                               for (int i = 0; i < 2; i++)   // 一旦Cloneを止めてASIO対応に専念\r
                                {\r
                                        try\r
                                        {\r
@@ -227,6 +181,7 @@ namespace DTXMania
                                }\r
                                this.b読み込み成功 = true;\r
                        }\r
+\r
                        public void t再生する()\r
                        {\r
                                if (this.b読み込み未試行)\r
@@ -253,6 +208,7 @@ namespace DTXMania
 \r
                                this.n次に鳴るサウンド番号 = 1 - this.n次に鳴るサウンド番号;\r
                        }\r
+\r
                        public void t停止する()\r
                        {\r
                                if (this.rSound[0] != null)\r
@@ -464,10 +420,10 @@ namespace DTXMania
                //  選曲画面用に二種の情報を区別しない読み出し方法も提供する(GetCurrent...)\r
 \r
                private object lockBoxDefSkin;\r
-               public static bool bUseBoxDefSkin = true;                                               // box.defからのスキン変更を許容するか否か\r
+               public static bool bUseBoxDefSkin = true;           // box.defからのスキン変更を許容するか否か\r
 \r
                public string strSystemSkinRoot = null;\r
-               public string[] strSystemSkinSubfolders = null;         // List<string>だとignoreCaseな検索が面倒なので、配列に逃げる :-)\r
+               public string[] strSystemSkinSubfolders = null;   // List<string>だとignoreCaseな検索が面倒なので、配列に逃げる :-)\r
                private string[] _strBoxDefSkinSubfolders = null;\r
                public string[] strBoxDefSkinSubfolders\r
                {\r
@@ -485,10 +441,10 @@ namespace DTXMania
                                        _strBoxDefSkinSubfolders = value;\r
                                }\r
                        }\r
-               }                       // 別スレッドからも書き込みアクセスされるため、スレッドセーフなアクセス法を提供\r
+               }     // 別スレッドからも書き込みアクセスされるため、スレッドセーフなアクセス法を提供\r
 \r
-               private static string strSystemSkinSubfolderFullName;                   // Config画面で設定されたスキン\r
-               private static string strBoxDefSkinSubfolderFullName = "";              // box.defで指定されているスキン\r
+               private static string strSystemSkinSubfolderFullName;     // Config画面で設定されたスキン\r
+               private static string strBoxDefSkinSubfolderFullName = "";    // box.defで指定されているスキン\r
 \r
                /// <summary>\r
                /// スキンパス名をフルパスで取得する\r
@@ -506,6 +462,7 @@ namespace DTXMania
                                return strBoxDefSkinSubfolderFullName;\r
                        }\r
                }\r
+\r
                /// <summary>\r
                /// スキンパス名をフルパスで設定する\r
                /// </summary>\r
@@ -523,8 +480,6 @@ namespace DTXMania
                        }\r
                }\r
 \r
-\r
-               // コンストラクタ\r
                public CSkin(string _strSkinSubfolderFullName, bool _bUseBoxDefSkin)\r
                {\r
                        lockBoxDefSkin = new object();\r
@@ -534,6 +489,7 @@ namespace DTXMania
                        ReloadSkinPaths();\r
                        PrepareReloadSkin();\r
                }\r
+\r
                public CSkin()\r
                {\r
                        lockBoxDefSkin = new object();\r
@@ -542,6 +498,7 @@ namespace DTXMania
                        ReloadSkinPaths();\r
                        PrepareReloadSkin();\r
                }\r
+\r
                private string InitializeSkinPathRoot()\r
                {\r
                        strSystemSkinRoot = System.IO.Path.Combine(CDTXMania.Instance.strEXEのあるフォルダ, "System" + System.IO.Path.DirectorySeparatorChar);\r
@@ -593,7 +550,7 @@ namespace DTXMania
                {\r
                        for (int i = 0; i < nシステムサウンド数; i++)\r
                        {\r
-                               if (!this[i].b排他)   // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
+                               if (!this[i].b排他) // BGM系以外のみ読み込む。(BGM系は必要になったときに読み込む)\r
                                {\r
                                        Cシステムサウンド cシステムサウンド = this[i];\r
                                        if (!CDTXMania.Instance.bコンパクトモード || cシステムサウンド.bCompact対象)\r
@@ -652,7 +609,7 @@ namespace DTXMania
                        }\r
                        Trace.TraceInformation("SkinPath入力: {0}", strSystemSkinSubfolderFullName);\r
                        Array.Resize(ref strSystemSkinSubfolders, size);\r
-                       Array.Sort(strSystemSkinSubfolders);    // BinarySearch実行前にSortが必要\r
+                       Array.Sort(strSystemSkinSubfolders);  // BinarySearch実行前にSortが必要\r
                        #endregion\r
 \r
                        #region [ 現在のSkinパスがbox.defスキンをCONFIG指定していた場合のために、最初にこれが有効かチェックする。有効ならこれを使う。 ]\r
@@ -698,8 +655,6 @@ namespace DTXMania
                        #endregion\r
                }\r
 \r
-               // メソッド\r
-\r
                public static string Path(string strファイルの相対パス)\r
                {\r
                        if (strBoxDefSkinSubfolderFullName == "" || !bUseBoxDefSkin)\r
@@ -722,13 +677,14 @@ namespace DTXMania
                {\r
                        if (skinPathFullName != null)\r
                        {\r
-                               if (skinPathFullName == "")             // 「box.defで未定義」用\r
+                               if (skinPathFullName == "")   // 「box.defで未定義」用\r
                                        skinPathFullName = strSystemSkinSubfolderFullName;\r
                                string[] tmp = skinPathFullName.Split(System.IO.Path.DirectorySeparatorChar);\r
-                               return tmp[tmp.Length - 2];             // ディレクトリ名の最後から2番目の要素がスキン名(最後の要素はnull。元stringの末尾が\なので。)\r
+                               return tmp[tmp.Length - 2];   // ディレクトリ名の最後から2番目の要素がスキン名(最後の要素はnull。元stringの末尾が\なので。)\r
                        }\r
                        return null;\r
                }\r
+\r
                public static string[] GetSkinName(string[] skinPathFullNames)\r
                {\r
                        string[] ret = new string[skinPathFullNames.Length];\r
@@ -778,7 +734,6 @@ namespace DTXMania
                        return false;\r
                }\r
 \r
-\r
                public void tRemoveMixerAll()\r
                {\r
                        for (int i = 0; i < nシステムサウンド数; i++)\r
index 6a357fa..eaf657f 100644 (file)
@@ -4,99 +4,114 @@ using System.Linq;
 using System.Text;\r
 using System.Runtime.Serialization;\r
 using System.Xml;\r
+using DTXMania;\r
 \r
-namespace DTXMania\r
+namespace DTXMania.Coordinates\r
 {\r
-       /// <summary>\r
-       /// DataContract はフィールドまたはプロパティを XML にシリアライズできます。\r
-       /// DataMember が付いているメンバだけがシリアライズされます。シリアライズ可能な型については MSDN を参照してください。\r
-       /// DataMember が付いていないメンバはデシリアライズ時に別途指定される既定値になります。\r
-       /// これらは OnDeserialized 属性がついたメソッドで処理します。\r
-       /// </summary>\r
        [DataContract]\r
-       public class STX\r
+       public class CX\r
        {\r
-               public STX(int x)\r
+               public CX(int x)\r
                {\r
                        X = x;\r
                }\r
-\r
-               [DataMember(Name = "X")]\r
+               [DataMember]\r
                public int X;\r
        }\r
 \r
        [DataContract]\r
-       public class STY\r
+       public class CY\r
        {\r
-               public STY(int y)\r
+               public CY(int y)\r
                {\r
                        Y = y;\r
                }\r
-               [DataMember(Name = "Y")]\r
+               [DataMember]\r
                public int Y;\r
        }\r
 \r
        [DataContract]\r
-       public class STXY : STX\r
+       public class CXY : CX\r
        {\r
-               public STXY(int x, int y)\r
+               public CXY(int x, int y)\r
                        : base(x)\r
                {\r
                        Y = y;\r
                }\r
 \r
-               [DataMember(Name = "Y")]\r
+               [DataMember]\r
                public int Y;\r
        }\r
 \r
        [DataContract]\r
-       public class STXW : STX\r
+       public class CXW : CX\r
        {\r
-               public STXW(int x, int w)\r
+               public CXW(int x, int w)\r
                        : base(x)\r
                {\r
                        W = w;\r
                }\r
-\r
-               [DataMember(Name = "Width")]\r
+               [DataMember]\r
                public int W;\r
        }\r
 \r
        [DataContract]\r
-       public class STXYW : STXY\r
+       public class CXYW : CXY\r
        {\r
-               public STXYW(int x, int y, int w)\r
+               public CXYW(int x, int y, int w)\r
                        : base(x, y)\r
                {\r
                        W = w;\r
                }\r
-\r
-               [DataMember(Name = "Width")]\r
+               [DataMember]\r
                public int W;\r
        }\r
 \r
        [DataContract]\r
-       public class STRange\r
+       public class CRange\r
        {\r
-               public STRange(int min, int max)\r
+               public CRange(int min, int max)\r
                {\r
                        Min = min;\r
                        Max = max;\r
                }\r
-\r
-               [DataMember(Name = "Min")]\r
+               [DataMember]\r
                public int Min;\r
-               [DataMember(Name = "Max")]\r
+               [DataMember]\r
                public int Max;\r
        }\r
 \r
        [DataContract]\r
-       public class STRect : STXY\r
+       public class CW\r
+       {\r
+               public CW(int w)\r
+               {\r
+                       W = w;\r
+               }\r
+               [DataMember]\r
+               public int W;\r
+       }\r
+\r
+       [DataContract]\r
+       public class CWH : CW\r
+       {\r
+               public CWH(int w, int h)\r
+                       : base(w)\r
+               {\r
+                       H = h;\r
+               }\r
+\r
+               [DataMember]\r
+               public int H;\r
+       }\r
+\r
+       [DataContract]\r
+       public class CRect : CXY\r
        {\r
                public System.Drawing.Rectangle rc;\r
                public System.Drawing.Rectangle rcTmp;\r
 \r
-               public STRect(int x, int y, int w, int h)\r
+               public CRect(int x, int y, int w, int h)\r
                        : base(x, y)\r
                {\r
                        W = w;\r
@@ -105,7 +120,7 @@ namespace DTXMania
                        rcTmp = new System.Drawing.Rectangle(X, Y, W, H);\r
                }\r
 \r
-               public static implicit operator System.Drawing.Rectangle(STRect x)\r
+               public static implicit operator System.Drawing.Rectangle(CRect x)\r
                {\r
                        return x.rcTmp;\r
                }\r
@@ -126,458 +141,208 @@ namespace DTXMania
                        rcTmp.Y = rc.Y + (rc.Height - overlapY) * counterY;\r
                        return rcTmp;\r
                }\r
-\r
-               [DataMember(Name = "Width")]\r
+               [DataMember]\r
                public int W;\r
-               [DataMember(Name = "Height")]\r
+               [DataMember]\r
                public int H;\r
        }\r
 \r
-       [DataContract]\r
-       public class Lane\r
-       {\r
-               [DataMember(Name = "LeftCymbal")]\r
-               public STXW LCY;\r
-               [DataMember(Name = "HiHatClose")]\r
-               public STXW HHC;\r
-               [DataMember(Name = "HiHatOpen")]\r
-               public STXW HHO;\r
-               [DataMember(Name = "SnareDrum")]\r
-               public STXW SD;\r
-               [DataMember(Name = "BassDrum")]\r
-               public STXW BD;\r
-               [DataMember(Name = "HighTom")]\r
-               public STXW HT;\r
-               [DataMember(Name = "LowTom")]\r
-               public STXW LT;\r
-               [DataMember(Name = "FloorTom")]\r
-               public STXW FT;\r
-               [DataMember(Name = "Cymbal")]\r
-               public STXW CY;\r
-               [DataMember(Name = "RideCymbal")]\r
-               public STXW RCY;\r
-\r
-               [DataMember(Name = "GuitarOpen")]\r
-               public STXW GtO;\r
-               [DataMember(Name = "GuitarR")]\r
-               public STXW GtR;\r
-               [DataMember(Name = "GuitarG")]\r
-               public STXW GtG;\r
-               [DataMember(Name = "GuitarB")]\r
-               public STXW GtB;\r
-               [DataMember(Name = "GuitarWailing")]\r
-               public STXW GtW;\r
-\r
-               [DataMember(Name = "BassOpen")]\r
-               public STXW BsO;\r
-               [DataMember(Name = "BassR")]\r
-               public STXW BsR;\r
-               [DataMember(Name = "BassG")]\r
-               public STXW BsG;\r
-               [DataMember(Name = "BassB")]\r
-               public STXW BsB;\r
-               [DataMember(Name = "BassWailing")]\r
-               public STXW BsW;\r
-       }\r
-\r
-       [DataContract]\r
-       public class Judge\r
-       {\r
-               [DataMember(Name = "LeftCymbal")]\r
-               public STXY LCY;\r
-               [DataMember(Name = "HiHatClose")]\r
-               public STXY HH;\r
-               [DataMember(Name = "SnareDrum")]\r
-               public STXY SD;\r
-               [DataMember(Name = "BassDrum")]\r
-               public STXY BD;\r
-               [DataMember(Name = "HighTom")]\r
-               public STXY HT;\r
-               [DataMember(Name = "LowTom")]\r
-               public STXY LT;\r
-               [DataMember(Name = "FloorTom")]\r
-               public STXY FT;\r
-               [DataMember(Name = "Cymbal")]\r
-               public STXY CY;\r
-\r
-               [DataMember(Name = "Guitar")]\r
-               public STXY Gt;\r
-\r
-               [DataMember(Name = "Bass")]\r
-               public STXY Bs;\r
-       }\r
-\r
-       [DataContract]\r
-       public class Coordinates\r
+       public class CCoordinates\r
        {\r
-               [DataMember(Name = "Lane")]\r
-               public Lane Lane;\r
-\r
-               [DataMember(Name = "Combo")]\r
-               public STDGBVALUE<STXY> Combo;\r
-\r
-               [DataMember(Name = "MovieBGAGuitarsOnly")]\r
-               public STRect GtMovie;\r
-\r
-               [DataMember(Name = "MovieBGADrumsOnly")]\r
-               public STRect DrMovie;\r
-\r
-               [DataMember(Name = "MovieBGACommon")]\r
-               public STRect Movie;\r
-\r
-               [DataMember(Name = "Judge")]\r
-               public Judge Judge;\r
-\r
-               [DataMember(Name = "JudgeLine")]\r
-               public STDGBVALUE<STXYW> JudgeLine;\r
-\r
-               [DataMember(Name = "Score")]\r
-               public STDGBVALUE<STXY> Score;\r
-\r
-               [DataMember(Name = "Gauge")]\r
-               public STXY Gauge;\r
-\r
-               [DataMember(Name = "GaugeMax")]\r
+               public CXY Gauge;\r
                public int GaugeMax;\r
-\r
-               [DataMember(Name = "StatusPanel")]\r
-               public STDGBVALUE<STXY> StatusPanel;\r
-\r
-               [DataMember(Name = "Graph")]\r
-               public STDGBVALUE<STRect> Graph;\r
-\r
-               [DataMember(Name = "Danger")]\r
-               public STRange Danger;\r
-\r
-               [DataMember(Name = "Panel")]\r
-               public STRect Panel;\r
-\r
-               [DataMember(Name = "Debug")]\r
-               public STXY Debug;\r
-\r
-               [DataMember(Name = "BarLine")]\r
-               public STDGBVALUE<STX> BarLine;\r
-\r
-               [DataMember(Name = "SuddenFrom")]\r
-               public STDGBVALUE<STY> SuddenFrom;\r
-               [DataMember(Name = "HiddenFrom")]\r
-               public STDGBVALUE<STY> HiddenFrom;\r
-               [DataMember(Name = "SuddenFadeInFrom")]\r
-               public STDGBVALUE<STY> SuddenFadeInFrom;\r
-               [DataMember(Name = "HiddenFadeOutFrom")]\r
-               public STDGBVALUE<STY> HiddenFadeOutFrom;\r
-               [DataMember(Name = "LaneFlash")]\r
-               public STDGBVALUE<STY> LaneFlash;\r
-\r
-               [DataMember(Name = "DrumsPad")]\r
-               public STY DrPad;\r
-               [DataMember(Name = "DrumsPadOffsetLCY")]\r
-               public STY DrPadOffsetLCY;\r
-               [DataMember(Name = "DrumsPadOffsetHH")]\r
-               public STY DrPadOffsetHH;\r
-               [DataMember(Name = "DrumsPadOffsetSD")]\r
-               public STY DrPadOffsetSD;\r
-               [DataMember(Name = "DrumsPadOffsetBD")]\r
-               public STY DrPadOffsetBD;\r
-               [DataMember(Name = "DrumsPadOffsetHT")]\r
-               public STY DrPadOffsetHT;\r
-               [DataMember(Name = "DrumsPadOffsetLT")]\r
-               public STY DrPadOffsetLT;\r
-               [DataMember(Name = "DrumsPadOffsetFT")]\r
-               public STY DrPadOffsetFT;\r
-               [DataMember(Name = "DrumsPadOffsetCY")]\r
-               public STY DrPadOffsetCY;\r
-               [DataMember(Name = "DrumsPadOffsetRCY")]\r
-               public STXY DrPadOffsetRCY;\r
-\r
-               public STRect ImgGtChipOpen;\r
+               public STDGBSValue<CWH> Graph;\r
+               public CRange Danger;\r
+               public STDGBSValue<CW> Instrument;\r
+               public STDGBSValue<CY> Score;\r
+               public CW StatusPanel;\r
+               public CXY Panel;\r
+               public CWH Movie;\r
+               public STDGBSValue<CY> LaneFlash;\r
+\r
+               public CY DrPad;\r
+               public STPadValue<CY> DrPadOffset;\r
+\r
+               public CRect ImgGtChipOpen;\r
                public int ImgGtCountOpenChip;\r
-               public STRect ImgGtRGBButton;\r
+               public CRect ImgGtRGBButton;\r
                public int ImgGtCountRGBChip;\r
                public int ImgGtCountWailingChip;\r
-               public STRect ImgGtWailingBonus;\r
-               public STRect ImgGtLaneFlash;\r
-               public STRect ImgGtWailingChip;\r
-               public STRect ImgGtWailingFrame;\r
-               public STRect ImgGtButtonR;\r
-               public STRect ImgGtButtonG;\r
-               public STRect ImgGtButtonB;\r
-               public STRect ImgGtPressingButtonR;\r
-               public STRect ImgGtPressingButtonG;\r
-               public STRect ImgGtPressingButtonB;\r
-               public STRect ImgDrLaneFlash;\r
-               public STRect ImgDrChipHHC;\r
-               public STRect ImgDrChipSD;\r
-               public STRect ImgDrChipBD;\r
-               public STRect ImgDrChipHT;\r
-               public STRect ImgDrChipLT;\r
-               public STRect ImgDrChipCY;\r
-               public STRect ImgDrChipCYDeco;\r
-               public STRect ImgDrChipFT;\r
-               public STRect ImgDrChipHHO;\r
-               public STRect ImgDrChipHHODeco;\r
-               public STRect ImgDrChipRCY;\r
+               public CRect ImgGtWailingBonus;\r
+               public CRect ImgGtLaneFlash;\r
+               public CRect ImgGtWailingChip;\r
+               public CRect ImgGtWailingFrame;\r
+               public CRect ImgGtButtonR;\r
+               public CRect ImgGtButtonG;\r
+               public CRect ImgGtButtonB;\r
+               public CRect ImgGtPressingButtonR;\r
+               public CRect ImgGtPressingButtonG;\r
+               public CRect ImgGtPressingButtonB;\r
+               public CRect ImgDrLaneFlash;\r
+\r
+               public STPadValue<CRect> ImgDrChip;\r
+               public CRect ImgDrChipCYDeco;\r
+               public CRect ImgDrChipHHODeco;\r
                public int ImgDrCountChip;\r
-               public STRect ImgDrPadLCY;\r
-               public STRect ImgDrPadHH;\r
-               public STRect ImgDrPadSD;\r
-               public STRect ImgDrPadBD;\r
-               public STRect ImgDrPadHT;\r
-               public STRect ImgDrPadLT;\r
-               public STRect ImgDrPadFT;\r
-               public STRect ImgDrPadCY;\r
-               public STRect ImgDrPadRCY;\r
-               public STRect ImgJudgeLine;\r
-               public STRect ImgBarLine;\r
-               public STRect ImgBeatLine;\r
-               public STRect ImgComboCombo;\r
-               public STRect ImgComboOneDigit;\r
-               public STRect ImgGaugeOrange;\r
-               public STRect ImgGaugeNormal;\r
-               public STRect ImgGaugeLight;\r
-               public STRect ImgGaugeTopLight;\r
-               public STRect ImgGaugeStar;\r
-               public STRect ImgScoreOneDigit;\r
-               public STRect ImgSpeedPanel;\r
-               public STRect ImgConsoleFont;\r
-               public STRect ImgJudgeString;\r
-               public STRect ImgDanger;\r
-\r
-               public STDGBVALUE<STY>[] OffsetGuitarBassSwap;\r
-               public STDGBVALUE<STXY> PointFullCombo;\r
 \r
+               public STPadValue<CRect> ImgDrPad;\r
+               public CRect ImgJudgeLine;\r
+               public CRect ImgBarLine;\r
+               public CRect ImgBeatLine;\r
+               public CRect ImgComboCombo;\r
+               public CRect ImgComboOneDigit;\r
+               public CRect ImgGaugeOrange;\r
+               public CRect ImgGaugeNormal;\r
+               public CRect ImgGaugeLight;\r
+               public CRect ImgGaugeTopLight;\r
+               public CRect ImgGaugeStar;\r
+               public CRect ImgScoreOneDigit;\r
+               public CRect ImgSpeedPanel;\r
+               public CRect ImgConsoleFont;\r
+               public CRect ImgJudgeString;\r
+               public CRect ImgDanger;\r
+\r
+               public CWH ImgOptionPanel;\r
+\r
+               public STDGBSValue<CY>[] OffsetGuitarBassSwap;\r
+               public STDGBSValue<CXY> PointFullCombo;\r
+\r
+               public STDGBSValue<CXY> OptionPanelSelect;\r
 \r
                /// <summary>\r
-               /// ã\83\87ã\82·ã\83ªã\82¢ã\83©ã\82¤ã\82ºã\81\8cçµ\82äº\86ã\81\97ã\81\9fã\81¨ã\81\8då\91¼ã\81³å\87ºã\81\95ã\82\8cã\81¾ã\81\99ã\80\82\r
-               /// ã\82·ã\83ªã\82¢ã\83«å\8c\96é\9d\9e対象ã\83¡ã\83³ã\83\90ã\81¯ã\81\93ã\81\93ã\81§å\88\9dæ\9c\9få\80¤ã\82\92ä¸\8eã\81\88ます。\r
+               /// ã\82·ã\83ªã\82¢ã\83«å\8c\96対象ã\83¡ã\83³ã\83\90ã\81¯ã\81\93ã\81\93ã\81§å\88\9dæ\9c\9få\80¤ã\82\92ä¸\8eã\81\88ã\81¾ã\81\99ã\80\82XMLã\81\8cå­\98å\9c¨ã\81\97ã\81ªã\81\84å ´å\90\88ä¸\80度ã\81\93ã\82\8cã\82\89ã\81®å\80¤ã\81\8cæ\9b¸ã\81\8dã\81 ã\81\95ã\82\8cã\80\81\r
+               /// ã\82\82ã\81\86ä¸\80度ã\83\87ã\82·ã\83ªã\82¢ã\83©ã\82¤ã\82ºã\81\95ã\82\8cã\81¾ã\81\99ã\80\82XMLã\81\8cå­\98å\9c¨ã\81\99ã\82\8bå ´å\90\88ã\80\81ã\81\93ã\82\8cã\82\89ã\81®å\80¤ã\81¯å\85¨ã\81¦ç\84¡å\8a¹ã\81«ã\81ªã\82\8aます。\r
                /// </summary>\r
-               /// <param name="sc">ストリーミングコンテキスト。使用されません。</param>\r
-               [OnDeserialized]\r
-               public void DefaultDeserializer(StreamingContext sc)\r
+               public CCoordinates()\r
                {\r
-                       ImgJudgeLine = new STRect(0, 0, 64, 16);\r
+                       ImgJudgeLine = new CRect(0, 0, 64, 16);\r
 \r
-                       ImgGtChipOpen = new STRect(72 * 3, 0, 72 * 3, 14);\r
-                       ImgGtRGBButton = new STRect(0, 0, 72, 14);\r
-                       ImgGtWailingChip = new STRect(0, 590, 60, 120);\r
+                       ImgGtChipOpen = new CRect(72 * 3, 0, 72 * 3, 14);\r
+                       ImgGtRGBButton = new CRect(0, 0, 72, 14);\r
+                       ImgGtWailingChip = new CRect(0, 590, 60, 120);\r
                        ImgGtCountWailingChip = 5;\r
                        ImgGtCountRGBChip = 48;\r
                        ImgGtCountOpenChip = 48;\r
 \r
-                       ImgDanger = new STRect(0, 0, 64, 256);\r
+                       ImgDanger = new CRect(0, 0, 64, 256);\r
 \r
-                       ImgGtButtonR = new STRect(0, 0, 72, 72);\r
-                       ImgGtButtonG = new STRect(72, 0, 72, 72);\r
-                       ImgGtButtonB = new STRect(144, 0, 72, 72);\r
-                       ImgGtPressingButtonR = new STRect(0, 72, 72, 72);\r
-                       ImgGtPressingButtonG = new STRect(72, 72, 72, 72);\r
-                       ImgGtPressingButtonB = new STRect(144, 72, 72, 72);\r
-                       ImgGtWailingBonus = new STRect(0, 0, 78, 549);\r
+                       ImgGtButtonR = new CRect(0, 0, 72, 72);\r
+                       ImgGtButtonG = new CRect(72, 0, 72, 72);\r
+                       ImgGtButtonB = new CRect(144, 0, 72, 72);\r
+                       ImgGtPressingButtonR = new CRect(0, 72, 72, 72);\r
+                       ImgGtPressingButtonG = new CRect(72, 72, 72, 72);\r
+                       ImgGtPressingButtonB = new CRect(144, 72, 72, 72);\r
+                       ImgGtWailingBonus = new CRect(0, 0, 78, 549);\r
 \r
-                       ImgComboCombo = new STRect(100, 140, 110, 30);\r
-                       ImgComboOneDigit = new STRect(0, 0, 50, 70);\r
+                       ImgComboCombo = new CRect(100, 140, 110, 30);\r
+                       ImgComboOneDigit = new CRect(0, 0, 50, 70);\r
 \r
-                       ImgGtWailingFrame = new STRect(0, 0, 66, 113);\r
-                       ImgSpeedPanel = new STRect(0, 0, 45, 164);\r
+                       ImgGtWailingFrame = new CRect(0, 0, 66, 113);\r
+                       ImgSpeedPanel = new CRect(0, 0, 45, 164);\r
 \r
-                       ImgConsoleFont = new STRect(0, 0, 16, 32);\r
-                       ImgJudgeString = new STRect(0, 0, 256, 36);\r
+                       ImgConsoleFont = new CRect(0, 0, 16, 32);\r
+                       ImgJudgeString = new CRect(0, 0, 256, 36);\r
 \r
                        ImgDrCountChip = 48;\r
-                       ImgDrChipBD = new STRect(0, 20, 99, 22);\r
-                       ImgDrChipHHC = new STRect(99, 16, 72, 18);\r
-                       ImgDrChipSD = new STRect(99 + 72, 16, 72, 18);\r
-                       ImgDrChipHT = new STRect(99 + 72 * 2, 16, 72, 18);\r
-                       ImgDrChipLT = new STRect(99 + 72 * 3, 16, 72, 18);\r
-                       ImgDrChipFT = new STRect(99 + 72 * 4, 16, 72, 18);\r
-                       ImgDrChipCY = new STRect(99 + 72 * 5, 16, 85, 18);\r
-                       ImgDrChipCYDeco = new STRect(99 + 72 * 5, 786, 85, 64);\r
-                       ImgDrChipRCY = new STRect(99 + 72 * 5 + 85, 16, 58, 18);\r
-                       ImgDrChipHHO = new STRect(99 + 72 * 5 + 85, 16, 58, 18);\r
-                       ImgDrChipHHODeco = new STRect(99 + 72 * 5 + 85, 791, 58, 30);\r
-\r
-                       ImgDrPadLCY = new STRect(0, 0, 170, 130);\r
-                       ImgDrPadHH = new STRect(170, 0, 170, 130);\r
-                       ImgDrPadSD = new STRect(340, 0, 170, 130);\r
-                       ImgDrPadBD = new STRect(0, 130, 170, 130);\r
-                       ImgDrPadHT = new STRect(170, 130, 170, 130);\r
-                       ImgDrPadLT = new STRect(340, 130, 170, 130);\r
-                       ImgDrPadFT = new STRect(0, 260, 170, 130);\r
-                       ImgDrPadCY = new STRect(170, 260, 170, 130);\r
-                       ImgDrPadRCY = new STRect(340, 260, 170, 130);\r
-\r
-                       ImgBarLine = new STRect(0, 982, 480, 3);\r
-                       ImgBeatLine = new STRect(0, 985, 480, 2);\r
-\r
-                       ImgGaugeOrange = new STRect(48, 0, 48, 61);\r
-                       ImgGaugeNormal = new STRect(0, 0, 48, 61);\r
-                       ImgGaugeLight = new STRect(0, 0, 48, 576);\r
-                       ImgGaugeTopLight = new STRect(144, 0, 48, 36);\r
-                       ImgGaugeStar = new STRect(0, 72, 96, 72);\r
-\r
-                       ImgScoreOneDigit = new STRect(0, 0, 30, 38);\r
-\r
-                       ImgGtLaneFlash = new STRect(0, 0, -1, 512); // w無効\r
-                       ImgDrLaneFlash = new STRect(0, 0, -1, 768); // w無効\r
-\r
-                       OffsetGuitarBassSwap = new STDGBVALUE<STY>[2];// #24063 2011.1.27 yyagi\r
-                       OffsetGuitarBassSwap[0] = new STDGBVALUE<STY>();\r
-                       OffsetGuitarBassSwap[0].Drums = new STY(0);\r
-                       OffsetGuitarBassSwap[0].Guitar = new STY((int)(21 * Scale.Y));\r
-                       OffsetGuitarBassSwap[0].Bass = new STY((int)(42 * Scale.Y));\r
-                       OffsetGuitarBassSwap[1].Drums = new STY(0);\r
-                       OffsetGuitarBassSwap[1].Guitar = new STY((int)(42 * Scale.Y));\r
-                       OffsetGuitarBassSwap[1].Bass = new STY((int)(21 * Scale.Y));\r
-\r
-                       PointFullCombo = new STDGBVALUE<STXY>();\r
-                       PointFullCombo.Drums = new STXY((int)(0x80 * Scale.X), (int)(0xed * Scale.Y));\r
-                       PointFullCombo.Guitar = new STXY((int)(0xdf * Scale.X), (int)(0xed * Scale.Y));\r
-                       PointFullCombo.Bass = new STXY((int)(0x141 * Scale.X), (int)(0xed * Scale.Y));\r
-               }\r
-\r
-               /// <summary>\r
-               /// デシリアライズを開始しようとする前に呼ばれます。\r
-               /// シリアル化対象メンバを初期化します。\r
-               /// 該当要素がXMLにすでに存在する場合、ここで指定したその要素に対する値は無効です。\r
-               /// </summary>\r
-               /// <param name="sc">ストリーミングコンテキスト。使用しません。</param>\r
-               [OnDeserializing]\r
-               public void DefaultDeserializing(StreamingContext sc)\r
-               {\r
-\r
-                       Lane = new Lane();\r
-                       int x = 480 - 72 * 4;\r
-                       Lane.GtO = new STXW(x, 72);\r
-                       Lane.GtR = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.GtG = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.GtB = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.GtW = new STXW(x, 72);\r
-\r
-                       x = 1920 - 480;\r
-                       Lane.BsO = new STXW(x, 72);\r
-                       Lane.BsR = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.BsG = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.BsB = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.BsW = new STXW(x, 72);\r
-\r
-                       x = 1920 / 2 - 314;\r
-                       Lane.LCY = new STXW(x, 85);\r
-                       x += 85;\r
-                       Lane.HHC = new STXW(x, 72);\r
-                       Lane.HHO = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.SD = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.BD = new STXW(x, 99);\r
-                       x += 99;\r
-                       Lane.HT = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.LT = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.FT = new STXW(x, 72);\r
-                       x += 72;\r
-                       Lane.CY = new STXW(x, 85);\r
-                       Lane.RCY = new STXW(x, 85);\r
-\r
-                       LaneFlash = new STDGBVALUE<STY>();\r
-                       LaneFlash.Drums = new STY(SampleFramework.GameWindowSize.Height - 768);\r
-                       LaneFlash.Guitar = new STY(0);\r
-                       LaneFlash.Bass = new STY(0);\r
-\r
-                       JudgeLine = new STDGBVALUE<STXYW>();\r
-                       JudgeLine.Drums = new STXYW(Lane.LCY.X, 942, Lane.CY.X + Lane.CY.W - Lane.LCY.X);\r
-                       JudgeLine.Guitar = new STXYW(Lane.GtR.X, 138, Lane.GtB.X + Lane.GtB.W - Lane.GtR.X);\r
-                       JudgeLine.Bass = new STXYW(Lane.BsR.X, 138, Lane.BsB.X + Lane.BsB.W - Lane.BsR.X);\r
-\r
-                       // Graph = new STDGBVALUE<STXY>();\r
-\r
-                       Gauge = new STXY(0, 1080);\r
+                       ImgDrChip = new STPadValue<CRect>();\r
+                       ImgDrChip.LC = new CRect(99 + 72 * 5, 16, 85, 18);\r
+                       ImgDrChip.BD = new CRect(0, 20, 99, 22);\r
+                       ImgDrChip.HH = new CRect(99, 16, 72, 18);\r
+                       ImgDrChip.SD = new CRect(99 + 72, 16, 72, 18);\r
+                       ImgDrChip.HT = new CRect(99 + 72 * 2, 16, 72, 18);\r
+                       ImgDrChip.LT = new CRect(99 + 72 * 3, 16, 72, 18);\r
+                       ImgDrChip.FT = new CRect(99 + 72 * 4, 16, 72, 18);\r
+                       ImgDrChip.CY = new CRect(99 + 72 * 5, 16, 85, 18);\r
+                       ImgDrChipCYDeco = new CRect(99 + 72 * 5, 786, 85, 64);\r
+                       ImgDrChip.RD = new CRect(99 + 72 * 5 + 85, 16, 58, 18);\r
+                       ImgDrChip.HHO = new CRect(99 + 72 * 5 + 85, 16, 58, 18);\r
+                       ImgDrChipHHODeco = new CRect(99 + 72 * 5 + 85, 791, 58, 30);\r
+\r
+                       ImgDrPad = new STPadValue<CRect>();\r
+                       ImgDrPad.LC = new CRect(0, 0, 170, 130);\r
+                       ImgDrPad.HH = new CRect(170, 0, 170, 130);\r
+                       ImgDrPad.SD = new CRect(340, 0, 170, 130);\r
+                       ImgDrPad.BD = new CRect(0, 130, 170, 130);\r
+                       ImgDrPad.HT = new CRect(170, 130, 170, 130);\r
+                       ImgDrPad.LT = new CRect(340, 130, 170, 130);\r
+                       ImgDrPad.FT = new CRect(0, 260, 170, 130);\r
+                       ImgDrPad.CY = new CRect(170, 260, 170, 130);\r
+                       ImgDrPad.RD = new CRect(340, 260, 170, 130);\r
+\r
+                       ImgBarLine = new CRect(0, 982, 480, 3);\r
+                       ImgBeatLine = new CRect(0, 985, 480, 2);\r
+\r
+                       ImgGaugeOrange = new CRect(48, 0, 48, 61);\r
+                       ImgGaugeNormal = new CRect(0, 0, 48, 61);\r
+                       ImgGaugeLight = new CRect(0, 0, 48, 576);\r
+                       ImgGaugeTopLight = new CRect(144, 0, 48, 36);\r
+                       ImgGaugeStar = new CRect(0, 72, 96, 72);\r
+\r
+                       ImgScoreOneDigit = new CRect(0, 0, 30, 38);\r
+\r
+                       // w無効\r
+                       ImgGtLaneFlash = new CRect(0, 0, -1, 512);\r
+                       // w無効\r
+                       ImgDrLaneFlash = new CRect(0, 0, -1, 768);\r
+\r
+                       ImgOptionPanel = new CWH(72, 27);\r
+\r
+                       // #24063 2011.1.27 yyagi\r
+                       OffsetGuitarBassSwap = new STDGBSValue<CY>[2];\r
+                       OffsetGuitarBassSwap[0] = new STDGBSValue<CY>();\r
+                       OffsetGuitarBassSwap[0].Drums = new CY(0);\r
+                       OffsetGuitarBassSwap[0].Guitar = new CY((int)(21 * Scale.Y));\r
+                       OffsetGuitarBassSwap[0].Bass = new CY((int)(42 * Scale.Y));\r
+                       OffsetGuitarBassSwap[1].Drums = new CY(0);\r
+                       OffsetGuitarBassSwap[1].Guitar = new CY((int)(42 * Scale.Y));\r
+                       OffsetGuitarBassSwap[1].Bass = new CY((int)(21 * Scale.Y));\r
+\r
+                       PointFullCombo = new STDGBSValue<CXY>();\r
+                       PointFullCombo.Drums = new CXY((int)(0x80 * Scale.X), (int)(0xed * Scale.Y));\r
+                       PointFullCombo.Guitar = new CXY((int)(0xdf * Scale.X), (int)(0xed * Scale.Y));\r
+                       PointFullCombo.Bass = new CXY((int)(0x141 * Scale.X), (int)(0xed * Scale.Y));\r
+\r
+                       DrPadOffset = new STPadValue<CY>();\r
+\r
+                       DrPadOffset.LC = new CY(0); // <- 非対象化\r
+                       DrPadOffset.HH = new CY(10);\r
+                       DrPadOffset.HHO = new CY(10);\r
+                       DrPadOffset.SD = new CY(22);\r
+                       DrPadOffset.BD = new CY(30);\r
+                       DrPadOffset.HT = new CY(0);\r
+                       DrPadOffset.LT = new CY(15);\r
+                       DrPadOffset.FT = new CY(30);\r
+                       DrPadOffset.CY = new CY(15);\r
+                       DrPadOffset.RD = new CY(80);\r
+                       DrPad = new CY(930);\r
+\r
+                       Instrument = new STDGBSValue<CW>();\r
+                       Instrument.Drums = new CW(72 * 5 + 85 * 2 + 99);\r
+                       Instrument.Guitar = new CW(72 * 4);\r
+                       Instrument.Bass = new CW(72 * 4);\r
+\r
+                       Gauge = new CXY(0, 1080); // <- 左固定\r
                        GaugeMax = 1080;\r
+                       Danger = new CRange(0, SampleFramework.GameWindowSize.Width - 64);\r
+                       StatusPanel = new CW(45);\r
+                       Score = new STDGBSValue<CY>();\r
+                       Score.Drums = new CY(30);\r
+                       Score.Guitar = new CY(30);\r
+                       Score.Bass = new CY(30);\r
+\r
+                       Panel = new CXY(SampleFramework.GameWindowSize.Width, 0);\r
+                       Movie = new CWH(556, 710);\r
+\r
+                       LaneFlash = new STDGBSValue<CY>();\r
+                       LaneFlash.Drums = new CY(SampleFramework.GameWindowSize.Height - 768);\r
+                       LaneFlash.Guitar = new CY(0);\r
+                       LaneFlash.Bass = new CY(0);\r
+\r
+                       OptionPanelSelect = new STDGBSValue<CXY>();\r
+                       OptionPanelSelect.Drums = new CXY(1107, 23);\r
+                       OptionPanelSelect.Guitar = new CXY(1107, 50);\r
+                       OptionPanelSelect.Bass = new CXY(1107, 77);\r
 \r
-                       Graph = new STDGBVALUE<STRect>();\r
-                       Graph.Drums = new STRect(SampleFramework.GameWindowSize.Width / 2 + 314, 0, 60, 400);\r
-                       Graph.Guitar = new STRect(480, 0, 60, 400);\r
-                       Graph.Bass = new STRect(SampleFramework.GameWindowSize.Width - 480 + 72 * 4, 0, 60, 400);\r
-\r
-                       Debug = new STXY(450 * 3, 128); // 要修正 actPlayInfo.t進行描画\r
-                       Movie = new STRect(619 + 682, 128, 556, 710);\r
-\r
-                       Combo = new STDGBVALUE<STXY>();\r
-                       Combo.Drums = new STXY(JudgeLine.Drums.W / 2 + JudgeLine.Drums.X, 80);\r
-                       Combo.Guitar = new STXY((JudgeLine.Guitar.W + 72) / 2 + JudgeLine.Guitar.X, 800);\r
-                       Combo.Bass = new STXY((JudgeLine.Bass.W + 72) / 2 + JudgeLine.Bass.X, 800);\r
-\r
-                       Score = new STDGBVALUE<STXY>();\r
-                       Score.Drums = new STXY(JudgeLine.Drums.X + JudgeLine.Drums.W / 2, 10);\r
-                       Score.Guitar = new STXY(JudgeLine.Guitar.X + JudgeLine.Guitar.W / 2, 10);\r
-                       Score.Bass = new STXY(JudgeLine.Bass.X + JudgeLine.Bass.W / 2, 10);\r
-\r
-                       Judge = new Judge();\r
-                       Judge.LCY = new STXY(Lane.LCY.X + Lane.LCY.W / 2, 350);\r
-                       Judge.HH = new STXY(Lane.HHC.X + Lane.HHC.W / 2, 420);\r
-                       Judge.SD = new STXY(Lane.SD.X + Lane.SD.W / 2, 350);\r
-                       Judge.BD = new STXY(Lane.BD.X + Lane.BD.W / 2, 420);\r
-                       Judge.HT = new STXY(Lane.HT.X + Lane.HT.W / 2, 350);\r
-                       Judge.LT = new STXY(Lane.LT.X + Lane.LT.W / 2, 420);\r
-                       Judge.FT = new STXY(Lane.FT.X + Lane.FT.W / 2, 350);\r
-                       Judge.CY = new STXY(Lane.CY.X + Lane.CY.W / 2, 420);\r
-                       Judge.Gt = new STXY(Combo.Guitar.X, 600);\r
-                       Judge.Bs = new STXY(Combo.Bass.X, 600);\r
-\r
-                       DrMovie = new STRect(619 + 682, 128, 556, 710);\r
-                       GtMovie = new STRect(682, 112, 556, 710);\r
-                       Movie = new STRect(1153, 128, 556, 710);\r
-\r
-                       Panel = new STRect(SampleFramework.GameWindowSize.Width, 0, 0, 0);\r
-                       StatusPanel = new STDGBVALUE<STXY>();\r
-                       StatusPanel.Drums = new STXY(Lane.LCY.X - 45, 0);\r
-                       StatusPanel.Guitar = new STXY(Lane.GtR.X - 45, 0);\r
-                       StatusPanel.Bass = new STXY(Lane.BsR.X - 45, 0);\r
-\r
-                       BarLine = new STDGBVALUE<STX>();\r
-                       BarLine.Drums = new STX(619);\r
-                       BarLine.Guitar = new STX(78);\r
-                       BarLine.Bass = new STX(480 * 3);\r
-\r
-                       DrPadOffsetLCY = new STY(0);\r
-                       DrPadOffsetHH = new STY(10);\r
-                       DrPadOffsetSD = new STY(22);\r
-                       DrPadOffsetBD = new STY(30);\r
-                       DrPadOffsetHT = new STY(0);\r
-                       DrPadOffsetLT = new STY(15);\r
-                       DrPadOffsetFT = new STY(30);\r
-                       DrPadOffsetCY = new STY(15);\r
-                       DrPadOffsetRCY = new STXY(80, 0);\r
-                       DrPad = new STY(930);\r
-\r
-                       SuddenFrom = new STDGBVALUE<STY>();\r
-                       SuddenFrom.Drums = new STY(450);\r
-                       SuddenFrom.Guitar = new STY(450);\r
-                       SuddenFrom.Bass = new STY(450);\r
-                       HiddenFrom = new STDGBVALUE<STY>();\r
-                       HiddenFrom.Drums = new STY(225);\r
-                       HiddenFrom.Guitar = new STY(225);\r
-                       HiddenFrom.Bass = new STY(225);\r
-                       SuddenFadeInFrom.Drums = new STY(562);\r
-                       HiddenFadeOutFrom.Drums = new STY(337);\r
-\r
-                       Danger = new STRange(0, SampleFramework.GameWindowSize.Width - 64);\r
-               }\r
-\r
-               /// <summary>\r
-               /// シリアル化対象メンバはここで初期値を与えます。XMLが存在しない場合一度これらの値が書きだされ、\r
-               /// もう一度デシリアライズされます。XMLが存在する場合、これらの値は全て無効になります。\r
-               /// </summary>\r
-               public Coordinates()\r
-               {\r
-                       StreamingContext sc = new StreamingContext();\r
-                       DefaultDeserializing(sc);\r
                }\r
        }\r
 }\r
index a44d79d..046d6fc 100644 (file)
@@ -6,7 +6,7 @@ using System.Runtime.Serialization;
 \r
 namespace DTXMania\r
 {\r
-       public enum Ech定義 : int\r
+       public enum EChannel : int\r
        {\r
                Invalid = -1,\r
                /// <summary>\r
@@ -312,88 +312,68 @@ namespace DTXMania
                //nouse_ff                      = 0xFF,\r
        }\r
 \r
-       public enum ECYGroup\r
-       {\r
-               打ち分ける,\r
-               共通\r
-       }\r
-       public enum EFTGroup\r
-       {\r
-               打ち分ける,\r
-               共通\r
-       }\r
-       public enum EHHGroup\r
-       {\r
-               全部打ち分ける,\r
-               ハイハットのみ打ち分ける,\r
-               左シンバルのみ打ち分ける,\r
-               全部共通\r
-       }\r
-       public enum EBDGroup            // #27029 2012.1.4 from add\r
+       public enum EDTX種別\r
        {\r
-               打ち分ける,\r
-               どっちもBD\r
+               DTX,\r
+               GDA,\r
+               G2D,\r
+               BMS,\r
+               BME,\r
+               SMF\r
        }\r
-       public enum Eダークモード\r
+\r
+       public enum Eレーンビットパターン\r
        {\r
-               OFF,\r
-               HALF,\r
-               FULL\r
-       }\r
-       public enum Eダメージレベル\r
+               OPEN,\r
+               xxB,\r
+               xGx,\r
+               xGB,\r
+               Rxx,\r
+               RxB,\r
+               RGx,\r
+               RGB\r
+       };\r
+\r
+       public enum Eシステムサウンド\r
        {\r
-               少ない = 0,\r
-               普通 = 1,\r
-               大きい = 2\r
+               BGMオプション画面,\r
+               BGMコンフィグ画面,\r
+               BGM起動画面,\r
+               BGM選曲画面,\r
+               SOUNDステージ失敗音,\r
+               SOUNDカーソル移動音,\r
+               SOUNDゲーム開始音,\r
+               SOUNDゲーム終了音,\r
+               SOUNDステージクリア音,\r
+               SOUNDタイトル音,\r
+               SOUNDフルコンボ音,\r
+               SOUND歓声音,\r
+               SOUND曲読込開始音,\r
+               SOUND決定音,\r
+               SOUND取消音,\r
+               SOUND変更音,\r
+               Count               // システムサウンド総数の計算用\r
        }\r
-       public enum Eパッド                  // 演奏用のenum。ここを修正するときは、次に出てくる EKeyConfigPad と EパッドFlag もセットで修正すること。\r
+\r
+       public enum E演奏画面の戻り値\r
        {\r
-               HH = 0,\r
-               R = 0,\r
-               SD = 1,\r
-               G = 1,\r
-               BD = 2,\r
-               B = 2,\r
-               HT = 3,\r
-               Pick = 3,\r
-               LT = 4,\r
-               Wail = 4,\r
-               FT = 5,\r
-               Cancel = 5,\r
-               CY = 6,\r
-               Decide = 6,\r
-               HHO = 7,\r
-               RD = 8,\r
-               LC = 9,\r
-               HP = 10,        // #27029 2012.1.4 from\r
-               MAX,                    // 門番用として定義\r
-               UNKNOWN = 99\r
+               継続,\r
+               演奏中断,\r
+               ステージ失敗,\r
+               ステージクリア,\r
+               再読込_再演奏,\r
+               再演奏\r
        }\r
-       public enum EKeyConfigPad               // #24609 キーコンフィグで使うenum。capture要素あり。\r
+\r
+       public enum E曲読込画面の戻り値\r
        {\r
-               HH = Eパッド.HH,\r
-               R = Eパッド.R,\r
-               SD = Eパッド.SD,\r
-               G = Eパッド.G,\r
-               BD = Eパッド.BD,\r
-               B = Eパッド.B,\r
-               HT = Eパッド.HT,\r
-               Pick = Eパッド.Pick,\r
-               LT = Eパッド.LT,\r
-               Wail = Eパッド.Wail,\r
-               FT = Eパッド.FT,\r
-               Cancel = Eパッド.Cancel,\r
-               CY = Eパッド.CY,\r
-               Decide = Eパッド.Decide,\r
-               HHO = Eパッド.HHO,\r
-               RD = Eパッド.RD,\r
-               LC = Eパッド.LC,\r
-               HP = Eパッド.HP,             // #27029 2012.1.4 from\r
-               Capture,\r
-               UNKNOWN = Eパッド.UNKNOWN\r
+               継続,\r
+               読込完了,\r
+               読込中止\r
        }\r
+\r
        [Flags]\r
-       public enum EパッドFlag              // #24063 2011.1.16 yyagi コマンド入力用 パッド入力のフラグ化\r
+       public enum EPadFlag        // #24063 2011.1.16 yyagi コマンド入力用 パッド入力のフラグ化\r
        {\r
                None = 0,\r
                HH = 1,\r
@@ -413,16 +393,10 @@ namespace DTXMania
                HHO = 128,\r
                RD = 256,\r
                LC = 512,\r
-               HP = 1024,                              // #27029\r
-               UNKNOWN = 2048\r
-       }\r
-       public enum Eランダムモード\r
-       {\r
-               OFF,\r
-               RANDOM,\r
-               SUPERRANDOM,\r
-               HYPERRANDOM\r
+               HP = 1024,              // #27029\r
+               Unknown = 2048\r
        }\r
+\r
        public enum ESoundChipType\r
        {\r
                Drums,\r
@@ -430,179 +404,381 @@ namespace DTXMania
                Bass,\r
                SE,\r
                BGM,\r
-               UNKNOWN = 99\r
+               Unknown\r
        }\r
 \r
-       public enum E楽器パート            // ここを修正するときは、セットで次の EKeyConfigPart も修正すること。\r
+       public enum EAVIType\r
        {\r
-               DRUMS = 0,\r
-               GUITAR = 1,\r
-               BASS = 2,\r
-               UNKNOWN = 99\r
+               Unknown,\r
+               AVI,\r
+               AVIPAN\r
        }\r
-       public enum EKeyConfigPart      // : E楽器パート\r
+\r
+       public enum EBGAType\r
        {\r
-               DRUMS = E楽器パート.DRUMS,\r
-               GUITAR = E楽器パート.GUITAR,\r
-               BASS = E楽器パート.BASS,\r
-               SYSTEM,\r
-               UNKNOWN = E楽器パート.UNKNOWN\r
+               Unknown,\r
+               BMP,\r
+               BMPTEX,\r
+               BGA,\r
+               BGAPAN\r
        }\r
 \r
-       public enum E打ち分け時の再生の優先順位\r
+       public enum EFIFOMode\r
        {\r
-               ChipがPadより優先,\r
-               Padã\81\8cChipã\82\88ã\82\8aå\84ªå\85\88\r
+               フェードイン,\r
+               ã\83\95ã\82§ã\83¼ã\83\89ã\82¢ã\82¦ã\83\88\r
        }\r
-       public enum E入力デバイス\r
+\r
+       public enum EJudge\r
        {\r
-               キーボード = 0,\r
-               MIDI入力 = 1,\r
-               ジョイパッド = 2,\r
-               マウス = 3,\r
-               不明 = -1\r
+               Perfect,\r
+               Great,\r
+               Good,\r
+               Poor,\r
+               Miss,\r
+               Bad,\r
+               Auto\r
        }\r
-       public enum E判定\r
+\r
+       [DataContract]\r
+       public enum EActiveInstrument\r
        {\r
-               Perfect = 0,\r
-               Great = 1,\r
-               Good = 2,\r
-               Poor = 3,\r
-               Miss = 4,\r
-               Bad = 5,\r
-               Auto\r
+               [EnumMember]\r
+               Both,\r
+               [EnumMember]\r
+               DrOnly,\r
+               [EnumMember]\r
+               GBOnly,\r
        }\r
-       public enum E判定文字表示位置\r
+\r
+       [DataContract]\r
+       public enum ECYGroup\r
        {\r
-               表示OFF,\r
-               レーン上,\r
-               判定ライン上,\r
-               コンボ下\r
+               [EnumMember]\r
+               None,\r
+               [EnumMember]\r
+               Group\r
        }\r
-       public enum E判定位置\r
+\r
+       [DataContract]\r
+       public enum EFTGroup\r
        {\r
-               標準 = 0,\r
-               Lower,\r
-               MAX\r
+               [EnumMember]\r
+               None,\r
+               [EnumMember]\r
+               Group\r
        }\r
-       public enum E判定表示優先度\r
+\r
+       [DataContract]\r
+       public enum EHHGroup\r
        {\r
-               Chipより下,\r
-               Chipより上\r
+               [EnumMember]\r
+               None,\r
+               [EnumMember]\r
+               HO_HC,\r
+               [EnumMember]\r
+               LC_HH,\r
+               [EnumMember]\r
+               Group\r
        }\r
-       public enum Eドラムレーン表示位置\r
+\r
+       [DataContract]\r
+       // #27029 2012.1.4 from add\r
+       // Group はどちらも BD として扱われる\r
+       public enum EBDGroup\r
        {\r
-               Left = 0,\r
-               Center = 1\r
+               [EnumMember]\r
+               None,\r
+               [EnumMember]\r
+               Group\r
        }\r
-       public enum EAVI種別\r
+\r
+       [DataContract]\r
+       public enum EDark\r
        {\r
-               Unknown,\r
-               AVI,\r
-               AVIPAN\r
+               [EnumMember]\r
+               Off,\r
+               [EnumMember]\r
+               Half,\r
+               [EnumMember]\r
+               Full\r
        }\r
-       public enum EBGA種別\r
+\r
+       /// <summary>\r
+       /// 演奏用のenum。ここを修正するときは、次に出てくる EパッドFlag もセットで修正すること。\r
+       /// </summary>\r
+       [DataContract]\r
+       public enum EPad\r
        {\r
+               [EnumMember]\r
+               Min = 0,\r
+               [EnumMember]\r
+               DrumsPadMin = 0,\r
+               [EnumMember]\r
+               HH = 0,\r
+               [EnumMember]\r
+               SD = 1,\r
+               [EnumMember]\r
+               BD = 2,\r
+               [EnumMember]\r
+               HT = 3,\r
+               [EnumMember]\r
+               LT = 4,\r
+               [EnumMember]\r
+               CY = 5,\r
+               [EnumMember]\r
+               FT = 6,\r
+               [EnumMember]\r
+               HHO = 7,\r
+               [EnumMember]\r
+               RD = 8,\r
+               [EnumMember]\r
+               LC = 9,\r
+               // #27029 2012.1.4 from\r
+               [EnumMember]\r
+               HP = 10,\r
+               [EnumMember]\r
+               DrumsPadMax = 11,\r
+\r
+               [EnumMember]\r
+               GuitarPadMin = 11,\r
+               [EnumMember]\r
+               GtR = 11,\r
+               [EnumMember]\r
+               GtG = 12,\r
+               [EnumMember]\r
+               GtB = 13,\r
+               [EnumMember]\r
+               GtPick = 14,\r
+               [EnumMember]\r
+               GtWail = 15,\r
+               [EnumMember]\r
+               GtCancel = 16,\r
+               [EnumMember]\r
+               GtDecide = 17,\r
+               [EnumMember]\r
+               GuitarPadMax = 18,\r
+\r
+               [EnumMember]\r
+               BassPadMin = 18,\r
+               [EnumMember]\r
+               BsR = 18,\r
+               [EnumMember]\r
+               BsG = 19,\r
+               [EnumMember]\r
+               BsB = 20,\r
+               [EnumMember]\r
+               BsPick = 21,\r
+               [EnumMember]\r
+               BsWail = 22,\r
+               [EnumMember]\r
+               BsCancel = 23,\r
+               [EnumMember]\r
+               BsDecide = 24,\r
+               [EnumMember]\r
+               BassPadMax = 25,\r
+\r
+               [EnumMember]\r
+               Capture = 25,\r
+               [EnumMember]\r
+               Max = 26,\r
+               [EnumMember]\r
                Unknown,\r
-               BMP,\r
-               BMPTEX,\r
-               BGA,\r
-               BGAPAN\r
        }\r
-       public enum EFIFOモード\r
+\r
+\r
+       [DataContract]\r
+       public enum EDamage\r
        {\r
-               フェードイン,\r
-               フェードアウト\r
+               [EnumMember]\r
+               Easy,\r
+               [EnumMember]\r
+               Normal,\r
+               [EnumMember]\r
+               Hard\r
        }\r
-       public enum Eドラムコンボ文字の表示位置\r
+\r
+       [DataContract]\r
+       public enum ERandom\r
        {\r
-               LEFT,\r
-               CENTER,\r
-               RIGHT,\r
-               OFF\r
+               [EnumMember]\r
+               Off,\r
+               [EnumMember]\r
+               Random,\r
+               [EnumMember]\r
+               Super,\r
+               [EnumMember]\r
+               Hyper\r
        }\r
-       public enum Eレーン\r
+\r
+       [DataContract]\r
+       public enum EPart      // ここを修正するときは、セットで次の EKeyConfigPart も修正すること。\r
        {\r
-               LC = 0,\r
-               HH,\r
-               SD,\r
-               BD,\r
-               HT,\r
-               LT,\r
-               FT,\r
-               CY,\r
-               RD,             // 将来の独立レーン化/独立AUTO設定を見越して追加\r
-               Guitar, // AUTOレーン判定を容易にするため、便宜上定義しておく(未使用)\r
-               Bass,   // (未使用)\r
-               GtR,\r
-               GtG,\r
-               GtB,\r
-               GtPick,\r
-               GtW,\r
-               BsR,\r
-               BsG,\r
-               BsB,\r
-               BsPick,\r
-               BsW,\r
-               MAX,    // 要素数取得のための定義 ("BGM"は使わない前提で)\r
-               BGM\r
+               [EnumMember]\r
+               Drums,\r
+               [EnumMember]\r
+               Guitar,\r
+               [EnumMember]\r
+               Bass,\r
+               [EnumMember]\r
+               System,\r
+               [EnumMember]\r
+               Unknown,\r
        }\r
-       public enum Eレーン数\r
+\r
+       [DataContract]\r
+       public enum ESoundDeviceTypeForConfig\r
        {\r
-               物理 = 8,     // LC, HH,     SD, BD, HT, LT, FT, CY\r
-               論理 = 10     // LC, HO, HC, SD, BD, HT, LT, FT, RC, RD\r
+               [EnumMember]\r
+               DSound,\r
+               [EnumMember]\r
+               WASAPI,\r
+               [EnumMember]\r
+               ASIO,\r
        }\r
-       public enum Eログ出力\r
+\r
+       [DataContract]\r
+       public enum EHitSoundPriority\r
        {\r
-               OFF,\r
-               ON通常,\r
-               ON詳細あり\r
+               [EnumMember]\r
+               Chip,\r
+               [EnumMember]\r
+               Pad\r
        }\r
-       public enum E演奏画面の戻り値\r
+\r
+       [DataContract]\r
+       public enum EInputDevice\r
        {\r
-               継続,\r
-               演奏中断,\r
-               ステージ失敗,\r
-               ステージクリア,\r
-               再読込_再演奏,\r
-               再演奏\r
+               [EnumMember]\r
+               Keyboard,\r
+               [EnumMember]\r
+               MIDIIn,\r
+               [EnumMember]\r
+               JoyPad,\r
+               [EnumMember]\r
+               Mouse,\r
+               [EnumMember]\r
+               Unknown\r
        }\r
-       public enum E曲読込画面の戻り値\r
+\r
+       [DataContract]\r
+       public enum EJudgeDisplayPriority\r
        {\r
-               継続 = 0,\r
-               読込完了,\r
-               読込中止\r
+               [EnumMember]\r
+               Under,\r
+               [EnumMember]\r
+               Over\r
+       }\r
+\r
+       [DataContract]\r
+       public enum ELane\r
+       {\r
+               [EnumMember]\r
+               Min = 0,\r
+               [EnumMember]\r
+               DrumsLaneMin = 0,\r
+               [EnumMember]\r
+               LC = 0,\r
+               [EnumMember]\r
+               HH = 1,\r
+               [EnumMember]\r
+               SD = 2,\r
+               [EnumMember]\r
+               BD = 3,\r
+               [EnumMember]\r
+               HT = 4,\r
+               [EnumMember]\r
+               LT = 5,\r
+               [EnumMember]\r
+               FT = 6,\r
+               [EnumMember]\r
+               CY = 7,\r
+               [EnumMember]\r
+               DrumsLaneMax = 8,\r
+               [EnumMember]\r
+               GuitarLaneMin = 8,\r
+               [EnumMember]\r
+               GtR = 8,\r
+               [EnumMember]\r
+               GtG = 9,\r
+               [EnumMember]\r
+               GtB = 10,\r
+               [EnumMember]\r
+               GtW = 11,\r
+               [EnumMember]\r
+               GuitarLaneMax = 12,\r
+               [EnumMember]\r
+               BassLaneMin = 12,\r
+               [EnumMember]\r
+               BsR = 12,\r
+               [EnumMember]\r
+               BsG = 13,\r
+               [EnumMember]\r
+               BsB = 14,\r
+               [EnumMember]\r
+               BsW = 15,\r
+               [EnumMember]\r
+               BassLaneMax = 16,\r
+\r
+               // 要素数取得のための定義 ("BGM"は含めない)\r
+               [EnumMember]\r
+               Max = 16,\r
+               [EnumMember]\r
+               BGM = 17,\r
        }\r
+\r
        /// <summary>\r
        /// 入力ラグ表示タイプ\r
        /// </summary>\r
+       [DataContract]\r
        public enum EShowLagType\r
        {\r
-               OFF,                    // 全く表示しない\r
-               ON,                             // 判定に依らず全て表示する\r
-               GREAT_POOR              // GREAT-MISSの時のみ表示する(PERFECT時は表示しない)\r
+               [EnumMember]\r
+               Off,            // 全く表示しない\r
+               [EnumMember]\r
+               On,             // 判定に依らず全て表示する\r
+               [EnumMember]\r
+               UGreat      // GREAT-MISSの時のみ表示する(PERFECT時は表示しない)\r
        }\r
 \r
-       /// <summary>\r
-       /// 透明チップの種類\r
-       /// </summary>\r
-       public enum EInvisible\r
+       [DataContract]\r
+       public enum ESudHidInv\r
        {\r
-               OFF,            // チップを透明化しない\r
-               SEMI,           // Poor/Miss時だけ、一時的に透明解除する\r
-               FULL            // チップを常に透明化する\r
+               [EnumMember]\r
+               Off,\r
+               [EnumMember]\r
+               Sudden,\r
+               [EnumMember]\r
+               Hidden,\r
+               [EnumMember]\r
+               SudHid,\r
+               [EnumMember]\r
+               SemiInv,\r
+               [EnumMember]\r
+               FullInv\r
        }\r
 \r
        /// <summary>\r
        /// 使用するAUTOゴーストデータの種類 (#35411 chnmr0)\r
        /// </summary>\r
+       [DataContract]\r
        public enum EAutoGhostData\r
        {\r
-               PERFECT = 0, // 従来のAUTO\r
-               LAST_PLAY = 1, // (.score.ini) の LastPlay ゴースト\r
-               HI_SKILL = 2, // (.score.ini) の HiSkill ゴースト\r
-               HI_SCORE = 3, // (.score.ini) の HiScore ゴースト\r
-               ONLINE = 4 // オンラインゴースト (DTXMOS からプラグインが取得、本体のみでは指定しても無効)\r
+               // 従来のAUTO\r
+               [EnumMember]\r
+               Perfect,\r
+               // (.score.ini) の LastPlay ゴースト\r
+               [EnumMember]\r
+               LastPlay,\r
+               // (.score.ini) の HiSkill ゴースト\r
+               [EnumMember]\r
+               HiSkill,\r
+               // (.score.ini) の HiScore ゴースト\r
+               [EnumMember]\r
+               HiScore,\r
+               // オンラインゴースト (DTXMOS からプラグインが取得、本体のみでは指定しても無効)\r
+               [EnumMember]\r
+               Online\r
        }\r
 \r
        /// <summary>\r
@@ -610,24 +786,228 @@ namespace DTXMania
        /// ここでNONE以外を指定してかつ、ゴーストが利用可能な場合グラフの目標値に描画される\r
        /// NONE の場合従来の動作\r
        /// </summary>\r
+       [DataContract]\r
        public enum ETargetGhostData\r
        {\r
-               NONE = 0,\r
-               PERFECT = 1,\r
-               LAST_PLAY = 2, // (.score.ini) の LastPlay ゴースト\r
-               HI_SKILL = 3, // (.score.ini) の HiSkill ゴースト\r
-               HI_SCORE = 4, // (.score.ini) の HiScore ゴースト\r
-               ONLINE = 5 // オンラインゴースト (DTXMOS からプラグインが取得、本体のみでは指定しても無効)\r
+               [EnumMember]\r
+               None,\r
+               [EnumMember]\r
+               Perfect,\r
+               // (.score.ini) の LastPlay ゴースト\r
+               [EnumMember]\r
+               LastPlay,\r
+               // (.score.ini) の HiSkill ゴースト\r
+               [EnumMember]\r
+               HiSkill,\r
+               // (.score.ini) の HiScore ゴースト\r
+               [EnumMember]\r
+               HiScore,\r
+               // オンラインゴースト (DTXMOS からプラグインが取得、本体のみでは指定しても無効)\r
+               [EnumMember]\r
+               Online\r
+       }\r
+\r
+       [DataContract]\r
+       public enum EThreeState\r
+       {\r
+               [EnumMember]\r
+               Off,\r
+               [EnumMember]\r
+               On,\r
+               [EnumMember]\r
+               X\r
+       }\r
+\r
+\r
+       [DataContract]\r
+       public enum EOptionType\r
+       {\r
+               [EnumMember]\r
+               Normal,\r
+               [EnumMember]\r
+               Other\r
+       }\r
+\r
+       [DataContract]\r
+       public class STPadValue<T>\r
+       {\r
+               [DataMember]\r
+               public T HH;\r
+               [DataMember]\r
+               public T SD;\r
+               [DataMember]\r
+               public T BD;\r
+               [DataMember]\r
+               public T HT;\r
+               [DataMember]\r
+               public T LT;\r
+               [DataMember]\r
+               public T CY;\r
+               [DataMember]\r
+               public T FT;\r
+               [DataMember]\r
+               public T HHO;\r
+               [DataMember]\r
+               public T RD;\r
+               [DataMember]\r
+               public T LC;\r
+               [DataMember]\r
+               public T HP;\r
+\r
+               [DataMember]\r
+               public T GtR;\r
+               [DataMember]\r
+               public T GtG;\r
+               [DataMember]\r
+               public T GtB;\r
+               [DataMember]\r
+               public T GtPick;\r
+               [DataMember]\r
+               public T GtWail;\r
+               [DataMember]\r
+               public T GtCancel;\r
+               [DataMember]\r
+               public T GtDecide;\r
+\r
+               [DataMember]\r
+               public T BsR;\r
+               [DataMember]\r
+               public T BsG;\r
+               [DataMember]\r
+               public T BsB;\r
+               [DataMember]\r
+               public T BsPick;\r
+               [DataMember]\r
+               public T BsWail;\r
+               [DataMember]\r
+               public T BsCancel;\r
+               [DataMember]\r
+               public T BsDecide;\r
+\r
+               [DataMember]\r
+               public T Capture;\r
+\r
+               public T this[EPad e]\r
+               {\r
+                       get\r
+                       {\r
+                               switch (e)\r
+                               {\r
+                                       case EPad.HH: return HH;\r
+                                       case EPad.SD: return SD;\r
+                                       case EPad.BD: return BD;\r
+                                       case EPad.HT: return HT;\r
+                                       case EPad.LT: return LT;\r
+                                       case EPad.CY: return CY;\r
+                                       case EPad.FT: return FT;\r
+                                       case EPad.HHO: return HHO;\r
+                                       case EPad.RD: return RD;\r
+                                       case EPad.LC: return LC;\r
+                                       case EPad.HP: return HP;\r
+                                       case EPad.GtR: return GtR;\r
+                                       case EPad.GtG: return GtG;\r
+                                       case EPad.GtB: return GtB;\r
+                                       case EPad.GtPick: return GtPick;\r
+                                       case EPad.GtWail: return GtWail;\r
+                                       case EPad.GtCancel: return GtCancel;\r
+                                       case EPad.GtDecide: return GtDecide;\r
+                                       case EPad.BsR: return BsR;\r
+                                       case EPad.BsG: return BsG;\r
+                                       case EPad.BsB: return BsB;\r
+                                       case EPad.BsPick: return BsPick;\r
+                                       case EPad.BsWail: return BsWail;\r
+                                       case EPad.BsCancel: return BsCancel;\r
+                                       case EPad.BsDecide: return BsDecide;\r
+                                       case EPad.Capture: return Capture;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+\r
+                       set\r
+                       {\r
+                               switch (e)\r
+                               {\r
+                                       case EPad.HH: HH = value; return;\r
+                                       case EPad.SD: SD = value; return;\r
+                                       case EPad.BD: BD = value; return;\r
+                                       case EPad.HT: HT = value; return;\r
+                                       case EPad.LT: LT = value; return;\r
+                                       case EPad.CY: CY = value; return;\r
+                                       case EPad.FT: FT = value; return;\r
+                                       case EPad.HHO: HHO = value; return;\r
+                                       case EPad.RD: RD = value; return;\r
+                                       case EPad.LC: LC = value; return;\r
+                                       case EPad.HP: HP = value; return;\r
+                                       case EPad.GtR: GtR = value; return;\r
+                                       case EPad.GtG: GtG = value; return;\r
+                                       case EPad.GtB: GtB = value; return;\r
+                                       case EPad.GtPick: GtPick = value; return;\r
+                                       case EPad.GtWail: GtWail = value; return;\r
+                                       case EPad.GtCancel: GtCancel = value; return;\r
+                                       case EPad.GtDecide: GtDecide = value; return;\r
+                                       case EPad.BsR: BsR = value; return;\r
+                                       case EPad.BsG: BsG = value; return;\r
+                                       case EPad.BsB: BsB = value; return;\r
+                                       case EPad.BsPick: BsPick = value; return;\r
+                                       case EPad.BsWail: BsWail = value; return;\r
+                                       case EPad.BsCancel: BsCancel = value; return;\r
+                                       case EPad.BsDecide: BsDecide = value; return;\r
+                                       case EPad.Capture: Capture = value; return;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+       [DataContract]\r
+       public class STJudgeValue<T>\r
+       {\r
+               [DataMember]\r
+               public T Perfect;\r
+               [DataMember]\r
+               public T Great;\r
+               [DataMember]\r
+               public T Good;\r
+               [DataMember]\r
+               public T Poor;\r
+\r
+               public T this[EJudge index]\r
+               {\r
+                       get\r
+                       {\r
+                               switch (index)\r
+                               {\r
+                                       case EJudge.Perfect: return this.Perfect;\r
+                                       case EJudge.Great: return this.Great;\r
+                                       case EJudge.Good: return this.Good;\r
+                                       case EJudge.Poor: return this.Poor;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+                       set\r
+                       {\r
+                               switch (index)\r
+                               {\r
+                                       case EJudge.Perfect: this.Perfect = value; return;\r
+                                       case EJudge.Great: this.Great = value; return;\r
+                                       case EJudge.Good: this.Good = value; return;\r
+                                       case EJudge.Poor: this.Poor = value; return;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+               }\r
        }\r
 \r
        /// <summary>\r
        /// Drum/Guitar/Bass の値を扱う汎用の構造体。\r
+       /// indexはE楽器パートと一致させること\r
        /// </summary>\r
        /// <typeparam name="T">値の型。</typeparam>\r
        [Serializable]\r
        [StructLayout(LayoutKind.Sequential)]\r
        [DataContract]\r
-       public struct STDGBVALUE<T>                     // indexはE楽器パートと一致させること\r
+       public struct STDGBSValue<T>\r
        {\r
                [DataMember]\r
                public T Drums;\r
@@ -635,24 +1015,22 @@ namespace DTXMania
                public T Guitar;\r
                [DataMember]\r
                public T Bass;\r
+               [DataMember]\r
+               public T System;\r
+               [DataMember]\r
                public T Unknown;\r
-               public T this[E楽器パート index]\r
+\r
+               public T this[EPart index]\r
                {\r
                        get\r
                        {\r
                                switch (index)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
-                                               return this.Drums;\r
-\r
-                                       case E楽器パート.GUITAR:\r
-                                               return this.Guitar;\r
-\r
-                                       case E楽器パート.BASS:\r
-                                               return this.Bass;\r
-\r
-                                       case E楽器パート.UNKNOWN:\r
-                                               return this.Unknown;\r
+                                       case EPart.Drums: return Drums;\r
+                                       case EPart.Guitar: return Guitar;\r
+                                       case EPart.Bass: return Bass;\r
+                                       case EPart.System: return System;\r
+                                       case EPart.Unknown: return Unknown;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
@@ -660,105 +1038,93 @@ namespace DTXMania
                        {\r
                                switch (index)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
-                                               this.Drums = value;\r
-                                               return;\r
-\r
-                                       case E楽器パート.GUITAR:\r
-                                               this.Guitar = value;\r
-                                               return;\r
-\r
-                                       case E楽器パート.BASS:\r
-                                               this.Bass = value;\r
-                                               return;\r
-\r
-                                       case E楽器パート.UNKNOWN:\r
-                                               this.Unknown = value;\r
-                                               return;\r
+                                       case EPart.Drums: Drums = value; return;\r
+                                       case EPart.Guitar: Guitar = value; return;\r
+                                       case EPart.Bass: Bass = value; return;\r
+                                       case EPart.System: System = value; return;\r
+                                       case EPart.Unknown: Unknown = value; return;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
                }\r
        }\r
 \r
-       /// <summary>\r
-       /// レーンの値を扱う汎用の構造体。列挙型"Eドラムレーン"に準拠。\r
-       /// </summary>\r
-       /// <typeparam name="T">値の型。</typeparam>\r
-       [StructLayout(LayoutKind.Sequential)]\r
-       public struct STLANEVALUE<T>\r
+       [DataContract]\r
+       public class STLaneValue<T>\r
        {\r
+               public static ELane DrumsLane(EChannel x)\r
+               {\r
+                       switch (x)\r
+                       {\r
+                               case EChannel.HiHatClose: return ELane.HH;\r
+                               case EChannel.HiHatOpen: return ELane.HH;\r
+                               case EChannel.Snare: return ELane.SD;\r
+                               case EChannel.BassDrum: return ELane.BD;\r
+                               case EChannel.HighTom: return ELane.HT;\r
+                               case EChannel.LowTom: return ELane.LT;\r
+                               case EChannel.FloorTom: return ELane.FT;\r
+                               case EChannel.Cymbal: return ELane.CY;\r
+                               case EChannel.LeftCymbal: return ELane.LC;\r
+                               case EChannel.RideCymbal: return ELane.CY;\r
+                       }\r
+                       throw new IndexOutOfRangeException("Drums Index is out of range");\r
+               }\r
+\r
+               [DataMember]\r
                public T LC;\r
+               [DataMember]\r
                public T HH;\r
+               [DataMember]\r
                public T SD;\r
+               [DataMember]\r
                public T BD;\r
+               [DataMember]\r
                public T HT;\r
+               [DataMember]\r
                public T LT;\r
+               [DataMember]\r
                public T FT;\r
+               [DataMember]\r
                public T CY;\r
-               public T RD;\r
-               public T Guitar;\r
-               public T Bass;\r
+               [DataMember]\r
                public T GtR;\r
+               [DataMember]\r
                public T GtG;\r
+               [DataMember]\r
                public T GtB;\r
-               public T GtPick;\r
+               [DataMember]\r
                public T GtW;\r
+               [DataMember]\r
                public T BsR;\r
+               [DataMember]\r
                public T BsG;\r
+               [DataMember]\r
                public T BsB;\r
-               public T BsPick;\r
+               [DataMember]\r
                public T BsW;\r
-               public T BGM;\r
 \r
-               public T this[int index]\r
+               public T this[ELane index]\r
                {\r
                        get\r
                        {\r
                                switch (index)\r
                                {\r
-                                       case (int)Eレーン.LC:\r
-                                               return this.LC;\r
-                                       case (int)Eレーン.HH:\r
-                                               return this.HH;\r
-                                       case (int)Eレーン.SD:\r
-                                               return this.SD;\r
-                                       case (int)Eレーン.BD:\r
-                                               return this.BD;\r
-                                       case (int)Eレーン.HT:\r
-                                               return this.HT;\r
-                                       case (int)Eレーン.LT:\r
-                                               return this.LT;\r
-                                       case (int)Eレーン.FT:\r
-                                               return this.FT;\r
-                                       case (int)Eレーン.CY:\r
-                                               return this.CY;\r
-                                       case (int)Eレーン.RD:\r
-                                               return this.RD;\r
-                                       case (int)Eレーン.Guitar:\r
-                                               return this.Guitar;\r
-                                       case (int)Eレーン.Bass:\r
-                                               return this.Bass;\r
-                                       case (int)Eレーン.GtR:\r
-                                               return this.GtR;\r
-                                       case (int)Eレーン.GtG:\r
-                                               return this.GtG;\r
-                                       case (int)Eレーン.GtB:\r
-                                               return this.GtB;\r
-                                       case (int)Eレーン.GtPick:\r
-                                               return this.GtPick;\r
-                                       case (int)Eレーン.GtW:\r
-                                               return this.GtW;\r
-                                       case (int)Eレーン.BsR:\r
-                                               return this.BsR;\r
-                                       case (int)Eレーン.BsG:\r
-                                               return this.BsG;\r
-                                       case (int)Eレーン.BsB:\r
-                                               return this.BsB;\r
-                                       case (int)Eレーン.BsPick:\r
-                                               return this.BsPick;\r
-                                       case (int)Eレーン.BsW:\r
-                                               return this.BsW;\r
+                                       case ELane.LC: return LC;\r
+                                       case ELane.HH: return HH;\r
+                                       case ELane.SD: return SD;\r
+                                       case ELane.BD: return BD;\r
+                                       case ELane.HT: return HT;\r
+                                       case ELane.LT: return LT;\r
+                                       case ELane.FT: return FT;\r
+                                       case ELane.CY: return CY;\r
+                                       case ELane.GtR: return GtR;\r
+                                       case ELane.GtG: return GtG;\r
+                                       case ELane.GtB: return GtB;\r
+                                       case ELane.GtW: return GtW;\r
+                                       case ELane.BsR: return BsR;\r
+                                       case ELane.BsG: return BsG;\r
+                                       case ELane.BsB: return BsB;\r
+                                       case ELane.BsW: return BsW;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
@@ -766,319 +1132,211 @@ namespace DTXMania
                        {\r
                                switch (index)\r
                                {\r
-                                       case (int)Eレーン.LC:\r
-                                               this.LC = value;\r
-                                               return;\r
-                                       case (int)Eレーン.HH:\r
-                                               this.HH = value;\r
-                                               return;\r
-                                       case (int)Eレーン.SD:\r
-                                               this.SD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BD:\r
-                                               this.BD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.HT:\r
-                                               this.HT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.LT:\r
-                                               this.LT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.FT:\r
-                                               this.FT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.CY:\r
-                                               this.CY = value;\r
-                                               return;\r
-                                       case (int)Eレーン.RD:\r
-                                               this.RD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.Guitar:\r
-                                               this.Guitar = value;\r
-                                               return;\r
-                                       case (int)Eレーン.Bass:\r
-                                               this.Bass = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtR:\r
-                                               this.GtR = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtG:\r
-                                               this.GtG = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtB:\r
-                                               this.GtB = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtPick:\r
-                                               this.GtPick = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtW:\r
-                                               this.GtW = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsR:\r
-                                               this.BsR = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsG:\r
-                                               this.BsG = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsB:\r
-                                               this.BsB = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsPick:\r
-                                               this.BsPick = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsW:\r
-                                               this.BsW = value;\r
-                                               return;\r
+                                       case ELane.LC: LC = value; return;\r
+                                       case ELane.HH: HH = value; return;\r
+                                       case ELane.SD: SD = value; return;\r
+                                       case ELane.BD: BD = value; return;\r
+                                       case ELane.HT: HT = value; return;\r
+                                       case ELane.LT: LT = value; return;\r
+                                       case ELane.FT: FT = value; return;\r
+                                       case ELane.CY: CY = value; return;\r
+                                       case ELane.GtR: GtR = value; return;\r
+                                       case ELane.GtG: GtG = value; return;\r
+                                       case ELane.GtB: GtB = value; return;\r
+                                       case ELane.GtW: GtW = value; return;\r
+                                       case ELane.BsR: BsR = value; return;\r
+                                       case ELane.BsG: BsG = value; return;\r
+                                       case ELane.BsB: BsB = value; return;\r
+                                       case ELane.BsW: BsW = value; return;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
                }\r
        }\r
 \r
-\r
-       [StructLayout(LayoutKind.Sequential)]\r
-       public struct STAUTOPLAY                                                                // Eレーンとindexを一致させること\r
+       [DataContract]\r
+       public struct STInstValue<T>\r
        {\r
-               public bool LC;                 // 0\r
-               public bool HH;                 // 1\r
-               public bool SD;                 // 2\r
-               public bool BD;                 // 3\r
-               public bool HT;                 // 4\r
-               public bool LT;                 // 5\r
-               public bool FT;                 // 6\r
-               public bool CY;                 // 7\r
-               public bool RD;                 // 8\r
-               public bool Guitar;             // 9    (not used)\r
-               public bool Bass;               // 10   (not used)\r
-               public bool GtR;                // 11\r
-               public bool GtG;                // 12\r
-               public bool GtB;                // 13\r
-               public bool GtPick;             // 14\r
-               public bool GtW;                // 15\r
-               public bool BsR;                // 16\r
-               public bool BsG;                // 17\r
-               public bool BsB;                // 18\r
-               public bool BsPick;             // 19\r
-               public bool BsW;                // 20\r
-               public bool this[int index]\r
+               [DataMember]\r
+               public T Both;\r
+               [DataMember]\r
+               public T DrOnly;\r
+               [DataMember]\r
+               public T GBOnly;\r
+\r
+               public T this[EActiveInstrument inst]\r
                {\r
                        get\r
                        {\r
-                               switch (index)\r
+                               switch (inst)\r
                                {\r
-                                       case (int)Eレーン.LC:\r
-                                               return this.LC;\r
-                                       case (int)Eレーン.HH:\r
-                                               return this.HH;\r
-                                       case (int)Eレーン.SD:\r
-                                               return this.SD;\r
-                                       case (int)Eレーン.BD:\r
-                                               return this.BD;\r
-                                       case (int)Eレーン.HT:\r
-                                               return this.HT;\r
-                                       case (int)Eレーン.LT:\r
-                                               return this.LT;\r
-                                       case (int)Eレーン.FT:\r
-                                               return this.FT;\r
-                                       case (int)Eレーン.CY:\r
-                                               return this.CY;\r
-                                       case (int)Eレーン.RD:\r
-                                               return this.RD;\r
-                                       case (int)Eレーン.Guitar:\r
-                                               if (!this.GtR) return false;\r
-                                               if (!this.GtG) return false;\r
-                                               if (!this.GtB) return false;\r
-                                               if (!this.GtPick) return false;\r
-                                               if (!this.GtW) return false;\r
-                                               return true;\r
-                                       case (int)Eレーン.Bass:\r
-                                               if (!this.BsR) return false;\r
-                                               if (!this.BsG) return false;\r
-                                               if (!this.BsB) return false;\r
-                                               if (!this.BsPick) return false;\r
-                                               if (!this.BsW) return false;\r
-                                               return true;\r
-                                       case (int)Eレーン.GtR:\r
-                                               return this.GtR;\r
-                                       case (int)Eレーン.GtG:\r
-                                               return this.GtG;\r
-                                       case (int)Eレーン.GtB:\r
-                                               return this.GtB;\r
-                                       case (int)Eレーン.GtPick:\r
-                                               return this.GtPick;\r
-                                       case (int)Eレーン.GtW:\r
-                                               return this.GtW;\r
-                                       case (int)Eレーン.BsR:\r
-                                               return this.BsR;\r
-                                       case (int)Eレーン.BsG:\r
-                                               return this.BsG;\r
-                                       case (int)Eレーン.BsB:\r
-                                               return this.BsB;\r
-                                       case (int)Eレーン.BsPick:\r
-                                               return this.BsPick;\r
-                                       case (int)Eレーン.BsW:\r
-                                               return this.BsW;\r
+                                       case EActiveInstrument.Both: return Both;\r
+                                       case EActiveInstrument.DrOnly: return DrOnly;\r
+                                       case EActiveInstrument.GBOnly: return GBOnly;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
                        set\r
                        {\r
-                               switch (index)\r
+                               switch (inst)\r
                                {\r
-                                       case (int)Eレーン.LC:\r
-                                               this.LC = value;\r
-                                               return;\r
-                                       case (int)Eレーン.HH:\r
-                                               this.HH = value;\r
-                                               return;\r
-                                       case (int)Eレーン.SD:\r
-                                               this.SD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BD:\r
-                                               this.BD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.HT:\r
-                                               this.HT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.LT:\r
-                                               this.LT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.FT:\r
-                                               this.FT = value;\r
-                                               return;\r
-                                       case (int)Eレーン.CY:\r
-                                               this.CY = value;\r
-                                               return;\r
-                                       case (int)Eレーン.RD:\r
-                                               this.RD = value;\r
-                                               return;\r
-                                       case (int)Eレーン.Guitar:\r
-                                               this.GtR = this.GtG = this.GtB = this.GtPick = this.GtW = value;\r
-                                               return;\r
-                                       case (int)Eレーン.Bass:\r
-                                               this.BsR = this.BsG = this.BsB = this.BsPick = this.BsW = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtR:\r
-                                               this.GtR = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtG:\r
-                                               this.GtG = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtB:\r
-                                               this.GtB = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtPick:\r
-                                               this.GtPick = value;\r
-                                               return;\r
-                                       case (int)Eレーン.GtW:\r
-                                               this.GtW = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsR:\r
-                                               this.BsR = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsG:\r
-                                               this.BsG = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsB:\r
-                                               this.BsB = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsPick:\r
-                                               this.BsPick = value;\r
-                                               return;\r
-                                       case (int)Eレーン.BsW:\r
-                                               this.BsW = value;\r
-                                               return;\r
+                                       case EActiveInstrument.Both: Both = value; return;\r
+                                       case EActiveInstrument.DrOnly: DrOnly = value; return;\r
+                                       case EActiveInstrument.GBOnly: GBOnly = value; return;\r
                                }\r
                                throw new IndexOutOfRangeException();\r
                        }\r
                }\r
        }\r
 \r
-       public enum EDTX種別\r
+\r
+       [DataContract]\r
+       public class CKeyAssign\r
        {\r
-               DTX,\r
-               GDA,\r
-               G2D,\r
-               BMS,\r
-               BME,\r
-               SMF\r
+               [DataMember]\r
+               public EInputDevice InputDevice;\r
+               [DataMember]\r
+               public int ID;\r
+               [DataMember]\r
+               public int Code;\r
+               public CKeyAssign(EInputDevice DeviceType, int nID, int nCode)\r
+               {\r
+                       this.InputDevice = DeviceType;\r
+                       this.ID = nID;\r
+                       this.Code = nCode;\r
+               }\r
        }\r
-       public enum Eレーンビットパターン\r
+\r
+       public enum EOptionPanelDirection\r
        {\r
-               OPEN = 0,\r
-               xxB = 1,\r
-               xGx = 2,\r
-               xGB = 3,\r
-               Rxx = 4,\r
-               RxB = 5,\r
-               RGx = 6,\r
-               RGB = 7\r
-       };\r
+               Horizontal,\r
+               Vertical\r
+       }\r
 \r
-       internal class C定数\r
+       public static class EnumConverter\r
        {\r
-               public const int BGA_H = 0x163;\r
-               public const int BGA_W = 0x116;\r
-               public const int HIDDEN_POS = 100;\r
-               public const int MAX_AVI_LAYER = 1;\r
-               public const int MAX_WAILING = 4;\r
-               public const int PANEL_H = 0x1a;\r
-               public const int PANEL_W = 0x116;\r
-               public const int PREVIEW_H = 0x10d;\r
-               public const int PREVIEW_W = 0xcc;\r
-               public const int SCORE_H = 0x18;\r
-               public const int SCORE_W = 12;\r
-               public const int SUDDEN_POS = 200;\r
+               public static ELane LaneFromPad(EPad t)\r
+               {\r
+                       switch (t)\r
+                       {\r
+                               case EPad.HH: return ELane.HH;\r
+                               case EPad.SD: return ELane.SD;\r
+                               case EPad.BD: return ELane.BD;\r
+                               case EPad.HT: return ELane.HT;\r
+                               case EPad.LT: return ELane.LT;\r
+                               case EPad.CY: return ELane.CY;\r
+                               case EPad.FT: return ELane.FT;\r
+                               case EPad.HHO: return ELane.HH;\r
+                               case EPad.RD: return ELane.CY;\r
+                               case EPad.LC: return ELane.LC;\r
+                               case EPad.GtR: return ELane.GtR;\r
+                               case EPad.GtG: return ELane.GtG;\r
+                               case EPad.GtB: return ELane.GtB;\r
+                               case EPad.GtWail: return ELane.GtW;\r
+                               case EPad.BsR: return ELane.BsR;\r
+                               case EPad.BsG: return ELane.BsG;\r
+                               case EPad.BsB: return ELane.BsB;\r
+                               case EPad.BsWail: return ELane.BsW;\r
+                       }\r
+                       throw new IndexOutOfRangeException();\r
+               }\r
+\r
+               public static EPad PadFromLane(ELane t)\r
+               {\r
+                       switch (t)\r
+                       {\r
+                               case ELane.LC: return EPad.LC;\r
+                               case ELane.HH: return EPad.HH;\r
+                               case ELane.SD: return EPad.SD;\r
+                               case ELane.BD: return EPad.BD;\r
+                               case ELane.HT: return EPad.HT;\r
+                               case ELane.LT: return EPad.LT;\r
+                               case ELane.FT: return EPad.FT;\r
+                               case ELane.CY: return EPad.CY;\r
+                               case ELane.GtR: return EPad.GtR;\r
+                               case ELane.GtG: return EPad.GtG;\r
+                               case ELane.GtB: return EPad.GtB;\r
+                               case ELane.GtW: return EPad.GtWail;\r
+                               case ELane.BsR: return EPad.BsR;\r
+                               case ELane.BsG: return EPad.BsG;\r
+                               case ELane.BsB: return EPad.BsB;\r
+                               case ELane.BsW: return EPad.BsWail;\r
+                       }\r
+                       throw new IndexOutOfRangeException();\r
+               }\r
+\r
+               /// <summary>\r
+               /// EChannel -> EPad\r
+               /// </summary>\r
+               /// <param name="e">変換する EChannel列挙子。</param>\r
+               /// <param name="NotDistinguishHH">HHOをパッドHHとして扱いたい場合 true。</param>\r
+               /// <returns></returns>\r
+               public static EPad PadFromChannel(EChannel e)\r
+               {\r
+                       switch (e)\r
+                       {\r
+                               case EChannel.HiHatClose: return EPad.HH;\r
+                               case EChannel.Snare: return EPad.SD;\r
+                               case EChannel.BassDrum: return EPad.BD;\r
+                               case EChannel.HighTom: return EPad.HT;\r
+                               case EChannel.LowTom: return EPad.LT;\r
+                               case EChannel.Cymbal: return EPad.CY;\r
+                               case EChannel.FloorTom: return EPad.FT;\r
+                               case EChannel.HiHatOpen: return EPad.HHO;\r
+                               case EChannel.RideCymbal: return EPad.RD;\r
+                               case EChannel.LeftCymbal: return EPad.LC;\r
+                               case EChannel.LeftPedal: return EPad.HP;\r
+                       }\r
+                       throw new IndexOutOfRangeException();\r
+               }\r
 \r
-               public class Drums\r
+               public static ELane LaneFromChannel(EChannel e)\r
                {\r
-                       public const int BAR_Y = 0x1a6;\r
-                       public const int BAR_Y_REV = 0x38;\r
-                       public const int BASS_BAR_Y = 0x5f;\r
-                       public const int BASS_BAR_Y_REV = 0x176;\r
-                       public const int BASS_H = 0x163;\r
-                       public const int BASS_W = 0x6d;\r
-                       public const int BASS_X = 0x18e;\r
-                       public const int BASS_Y = 0x39;\r
-                       public const int BGA_X = 0x152;\r
-                       public const int BGA_Y = 0x39;\r
-                       public const int GAUGE_H = 0x160;\r
-                       public const int GAUGE_W = 0x10;\r
-                       public const int GAUGE_X = 6;\r
-                       public const int GAUGE_Y = 0x35;\r
-                       public const int GUITAR_BAR_Y = 0x5f;\r
-                       public const int GUITAR_BAR_Y_REV = 0x176;\r
-                       public const int GUITAR_H = 0x163;\r
-                       public const int GUITAR_W = 0x6d;\r
-                       public const int GUITAR_X = 0x1fb;\r
-                       public const int GUITAR_Y = 0x39;\r
-                       public const int PANEL_X = 0x150;\r
-                       public const int PANEL_Y = 0x1ab;\r
-                       public const int SCORE_X = 0x164;\r
-                       public const int SCORE_Y = 14;\r
+                       switch (e)\r
+                       {\r
+                               case EChannel.HiHatClose: return ELane.HH;\r
+                               case EChannel.Snare: return ELane.SD;\r
+                               case EChannel.BassDrum: return ELane.BD;\r
+                               case EChannel.HighTom: return ELane.HT;\r
+                               case EChannel.LowTom: return ELane.LT;\r
+                               case EChannel.Cymbal: return ELane.CY;\r
+                               case EChannel.FloorTom: return ELane.FT;\r
+                               case EChannel.HiHatOpen: return ELane.HH;\r
+                               case EChannel.RideCymbal: return ELane.CY;\r
+                               case EChannel.LeftCymbal: return ELane.LC;\r
+                       }\r
+                       throw new IndexOutOfRangeException();\r
                }\r
-               public class Guitar\r
+\r
+               public static EChannel ChannelFromPad(EPad pad)\r
                {\r
-                       public const int BAR_Y = 40;\r
-                       public const int BAR_Y_REV = 0x171;\r
-                       public const int BASS_H = 0x199;\r
-                       public const int BASS_W = 140;\r
-                       public const int BASS_X = 480;\r
-                       public const int BASS_Y = 0;\r
-                       public const int BGA_X = 0xb5;\r
-                       public const int BGA_Y = 50;\r
-                       public const int GAUGE_H = 0x10;\r
-                       public const int GAUGE_W = 0x80;\r
-                       public const int GAUGE_X_BASS = 0x14f;\r
-                       public const int GAUGE_X_GUITAR = 0xb2;\r
-                       public const int GAUGE_Y_BASS = 8;\r
-                       public const int GAUGE_Y_GUITAR = 8;\r
-                       public const int GUITAR_H = 0x199;\r
-                       public const int GUITAR_W = 140;\r
-                       public const int GUITAR_X = 0x1a;\r
-                       public const int GUITAR_Y = 0;\r
-                       public const int PANEL_X = 0xb5;\r
-                       public const int PANEL_Y = 430;\r
+                       /*\r
+                       EChannel.HiHatClose, 0\r
+                                               EChannel.Snare, 1 \r
+                                               EChannel.BassDrum, 2\r
+                                               EChannel.HighTom, 3 \r
+                                               EChannel.LowTom,4 \r
+                                               EChannel.FloorTom,5\r
+                                               EChannel.Cymbal,6\r
+                                               EChannel.HiHatOpen,7\r
+                                               EChannel.RideCymbal,8\r
+                                               EChannel.LeftCymbal, 9\r
+                                               */\r
+                       switch (pad)\r
+                       {\r
+                               case EPad.HH: return EChannel.HiHatClose;\r
+                               case EPad.HHO: return EChannel.HiHatOpen;\r
+                               case EPad.BD: return EChannel.BassDrum;\r
+                               case EPad.SD: return EChannel.Snare;\r
+                               case EPad.HT: return EChannel.HighTom;\r
+                               case EPad.LT: return EChannel.LowTom;\r
+                               case EPad.FT: return EChannel.FloorTom;\r
+                               case EPad.CY: return EChannel.Cymbal;\r
+                               case EPad.LC: return EChannel.LeftCymbal;\r
+                               case EPad.RD: return EChannel.RideCymbal;\r
+                               case EPad.HP: return EChannel.LeftPedal;\r
+                       }\r
+                       throw new NotImplementedException();\r
                }\r
        }\r
 }\r
index 4f716f9..4cbd810 100644 (file)
@@ -23,7 +23,7 @@ namespace DTXMania
                                str存在しないときに表示するエラー文字列jp : str存在しないときに表示するエラー文字列en;\r
                        if (bLoadDllCheck)\r
                        {\r
-                               IntPtr hModule = LoadLibrary(strDll名);                // 実際にLoadDll()してチェックする\r
+                               IntPtr hModule = LoadLibrary(strDll名);    // 実際にLoadDll()してチェックする\r
                                if (hModule == IntPtr.Zero)\r
                                {\r
                                        MessageBox.Show(str存在しないときに表示するエラー文字列, "DTXMania runtime error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
@@ -32,7 +32,7 @@ namespace DTXMania
                                FreeLibrary(hModule);\r
                        }\r
                        else\r
-                       {                                                                                                       // 単純にファイルの存在有無をチェックするだけ (プロジェクトで「参照」していたり、アンマネージドなDLLが暗黙リンクされるものはこちら)\r
+                       {                         // 単純にファイルの存在有無をチェックするだけ (プロジェクトで「参照」していたり、アンマネージドなDLLが暗黙リンクされるものはこちら)\r
                                string path = Path.Combine(System.IO.Directory.GetCurrentDirectory(), strDll名);\r
                                if (!File.Exists(path))\r
                                {\r
@@ -75,52 +75,64 @@ namespace DTXMania
                                if (!tDLLの存在チェック("dll\\SlimDX" + CDTXMania.SLIMDXDLL + ".dll",\r
                                        "SlimDX" + CDTXMania.SLIMDXDLL + ".dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "SlimDX" + CDTXMania.SLIMDXDLL + ".dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\FDK.dll",\r
                                        "FDK.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "FDK.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
-                               if (!tDLLの存在チェック("xadec.dll",             // #35444 2015.8.27 yyagi; Changed dll path\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
+                               if (!tDLLの存在チェック("xadec.dll",   // #35444 2015.8.27 yyagi; Changed dll path\r
                                        "xadec.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "xadec.dll is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\SoundDecoder.dll",\r
                                        "SoundDecoder.dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "SoundDecoder.dll, or its depended DLL, is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック(CDTXMania.D3DXDLL,\r
                                        CDTXMania.D3DXDLL + " が存在しません。" + newLine + "DirectX Redist フォルダの DXSETUP.exe を実行し、" + newLine + "必要な DirectX ランタイムをインストールしてください。",\r
                                        CDTXMania.D3DXDLL + " is not found." + newLine + "Please execute DXSETUP.exe in \"DirectX Redist\" folder, to install DirectX runtimes required for DTXMania.",\r
                                        true\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\bass.dll",\r
                                        "bass.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "baas.dll is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\Bass.Net.dll",\r
                                        "Bass.Net.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "Bass.Net.dll is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\bassmix.dll",\r
                                        "bassmix.dll を読み込めません。bassmix.dll か bass.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "bassmix.dll is not loaded. bassmix.dll or bass.dll must not exist." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\bassasio.dll",\r
                                        "bassasio.dll を読み込めません。bassasio.dll か bass.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "bassasio.dll is not loaded. bassasio.dll or bass.dll must not exist." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\basswasapi.dll",\r
                                        "basswasapi.dll を読み込めません。basswasapi.dll か bass.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "basswasapi.dll is not loaded. basswasapi.dll or bass.dll must not exist." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\bass_fx.dll",\r
                                        "bass_fx.dll を読み込めません。bass_fx.dll か bass.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "bass_fx.dll is not loaded. bass_fx.dll or bass.dll must not exist." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                if (!tDLLの存在チェック("dll\\DirectShowLib-2005.dll",\r
                                        "DirectShowLib-2005.dll が存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
                                        "DirectShowLib-2005.dll is not found." + newLine + "Please download DTXMania again."\r
-                                       )) bDLLnotfound = true;\r
+                                       ))\r
+                                       bDLLnotfound = true;\r
                                #endregion\r
                                if (!bDLLnotfound)\r
                                {\r
@@ -128,7 +140,7 @@ namespace DTXMania
                                        Thread.CurrentThread.CurrentCulture = new CultureInfo( "en-US" );\r
 #endif\r
 \r
-                                       DWM.EnableComposition(false);   // Disable AeroGrass temporally\r
+                                       DWM.EnableComposition(false); // Disable AeroGrass temporally\r
 \r
                                        // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。\r
                                        // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。\r
@@ -165,13 +177,13 @@ namespace DTXMania
 \r
                                // END #24615 2011.03.09 from\r
                        }\r
-                       else            // DTXManiaが既に起動中\r
+                       else    // DTXManiaが既に起動中\r
                        {\r
 \r
                                // → 引数が0個の時はそのまま終了\r
                                // 1個( コンパクトモード or DTXV -S) か2個 (DTXV -Nxxx ファイル名)のときは、そのプロセスにコマンドラインを丸々投げて終了する\r
 \r
-                               for (int i = 0; i < 5; i++)             // 検索結果のハンドルがZeroになることがあるので、200ms間隔で5回リトライする\r
+                               for (int i = 0; i < 5; i++)   // 検索結果のハンドルがZeroになることがあるので、200ms間隔で5回リトライする\r
                                {\r
                                        #region [ 既に起動中のDTXManiaプロセスを検索する。]\r
                                        // このやり方だと、ShowInTaskbar=falseでタスクバーに表示されないパターンの時に検索に失敗するようだが\r
@@ -185,7 +197,7 @@ namespace DTXMania
 \r
                                        foreach (Process p in running)\r
                                        {\r
-                                               if (p.Id != current.Id) // プロセス名は同じでかつ、プロセスIDが自分自身とは異なるものを探す\r
+                                               if (p.Id != current.Id) // プロセス名は同じでかつ、プロセスIDが自分自身とは異なるものを探す\r
                                                {\r
                                                        if (p.MainModule.FileName == current.MainModule.FileName && p.MainWindowHandle != IntPtr.Zero)\r
                                                        {\r
index 7ec011f..6ef9aef 100644 (file)
@@ -16,6 +16,7 @@ namespace DTXMania
                {\r
                        return tテクスチャの生成(fileName, false);\r
                }\r
+\r
                public static CTexture tテクスチャの生成(string fileName, bool b黒を透過する)\r
                {\r
                        if (CDTXMania.Instance == null)\r
@@ -37,10 +38,12 @@ namespace DTXMania
                                return null;\r
                        }\r
                }\r
+\r
                public static CTextureAf tテクスチャの生成Af(string fileName)\r
                {\r
                        return tテクスチャの生成Af(fileName, false);\r
                }\r
+\r
                public static CTextureAf tテクスチャの生成Af(string fileName, bool b黒を透過する)\r
                {\r
                        if (CDTXMania.Instance == null)\r
@@ -62,18 +65,22 @@ namespace DTXMania
                                return null;\r
                        }\r
                }\r
+\r
                public static void tテクスチャの解放(ref CTexture tx)\r
                {\r
                        t安全にDisposeする(ref tx);\r
                }\r
+\r
                public static void tテクスチャの解放(ref CTextureAf tx)\r
                {\r
                        t安全にDisposeする(ref tx);\r
                }\r
+\r
                public static CTexture tテクスチャの生成(byte[] txData)\r
                {\r
                        return tテクスチャの生成(txData, false);\r
                }\r
+\r
                public static CTexture tテクスチャの生成(byte[] txData, bool b黒を透過する)\r
                {\r
                        if (CDTXMania.Instance == null)\r
@@ -100,6 +107,7 @@ namespace DTXMania
                {\r
                        return tテクスチャの生成(bitmap, false);\r
                }\r
+\r
                public static CTexture tテクスチャの生成(Bitmap bitmap, bool b黒を透過する)\r
                {\r
                        if (CDTXMania.Instance == null)\r
@@ -117,7 +125,7 @@ namespace DTXMania
                        }\r
                        catch (CTextureCreateFailedException)\r
                        {\r
-                               Trace.TraceError("テクスチャの生成に失敗しました。(bitmap:{0}x{1} )", bitmap.Width, bitmap.Height );\r
+                               Trace.TraceError("テクスチャの生成に失敗しました。(bitmap:{0}x{1} )", bitmap.Width, bitmap.Height);\r
                                return null;\r
                        }\r
                }\r