• R/O
  • HTTP
  • SSH
  • HTTPS

dtxmania: Commit


Commit MetaInfo

Revisionf91d9bc90580f8d4558a9cc41e0252802eacafff (tree)
Time2018-05-02 23:26:41
AuthorDESKTOP-217BR0A\yyagi <yyagi.dtxmania@gmai...>
CommiterDESKTOP-217BR0A\yyagi

Log Message

#38244 LoadDTXDetail=ON時、起動後(enumerate時)に例外が発生する場合がある問題を修正。具体的には、
1. bmpファイル読み出し時のフルパス生成において、nullチェック強化
2. enumerationでbmp/aviの読み込みを省略

Change Summary

Incremental Difference

--- a/DTXMania/コード/スコア、曲/CDTX.cs
+++ b/DTXMania/コード/スコア、曲/CDTX.cs
@@ -232,11 +232,11 @@ namespace DTXMania
232232 this.On活性化();
233233 this.t入力_全入力文字列から(str全入力文字列);
234234 }
235- public CDTX(string strファイル名, bool bヘッダのみ)
235+ public CDTX(string strファイル名, bool bEnumerating, bool bレーン情報を確認する)
236236 : this()
237237 {
238238 this.On活性化();
239- this.t入力(strファイル名, bヘッダのみ);
239+ this.t入力(strファイル名, bEnumerating, bレーン情報を確認する);
240240 }
241241 private CDTX(string str全入力文字列, double db再生速度, int nBGMAdjust)
242242 : this()
@@ -244,12 +244,13 @@ namespace DTXMania
244244 this.On活性化();
245245 this.t入力_全入力文字列から(str全入力文字列, db再生速度, nBGMAdjust);
246246 }
247- public CDTX(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust)
247+ public CDTX(string strファイル名, bool bEnumerating, bool bレーン情報を確認する, double db再生速度, int nBGMAdjust)
248248 : this()
249249 {
250250 this.On活性化();
251- this.t入力(strファイル名, bヘッダのみ, db再生速度, nBGMAdjust);
251+ this.t入力(strファイル名, bEnumerating, bレーン情報を確認する, db再生速度, nBGMAdjust);
252252 }
253+
253254 #endregion
254255
255256
@@ -1257,6 +1258,7 @@ namespace DTXMania
12571258
12581259 private readonly STGDAPARAM[] stGDAParam;
12591260 private bool bヘッダのみ;
1261+ private bool bレーン情報を確認する;
12601262 private Stack<bool> bstackIFからENDIFをスキップする;
12611263
12621264 private int n現在の行数;
--- a/DTXMania/コード/スコア、曲/CDTXInput.cs
+++ b/DTXMania/コード/スコア、曲/CDTXInput.cs
@@ -15,13 +15,14 @@ namespace DTXMania
1515 {
1616 public partial class CDTX
1717 {
18- public void t入力(string strファイル名, bool bヘッダのみ)
18+ public void t入力(string strファイル名, bool bEnumerating, bool bレーン情報を確認する)
1919 {
20- this.t入力(strファイル名, bヘッダのみ, 1.0, 0);
20+ this.t入力(strファイル名, bEnumerating, bレーン情報を確認する, 1.0, 0);
2121 }
22- public void t入力(string strファイル名, bool bヘッダのみ, double db再生速度, int nBGMAdjust)
22+ public void t入力(string strファイル名, bool bEnumerating, bool bレーン情報を確認する, double db再生速度, int nBGMAdjust)
2323 {
24- this.bヘッダのみ = bヘッダのみ;
24+ this.bヘッダのみ = bEnumerating;
25+ this.bレーン情報を確認する = bレーン情報を確認する;
2526 this.strファイル名の絶対パス = Path.GetFullPath(strファイル名);
2627 this.strファイル名 = Path.GetFileName(this.strファイル名の絶対パス);
2728 this.strフォルダ名 = Path.GetDirectoryName(this.strファイル名の絶対パス) + @"\";
@@ -165,7 +166,7 @@ namespace DTXMania
165166 this.n無限管理VOL = null;
166167 this.n無限管理PAN = null;
167168 this.n無限管理SIZE = null;
168- if (!this.bヘッダのみ)
169+ if (!this.bヘッダのみ && this.bレーン情報を確認する)
169170 {
170171 #region [ BPM/BMP初期化 ]
171172 CBPM cbpm = null;
--- a/DTXMania/コード/スコア、曲/CDTXNestedTypes.cs
+++ b/DTXMania/コード/スコア、曲/CDTXNestedTypes.cs
@@ -243,10 +243,20 @@ namespace DTXMania
243243 {
244244 get
245245 {
246- if (!string.IsNullOrEmpty(CDTXMania.Instance.DTX.PATH_WAV))
247- return CDTXMania.Instance.DTX.PATH_WAV + this.strファイル名;
246+ if (CDTXMania.Instance.DTX != null)
247+ {
248+ if (!string.IsNullOrEmpty(CDTXMania.Instance.DTX.PATH_WAV))
249+ return CDTXMania.Instance.DTX.PATH_WAV + this.strファイル名;
250+ else
251+ return CDTXMania.Instance.DTX.strフォルダ名 + this.strファイル名;
252+ }
248253 else
249- return CDTXMania.Instance.DTX.strフォルダ名 + this.strファイル名;
254+ {
255+ // 2018.5.2 add yyagi
256+ // enumarating && bLoadDTXDetail==true && バージョンアップ直後のみ、ここにくる
257+ // enumarating時限定の話なので、dtx内のbmpを読み込む必要はなく、nullを返してしまえばよい
258+ return null;
259+ }
250260 }
251261 }
252262
--- a/DTXMania/コード/スコア、曲/CSong管理.cs
+++ b/DTXMania/コード/スコア、曲/CSong管理.cs
@@ -820,7 +820,7 @@ namespace DTXMania
820820 try
821821 {
822822 //#36177 2016.7.30 ikanick 曲データの取得時、bLoadDTXDetailがtrueであれば bヘッダのみをfalseにし 詳細なデータを取得する
823- CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, !CDTXMania.Instance.ConfigIni.bLoadDTXDetail );
823+ CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, true, CDTXMania.Instance.ConfigIni.bLoadDTXDetail );
824824 c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE;
825825 c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;
826826 c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;
--- a/DTXMania/コード/ステージ/06.曲読み込み/CStage曲読み込み.cs
+++ b/DTXMania/コード/ステージ/06.曲読み込み/CStage曲読み込み.cs
@@ -71,7 +71,7 @@ namespace DTXMania
7171 string strDTXファイルパス = (CDTXMania.Instance.bコンパクトモード) ?
7272 CDTXMania.Instance.strコンパクトモードファイル : CDTXMania.Instance.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス;
7373
74- CDTX cdtx = new CDTX(strDTXファイルパス, true);
74+ CDTX cdtx = new CDTX(strDTXファイルパス, false, false);
7575 this.str曲タイトル = cdtx.TITLE;
7676 if (((cdtx.STAGEFILE != null) && (cdtx.STAGEFILE.Length > 0)) && (File.Exists(cdtx.strフォルダ名 + cdtx.STAGEFILE) && !CDTXMania.Instance.ConfigIni.bStoicMode))
7777 {
@@ -332,7 +332,7 @@ namespace DTXMania
332332 if ((CDTXMania.Instance.DTX != null) && CDTXMania.Instance.DTX.b活性化してる)
333333 CDTXMania.Instance.DTX.On非活性化();
334334
335- CDTXMania.Instance.DTX = new CDTX(str, false, ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0, ini.stファイル.BGMAdjust);
335+ CDTXMania.Instance.DTX = new CDTX(str, false, true, ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0, ini.stファイル.BGMAdjust);
336336 Trace.TraceInformation("----曲情報-----------------");
337337 Trace.TraceInformation("TITLE: {0}", CDTXMania.Instance.DTX.TITLE);
338338 Trace.TraceInformation("FILE: {0}", CDTXMania.Instance.DTX.strファイル名の絶対パス);
Show on old repository browser