OSDN Git Service

#36612 DTXManiaでのViwerを実行にて、二回目以降の実行でウィンドウサイズが保持されない問題の修正。
authoryyagi <yyagi.dtxmania@gmail.com>
Mon, 19 Sep 2016 14:29:32 +0000 (22:29 +0800)
committeryyagi <yyagi.dtxmania@gmail.com>
Mon, 19 Sep 2016 14:29:32 +0000 (22:29 +0800)
.gitignore
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs
DTXManiaプロジェクト/コード/ステージ/CDTXVmode.cs
DTXManiaプロジェクト/コード/全体/CDTXMania.cs
実行時フォルダ(DTXCreator)/dll/FDK.dll
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/dll/FDK.dll

index 256ef5f..841d6fb 100644 (file)
@@ -3,4 +3,12 @@ bin/
 *.suo
 *.csproj.user
 *.snk
-
+*.sdf
+*.obj
+*.log
+*.tlog
+*.pch
+*.idb
+*.pdb
+*.lastbuildstate
+*.unsuccessfulbuild
\ No newline at end of file
index 034b58f..95f9c18 100644 (file)
@@ -37,7 +37,7 @@ namespace DTXMania
        /// ・CActConfigList で新しく追加した項目を list に追加してください。\r
        /// </summary>\r
        [DataContract]\r
-       public class CConfigXml : IExtensibleDataObject\r
+       public class CConfigXml : IExtensibleDataObject, ICloneable\r
        {\r
                public static readonly int AssignableCodes = 16;\r
 \r
@@ -59,6 +59,16 @@ namespace DTXMania
                        }\r
                }\r
 \r
+               /// <summary>\r
+               /// とりあえずshallow copyによるClone()。\r
+               /// </summary>\r
+               /// <returns>自身を複製したCConfigXmlクラス。</returns>\r
+               public object Clone()\r
+               {\r
+                       return (CConfigXml) MemberwiseClone();\r
+               }\r
+\r
+\r
                [DataMember]\r
                public COptionBool bFullAVI;\r
                [DataMember]\r
@@ -163,8 +173,13 @@ namespace DTXMania
                public COptionInteger nBGAlpha;\r
                [DataMember]\r
                public Coordinates.CRect rcWindow;\r
+\r
+               public Coordinates.CRect rcWindow_backup;                       // Viewerとしての使用時は、Playerとして使用する際のウインドウ情報をバックアップしておき、終了時に復元する\r
+                                                                                                                       // 内部保持するだけの情報であるため、Config.xmlに保存する必要はなく、[DataMember]は不要\r
+\r
                [DataMember]\r
                public Coordinates.CRect rcViewerWindow;\r
+               \r
                [DataMember]\r
                public COptionInteger nMasterVolume;\r
                [DataMember]\r
@@ -511,7 +526,8 @@ namespace DTXMania
 \r
                        // integer\r
                        rcWindow = new Coordinates.CRect(100, 100, 1280, 720);\r
-                       nSleepPerFrameMs = new COptionInteger(-1);\r
+                       rcWindow_backup = new Coordinates.CRect( 100, 100, 1280, 720 );\r
+                       nSleepPerFrameMs = new COptionInteger( -1 );\r
                        nSleepUnfocusMs = new COptionInteger(1);\r
                        nBGAlpha = new COptionInteger(100);\r
                        nPreSoundWeightMs = new COptionInteger(1000);\r
index fcaebad..1344bc1 100644 (file)
@@ -382,6 +382,7 @@ namespace DTXMania
                /// </summary>\r
                public void tUpdateConfigIni()\r
                {\r
+                       CConfigXml ConfigIni_backup = (CConfigXml) CDTXMania.Instance.ConfigIni.Clone();                // #36612 2016.9.12 yyagi\r
                        CDTXMania.Instance.LoadConfig();\r
 \r
                        // CConfigIni cc = new CConfigIni();\r
@@ -405,20 +406,24 @@ namespace DTXMania
 \r
                        for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[inst].Value = CDTXMania.Instance.ConfigIni.nScrollSpeed[inst];\r
+                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[inst].Value = ConfigIni_backup.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
+                       CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus.Value = ConfigIni_backup.bDebugInfo;\r
+                       CDTXMania.Instance.ConfigIni.bViewerVSyncWait.Value = ConfigIni_backup.bVSyncWait;\r
+                       CDTXMania.Instance.ConfigIni.bViewerTimeStretch.Value = ConfigIni_backup.bTimeStretch;\r
+                       CDTXMania.Instance.ConfigIni.bViewerDrumsActive.Value = ConfigIni_backup.bDrums有効;\r
+                       CDTXMania.Instance.ConfigIni.bViewerGuitarActive.Value = ConfigIni_backup.bGuitar有効;\r
 \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
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.W = ConfigIni_backup.rcWindow.W;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.H = ConfigIni_backup.rcWindow.H;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.X = ConfigIni_backup.rcWindow.X;\r
+                       CDTXMania.Instance.ConfigIni.rcViewerWindow.Y = ConfigIni_backup.rcWindow.Y;\r
+\r
+                       CDTXMania.Instance.ConfigIni.rcWindow = ConfigIni_backup.rcWindow_backup;               // #36612 2016.9.12 yyagi\r
 \r
                        CDTXMania.Instance.SaveConfig();\r
+\r
+                       ConfigIni_backup = null;\r
                }\r
 \r
                private string last_path;\r
index f71f4f7..773cc7e 100644 (file)
@@ -329,6 +329,7 @@ namespace DTXMania
                                        }\r
 \r
                                        CDTXMania.Instance.ConfigIni.bFullScreen.Value = false;\r
+                                       CDTXMania.Instance.ConfigIni.rcWindow_backup = CDTXMania.Instance.ConfigIni.rcWindow;           // #36612 2016.9.12 yyagi\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
@@ -427,8 +428,8 @@ namespace DTXMania
                        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
+                       //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
index e6ae746..b413367 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/dll/FDK.dll and b/実行時フォルダ(DTXCreator)/dll/FDK.dll differ
index 0cb85e8..e690e20 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
index e6ae746..b413367 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ