OSDN Git Service

#37271 ドラムとギター/ベースの最大同時発音数を独立して設定できるようにした。CONFIGURATION/System/Sound Option/Polyphoni...
[dtxmania/dtxmania.git] / DTXMania / コード / 全体 / CDTXMania.cs
index 09bba10..556af49 100644 (file)
@@ -25,7 +25,7 @@ namespace DTXMania
        {
                // プロパティ
                #region [ properties ]
-               public static readonly string VERSION = "115(190901)";
+               public static readonly string VERSION = "118(200510)";
                //public static readonly string SLIMDXDLL = "c_net20x86_Jun2010";
                public static readonly string D3DXDLL = "d3dx9_43.dll";     // June 2010
                //public static readonly string D3DXDLL = "d3dx9_42.dll";       // February 2010
@@ -263,9 +263,7 @@ namespace DTXMania
                        Trace.TraceInformation("----------------------");
                        Trace.TraceInformation("■ アプリケーションの初期化");
 
-                       PutSystemLog();
-
-
+                       CPutSystemLog.PutSystemLog();
                        #endregion
 
                        #region [ 言語の設定 ]
@@ -435,6 +433,7 @@ namespace DTXMania
 
                                        //多重再生数=4
                                        CDTXMania.instance.ConfigIni.nPolyphonicSounds.Value = 4;
+                                       CDTXMania.instance.ConfigIni.nPolyphonicSoundsGB.Value = 2;
 
                                        //再生速度x1
                                        CDTXMania.instance.ConfigIni.nPlaySpeed.Value = 20;
@@ -532,9 +531,9 @@ namespace DTXMania
                        #endregion
 
                        #region [ 現在の電源プランをバックアップし、CONFIGのHighPower=ONの場合は HighPerformanceに変更 ]
-                       CPowerPlan.BackupCurrentPowerPlan();
                        if (CDTXMania.Instance.ConfigIni.bForceHighPowerPlan)
                        {
+                               CPowerPlan.BackupCurrentPowerPlan();
                                CPowerPlan.ChangeHighPerformance();
                        }
                        #endregion
@@ -638,6 +637,7 @@ namespace DTXMania
                        base.Window.Icon = Properties.Resources.dtx;
                        base.Window.KeyDown += new KeyEventHandler(this.Window_KeyDown);
                        base.Window.MouseUp += new MouseEventHandler(this.Window_MouseUp);
+                       base.Window.MouseDown += new MouseEventHandler(this.Window_MouseDown);
                        // #23510 2010.11.13 yyagi: to go fullscreen mode
                        base.Window.MouseDoubleClick += new MouseEventHandler(this.Window_MouseDoubleClick);
                        // #23510 2010.11.20 yyagi: to set resized window size in Config.ini
@@ -887,6 +887,13 @@ namespace DTXMania
 
                                Trace.TraceInformation("サウンドデバイスの初期化を完了しました。");
                        }
+                       catch (NullReferenceException)  // No audio output found
+                       {
+                               Trace.TraceError("Error: No sound output devices are ready.");
+                               string strWarnMes = CDTXMania.Instance.Resources.Explanation("strErrorNoActiveSoundDevice");
+                               MessageBox.Show(strWarnMes, "DTXMania Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
+                               Environment.Exit(-1);
+                       }
                        catch (Exception e)
                        {
                                Trace.TraceError(e.Message);
@@ -1019,6 +1026,7 @@ namespace DTXMania
                                r現在のステージ = stage起動;
                        }
                        r現在のステージ.On活性化();
+                       this.Window.Activate();     // #41300 workaround to avoid SharpDX exception
                        #endregion
                }
 
@@ -1050,7 +1058,7 @@ namespace DTXMania
 #if WindowedFullscreen
                                        // #30666 2013.2.2 yyagi Don't use Fullscreen mode becasue NVIDIA GeForce is
                                        // tend to delay drawing on Fullscreen mode. So DTXMania uses Maximized window
-                                       // in spite of using fullscreen mode.
+                                       // instead of using fullscreen mode.
                                        Instance.Window.WindowState = FormWindowState.Normal;
                                        Instance.Window.FormBorderStyle = FormBorderStyle.Sizable;
                                        Instance.Window.WindowState = FormWindowState.Normal;
@@ -1362,7 +1370,8 @@ namespace DTXMania
 
                                CScoreIni scoreIni = null;
 
-                               if (Control.IsKeyLocked(Keys.CapsLock))             // #30925 2013.3.11 yyagi; capslock=ON時は、EnumSongsしないようにして、起動負荷とASIOの音切れの関係を確認する
+                               //if (Control.IsKeyLocked(Keys.CapsLock))             // #30925 2013.3.11 yyagi; capslock=ON時は、EnumSongsしないようにして、起動負荷とASIOの音切れの関係を確認する
+                               if (!CDTXMania.instance.ConfigIni.bEnumerateSongsInBoot)        // #40772 2020.10.12 yyagi
                                {
                                        // → songs.db等の書き込み時だと音切れするっぽい
                                        actEnumSongs.On非活性化();
@@ -2317,6 +2326,8 @@ namespace DTXMania
                                                Path.Combine( Path.Combine( this.strEXEのあるフォルダ, "System" ), ConfigIni.strSystemSkinSubfolderPath );
                                }
                        }
+
+                       ConfigIni.UpgradeConfig();      // 本体version upに伴ってConfig.xmlの定義が更新される場合の、最低限のフォローアップ
                }
                /// <summary>
                /// 座標値を読み込む。Coordinates メンバ初期化後いつ呼び出しても構わない。
@@ -3058,20 +3069,37 @@ namespace DTXMania
                {
                        mb = e.Button;
                }
+               private void Window_MouseDown(object sender, MouseEventArgs e)
+               {
+                       currentMousePosition.X = Control.MousePosition.X;
+                       currentMousePosition.Y = Control.MousePosition.Y;
+               }
 
                private void Window_MouseDoubleClick(object sender, MouseEventArgs e)   // #23510 2010.11.13 yyagi: to go full screen mode
                {
                        if (mb.Equals(MouseButtons.Left) && ConfigIni.bIsAllowedDoubleClickFullscreen)  // #26752 2011.11.27 yyagi
                        {
-                               ConfigIni.bウィンドウモード = false;
+                               ConfigIni.bウィンドウモード = !ConfigIni.bウィンドウモード;
                                this.t全画面_ウィンドウモード切り替え();
                        }
                }
+               private Point currentMousePosition = new Point(-1,-1);
                private void Window_MouseMove(object sender, MouseEventArgs e)
                {
                        if (cMouseHideControl != null) cMouseHideControl.tResetCursorState(ConfigIni.bウィンドウモード, this.bApplicationActive);
-               }
+                       if (Control.MouseButtons.HasFlag(MouseButtons.Left))
+                       {
+                               int X = base.Window.Location.X;
+                               X += (Control.MousePosition.X - currentMousePosition.X);
+                               int Y = base.Window.Location.Y;
+                               Y += (Control.MousePosition.Y - currentMousePosition.Y);
+
+                               base.Window.Location = new Point(X, Y);
 
+                               currentMousePosition.X = Control.MousePosition.X;
+                               currentMousePosition.Y = Control.MousePosition.Y;
+                       }
+               }
                private void Window_ResizeEnd(object sender, EventArgs e)               // #23510 2010.11.20 yyagi: to get resized window size
                {
                        if (ConfigIni.bウィンドウモード)
@@ -3155,151 +3183,5 @@ namespace DTXMania
                                bマウスカーソル表示中 = false;
                        }
                }
-
-               /// <summary>
-               /// システム環境のログを出力する
-               /// </summary>
-               private void PutSystemLog()
-               {
-                       System.Management.ManagementClass mc =
-                               new System.Management.ManagementClass("Win32_Processor");
-                       System.Management.ManagementObjectCollection moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("CPU Information:");
-                               //Trace.TraceInformation("DeviceID      = {0}", mo["DeviceID"]);
-                               Trace.TraceInformation("Name          = {0}", mo["Name"]);
-                               Trace.TraceInformation("MaxClockSpeed = {0}MHz", mo["MaxClockSpeed"]);
-                               Trace.TraceInformation("L2CacheSize   = {0}KB", mo["L2CacheSize"]);
-                               Trace.TraceInformation("L3CacheSize   = {0}KB", mo["L3CacheSize"]);
-                               Trace.TraceInformation("NumberOfCores = {0}", mo["NumberOfCores"]);
-                               Trace.TraceInformation("NumberOfLogicalProcessors = {0}", mo["NumberOfLogicalProcessors"]);
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       //System.Management.ManagementClass mc =
-                       //      new System.Management.ManagementClass("Win32_OperatingSystem");
-                       //System.Management.ManagementObjectCollection moc = mc.GetInstances();
-                       mc =
-                               new System.Management.ManagementClass("Win32_OperatingSystem");
-                       moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("OS Information:");
-                               //簡単な説明(Windows 8.1では「Microsoft Windows 8.1 Pro」等)
-                               Trace.TraceInformation("OS: " + mo["Caption"]);
-                               //バージョン(Windows 8.1では、「6.3.9600」)
-                               Trace.TraceInformation("Version: " + mo["Version"]);
-                               //ビルド番号(Windows 8.1では「9600」)
-                               //Trace.TraceInformation( "BuildNumber: " + mo["BuildNumber"]);
-
-                               //サービスパック(Windows 8.1ではNULL)
-                               Trace.TraceInformation("CSDVersion (ServicePack): " + mo["CSDVersion"]);
-                               //言語(日本語は「1041」)
-                               Trace.TraceInformation("OSLanguage: " + mo["OSLanguage"]);
-
-                               Trace.TraceInformation("OSArchitecture: " + mo["OSArchitecture"]);
-
-                               //Trace.TraceInformation("TotalVisibleMemorySize = {0}", mo["TotalVisibleMemorySize"]);
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       Trace.TraceInformation("-------------------------");
-                       Trace.TraceInformation("General Environment Information:");
-                       //Trace.TraceInformation("OS Version: " + Environment.OSVersion);       // fake version will be returned (due to the lack of manifest settings)
-                       //Trace.TraceInformation("ProcessorCount: " + Environment.ProcessorCount.ToString());
-                       Trace.TraceInformation("CLR Version: " + Environment.Version.ToString());
-                       Trace.TraceInformation("SystemPageSize: " + Environment.SystemPageSize.ToString());
-
-                       var cominfo = new Microsoft.VisualBasic.Devices.ComputerInfo();
-                       Trace.TraceInformation("TotalPhysicalMemorySize: {0:F2}GB", (cominfo.TotalPhysicalMemory / 1024f / 1024f / 1024f));
-                       Trace.TraceInformation("VirtialMemorySize: {0:F2}GB", (cominfo.TotalVirtualMemory / 1024f / 1024f / 1024f));
-                       Trace.TraceInformation("FreePhysicalMemorySize: {0:F2}MB", (cominfo.AvailablePhysicalMemory / 1024f / 1024f));
-                       Trace.TraceInformation("FreeVirtualMemorySize: {0:F2}MB", (cominfo.AvailableVirtualMemory / 1024f / 1024f));
-                       //Trace.TraceInformation(cominfo.OSFullName + ", " + cominfo.OSPlatform + ", " + cominfo.OSVersion);
-
-                       mc = new System.Management.ManagementClass("Win32_PhysicalMemory");
-                       moc = mc.GetInstances();
-                       Trace.TraceInformation("-------------------------");
-                       Trace.TraceInformation("Physical Memory Information:");
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("Capacity: {0:F2}GB", (Convert.ToInt64(mo["Capacity"]) / 1024f / 1024f / 1024f));
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       mc = new System.Management.ManagementClass("Win32_DisplayControllerConfiguration");
-                       moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("Display Adapter Information:");
-                               Trace.TraceInformation("Name: " + mo["Name"]);
-                               Trace.TraceInformation("VideoMode: " + mo["VideoMode"]);
-                               Trace.TraceInformation("HorizontalResolution: " + mo["HorizontalResolution"]);
-                               Trace.TraceInformation("VerticalResolution: " + mo["VerticalResolution"]);
-                               Trace.TraceInformation("RefreshRate: " + mo["RefreshRate"]);
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       mc = new System.Management.ManagementClass("Win32_VideoController");
-                       moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("Video Controller Information:");
-                               Trace.TraceInformation("Description: " + mo["Description"]);
-                               Trace.TraceInformation("AdapterRAM: {0}MB", (Convert.ToInt64(mo["AdapterRAM"]) / 1024f / 1024f));
-                               Trace.TraceInformation("CapabilityDescriptions: " + mo["CapabilityDescriptions"]);
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       mc = new System.Management.ManagementClass("Win32_DesktopMonitor");
-                       moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("Display Information:");
-                               Trace.TraceInformation("Description: " + mo["Description"]);
-                               Trace.TraceInformation("PixelsPerXLogicalInch: " + mo["PixelsPerXLogicalInch"]);
-                               Trace.TraceInformation("PixelsPerYLogicalInch: " + mo["PixelsPerYLogicalInch"]);
-                               Trace.TraceInformation("ScreenWidth: " + mo["ScreenWidth"]);
-                               Trace.TraceInformation("ScreenHeight: " + mo["ScreenHeight"]);
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       mc = new System.Management.ManagementClass("Win32_SoundDevice");
-                       moc = mc.GetInstances();
-                       foreach (System.Management.ManagementObject mo in moc)
-                       {
-                               Trace.TraceInformation("-------------------------");
-                               Trace.TraceInformation("Audio Information:");
-                               //Trace.TraceInformation("Caption: " + mo["Caption"]);
-                               //Trace.TraceInformation("ProductName: " + mo["ProductName"]);
-                               //Trace.TraceInformation("DMABufferSize: " + mo["DMABufferSize"]);
-
-                               foreach (PropertyData property in mo.Properties)
-                               {
-                                       Trace.TraceInformation("{0}:{1}", property.Name, property.Value);
-                               }
-                       }
-                       moc.Dispose();
-                       mc.Dispose();
-
-                       Trace.TraceInformation("----------------------");
-                       Trace.TraceInformation("DTXMania settings:");
-                       Trace.TraceInformation("VSyncWait: " + ConfigIni.bVSyncWait.ToString());
-                       Trace.TraceInformation("Fullscreen: " + ConfigIni.bFullScreen.ToString());
-                       Trace.TraceInformation("----------------------");
-               }
-
        }
 }