OSDN Git Service

#36057 コンフィグまわりのリファクタ(リソース不完全なので注意)
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 06.曲読み込み / CStage曲読み込み.cs
index f019929..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
@@ -292,12 +309,11 @@ namespace DTXMania
                                                        str = CDTXMania.Instance.strコンパクトモードファイル;\r
 \r
                                                CScoreIni ini = new CScoreIni(str + ".score.ini");\r
-                                               ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();\r
 \r
                                                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
@@ -306,64 +322,60 @@ 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
-                                               string[] inst = { "dr", "gt", "bs" };\r
+                                               STDGBSValue<string> inst = new STDGBSValue<string>();\r
+                                               inst.Drums = "dr";\r
+                                               inst.Guitar = "gt";\r
+                                               inst.Bass = "bs";\r
                                                if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)\r
                                                {\r
-                                                       inst[1] = "bs";\r
-                                                       inst[2] = "gt";\r
+                                                       inst.Guitar = "bs";\r
+                                                       inst.Bass = "gt";\r
                                                }\r
 \r
-                                               for (int instIndex = 0; instIndex < inst.Length; ++instIndex)\r
+                                               for (EPart einst = EPart.Drums; einst <= EPart.Bass; ++einst)\r
                                                {\r
-                                                       bool readAutoGhostCond = false;\r
-                                                       readAutoGhostCond |= instIndex == 0 ? CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである : false;\r
-                                                       readAutoGhostCond |= instIndex == 1 ? CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである : false;\r
-                                                       readAutoGhostCond |= instIndex == 2 ? CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである : false;\r
+                                                       bool readAutoGhostCond = CDTXMania.Instance.ConfigIni.bIsAutoPlay(einst);\r
 \r
-                                                       CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex] = null;\r
-                                                       CDTXMania.Instance.DTX.listAutoGhostLag[instIndex] = null;\r
+                                                       CDTXMania.Instance.DTX.listTargetGhsotLag[einst] = null;\r
+                                                       CDTXMania.Instance.DTX.listAutoGhostLag[einst] = null;\r
 \r
                                                        if (readAutoGhostCond)\r
                                                        {\r
                                                                string[] prefix = { "perfect", "lastplay", "hiskill", "hiscore", "online" };\r
-                                                               int indPrefix = (int)CDTXMania.Instance.ConfigIni.eAutoGhost[instIndex];\r
-                                                               string filename = CDTXMania.Instance.DTX.strフォルダ名 + "\\" + CDTXMania.Instance.DTX.strファイル名 + "." + prefix[indPrefix] + "." + inst[instIndex] + ".ghost";\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
-                                                                       CDTXMania.Instance.DTX.listAutoGhostLag[instIndex] = new List<int>();\r
-                                                                       ReadGhost(filename, CDTXMania.Instance.DTX.listAutoGhostLag[instIndex]);\r
+                                                                       CDTXMania.Instance.DTX.listAutoGhostLag[einst] = new List<int>();\r
+                                                                       ReadGhost(filename, CDTXMania.Instance.DTX.listAutoGhostLag[einst]);\r
                                                                }\r
                                                        }\r
 \r
-                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[instIndex] != 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[instIndex];\r
-                                                               string filename = CDTXMania.Instance.DTX.strフォルダ名 + "\\" + CDTXMania.Instance.DTX.strファイル名 + "." + prefix[indPrefix] + "." + inst[instIndex] + ".ghost";\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[instIndex] = new List<int>();\r
-                                                                       ReadGhost(filename, CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex]);\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[instIndex] == ETargetGhostData.PERFECT)\r
+                                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[einst] == ETargetGhostData.Perfect)\r
                                                                {\r
                                                                        // All perfect\r
-                                                                       CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex] = new List<int>();\r
+                                                                       CDTXMania.Instance.DTX.listTargetGhsotLag[einst] = new List<int>();\r
                                                                }\r
                                                        }\r
                                                }\r
 \r
                                                // #35411 2015.08.19 chnmr0 add ゴースト機能のためList chip 読み込み後楽器パート出現順インデックスを割り振る\r
-                                               int[] curCount = new int[(int)E楽器パート.UNKNOWN];\r
-                                               for (int i = 0; i < curCount.Length; ++i)\r
-                                               {\r
-                                                       curCount[i] = 0;\r
-                                               }\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[(int)chip.e楽器パート]++;\r
+                                                               chip.n楽器パートでの出現順 = curCount[chip.e楽器パート]++;\r
                                                        }\r
                                                }\r
 \r
@@ -382,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
@@ -411,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
@@ -428,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
@@ -466,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
@@ -478,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
@@ -501,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
@@ -529,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