OSDN Git Service

#36253 初期状態でキーアサインがない問題を修正。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 17 Apr 2016 18:36:25 +0000 (18:36 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 17 Apr 2016 18:36:25 +0000 (18:36 +0000)
#xxxxx JudgePriorityが Deserializing()と DefaultDeserializer() の両者に存在したため、後者を削除。

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

DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs
実行時フォルダ/DTXManiaGR.exe

index b963d1f..4ad41c5 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Generic;\r
 using System.Threading;\r
 using System.Runtime.Serialization;\r
+using System.Diagnostics;\r
 using System;\r
 using FDK;\r
 \r
@@ -463,7 +464,7 @@ namespace DTXMania
                        strSongDataPath = new COptionString(@".\");\r
                        strFontSongSelect = new COptionString("MS PGothic");\r
                        strDTXManiaVersion = new COptionString(CDTXMania.VERSION);\r
-                       strSystemSkinSubfolderPath = new COptionString("");\r
+                       strSystemSkinSubfolderPath = new COptionString(@".\Default\");\r
 \r
                        // enum\r
                        eDamageLevel = new COptionEnum<EDamage>(EDamage.Normal);\r
@@ -653,7 +654,7 @@ namespace DTXMania
                        cdLaneOrder.BsW.Value = 3;\r
 \r
                        bConfigIniが存在している = System.IO.File.Exists(CDTXMania.Instance.strEXEのあるフォルダ + "Config.xml");\r
-                       ClearKeyAssign();\r
+                       SetDefaultKeyAssign();\r
                }\r
 \r
                /// <summary>\r
@@ -739,7 +740,7 @@ namespace DTXMania
                        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
+//                     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
@@ -1104,5 +1105,149 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
+               private void SetDefaultKeyAssign()\r
+               {\r
+                       if (KeyAssign == null)\r
+                       {\r
+                               ClearKeyAssign();\r
+                       }\r
+\r
+                       SetKeyAssignFromString( strDefaultKeyAssign );\r
+               }\r
+               private void SetKeyAssignFromString( string strParam )\r
+               {\r
+                       if (strParam == null)\r
+                       {\r
+                               return;\r
+                       }\r
+                       string[] paramLines = strParam.Split( new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries );\r
+                       if (paramLines.Length <= 1)\r
+                       {\r
+                               Debug.WriteLine( "デフォルトのキーアサインを設定できませんでした1: " + strParam );\r
+                               return;\r
+                       }\r
+\r
+                       Dictionary<string, EPad> dicStrEPad = new Dictionary<string, EPad>()\r
+                       {\r
+                               { "HH", EPad.HH },\r
+                               { "SD", EPad.SD },\r
+                               { "BD", EPad.BD },\r
+                               { "HT", EPad.HT },\r
+                               { "LT", EPad.LT },\r
+                               { "FT", EPad.FT },\r
+                               { "CY", EPad.CY },\r
+                               { "HHO", EPad.HHO },\r
+                               { "RD", EPad.RD },\r
+                               { "LC", EPad.LC },\r
+                               { "HP", EPad.HP },\r
+                               { "GtR", EPad.GtR },\r
+                               { "GtG", EPad.GtG },\r
+                               { "GtB", EPad.GtB },\r
+                               { "GtPick", EPad.GtPick },\r
+                               { "GtWail", EPad.GtWail },\r
+                               { "GtDecide", EPad.GtDecide },\r
+                               { "GtCancel", EPad.GtCancel },\r
+                               { "BsR", EPad.BsR },\r
+                               { "BsG", EPad.BsG },\r
+                               { "BsB", EPad.BsB },\r
+                               { "BsPick", EPad.BsPick },\r
+                               { "BsWail", EPad.BsWail },\r
+                               { "BsDecide", EPad.BsDecide },\r
+                               { "BsCancel", EPad.BsCancel },\r
+                               { "Capture", EPad.Capture}\r
+                       };\r
+\r
+                       foreach ( string param in paramLines )\r
+                       {\r
+                               string[] tmp = param.Split( '=' );\r
+                               if ( tmp.Length != 2 )\r
+                               {\r
+                                       Debug.WriteLine( "デフォルトのキーアサインを設定できませんでした2: " + param );\r
+                                       return;\r
+                               }\r
+\r
+                               string strPad = tmp[ 0 ];\r
+                               string[] keys = tmp[ 1 ].Split( ',' );\r
+                               if ( keys.Length <= 0 )\r
+                               {\r
+                                       Debug.WriteLine( "デフォルトのキーアサインを設定できませんでした3: " + tmp[ 1 ] );\r
+                                       return;\r
+                               }\r
+                               EPad e;\r
+                               bool b = dicStrEPad.TryGetValue( strPad, out e );\r
+                               if ( b == false )\r
+                               {\r
+                                       Debug.WriteLine( "デフォルトキーアサインの文字列に誤りがあります1: " + strPad );\r
+                               }\r
+                               int count = 0;\r
+                               foreach ( string key in keys )\r
+                               {\r
+                                       char cInputDevice = key[ 0 ];\r
+                                       EInputDevice eid;\r
+                                       switch (cInputDevice)\r
+                                       {\r
+                                               case 'K': eid = EInputDevice.Keyboard; break;\r
+                                               case 'M': eid = EInputDevice.MIDIIn; break;\r
+                                               case 'J': eid = EInputDevice.JoyPad; break;\r
+                                               case 'N': eid = EInputDevice.Mouse; break;\r
+                                               default: eid = EInputDevice.Unknown; break;\r
+                                       }\r
+                                       int nID = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".IndexOf( key[ 1 ] );   // #24166 2011.1.15 yyagi: to support ID > 10, change 2nd character from Decimal to 36-numeral system. (e.g. J1023 -> JA23)\r
+                                       int nCode = Convert.ToInt32( key.Substring( 2 ) );\r
+\r
+                                       KeyAssign[ e ][ count ].Value.InputDevice = eid;\r
+                                       KeyAssign[ e ][ count ].Value.ID = nID;\r
+                                       KeyAssign[ e ][ count ].Value.Code = nCode;\r
+                                       count++;\r
+\r
+                                       // Debug.WriteLine( eid.ToString() + nID.ToString() + nCode.ToString() );\r
+                               }\r
+                       }\r
+               }\r
+const string strDefaultKeyAssign = @"\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
+HHO=K010,M046,M092\r
+RD=K020,M051,M053,M059,M089\r
+LC=K026\r
+HP=M044\r
+\r
+GtR=K055\r
+GtG=K056,J012\r
+GtB=K057\r
+GtPick=K0115,K046,J06\r
+GtWail=K0116\r
+GtDecide=K060\r
+GtCancel=K061\r
+\r
+BsR=K090\r
+BsG=K091,J013\r
+BsB=K092\r
+BsPick=K0103,K0100,J08\r
+BsWail=K089\r
+BsDecide=K096\r
+BsCancel=K097\r
+\r
+Capture=K065\r
+";\r
+               private string GetRelativePath( string strBasePath, string strTargetPath )\r
+               {\r
+                       string strRelativePath = strTargetPath;\r
+                       try\r
+                       {\r
+                               Uri uri = new Uri( strBasePath );\r
+                               strRelativePath = Uri.UnescapeDataString( uri.MakeRelativeUri( new Uri( strTargetPath ) ).ToString() ).Replace( '/', '\\' );\r
+                       }\r
+                       catch ( UriFormatException )\r
+                       {\r
+                       }\r
+\r
+                       return strRelativePath;\r
+               }\r
        }\r
 }\r
index be328d8..09d9302 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ