diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210.csproj" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210.csproj" index a24c39f9e..b1e1a4b34 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210.csproj" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210.csproj" @@ -43,7 +43,7 @@ true bin\x86\Debug\ - TRACE;DEBUG;_TEST_ENGLISH TEST_Direct3D9Ex_ _WindowedFullscreen MemoryRenderer + TRACE;_TEST_ENGLISH TEST_Direct3D9Ex_ _WindowedFullscreen MemoryRenderer full x86 prompt diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\202\263\343\202\242\343\200\201\346\233\262/CDTX.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\202\263\343\202\242\343\200\201\346\233\262/CDTX.cs" index 3db995fdb..7e440c500 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\202\263\343\202\242\343\200\201\346\233\262/CDTX.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\202\263\343\202\242\343\200\201\346\233\262/CDTX.cs" @@ -336,10 +336,10 @@ public override string ToString() public class CChip : IComparable, ICloneable { - public bool bHit; - public bool b可視 = true; - public bool bShow; - public bool bBranch = false; + public bool bHit; //プレイヤーの手によって叩かれた(判定イベントが発生した)か + public bool b可視 = true; //falseにすると処理しない音符として扱う + public bool bShow; //(特殊フラグ)SUDDEN命令を使用した時用 + public bool bBranch = false; //(特殊フラグ)分岐小節線であるか public double dbチップサイズ倍率 = 1.0; public double db実数値; public double dbBPM; @@ -383,6 +383,7 @@ public class CChip : IComparable, ICloneable public double dbProcess_Time; public int nPlayerSide; public bool bGOGOTIME = false; //2018.03.11 kairera0467 ゴーゴータイム内のチップであるか + public int nList上の位置; //2018.04.01 List上での位置 public bool bBPMチップである { get @@ -435,6 +436,7 @@ public void t初期化() this.nチャンネル番号 = 0; this.n整数値 = 0; //整数値をList上の番号として用いる。 this.n整数値_内部番号 = 0; + this.nList上の位置 = 0; this.db実数値 = 0.0; this.n発声位置 = 0; this.f発声位置 = 0.0f; @@ -594,7 +596,7 @@ public int CompareTo( CDTX.CChip other ) 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xA0 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xB0 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xC0 - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 5, //0xD0 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 4, 4, //0xD0 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xE0 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //0xF0 }; @@ -1179,6 +1181,7 @@ public int nBGMAdjust public int[] nノーツ数 = new int[ 4 ]; //0~2:各コース 3:共通 public int[] n風船数 = new int[ 4 ]; //0~2:各コース 3:共通 private bool b次の小節が分岐である; + private bool b次の分岐で数値リセット; //2018.03.16 kairera0467 SECTION処理を分岐判定と同時に行う。 private string strTemp; private int n文字数; @@ -1306,32 +1309,6 @@ public CDTX() this.nRESULTMOVIE用優先順位 = new int[ 7 ]; this.nRESULTSOUND用優先順位 = new int[ 7 ]; - #region [ 2011.1.1 yyagi GDA->DTX変換テーブル リファクタ後 ] - STGDAPARAM[] stgdaparamArray = new STGDAPARAM[] { // GDA->DTX conversion table - new STGDAPARAM("TC", 0x03), new STGDAPARAM("BL", 0x02), new STGDAPARAM("GS", 0x29), - new STGDAPARAM("DS", 0x30), new STGDAPARAM("FI", 0x53), new STGDAPARAM("HH", 0x11), - new STGDAPARAM("SD", 0x12), new STGDAPARAM("BD", 0x13), new STGDAPARAM("HT", 0x14), - new STGDAPARAM("LT", 0x15), new STGDAPARAM("CY", 0x16), new STGDAPARAM("G1", 0x21), - new STGDAPARAM("G2", 0x22), new STGDAPARAM("G3", 0x23), new STGDAPARAM("G4", 0x24), - new STGDAPARAM("G5", 0x25), new STGDAPARAM("G6", 0x26), new STGDAPARAM("G7", 0x27), - new STGDAPARAM("GW", 0x28), new STGDAPARAM("01", 0x61), new STGDAPARAM("02", 0x62), - new STGDAPARAM("03", 0x63), new STGDAPARAM("04", 0x64), new STGDAPARAM("05", 0x65), - new STGDAPARAM("06", 0x66), new STGDAPARAM("07", 0x67), new STGDAPARAM("08", 0x68), - new STGDAPARAM("09", 0x69), new STGDAPARAM("0A", 0x70), new STGDAPARAM("0B", 0x71), - new STGDAPARAM("0C", 0x72), new STGDAPARAM("0D", 0x73), new STGDAPARAM("0E", 0x74), - new STGDAPARAM("0F", 0x75), new STGDAPARAM("10", 0x76), new STGDAPARAM("11", 0x77), - new STGDAPARAM("12", 0x78), new STGDAPARAM("13", 0x79), new STGDAPARAM("14", 0x80), - new STGDAPARAM("15", 0x81), new STGDAPARAM("16", 0x82), new STGDAPARAM("17", 0x83), - new STGDAPARAM("18", 0x84), new STGDAPARAM("19", 0x85), new STGDAPARAM("1A", 0x86), - new STGDAPARAM("1B", 0x87), new STGDAPARAM("1C", 0x88), new STGDAPARAM("1D", 0x89), - new STGDAPARAM("1E", 0x90), new STGDAPARAM("1F", 0x91), new STGDAPARAM("20", 0x92), - new STGDAPARAM("B1", 0xA1), new STGDAPARAM("B2", 0xA2), new STGDAPARAM("B3", 0xA3), - new STGDAPARAM("B4", 0xA4), new STGDAPARAM("B5", 0xA5), new STGDAPARAM("B6", 0xA6), - new STGDAPARAM("B7", 0xA7), new STGDAPARAM("BW", 0xA8), new STGDAPARAM("G0", 0x20), - new STGDAPARAM("B0", 0xA0) - }; - this.stGDAParam = stgdaparamArray; - #endregion this.nBGMAdjust = 0; this.nPolyphonicSounds = CDTXMania.ConfigIni.nPoliphonicSounds; this.dbDTXVPlaySpeed = 1.0f; @@ -2749,7 +2726,7 @@ public void t入力_全入力文字列から( string str全入力文字列, stri // this.listChip[n].dbSCROLL = nRan / 10.0; // } //} - + this.listChip.Sort(); int n整数値管理 = 0; foreach( CChip chip in this.listChip ) { @@ -3618,6 +3595,7 @@ private void t命令を挿入する(string InputText) chip.nチャンネル番号 = 0xDD; chip.n発声位置 = ((this.n現在の小節数 - 1) * 384); chip.n発声時刻ms = (int)this.dbNowTime; + chip.f発声時刻ms = (float)this.dbNowTime; chip.n整数値_内部番号 = 1; // チップを配置。 @@ -3724,6 +3702,7 @@ private void t命令を挿入する(string InputText) chip.nチャンネル番号 = 0xDE; chip.n発声位置 = ((this.n現在の小節数 - 1) * 384); chip.n発声時刻ms = (int)(this.dbNowTime - ((15000.0 / this.dbNowBPM * (this.fNow_Measure_s / this.fNow_Measure_m)) * 16.0 )); //ここの時間設定は前の小節の開始時刻である必要があるのだが... + chip.f発声時刻ms = (float)this.dbNowTime; //chip.n発声時刻ms = (int)this.dbLastTime; chip.dbSCROLL = this.dbNowScroll; chip.dbBPM = this.dbNowBPM; @@ -3925,10 +3904,10 @@ private void t入力_行解析譜面_V4(string InputText) if( this.b小節線を挿入している == false ) { CChip chip = new CChip(); - chip.n発声位置 = ( ( this.n現在の小節数 ) * 384 ); chip.nチャンネル番号 = 0x50; + chip.n発声位置 = ( ( this.n現在の小節数 ) * 384 ); chip.n発声時刻ms = (int)this.dbNowTime; - chip.n整数値 = this.n現在の小節数; + chip.n整数値_内部番号 = this.n現在の小節数; chip.dbBPM = this.dbNowBPM; chip.dbSCROLL = this.dbNowScroll; chip.dbSCROLL_Y = this.dbNowScrollY; @@ -3957,7 +3936,7 @@ private void t入力_行解析譜面_V4(string InputText) //1拍の時間を計算 double db1拍 = ( 60.0 / this.dbNowBPM ) / 4.0; //forループ(拍数) - for( int measure = 0; measure < this.fNow_Measure_s; measure++ ) + for( int measure = 1; measure < this.fNow_Measure_s; measure++ ) { CChip hakusen = new CChip(); hakusen.n発声位置 = ( ( this.n現在の小節数) * 384 ); @@ -3965,7 +3944,7 @@ private void t入力_行解析譜面_V4(string InputText) hakusen.nチャンネル番号 = 0x51; //hakusen.n発声時刻ms = (int)this.dbNowTime; hakusen.fBMSCROLLTime = this.dbNowBMScollTime; - hakusen.n整数値 = 0; + hakusen.n整数値_内部番号 = this.n現在の小節数; hakusen.dbBPM = this.dbNowBPM; hakusen.dbSCROLL = this.dbNowScroll; hakusen.dbSCROLL_Y = this.dbNowScrollY; @@ -4020,7 +3999,7 @@ private void t入力_行解析譜面_V4(string InputText) chip.b可視 = true; chip.bShow = true; chip.nチャンネル番号 = 0x10 + nObjectNum; - chip.n発声位置 = (this.n現在の小節数 * 384) + ((384 * n) / n文字数); + chip.n発声位置 = (int)((this.n現在の小節数 * 384.0) + ((384.0 * n) / n文字数)); chip.f発声位置 = (float)this.dbNowTime; chip.n発声時刻ms = (int)this.dbNowTime; //chip.fBMSCROLLTime = (float)(( this.dbBarLength ) * (16.0f / this.n各小節の文字数[this.n現在の小節数])); @@ -6743,23 +6722,6 @@ public override void OnManagedリソースの解放() #region [ private ] //----------------- - /// - /// GDAチャンネル番号に対応するDTXチャンネル番号。 - /// - [StructLayout( LayoutKind.Sequential )] - private struct STGDAPARAM - { - public string strGDAのチャンネル文字列; - public int nDTXのチャンネル番号; - - public STGDAPARAM( string strGDAのチャンネル文字列, int nDTXのチャンネル番号 ) // 2011.1.1 yyagi 構造体のコンストラクタ追加(初期化簡易化のため) - { - this.strGDAのチャンネル文字列 = strGDAのチャンネル文字列; - this.nDTXのチャンネル番号 = nDTXのチャンネル番号; - } - } - - private readonly STGDAPARAM[] stGDAParam; private bool bヘッダのみ; private Stack bstackIFからENDIFをスキップする; @@ -7774,38 +7736,11 @@ private bool t入力_行解析_チップ配置( string strコマンド, string s //----------------- int nチャンネル番号 = -1; - // ファイルフォーマットによって処理が異なる。 - - if( this.e種別 == E種別.GDA || this.e種別 == E種別.G2D ) - { - #region [ (A) GDA, G2D の場合:チャンネル文字列をDTXのチャンネル番号へ置き換える。] - //----------------- - string strチャンネル文字列 = strコマンド.Substring( 3, 2 ); - - foreach( STGDAPARAM param in this.stGDAParam ) - { - if( strチャンネル文字列.Equals( param.strGDAのチャンネル文字列, StringComparison.OrdinalIgnoreCase ) ) - { - nチャンネル番号 = param.nDTXのチャンネル番号; - break; // 置き換え成功 - } - } - if( nチャンネル番号 < 0 ) - return false; // 置き換え失敗 - //----------------- - #endregion - } - else - { - #region [ (B) その他の場合:チャンネル番号は16進数2桁。] - //----------------- - nチャンネル番号 = C変換.n16進数2桁の文字列を数値に変換して返す( strコマンド.Substring( 3, 2 ) ); + + nチャンネル番号 = C変換.n16進数2桁の文字列を数値に変換して返す( strコマンド.Substring( 3, 2 ) ); - if( nチャンネル番号 < 0 ) - return false; - //----------------- - #endregion - } + if( nチャンネル番号 < 0 ) + return false; //----------------- #endregion #region [ 取得したチャンネル番号で、this.bチップがある に該当があれば設定する。] diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/02.\343\202\277\343\202\244\343\203\210\343\203\253/CStage\343\202\277\343\202\244\343\203\210\343\203\253.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/02.\343\202\277\343\202\244\343\203\210\343\203\253/CStage\343\202\277\343\202\244\343\203\210\343\203\253.cs" index 7e1c1a680..0f48da6e9 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/02.\343\202\277\343\202\244\343\203\210\343\203\253/CStage\343\202\277\343\202\244\343\203\210\343\203\253.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/02.\343\202\277\343\202\244\343\203\210\343\203\253/CStage\343\202\277\343\202\244\343\203\210\343\203\253.cs" @@ -187,7 +187,7 @@ public override int On進行描画() this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 ); #region[ バージョン表示 ] - string strVersion = "KTT:J:A:I:2018031100"; + string strVersion = "KTT:J:A:I:2018040600"; #if DEBUG strVersion += " DEBUG"; #endif diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectPreimage\343\203\221\343\203\215\343\203\253.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectPreimage\343\203\221\343\203\215\343\203\253.cs" index 0d27ee180..c6d91023a 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectPreimage\343\203\221\343\203\215\343\203\253.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectPreimage\343\203\221\343\203\215\343\203\253.cs" @@ -28,7 +28,7 @@ public bool bIsPlayingPremovie // #27060 { get { - return (this.avi != null); + return false; } } @@ -38,7 +38,6 @@ public override void On活性化() { this.n本体X = 8; this.n本体Y = 0x39; - this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像; this.str現在のファイル名 = ""; this.b新しいプレビューファイルを読み込んだ = false; base.On活性化(); @@ -47,23 +46,12 @@ public override void On非活性化() { this.ct登場アニメ用 = null; this.ct遅延表示 = null; - if( this.avi != null ) - { - this.avi.Dispose(); - this.avi = null; - } base.On非活性化(); } public override void OnManagedリソースの作成() { if( !base.b活性化してない ) { - this.txパネル本体 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_preimage panel.png" ), false ); - this.txセンサ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_sensor.png" ), false ); - //this.txセンサ光 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_sensor light.png" ), false ); - this.txプレビュー画像 = null; - this.txプレビュー画像がないときの画像 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_preimage default.png" ), false ); - this.sfAVI画像 = Surface.CreateOffscreenPlain( CDTXMania.app.Device, 0xcc, 0x10d, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.SystemMemory ); this.nAVI再生開始時刻 = -1; this.n前回描画したフレーム番号 = -1; this.b動画フレームを作成した = false; @@ -76,16 +64,6 @@ public override void OnManagedリソースの解放() { if( !base.b活性化してない ) { - CDTXMania.tテクスチャの解放( ref this.txパネル本体 ); - CDTXMania.tテクスチャの解放( ref this.txセンサ ); - CDTXMania.tテクスチャの解放( ref this.txセンサ光 ); - CDTXMania.tテクスチャの解放( ref this.txプレビュー画像 ); - CDTXMania.tテクスチャの解放( ref this.txプレビュー画像がないときの画像 ); - if( this.sfAVI画像 != null ) - { - this.sfAVI画像.Dispose(); - this.sfAVI画像 = null; - } base.OnManagedリソースの解放(); } } @@ -101,37 +79,7 @@ public override int On進行描画() base.b初めての進行描画 = false; } this.ct登場アニメ用.t進行(); - this.ctセンサ光.t進行Loop(); - if( ( !CDTXMania.stage選曲.bスクロール中 && ( this.ct遅延表示 != null ) ) && this.ct遅延表示.b進行中 ) - { - this.ct遅延表示.t進行(); - if ( ( this.ct遅延表示.n現在の値 >= 0 ) && this.b新しいプレビューファイルをまだ読み込んでいない ) - { - this.tプレビュー画像_動画の変更(); - CDTXMania.Timer.t更新(); - this.ct遅延表示.n現在の経過時間ms = CDTXMania.Timer.n現在時刻; - this.b新しいプレビューファイルを読み込んだ = true; - } - else if ( this.ct遅延表示.b終了値に達した && this.ct遅延表示.b進行中 ) - { - this.ct遅延表示.t停止(); - } - } - else if( ( ( this.avi != null ) && ( this.sfAVI画像 != null ) ) && ( this.nAVI再生開始時刻 != -1 ) ) - { - int time = (int) ( ( CDTXMania.Timer.n現在時刻 - this.nAVI再生開始時刻 ) * ( ( (double) CDTXMania.ConfigIni.n演奏速度 ) / 20.0 ) ); - int frameNoFromTime = this.avi.GetFrameNoFromTime( time ); - if( frameNoFromTime >= this.avi.GetMaxFrameCount() ) - { - this.nAVI再生開始時刻 = CDTXMania.Timer.n現在時刻; - } - else if( ( this.n前回描画したフレーム番号 != frameNoFromTime ) && !this.b動画フレームを作成した ) - { - this.b動画フレームを作成した = true; - this.n前回描画したフレーム番号 = frameNoFromTime; - this.pAVIBmp = this.avi.GetFramePtr( frameNoFromTime ); - } - } + this.t描画処理_パネル本体(); //this.t描画処理_ジャンル文字列(); this.t描画処理_プレビュー画像(); @@ -146,7 +94,6 @@ public override int On進行描画() #region [ private ] //----------------- - private CAvi avi; private bool b動画フレームを作成した; private CCounter ctセンサ光; private CCounter ct遅延表示; @@ -159,14 +106,7 @@ public override int On進行描画() private readonly Rectangle rcセンサ光 = new Rectangle( 0, 0xc0, 0x40, 0x40 ); private readonly Rectangle rcセンサ本体下半分 = new Rectangle( 0x40, 0, 0x40, 0x80 ); private readonly Rectangle rcセンサ本体上半分 = new Rectangle( 0, 0, 0x40, 0x80 ); - private CTexture r表示するプレビュー画像; - private Surface sfAVI画像; private string str現在のファイル名; - private CTexture txセンサ; - private CTexture txセンサ光; - private CTexture txパネル本体; - private CTexture txプレビュー画像; - private CTexture txプレビュー画像がないときの画像; private bool b新しいプレビューファイルを読み込んだ; private bool b新しいプレビューファイルをまだ読み込んでいない { @@ -215,11 +155,6 @@ private unsafe void tサーフェイスをクリアする( Surface sf ) } private void tプレビュー画像_動画の変更() { - if( this.avi != null ) - { - this.avi.Dispose(); - this.avi = null; - } this.pAVIBmp = IntPtr.Zero; this.nAVI再生開始時刻 = -1; if( !CDTXMania.ConfigIni.bストイックモード ) @@ -237,140 +172,19 @@ private void tプレビュー画像_動画の変更() return; } } - this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像; this.str現在のファイル名 = ""; } private bool tプレビュー画像の指定があれば構築する() { - Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア; - if( ( cスコア == null ) || string.IsNullOrEmpty( cスコア.譜面情報.Preimage ) ) - { - return false; - } - string str = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Preimage; - if( !str.Equals( this.str現在のファイル名 ) ) - { - CDTXMania.tテクスチャの解放( ref this.txプレビュー画像 ); - this.str現在のファイル名 = str; - if( !File.Exists( this.str現在のファイル名 ) ) - { - Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { this.str現在のファイル名 } ); - return false; - } - this.txプレビュー画像 = CDTXMania.tテクスチャの生成( this.str現在のファイル名, false ); - if( this.txプレビュー画像 != null ) - { - this.r表示するプレビュー画像 = this.txプレビュー画像; - } - else - { - this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像; - } - } + return true; } private bool tプレビュー動画の指定があれば構築する() { - Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア; - if( ( CDTXMania.ConfigIni.bAVI有効 && ( cスコア != null ) ) && !string.IsNullOrEmpty( cスコア.譜面情報.Premovie ) ) - { - string filename = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Premovie; - if( filename.Equals( this.str現在のファイル名 ) ) - { - return true; - } - if( this.avi != null ) - { - this.avi.Dispose(); - this.avi = null; - } - this.str現在のファイル名 = filename; - if( !File.Exists( this.str現在のファイル名 ) ) - { - Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { this.str現在のファイル名 } ); - return false; - } - try - { - this.avi = new CAvi( filename ); - this.nAVI再生開始時刻 = CDTXMania.Timer.n現在時刻; - this.n前回描画したフレーム番号 = -1; - this.b動画フレームを作成した = false; - this.tサーフェイスをクリアする( this.sfAVI画像 ); - Trace.TraceInformation( "動画を生成しました。({0})", new object[] { filename } ); - } - catch - { - Trace.TraceError( "動画の生成に失敗しました。({0})", new object[] { filename } ); - this.avi = null; - this.nAVI再生開始時刻 = -1; - } - } return false; } private bool t背景画像があればその一部からプレビュー画像を構築する() { - Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア; - if( ( cスコア == null ) || string.IsNullOrEmpty( cスコア.譜面情報.Backgound ) ) - { - return false; - } - string path = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Backgound; - if( !path.Equals( this.str現在のファイル名 ) ) - { - if( !File.Exists( path ) ) - { - Trace.TraceWarning( "ファイルが存在しません。({0})", new object[] { path } ); - return false; - } - CDTXMania.tテクスチャの解放( ref this.txプレビュー画像 ); - this.str現在のファイル名 = path; - Bitmap image = null; - Bitmap bitmap2 = null; - Bitmap bitmap3 = null; - try - { - image = new Bitmap( this.str現在のファイル名 ); - bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height); - Graphics graphics = Graphics.FromImage( bitmap2 ); - int x = 0; - for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height) - { - for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width) - { - graphics.DrawImage( image, x, i, image.Width, image.Height ); - } - } - graphics.Dispose(); - bitmap3 = new Bitmap( 0xcc, 0x10d ); - graphics = Graphics.FromImage( bitmap3 ); - graphics.DrawImage( bitmap2, 5, 5, new Rectangle( 0x157, 0x6d, 0xcc, 0x10d ), GraphicsUnit.Pixel ); - graphics.Dispose(); - this.txプレビュー画像 = new CTexture( CDTXMania.app.Device, bitmap3, CDTXMania.TextureFormat ); - this.r表示するプレビュー画像 = this.txプレビュー画像; - } - catch - { - Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { this.str現在のファイル名 } ); - this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像; - return false; - } - finally - { - if( image != null ) - { - image.Dispose(); - } - if( bitmap2 != null ) - { - bitmap2.Dispose(); - } - if( bitmap3 != null ) - { - bitmap3.Dispose(); - } - } - } return true; } /// @@ -450,129 +264,19 @@ private void t描画処理_ジャンル文字列() } private void t描画処理_センサ光() { - int num = this.ctセンサ光.n現在の値; - if( num < 12 ) - { - int x = this.n本体X + 0xcc; - int y = this.n本体Y + 0x7b; - if( this.txセンサ光 != null ) - { - this.txセンサ光.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); - this.txセンサ光.n透明度 = 0xff; - this.txセンサ光.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( ( num % 4 ) * 0x40, ( num / 4 ) * 0x40, 0x40, 0x40 ) ); - } - } - else if( num < 0x18 ) - { - int num4 = num - 11; - double num5 = ( (double) num4 ) / 11.0; - double num6 = 1.0 + ( num5 * 0.5 ); - int num7 = (int) ( 64.0 * num6 ); - int num8 = (int) ( 64.0 * num6 ); - int num9 = ( ( this.n本体X + 0xcc ) + 0x20 ) - ( num7 / 2 ); - int num10 = ( ( this.n本体Y + 0x7b ) + 0x20 ) - ( num8 / 2 ); - if( this.txセンサ光 != null ) - { - this.txセンサ光.vc拡大縮小倍率 = new Vector3( (float) num6, (float) num6, 1f ); - this.txセンサ光.n透明度 = (int) ( 255.0 * ( 1.0 - num5 ) ); - this.txセンサ光.t2D描画( CDTXMania.app.Device, num9, num10, this.rcセンサ光 ); - } - } + } private void t描画処理_センサ本体() { - int x = this.n本体X + 0xcd; - int y = this.n本体Y - 4; - if( this.txセンサ != null ) - { - this.txセンサ.t2D描画( CDTXMania.app.Device, x, y, this.rcセンサ本体上半分 ); - y += 0x80; - this.txセンサ.t2D描画( CDTXMania.app.Device, x, y, this.rcセンサ本体下半分 ); - } + } private void t描画処理_パネル本体() { - if( this.ct登場アニメ用.b終了値に達した || ( this.txパネル本体 != null ) ) - { - this.n本体X = 16; - this.n本体Y = 86; - } - else - { - double num = ( (double) this.ct登場アニメ用.n現在の値 ) / 100.0; - double num2 = Math.Cos( ( 1.5 + ( 0.5 * num ) ) * Math.PI ); - this.n本体X = 8; - this.n本体Y = 0x39 - ( (int) ( this.txパネル本体.sz画像サイズ.Height * ( 1.0 - ( num2 * num2 ) ) ) ); - } - if( this.txパネル本体 != null ) - { - this.txパネル本体.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y ); - } + } private unsafe void t描画処理_プレビュー画像() { - if( !CDTXMania.stage選曲.bスクロール中 && ( ( ( this.ct遅延表示 != null ) && ( this.ct遅延表示.n現在の値 > 0 ) ) && !this.b新しいプレビューファイルをまだ読み込んでいない ) ) - { - int x = this.n本体X + 0x12; - int y = this.n本体Y + 0x10; - float num3 = ( (float) this.ct遅延表示.n現在の値 ) / 100f; - float num4 = 0.9f + ( 0.1f * num3 ); - if( ( this.nAVI再生開始時刻 != -1 ) && ( this.sfAVI画像 != null ) ) - { - if( this.b動画フレームを作成した && ( this.pAVIBmp != IntPtr.Zero ) ) - { - DataRectangle rectangle = this.sfAVI画像.LockRectangle( LockFlags.None ); - DataStream data = rectangle.Data; - int num5 = rectangle.Pitch / this.sfAVI画像.Description.Width; - BitmapUtil.BITMAPINFOHEADER* pBITMAPINFOHEADER = (BitmapUtil.BITMAPINFOHEADER*) this.pAVIBmp.ToPointer(); - if( pBITMAPINFOHEADER->biBitCount == 0x18 ) - { - switch( num5 ) - { - case 2: - this.avi.tBitmap24ToGraphicsStreamR5G6B5( pBITMAPINFOHEADER, data, this.sfAVI画像.Description.Width, this.sfAVI画像.Description.Height ); - break; - - case 4: - this.avi.tBitmap24ToGraphicsStreamX8R8G8B8( pBITMAPINFOHEADER, data, this.sfAVI画像.Description.Width, this.sfAVI画像.Description.Height ); - break; - } - } - this.sfAVI画像.UnlockRectangle(); - this.b動画フレームを作成した = false; - } - using( Surface surface = CDTXMania.app.Device.GetBackBuffer( 0, 0 ) ) - { - try - { - CDTXMania.app.Device.UpdateSurface( this.sfAVI画像, new Rectangle( 0, 0, this.sfAVI画像.Description.Width, this.sfAVI画像.Description.Height ), surface, new Point( x, y ) ); - } - catch // #32335 2013.10.26 yyagi: codecがないと、D3DERR_INVALIDCALLが発生する場合がある - { - } - return; - } - } - if( this.r表示するプレビュー画像 != null ) - { - int width = this.r表示するプレビュー画像.sz画像サイズ.Width; - int height = this.r表示するプレビュー画像.sz画像サイズ.Height; - if( width > 400 ) - { - width = 400; - } - if( height > 400 ) - { - height = 400; - } - x += ( 400 - ( (int) ( width * num4 ) ) ) / 2; - y += ( 400 - ( (int) ( height * num4 ) ) ) / 2; - this.r表示するプレビュー画像.n透明度 = (int) ( 255f * num3 ); - this.r表示するプレビュー画像.vc拡大縮小倍率.X = num4; - this.r表示するプレビュー画像.vc拡大縮小倍率.Y = num4; - this.r表示するプレビュー画像.t2D描画( CDTXMania.app.Device, x + 22, y + 12, new Rectangle( 0, 0, width, height ) ); - } - } + } //----------------- #endregion diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectShowCurrentPosition.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectShowCurrentPosition.cs" index 85cbbc62a..930ba7643 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectShowCurrentPosition.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelectShowCurrentPosition.cs" @@ -35,16 +35,6 @@ public override void OnManagedリソースの作成() { if ( !base.b活性化してない ) { - string pathScrollBar = CSkin.Path( @"Graphics\5_scrollbar.png" ); - string pathScrollPosition = CSkin.Path( @"Graphics\5_scrollbar.png" ); - if ( File.Exists( pathScrollBar ) ) - { - this.txScrollBar = CDTXMania.tテクスチャの生成( pathScrollBar, false ); - } - if ( File.Exists( pathScrollPosition ) ) - { - this.txScrollPosition = CDTXMania.tテクスチャの生成( pathScrollPosition, false ); - } base.OnManagedリソースの作成(); } } @@ -52,28 +42,11 @@ public override void OnManagedリソースの解放() { if ( !base.b活性化してない ) { - CDTXMania.t安全にDisposeする( ref this.txScrollBar ); - CDTXMania.t安全にDisposeする( ref this.txScrollPosition ); - base.OnManagedリソースの解放(); } } public override int On進行描画() { - if ( this.txScrollBar != null ) - { - #region [ スクロールバーの描画 #27648 ] - //this.txScrollBar.t2D描画( CDTXMania.app.Device, (int)(1280 - ((429.0f / 100.0f ) * CDTXMania.stage選曲.ct登場時アニメ用共通.n現在の値)), 164, new Rectangle( 0, 0, 352, 26 ) ); //移動後のxは851 - #endregion - #region [ スクロール地点の描画 (計算はCActSelect曲リストで行う。スクロール位置と選曲項目の同期のため。)#27648 ] - int py = CDTXMania.stage選曲.nスクロールバー相対y座標; - if( py <= 336 && py >= 0 ) - { - //this.txScrollBar.t2D描画( CDTXMania.app.Device, (int)( 1280 - 4 - (( 424.0f / 100.0f ) * CDTXMania.stage選曲.ct登場時アニメ用共通.n現在の値 ) ) + py, 164, new Rectangle( 352, 0, 26, 26 ) );//856 - } - #endregion - } - return 0; } @@ -82,8 +55,6 @@ public override int On進行描画() #region [ private ] //----------------- - private CTexture txScrollPosition; - private CTexture txScrollBar; //----------------- #endregion } diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\233\262\343\203\252\343\202\271\343\203\210.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\233\262\343\203\252\343\202\271\343\203\210.cs" index 5e6a2df27..c62bc84b8 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\233\262\343\203\252\343\202\271\343\203\210.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\233\262\343\203\252\343\202\271\343\203\210.cs" @@ -583,15 +583,6 @@ public override void OnManagedリソースの作成() { if( this.b活性化してない ) return; - - this.tx曲名バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score.png" ), false ); - this.tx曲名バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box.png" ), false ); - this.tx曲名バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false ); - this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score selected.png" ), false ); - this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box selected.png" ), false ); - this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false ); - //this.txスキル数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_skill number on list.png" ), false ); - this.tx曲バー_JPOP = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_songboard_JPOP.png" ), false ); this.tx曲バー_アニメ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_songboard_anime.png" ), false ); this.tx曲バー_ゲーム = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_songboard_game.png" ), false ); @@ -698,12 +689,6 @@ public override void OnManagedリソースの解放() //CDTXMania.t安全にDisposeする( ref this.txスキル数字 ); CDTXMania.t安全にDisposeする( ref this.txEnumeratingSongs ); CDTXMania.t安全にDisposeする( ref this.txSongNotFound ); - CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Score ); - CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Box ); - CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Other ); - CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Score ); - CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Box ); - CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Other ); CDTXMania.t安全にDisposeする( ref this.tx曲バー_JPOP ); CDTXMania.t安全にDisposeする( ref this.tx曲バー_アニメ ); @@ -1601,8 +1586,6 @@ public CTexture this[ int index ] private CTexture txSongNotFound, txEnumeratingSongs; private CTexture txスキル数字; private CTexture txアイテム数数字; - private STバー tx曲名バー; - private ST選曲バー tx選曲バー; private CTexture txバー中央; private CTexture tx選択している曲の曲名; private CTexture tx選択している曲のサブタイトル; @@ -1780,48 +1763,6 @@ private void tバーの初期化() this.n現在の選択行 = 5; } - private void tバーの描画( int x, int y, Eバー種別 type, bool b選択曲 ) - { - if( x >= SampleFramework.GameWindowSize.Width || y >= SampleFramework.GameWindowSize.Height ) - return; - - if( b選択曲 ) - { - #region [ (A) 選択曲の場合 ] - //----------------- - if( this.tx選曲バー[ (int) type ] != null ) - this.tx選曲バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, 128, 96 ) ); // ヘサキ - x += 128; - - var rc = new Rectangle( 128, 0, 128, 96 ); - while( x < 1280 ) - { - if( this.tx選曲バー[ (int) type ] != null ) - this.tx選曲バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, rc ); // 胴体;64pxずつ横につなげていく。 - x += 128; - } - //----------------- - #endregion - } - else - { - #region [ (B) その他の場合 ] - //----------------- - if( this.tx曲名バー[ (int) type ] != null ) - this.tx曲名バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, 128, 48 ) ); // ヘサキ - x += 128; - - var rc = new Rectangle( 0, 48, 128, 48 ); - while( x < 1280 ) - { - if( this.tx曲名バー[ (int) type ] != null ) - this.tx曲名バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, rc ); // 胴体;64pxずつ横につなげていく。 - x += 128; - } - //----------------- - #endregion - } - } private void tジャンル別選択されていない曲バーの描画( int x, int y, string strジャンル ) { if( x >= SampleFramework.GameWindowSize.Width || y >= SampleFramework.GameWindowSize.Height ) diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\274\224\345\245\217\345\261\245\346\255\264\343\203\221\343\203\215\343\203\253.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\274\224\345\245\217\345\261\245\346\255\264\343\203\221\343\203\215\343\203\253.cs" index fe5a3e840..38d77f1b8 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\274\224\345\245\217\345\261\245\346\255\264\343\203\221\343\203\215\343\203\253.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CActSelect\346\274\224\345\245\217\345\261\245\346\255\264\343\203\221\343\203\215\343\203\253.cs" @@ -119,7 +119,6 @@ public override void OnManagedリソースの作成() { if( !base.b活性化してない ) { - this.txパネル本体 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_play history panel.png" ) ); this.txスコアボード[0] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_scoreboard_0.png" ) ); this.txスコアボード[1] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_scoreboard_1.png" ) ); this.txスコアボード[2] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_scoreboard_2.png" ) ); @@ -133,7 +132,6 @@ public override void OnManagedリソースの解放() { if( !base.b活性化してない ) { - CDTXMania.tテクスチャの解放( ref this.txパネル本体 ); CDTXMania.tテクスチャの解放( ref this.tx文字列パネル ); CDTXMania.tテクスチャの解放( ref this.txスコアボード[0] ); CDTXMania.tテクスチャの解放( ref this.txスコアボード[1] ); @@ -153,18 +151,7 @@ public override int On進行描画() base.b初めての進行描画 = false; } this.ct登場アニメ用.t進行(); - if( this.ct登場アニメ用.b終了値に達した || ( this.txパネル本体 == null ) ) - { - this.n本体X = 810; - this.n本体Y = 558; - } - else - { - double num = ( (double) this.ct登場アニメ用.n現在の値 ) / 100.0; - double num2 = Math.Cos( ( 1.5 + ( 0.5 * num ) ) * Math.PI ); - this.n本体X = 810; - this.n本体Y = 558 + ( (int) ( this.txパネル本体.sz画像サイズ.Height * ( 1.0 - ( num2 * num2 ) ) ) ); - } + //if( this.txパネル本体 != null ) //{ // this.txパネル本体.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y ); @@ -226,7 +213,6 @@ public override int On進行描画() private Font ft表示用フォント; private int n本体X; private int n本体Y; - private CTexture txパネル本体; private CTexture tx文字列パネル; private CTexture[] txスコアボード = new CTexture[4]; private CTexture tx文字; diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CStage\351\201\270\346\233\262.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CStage\351\201\270\346\233\262.cs" index a9eb06bb8..1e0978c68 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CStage\351\201\270\346\233\262.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/05.\351\201\270\346\233\262/CStage\351\201\270\346\233\262.cs" @@ -334,7 +334,40 @@ public override int On進行描画() this.actInformation.On進行描画(); if( this.tx下部パネル != null ) this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 720 - this.tx下部パネル.sz画像サイズ.Height ); + #region[ 上部テキスト ] + if( CDTXMania.ConfigIni.eGameMode == EGame.完走叩ききりまショー ) + CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "GAME: SURVIVAL" ); + if( CDTXMania.ConfigIni.eGameMode == EGame.完走叩ききりまショー激辛 ) + CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "GAME: SURVIVAL HARD" ); + if( CDTXMania.ConfigIni.bSuperHard ) + CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.赤, "SUPER HARD MODE : ON" ); + if( CDTXMania.ConfigIni.eScrollMode == EScrollMode.BMSCROLL ) + CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.赤, "BMSCROLL : ON" ); + else if( CDTXMania.ConfigIni.eScrollMode == EScrollMode.HSSCROLL ) + CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.赤, "HSSCROLL : ON" ); + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.IIDX ) + CDTXMania.act文字コンソール.tPrint( 240, 0, C文字コンソール.Eフォント種別.白, "GAUGE : IIDX" ); + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD ) + CDTXMania.act文字コンソール.tPrint( 240, 0, C文字コンソール.Eフォント種別.白, "GAUGE : HARD" ); + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.EXHARD ) + CDTXMania.act文字コンソール.tPrint( 240, 0, C文字コンソール.Eフォント種別.白, "GAUGE : EX-HARD" ); + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) + CDTXMania.act文字コンソール.tPrint( 240, 0, C文字コンソール.Eフォント種別.赤, "GAUGE : DEATH" ); + + if( CDTXMania.ConfigIni.nJustHIDDEN == 1 ) + CDTXMania.act文字コンソール.tPrint( 240, 16, C文字コンソール.Eフォント種別.赤, "JUSTHIDDEN : TYPE-A" ); + else if( CDTXMania.ConfigIni.nJustHIDDEN == 2 ) + CDTXMania.act文字コンソール.tPrint( 240, 16, C文字コンソール.Eフォント種別.赤, "JUSTHIDDEN : TYPE-B" ); + else if( CDTXMania.ConfigIni.nJustHIDDEN == 3 ) + CDTXMania.act文字コンソール.tPrint( 240, 16, C文字コンソール.Eフォント種別.赤, "JUSTHIDDEN : TYPE-C" ); + + if( CDTXMania.ConfigIni.bMonochlo ) + CDTXMania.act文字コンソール.tPrint( 240, 32, C文字コンソール.Eフォント種別.赤, "NOTE : MONOCHRO" ); + + if( CDTXMania.ConfigIni.bZeroSpeed ) + CDTXMania.act文字コンソール.tPrint( 640, 0, C文字コンソール.Eフォント種別.赤, "ZERO-SPEED : ON" ); + #endregion #region[ 下部テキスト ] if( this.tx下部テキスト != null ) { @@ -344,16 +377,6 @@ public override int On進行描画() if( CDTXMania.ConfigIni.b太鼓パートAutoPlay2P ) { this.tx下部テキスト.t2D描画( CDTXMania.app.Device, 1030 - ( 184 / 2 ), 660, new Rectangle( 0, 0, 184, 60 ) ); } - if( CDTXMania.ConfigIni.eGameMode == EGame.完走叩ききりまショー ) - CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "GAME: SURVIVAL" ); - if( CDTXMania.ConfigIni.eGameMode == EGame.完走叩ききりまショー激辛 ) - CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "GAME: SURVIVAL HARD" ); - if( CDTXMania.ConfigIni.bSuperHard ) - CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.赤, "SUPER HARD MODE : ON" ); - if( CDTXMania.ConfigIni.eScrollMode == EScrollMode.BMSCROLL ) - CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.赤, "BMSCROLL : ON" ); - else if( CDTXMania.ConfigIni.eScrollMode == EScrollMode.HSSCROLL ) - CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.赤, "HSSCROLL : ON" ); } #endregion @@ -436,6 +459,22 @@ public override int On進行描画() { // [ESC] CDTXMania.Skin.sound変更音.t再生する(); C共通.bToggleBoolian( ref CDTXMania.ConfigIni.b太鼓パートAutoPlay ); + } + #endregion + #region [ F4 ゲージ ] + if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F4 ) ) + { + CDTXMania.Skin.sound変更音.t再生する(); + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.Normal ) + CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.IIDX; + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.IIDX ) + CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.HARD; + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD ) + CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.EXHARD; + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.EXHARD ) + CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.DEATH; + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) + CDTXMania.ConfigIni.eGaugeMode = Eゲージモード.Normal; } #endregion #region [ F5 スーパーハード ] @@ -465,8 +504,33 @@ public override int On進行描画() } } #endregion - #region [ F7 ] - if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F7 ) ) + #region [ F7 JUST HIDDEN ] + if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F7 ) ) + { + CDTXMania.Skin.sound変更音.t再生する(); + if( CDTXMania.ConfigIni.nJustHIDDEN < 3 ) + CDTXMania.ConfigIni.nJustHIDDEN++; + else if( CDTXMania.ConfigIni.nJustHIDDEN == 3 ) + CDTXMania.ConfigIni.nJustHIDDEN = 0; + } + #endregion + #region [ F8 MONOCHRO ] + if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F8 ) ) + { + CDTXMania.Skin.sound変更音.t再生する(); + C共通.bToggleBoolian( ref CDTXMania.ConfigIni.bMonochlo ); + } + #endregion + #region [ F9 ZERO-SPEED ] + if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F9 ) ) + { + CDTXMania.Skin.sound変更音.t再生する(); + C共通.bToggleBoolian( ref CDTXMania.ConfigIni.bZeroSpeed ); + } + #endregion + #region [ not used ] + //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F9 ) ) + if( false ) { CDTXMania.Skin.sound変更音.t再生する(); CDTXMania.Skin.sound曲読込開始音.t再生する(); diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/06.\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277/CStage\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/06.\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277/CStage\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277.cs" index b44bbfd29..02c12cc6a 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/06.\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277/CStage\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/06.\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277/CStage\346\233\262\350\252\255\343\201\277\350\276\274\343\201\277.cs" @@ -84,9 +84,6 @@ public override void On非活性化() this.ftタイトル表示用フォント = null; } - CDTXMania.t安全にDisposeする( ref this.pfTITLE ); - CDTXMania.t安全にDisposeする( ref this.pfSUBTITLE ); - base.On非活性化(); } finally @@ -132,6 +129,8 @@ public override void OnManagedリソースの作成() CDTXMania.t安全にDisposeする( ref bmpSongTitle ); CDTXMania.t安全にDisposeする( ref bmpSongSubTitle ); + CDTXMania.t安全にDisposeする( ref this.pfTITLE ); + CDTXMania.t安全にDisposeする( ref this.pfSUBTITLE ); } else { diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\202\262\343\203\274\343\202\270\345\205\261\351\200\232.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\202\262\343\203\274\343\202\270\345\205\261\351\200\232.cs" index 672cd7d93..37abef8d8 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\202\262\343\203\274\343\202\270\345\205\261\351\200\232.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\202\262\343\203\274\343\202\270\345\205\261\351\200\232.cs" @@ -64,12 +64,16 @@ public int nRiskyTimes // 残Miss回数 get; private set; } - public bool IsFailed( E楽器パート part ) // 閉店状態になったかどうか + public bool IsFailed( int player ) // 閉店状態になったかどうか { if ( bRisky ) { return ( nRiskyTimes <= 0 ); } - return this.db現在のゲージ値[ (int) part ] <= GAUGE_MIN; + + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.Normal || CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) + return this.db現在のゲージ値[ player ] <= GAUGE_MIN; + else + return this.db現在のゲージ値[ player ] <= 0; } public bool IsDanger( E楽器パート part ) // DANGERかどうか { @@ -126,150 +130,222 @@ public double dbゲージ値2P // Drums専用 /// Riskyの初期値(0でRisky未使用) public void Init(int nRiskyTimes_InitialVal ) // ゲージ初期化 { - //ダメージ値の計算は太鼓の達人譜面Wikiのものを参考にしました。 - - for ( int i = 0; i < 4; i++ ) - { - this.db現在のゲージ値[ i ] = 0; - } - - this.dbゲージ値 = 0; - - //ゲージのMAXまでの最低コンボ数を計算 - float dbGaugeMaxComboValue = 0; - float[] dbGaugeMaxComboValue_branch = new float[3]; - float dbDamageRate = 2.0f; - - if( nRiskyTimes_InitialVal > 0 ) + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.Normal || CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) { - this.bRisky = true; - this.nRiskyTimes = CDTXMania.ConfigIni.nRisky; - this.nRiskyTimes_Initial = CDTXMania.ConfigIni.nRisky; + this.dbゲージ値 = 0; + for ( int i = 0; i < 4; i++ ) + { + this.db現在のゲージ値[ i ] = 0; + } + } + else + { + //IIDX系の場合は20%スタート + this.dbゲージ値 = 20.0; + for ( int i = 0; i < 4; i++ ) + { + this.db現在のゲージ値[ i ] = 20.0; + } } - switch( CDTXMania.DTX.LEVEL.Taiko ) + //白黒鍵盤とお皿のゲーム風ゲージ。今の所テクスチャの実装は間に合ってない + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.IIDX ) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - { - if (CDTXMania.DTX.bチップがある.Branch) + float ret = 0; //係数 + int note = CDTXMania.DTX.nノーツ数[ 0 ]; + ret = ( 7.605f * note / ( 0.01f * note + 6.5f ) ) / CDTXMania.DTX.nノーツ数[ 0 ]; + this.dbゲージ増加量[ 0 ] = ret; + this.dbゲージ増加量[ 1 ] = ret / 2.0f; + this.dbゲージ増加量[ 2 ] = 2.0f; + + //譜面分岐 + for( int i = 0; i < 3; i++ ) + { + note = CDTXMania.DTX.nノーツ数[ i ]; + ret = ( 7.605f * note / ( 0.01f * note + 6.5f ) ) / CDTXMania.DTX.nノーツ数[ i ]; + this.dbゲージ増加量_Branch[ i, 0 ] = ret; + this.dbゲージ増加量_Branch[ i, 1 ] = ret / 2.0f; + this.dbゲージ増加量_Branch[ i, 2 ] = 2.0f; + } + } + else + { + //ダメージ値の計算は太鼓の達人譜面Wikiのものを参考にしました。 + //ゲージのMAXまでの最低コンボ数を計算 + float dbGaugeMaxComboValue = 0; + float[] dbGaugeMaxComboValue_branch = new float[3]; + float dbDamageRate = 2.0f; + + if( nRiskyTimes_InitialVal > 0 ) + { + this.bRisky = true; + this.nRiskyTimes = CDTXMania.ConfigIni.nRisky; + this.nRiskyTimes_Initial = CDTXMania.ConfigIni.nRisky; + } + + switch( CDTXMania.DTX.LEVEL.Taiko ) + { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); - for( int i = 0; i < 3; i++ ) + if (CDTXMania.DTX.bチップがある.Branch) { - dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); + for( int i = 0; i < 3; i++ ) + { + dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); + } + dbDamageRate = 0.625f; } - dbDamageRate = 0.625f; - } - else - { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); - dbDamageRate = 0.625f; + else + { + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 0 ] / 100.0f ); + dbDamageRate = 0.625f; + } + break; } - break; - } - case 8: - { - if (CDTXMania.DTX.bチップがある.Branch) + case 8: { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); - for( int i = 0; i < 3; i++ ) + if (CDTXMania.DTX.bチップがある.Branch) { - dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); + for( int i = 0; i < 3; i++ ) + { + dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); + } + dbDamageRate = 0.625f; } - dbDamageRate = 0.625f; - } - else - { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); - dbDamageRate = 0.625f; + else + { + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 1 ] / 100.0f ); + dbDamageRate = 0.625f; + } + break; } - break; - } - case 9: - case 10: - { - if (CDTXMania.DTX.bチップがある.Branch) + case 9: + case 10: { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); - for( int i = 0; i < 3; i++ ) + if (CDTXMania.DTX.bチップがある.Branch) { - dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + for( int i = 0; i < 3; i++ ) + { + dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + } } + else + { + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + } + break; } - else - { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); - } - break; - } - default: - { - if (CDTXMania.DTX.bチップがある.Branch) + default: { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); - for( int i = 0; i < 3; i++ ) + if (CDTXMania.DTX.bチップがある.Branch) { - dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + for( int i = 0; i < 3; i++ ) + { + dbGaugeMaxComboValue_branch[i] = CDTXMania.DTX.nノーツ数[i] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + } } + else + { + dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); + } + break; } - else - { - dbGaugeMaxComboValue = CDTXMania.DTX.nノーツ数[ 3 ] * ( this.fGaugeMaxRate[ 2 ] / 100.0f ); - } - break; + } + + int nGaugeRankValue = (int)( Math.Floor( 10000.0f / dbGaugeMaxComboValue ) ); + int[] nGaugeRankValue_branch = new int[3]; + + for (int i = 0; i < 3; i++ ) + { + nGaugeRankValue_branch[i] = (int)( Math.Floor( 10000.0f / dbGaugeMaxComboValue_branch[i] ) ); + } + + //ゲージ値計算 + //実機に近い計算 + + this.dbゲージ増加量[ 0 ] = nGaugeRankValue / 100.0f; + this.dbゲージ増加量[ 1 ] = ( nGaugeRankValue / 100.0f ) * 0.5f; + this.dbゲージ増加量[ 2 ] = ( nGaugeRankValue / 100.0f ) * dbDamageRate; + + for (int i = 0; i < 3; i++ ) + { + this.dbゲージ増加量_Branch[ i, 0 ] = nGaugeRankValue_branch[i] / 100.0f; + this.dbゲージ増加量_Branch[ i, 1 ] = ( nGaugeRankValue_branch[i] / 100.0f ) * 0.5f; + this.dbゲージ増加量_Branch[ i, 2 ] = ( nGaugeRankValue_branch[i] / 100.0f ) * dbDamageRate; + } + + //this.dbゲージ増加量[ 0 ] = CDTXMania.DTX.bチップがある.Branch ? ( 130.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : ( 130.0 / CDTXMania.DTX.nノーツ数[ 3 ] ); + //this.dbゲージ増加量[ 1 ] = CDTXMania.DTX.bチップがある.Branch ? ( 65.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : 65.0 / CDTXMania.DTX.nノーツ数[ 3 ]; + //this.dbゲージ増加量[ 2 ] = CDTXMania.DTX.bチップがある.Branch ? ( -260.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : -260.0 / CDTXMania.DTX.nノーツ数[ 3 ]; + + //2015.03.26 kairera0467 計算を初期化時にするよう修正。 + this.dbゲージ増加量[ 0 ] = (float)Math.Truncate( this.dbゲージ増加量[ 0 ] * 10000.0f ) / 10000.0f; + this.dbゲージ増加量[ 1 ] = (float)Math.Truncate( this.dbゲージ増加量[ 1 ] * 10000.0f ) / 10000.0f; + this.dbゲージ増加量[ 2 ] = (float)Math.Truncate( this.dbゲージ増加量[ 2 ] * 10000.0f ) / 10000.0f; + + for (int i = 0; i < 3; i++ ) + { + this.dbゲージ増加量_Branch[ i, 0 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 0 ] * 10000.0f ) / 10000.0f; + this.dbゲージ増加量_Branch[ i, 1 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 1 ] * 10000.0f ) / 10000.0f; + this.dbゲージ増加量_Branch[ i, 2 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 2 ] * 10000.0f ) / 10000.0f; + } + + #region[ あれ ] + // HARDゲージみたいなアレ。BEMANIに比べてノーツ数が多くならないものが多いことを考えて、良判定時の増加量は通常の太鼓ゲージと同じです。 + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD ) + { + //this.dbゲージ増加量[ 0 ] = 0.16f; + this.dbゲージ増加量[ 1 ] = 0.0f; + this.dbゲージ増加量[ 2 ] = 9.0f; + + //譜面分岐 + for( int i = 0; i < 3; i++ ) + { + //this.dbゲージ増加量_Branch[ i, 0 ] = 0.16f; + this.dbゲージ増加量_Branch[ i, 1 ] = 0.0f; + this.dbゲージ増加量_Branch[ i, 2 ] = 9.0f; } - - } - - int nGaugeRankValue = (int)( Math.Floor( 10000.0f / dbGaugeMaxComboValue ) ); - int[] nGaugeRankValue_branch = new int[3]; - - for (int i = 0; i < 3; i++ ) - { - nGaugeRankValue_branch[i] = (int)( Math.Floor( 10000.0f / dbGaugeMaxComboValue_branch[i] ) ); - } - - //ゲージ値計算 - //実機に近い計算 - - this.dbゲージ増加量[ 0 ] = nGaugeRankValue / 100.0f; - this.dbゲージ増加量[ 1 ] = ( nGaugeRankValue / 100.0f ) * 0.5f; - this.dbゲージ増加量[ 2 ] = ( nGaugeRankValue / 100.0f ) * dbDamageRate; - - for (int i = 0; i < 3; i++ ) - { - this.dbゲージ増加量_Branch[ i, 0 ] = nGaugeRankValue_branch[i] / 100.0f; - this.dbゲージ増加量_Branch[ i, 1 ] = ( nGaugeRankValue_branch[i] / 100.0f ) * 0.5f; - this.dbゲージ増加量_Branch[ i, 2 ] = ( nGaugeRankValue_branch[i] / 100.0f ) * dbDamageRate; - } - - //this.dbゲージ増加量[ 0 ] = CDTXMania.DTX.bチップがある.Branch ? ( 130.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : ( 130.0 / CDTXMania.DTX.nノーツ数[ 3 ] ); - //this.dbゲージ増加量[ 1 ] = CDTXMania.DTX.bチップがある.Branch ? ( 65.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : 65.0 / CDTXMania.DTX.nノーツ数[ 3 ]; - //this.dbゲージ増加量[ 2 ] = CDTXMania.DTX.bチップがある.Branch ? ( -260.0 / CDTXMania.DTX.nノーツ数[ 0 ] ) : -260.0 / CDTXMania.DTX.nノーツ数[ 3 ]; - - //2015.03.26 kairera0467 計算を初期化時にするよう修正。 - this.dbゲージ増加量[ 0 ] = (float)Math.Truncate( this.dbゲージ増加量[ 0 ] * 10000.0f ) / 10000.0f; - this.dbゲージ増加量[ 1 ] = (float)Math.Truncate( this.dbゲージ増加量[ 1 ] * 10000.0f ) / 10000.0f; - this.dbゲージ増加量[ 2 ] = (float)Math.Truncate( this.dbゲージ増加量[ 2 ] * 10000.0f ) / 10000.0f; - - for (int i = 0; i < 3; i++ ) - { - this.dbゲージ増加量_Branch[ i, 0 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 0 ] * 10000.0f ) / 10000.0f; - this.dbゲージ増加量_Branch[ i, 1 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 1 ] * 10000.0f ) / 10000.0f; - this.dbゲージ増加量_Branch[ i, 2 ] = (float)Math.Truncate( this.dbゲージ増加量_Branch[ i, 2 ] * 10000.0f ) / 10000.0f; + } + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.EXHARD ) + { + this.dbゲージ増加量[ 0 ] = 0.16f; + this.dbゲージ増加量[ 1 ] = 0.0f; + this.dbゲージ増加量[ 2 ] = 18.0f; + + //譜面分岐 + for( int i = 0; i < 3; i++ ) + { + //this.dbゲージ増加量_Branch[ i, 0 ] = 0.16f; + this.dbゲージ増加量_Branch[ i, 1 ] = 0.0f; + this.dbゲージ増加量_Branch[ i, 2 ] = 18.0f; + } + } + else if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) + { + // ミスしたらその時点でゲージが空になる。 + // ゲージが満タンでも消せるようにするため100にしている。(もしダメージ演算結果が0以下になっても後から補正してくれます) + this.dbゲージ増加量[ 2 ] = 100; + this.dbゲージ増加量_Branch[ 0, 2 ] = 100; + this.dbゲージ増加量_Branch[ 1, 2 ] = 100; + this.dbゲージ増加量_Branch[ 2, 2 ] = 100; + } + #endregion } - - } + } #region [ DAMAGE ] #if true // DAMAGELEVELTUNING @@ -309,9 +385,7 @@ public void Damage( E楽器パート screenmode, E楽器パート part, E判定 float fDamage; int nコース = CDTXMania.stage演奏ドラム画面.n現在のコース[ player ]; - -#if true // DAMAGELEVELTUNING - switch ( e今回の判定 ) + switch ( e今回の判定 ) { case E判定.Perfect: case E判定.Great: @@ -343,23 +417,20 @@ public void Damage( E楽器パート screenmode, E楽器パート part, E判定 } else fDamage = this.dbゲージ増加量[ 2 ]; - - if( fDamage >= 0 ) + if( this.db現在のゲージ値[ player ] < 30.0f && CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD ) { - fDamage = -fDamage; + //HARDの場合30%補正 + fDamage = 4.5f; } - - if( this.bRisky ) + + if( fDamage >= 0 ) { - this.nRiskyTimes--; + fDamage = -fDamage; } } - break; - - default: { if( player == 0 ? CDTXMania.ConfigIni.b太鼓パートAutoPlay : CDTXMania.ConfigIni.b太鼓パートAutoPlay2P ) @@ -375,53 +446,7 @@ public void Damage( E楽器パート screenmode, E楽器パート part, E判定 fDamage = 0; break; } - - - } -#else // before applying #23625 modifications - switch (e今回の判定) - { - case E判定.Perfect: - fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015; - break; - - case E判定.Great: - fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009; - break; - - case E判定.Good: - fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003; - break; - - case E判定.Poor: - fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0; - break; - - case E判定.Miss: - fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035; - switch( CDTXMania.ConfigIni.eダメージレベル ) - { - case Eダメージレベル.少ない: - fDamage *= 0.6; - break; - - case Eダメージレベル.普通: - fDamage *= 1.0; - break; - - case Eダメージレベル.大きい: - fDamage *= 1.6; - break; - } - break; - - default: - fDamage = 0.0; - break; - } -#endif - - + } if( this.db現在のゲージ値[ player ] > 100.0 ) this.db現在のゲージ値[ player ] = 100.0; else if( this.db現在のゲージ値[ player ] < 0.0 ) @@ -430,7 +455,17 @@ public void Damage( E楽器パート screenmode, E楽器パート part, E判定 this.db現在のゲージ値[ player ] = Math.Round(this.db現在のゲージ値[ player ] + fDamage, 5, MidpointRounding.ToEven); CDTXMania.stage演奏ドラム画面.nGauge = fDamage; - } + switch( e今回の判定 ) + { + case E判定.Poor: + case E判定.Miss: + if( this.bRisky ) + { + this.nRiskyTimes--; + } + break; + } + } public virtual void Start(int nLane, E判定 judge, int player) { diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\203\221\343\203\215\343\203\253\346\226\207\345\255\227\345\210\227.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\203\221\343\203\215\343\203\253\346\226\207\345\255\227\345\210\227.cs" index 93daa0fbe..149636524 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\203\221\343\203\215\343\203\253\346\226\207\345\255\227\345\210\227.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CAct\346\274\224\345\245\217\343\203\221\343\203\215\343\203\253\346\226\207\345\255\227\345\210\227.cs" @@ -73,6 +73,7 @@ public void SetPanelString( string str ) CDTXMania.t安全にDisposeする( ref bmpDiff ); CDTXMania.t安全にDisposeする( ref bmpSongTitle ); + //CDTXMania.t安全にDisposeする( ref this.pfMusicName ); //たまにNullReferenceが出るのでダメ } catch( CTextureCreateFailedException ) { @@ -119,14 +120,12 @@ public void SetPanelString( string str ) { Bitmap bmpDummy = new Bitmap( 1, 1 ); this.txGENRE = CDTXMania.tテクスチャの生成( bmpDummy, true ); + CDTXMania.t安全にDisposeする( ref bmpDummy ); } } this.ct進行用 = new CCounter( 0, 2000, 2, CDTXMania.Timer ); this.Start(); - - - } } diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CStage\346\274\224\345\245\217\347\224\273\351\235\242\345\205\261\351\200\232.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CStage\346\274\224\345\245\217\347\224\273\351\235\242\345\205\261\351\200\232.cs" index 6ec79f0f2..97a052591 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CStage\346\274\224\345\245\217\347\224\273\351\235\242\345\205\261\351\200\232.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/CStage\346\274\224\345\245\217\347\224\273\351\235\242\345\205\261\351\200\232.cs" @@ -170,8 +170,16 @@ public override void On活性化() listChip[i] = CDTXMania.DTX_2P.listChip; break; } + int n整数値管理 = 0; + foreach( CDTX.CChip chip in listChip[ i ] ) + { + chip.nList上の位置 = n整数値管理; + n整数値管理++; + } } + + listWAV = CDTXMania.DTX.listWAV; this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続; @@ -231,6 +239,8 @@ public override void On活性化() this.b連打中 = new bool[]{ false, false, false, false }; this.n現在の連打数 = new int[]{ 0, 0, 0, 0 }; this.n合計連打数 = new int[]{ 0, 0, 0, 0 }; + this.n風船打数合計 = new int[]{ 0, 0, 0, 0 }; + this.n風船結果合計 = new int[]{ 0, 0, 0, 0 }; this.n分岐した回数 = new int[ 4 ]; this.n表示した歌詞 = 0; this.nJPOSSCROLL = new int[ 4 ]; @@ -633,6 +643,8 @@ protected struct stmixer public bool[] b連打中 = new bool[]{ false, false, false, false }; //奥の手 private int[] n合計連打数 = new int[ 4 ]; protected int[] n風船残り = new int[ 4 ]; + public int[] n風船打数合計 = new int[ 4 ]; + public int[] n風船結果合計 = new int[ 4 ]; protected int[] n現在の連打数 = new int[ 4 ]; protected E連打State eRollState; @@ -1176,12 +1188,14 @@ protected bool tBalloonProcess( CDTX.CChip pChip, double dbProcess_time, int pla if( pChip.nRollCount == 0 ) { this.n風船残り[ player ] = pChip.nBalloon; + this.n風船打数合計[ player ] += pChip.nBalloon; } this.b連打中[ player ] = true; this.eRollState = E連打State.balloon; pChip.nRollCount++; this.n風船残り[ player ]--; + this.n風船結果合計[ player ]++; //分岐のための処理。実装してない。 @@ -1904,6 +1918,101 @@ protected CDTX.CChip r指定時刻に一番近い未ヒットChipを過去方向 return nearestChip; } + protected CDTX.CChip r指定時刻に一番近いChipを過去方向優先で検索する( long nTime, int nChannel, int nInputAdjustTime, int nPlayer ) + { + sw2.Start(); + nTime += nInputAdjustTime; + + int nIndex_InitialPositionSearchingToPast; + int nTimeDiff; + int count = listChip[ nPlayer ].Count; + if ( count <= 0 ) // 演奏データとして1個もチップがない場合は + { + sw2.Stop(); + return null; + } + + int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = this.n現在のトップChip; + if ( this.n現在のトップChip >= count ) // その時点で演奏すべきチップが既に全部無くなっていたら + { + nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToPast = count - 1; + } + // int nIndex_NearestChip_Future = nIndex_InitialPositionSearchingToFuture; +// while ( nIndex_NearestChip_Future < count ) // 未来方向への検索 + for ( ; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++ ) + { + CDTX.CChip chip = listChip[ nPlayer ][ nIndex_NearestChip_Future ]; + if ( chip.b可視 ) + { + if( chip.nチャンネル番号 == nChannel ) + { + if ( chip.n発声時刻ms > nTime ) + { + break; + } + nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future; + } + } +// nIndex_NearestChip_Future++; + } + int nIndex_NearestChip_Past = nIndex_InitialPositionSearchingToPast; +// while ( nIndex_NearestChip_Past >= 0 ) // 過去方向への検索 + for ( ; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past-- ) + { + CDTX.CChip chip = listChip[ nPlayer ][ nIndex_NearestChip_Past ]; + //if ( (!chip.bHit && chip.b可視 ) && ( ( 0x93 <= chip.nチャンネル番号 ) && ( chip.nチャンネル番号 <= 0x99 ) ) ) + if( chip.b可視 && chip.nチャンネル番号 == nChannel ) + { + break; + } + } + if ( ( nIndex_NearestChip_Future >= count ) && ( nIndex_NearestChip_Past < 0 ) ) // 検索対象が過去未来どちらにも見つからなかった場合 + { + sw2.Stop(); + return null; + } + CDTX.CChip nearestChip; // = null; // 以下のifブロックのいずれかで必ずnearestChipには非nullが代入されるので、null初期化を削除 + if ( nIndex_NearestChip_Future >= count ) // 検索対象が未来方向には見つからなかった(しかし過去方向には見つかった)場合 + { + nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Past ]; +// nTimeDiff = Math.Abs( (int) ( nTime - nearestChip.n発声時刻ms ) ); + } + else if ( nIndex_NearestChip_Past < 0 ) // 検索対象が過去方向には見つからなかった(しかし未来方向には見つかった)場合 + { + nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Future ]; +// nTimeDiff = Math.Abs( (int) ( nTime - nearestChip.n発声時刻ms ) ); + } + else + { + int nTimeDiff_Future = Math.Abs( (int) ( nTime - listChip[ nPlayer ][ nIndex_NearestChip_Future ].n発声時刻ms ) ); + int nTimeDiff_Past = Math.Abs( (int) ( nTime - listChip[ nPlayer ][ nIndex_NearestChip_Past ].n発声時刻ms ) ); + if ( nTimeDiff_Future < nTimeDiff_Past ) + { + if( !listChip[ nPlayer ][ nIndex_NearestChip_Past ].bHit && ( listChip[ nPlayer ][ nIndex_NearestChip_Past ].n発声時刻ms + ( 108 ) >= nTime ) ) + { + nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Past ]; + } + else + nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Future ]; +// nTimeDiff = Math.Abs( (int) ( nTime - nearestChip.n発声時刻ms ) ); + } + else + { + nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Past ]; +// nTimeDiff = Math.Abs( (int) ( nTime - nearestChip.n発声時刻ms ) ); + } + } + nTimeDiff = Math.Abs( (int) ( nTime - nearestChip.n発声時刻ms ) ); + int n検索範囲時間ms = 0; + if ( ( n検索範囲時間ms > 0 ) && ( nTimeDiff > n検索範囲時間ms ) ) // チップは見つかったが、検索範囲時間外だった場合 + { + sw2.Stop(); + return null; + } + sw2.Stop(); + return nearestChip; + } + protected CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nInputAdjustTime, int nPlayer ) { sw2.Start(); @@ -2512,6 +2621,7 @@ protected bool t進行描画_チップ( E楽器パート ePlayMode, int nPlayer //CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.灰, this.nLoopCount_Clear.ToString() ); + //音符が重なる順番を再現するため、同じ発声位置の音符の優先度は逆順になる。 //for ( int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++ ) for ( int nCurrentTopChip = dTX.listChip.Count - 1; nCurrentTopChip > 0; nCurrentTopChip-- ) { @@ -3056,7 +3166,7 @@ protected bool t進行描画_チップ( E楽器パート ePlayMode, int nPlayer case 0xDD: //譜面分岐条件リセット if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) ) { - this.tBranchReset( nPlayer ); + //this.tBranchReset( nPlayer ); // 2018.03.31 kairera0467 listChipソート時の問題が解決できないため、SECTION命令での分岐条件リセットを一時廃止します。 pChip.bHit = true; } break; @@ -3080,7 +3190,7 @@ protected bool t進行描画_チップ( E楽器パート ePlayMode, int nPlayer //if( n現在のコース == pChip.nコース ) this.n分岐した回数[ nPlayer ]++; - if( CDTXMania.ConfigIni.bAutoSection ) + //if( CDTXMania.ConfigIni.bAutoSection ) //2018.03.31 kairera0467 listChipソート時の問題が解決するまで強制的にSECTIONを行う。 { this.tBranchReset( nPlayer ); } @@ -3435,7 +3545,7 @@ public void t分岐処理( int n分岐先, int n分岐開始位置のChip番号, for( int A = n分岐開始位置のChip番号; A < dTX.listChip.Count; A++ ) { //if( dTX.listChip[ A ].n発声時刻ms < dTX.listBRANCH[ this.n分岐した回数 ].db分岐時間ms ) - if( dTX.listChip[ A ].n整数値 < n分岐開始位置のChip番号 ) + if( dTX.listChip[ A ].n整数値 <= n分岐開始位置のChip番号 ) { dTX.listChip[ A ].b可視 = true; continue; @@ -3458,6 +3568,38 @@ public void t分岐処理( int n分岐先, int n分岐開始位置のChip番号, dTX.listChip[ A ].eNoteState = ENoteState.none; } } + + // 2018.03.31 過去方向にも調べる。本来はあまりよくないと思うのでこの実装はそのうち消す。 + chipNoHit = this.r指定時刻に一番近いChipを過去方向優先で検索する( CSound管理.rc演奏用タイマ.n現在時刻ms, 0xDF, 0, nPlayer ); //とりあえず検索開始を1ms後にして対応。 + + if( chipNoHit == null ) + return; + //for( int A = n分岐開始位置のChip番号; A < chipNoHit.n整数値; A-- ) + //{ + // //if( dTX.listChip[ A ].n発声時刻ms < dTX.listBRANCH[ this.n分岐した回数 ].db分岐時間ms ) + // if( dTX.listChip[ A ].n整数値 < n分岐開始位置のChip番号 ) + // { + // dTX.listChip[ A ].b可視 = true; + // continue; + // } + + // if( dTX.listChip[ A ].nチャンネル番号 == 0x01 ) continue; + // //if( CDTXMania.DTX.listChip[ A ].nチャンネル番号 == 0x50 ) continue; + // if( dTX.listChip[ A ].nチャンネル番号 == 0x9C ) continue; + // if( dTX.listChip[ A ].nチャンネル番号 == 0xDD ) continue; + // if( dTX.listChip[ A ].nチャンネル番号 == 0xDE ) continue; + // if( dTX.listChip[ A ].nチャンネル番号 == 0xDF ) continue; + + // if( dTX.listChip[ A ].nコース == n消すコース1 || dTX.listChip[ A ].nコース == n消すコース2 ) + // { + // dTX.listChip[ A ].b可視 = false; + // } + // else + // { + // dTX.listChip[ A ].b可視 = true; + // dTX.listChip[ A ].eNoteState = ENoteState.none; + // } + //} } protected float GetNowPBMTime( CDTX tja, float play_time ) @@ -3609,6 +3751,8 @@ public void t数値の初期化( bool b演奏記録, bool b演奏状態 ) this.n現在の連打数[ i ] = 0; this.n合計連打数[ i ] = 0; this.n分岐した回数[ i ] = 0; + this.n風船結果合計[ i ] = 0; + this.n風船打数合計[ i ] = 0; } this.actComboVoice.tリセット(); diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\255\343\203\243\343\203\251\343\202\257\343\202\277\343\203\274.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\255\343\203\243\343\203\251\343\202\257\343\202\277\343\203\274.cs" index 52f18014e..14e1a2070 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\255\343\203\243\343\203\251\343\202\257\343\202\277\343\203\274.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\255\343\203\243\343\203\251\343\202\257\343\202\277\343\203\274.cs" @@ -212,6 +212,7 @@ public override int On進行描画() private CTexture[] txキャラクターMax_Gogo; private CTexture[] txキャラクターJump; //まだ実装できてない private CTexture[] txキャラクターMax_Jump; //まだ実装できてない + private CTexture[] txキャラクターMiss; //まだ実装できてない public int nキャラクター通常モーション枚数; public int nキャラクターコンボモーション枚数; @@ -219,24 +220,28 @@ public override int On進行描画() public int nキャラクタークリアモーション枚数; public int nキャラクターMAX通常モーション枚数; public int nキャラクターMAXゴーゴーモーション枚数; + public int nキャラクターMISSモーション枚数; public int[] arモーション番号; public int[] arゴーゴーモーション番号; public int[] arクリアモーション番号; public int[] ar黄色モーション番号; public int[] ar黄色ゴーゴーモーション番号; + public int[] arMISSゴーゴーモーション番号; public CCounter ct通常モーション; public CCounter ctクリア通常モーション; public CCounter ctゴーゴーモーション; public CCounter ctMAX通常モーション; public CCounter ctMAXゴーゴーモーション; + public CCounter ctMISSモーション; public string strList; public string strListGogo; public string strListClear; public string strListMAX; public string strListMAXGogo; + public string strListMISS; public bool b風船連打中; public bool b演奏中; diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\262\343\203\274\343\203\240\343\203\242\343\203\274\343\203\211.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\262\343\203\274\343\203\240\343\203\242\343\203\274\343\203\211.cs" index aa673df41..992dfdad9 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\262\343\203\274\343\203\240\343\203\242\343\203\274\343\203\211.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\343\202\262\343\203\274\343\203\240\343\203\242\343\203\274\343\203\211.cs" @@ -127,6 +127,18 @@ public void t叩ききりまショー_初期化() this.t叩ききりまショー_判定項目と難易度を決める(); } + // ノルマチャレンジ(作成中) + // -PS2七代目っぽいアレ + // -演奏開始時にランダムでお題を出題 + // -お題をクリアできた場合は完走、クリアできなかった場合はその場でSTAGE FAILED + + // 出題予定科目 + // -魂ゲージ + // -精密度(分布取ってどうたらこうたらする) + // -良、可、不可の数 + // -たたけた数 + // -強制オプション(あべこべ、ドロン、ランダム、) + public void t叩ききりまショー_判定項目と難易度を決める() { //まず通常、激辛時でわける。 diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\346\274\224\345\245\217\347\265\202\344\272\206\346\274\224\345\207\272.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\346\274\224\345\245\217\347\265\202\344\272\206\346\274\224\345\207\272.cs" index 49b069065..aab856098 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\346\274\224\345\245\217\347\265\202\344\272\206\346\274\224\345\207\272.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CAct\346\274\224\345\245\217Drums\346\274\224\345\245\217\347\265\202\344\272\206\346\274\224\345\207\272.cs" @@ -91,7 +91,9 @@ public override int On進行描画() int[] y = new int[] { 210, 386 }; for( int i = 0; i < CDTXMania.ConfigIni.nPlayerCount; i++ ) { - if( CDTXMania.stage演奏ドラム画面.actGauge.db現在のゲージ値[ i ] >= 80 ) + bool bClear = CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD || CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.EXHARD ? true : CDTXMania.stage演奏ドラム画面.actGauge.db現在のゲージ値[ i ] >= 80; + + if( bClear ) { //this.ct進行メイン.n現在の値 = 18; if( this.soundClear != null && !this.b再生済み ) diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CStage\346\274\224\345\245\217\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CStage\346\274\224\345\245\217\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242.cs" index 9ed78c60a..206e8ceca 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CStage\346\274\224\345\245\217\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\343\202\271\343\203\206\343\203\274\343\202\270/07.\346\274\224\345\245\217/\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242/CStage\346\274\224\345\245\217\343\203\211\343\203\251\343\203\240\347\224\273\351\235\242.cs" @@ -176,7 +176,6 @@ public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums ) public override void On活性化() { - this.bフィルイン中 = false; this.n待機中の大音符の座標 = 0; this.actGame.t叩ききりまショー_初期化(); base.tスコアの初期化(); @@ -249,7 +248,9 @@ public override void OnManagedリソースの作成() { //this.t背景テクスチャの生成(); this.tx太鼓ノーツ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_taiko_notes.png" ) ); - this.txHand = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_taiko_notes_arm.png" ) ); + this.txモノクロノーツ = this.CreateMonochromeImage( (Image)new Bitmap( (CSkin.Path( @"Graphics\7_taiko_notes.png" ) ) ) ); + + this.txHand = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_taiko_notes_arm.png" ) ); this.txSenotes = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_senotes.png" ) ); this.tx小節線 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_bar_line.png" ) ); this.tx小節線_branch = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_bar_line_branch.png" ) ); @@ -275,6 +276,7 @@ public override void OnManagedリソースの解放() CDTXMania.tテクスチャの解放( ref this.txヒットバーGB ); CDTXMania.tテクスチャの解放( ref this.txチップ ); CDTXMania.tテクスチャの解放( ref this.tx太鼓ノーツ ); + CDTXMania.tテクスチャの解放( ref this.txモノクロノーツ ); CDTXMania.tテクスチャの解放( ref this.txHand ); CDTXMania.tテクスチャの解放( ref this.txSenotes ); CDTXMania.tテクスチャの解放( ref this.tx小節線 ); @@ -333,13 +335,36 @@ public override int On進行描画() CDTXMania.Sound管理.tDisableUpdateBufferAutomatically(); base.b初めての進行描画 = false; } - #endregion - if ( ( ( CDTXMania.ConfigIni.nRisky != 0 && this.actGauge.IsFailed( E楽器パート.TAIKO ) ) || this.actGame.st叩ききりまショー.ct残り時間.b終了値に達した ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) ) - { - this.actStageFailed.Start(); - CDTXMania.DTX.t全チップの再生停止(); - base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED; - } + #endregion + + // StageFailed判定部分 + #region[ StageFailed ] + // 仕様と異なる部分があるので後日修正入れます。 + if( CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.Normal || CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.DEATH ) + { + if ( ( ( CDTXMania.ConfigIni.nRisky != 0 ) || this.actGame.st叩ききりまショー.ct残り時間.b終了値に達した ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) ) + { + this.actStageFailed.Start(); + CDTXMania.DTX.t全チップの再生停止(); + base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED; + } + } + else + { + if ( ( this.actGauge.IsFailed( 0 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) ) + { + this.actStageFailed.Start(); + CDTXMania.DTX.t全チップの再生停止(); + base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED; + } + if( ( ( CDTXMania.ConfigIni.nRisky != 0 && this.actGauge.IsFailed( 1 ) ) || this.actGame.st叩ききりまショー.ct残り時間.b終了値に達した ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) ) + { + this.actStageFailed.Start(); + CDTXMania.DTX.t全チップの再生停止(); + base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED; + } + } + #endregion if( !String.IsNullOrEmpty( CDTXMania.DTX.strBGIMAGE_PATH ) || ( CDTXMania.DTX.listAVI.Count == 0 ) ) //背景動画があったら背景画像を描画しない。 { this.t進行描画_背景(); @@ -483,19 +508,12 @@ private struct ST文字位置 public CAct演奏Drums演奏終了演出 actEnd; private CAct演奏Drumsゲームモード actGame; public CAct演奏Drums背景 actBackground; - private bool bフィルイン中; - private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[] - { - Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT, - Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO, - Eパッド.RD, Eパッド.UNKNOWN, Eパッド.UNKNOWN, Eパッド.LC, - Eパッド.LP, Eパッド.LBD - }; private int[] nチャンネルtoX座標 = new int[] { 370, 470, 582, 527, 645, 748, 694, 373, 815, 298, 419, 419 }; private CCounter ct手つなぎ; private CTexture txヒットバーGB; private CTexture txレーンフレームGB; private CTexture tx太鼓ノーツ; + private CTexture txモノクロノーツ; private CTexture txHand; private CTexture txSenotes; private CTexture tx小節線; @@ -543,7 +561,7 @@ protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CCh { E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.DRUMS, bCorrectLane, 0 ); // #24074 2011.01.23 add ikanick - if( pChip.nコース == this.n現在のコース[ 0 ] && ( pChip.nチャンネル番号 >= 0x11 && pChip.nチャンネル番号 <= 0x14 ) && pChip.bShow == true && eJudgeResult != E判定.Auto ) + if( pChip.nコース == this.n現在のコース[ 0 ] && ( pChip.nチャンネル番号 >= 0x11 && pChip.nチャンネル番号 <= 0x14 ) && eJudgeResult != E判定.Auto ) this.actGame.t叩ききりまショー_判定から各数値を増加させる( eJudgeResult, (int)( nHitTime - pChip.n発声時刻ms ) ); return eJudgeResult; } @@ -1193,11 +1211,6 @@ protected override void t進行描画_チップ_Taiko( CConfigIni configIni, ref { if( !pChip.bHit || pChip.bShow ) { - if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) - pChip.bShow = false; - else - pChip.bShow = true; - switch (nPlayer) { case 0: @@ -1211,12 +1224,47 @@ protected override void t進行描画_チップ_Taiko( CConfigIni configIni, ref break; } - if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) + if( CDTXMania.ConfigIni.nJustHIDDEN == 0 ) { - nノート座標 = (int)( ( ( ( pChip.n発声時刻ms ) - ( pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) ) * pChip.dbBPM * pChip.dbSCROLL * ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.5 ) ) / 628.7 ); + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) + pChip.bShow = false; + else + pChip.bShow = true; + + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) + { + nノート座標 = (int)( ( ( ( pChip.n発声時刻ms ) - ( pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) ) * pChip.dbBPM * pChip.dbSCROLL * ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.5 ) ) / 628.7 ); + } + else + nノート座標 = 0; + + if( CDTXMania.ConfigIni.bZeroSpeed ) + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms >= pChip.n発声時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Poor ) + pChip.bShow = false; + } + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 1 ) //TYPE-A 良、可の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms >= pChip.n発声時刻ms - CDTXMania.ConfigIni.nヒット範囲ms.Good && CSound管理.rc演奏用タイマ.n現在時刻ms <= pChip.n発声時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Good ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 2 ) //TYPE-B 良の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms >= pChip.n発声時刻ms - CDTXMania.ConfigIni.nヒット範囲ms.Perfect && CSound管理.rc演奏用タイマ.n現在時刻ms <= pChip.n発声時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Perfect ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 3 ) //TYPE-A 前後10ミリ秒のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms >= pChip.n発声時刻ms - 10 && CSound管理.rc演奏用タイマ.n現在時刻ms <= pChip.n発声時刻ms + 10 ) + pChip.bShow = true; + else + pChip.bShow = false; } - else - nノート座標 = 0; int x = ( CDTXMania.Skin.nScrollFieldX[ nPlayer ] ) + pChip.nバーからの距離dot.Taiko; int y = CDTXMania.Skin.nScrollFieldY[ nPlayer ]; @@ -1320,99 +1368,179 @@ protected override void t進行描画_チップ_Taiko( CConfigIni configIni, ref this.ct手つなぎ.t進行Loop(); int nHand = this.ct手つなぎ.n現在の値 < 30 ? this.ct手つなぎ.n現在の値 : 60 - this.ct手つなぎ.n現在の値; + if( CDTXMania.ConfigIni.bZeroSpeed ) x = CDTXMania.Skin.nJudgePointX[ nPlayer ]; + x = ( x ) - ( ( int ) ( 130.0 / 2.0 ) ) + 1; + +#if DEBUG + CDTXMania.act文字コンソール.tPrint( x + 60, (y - 42) - pChip.nコース * 16, C文字コンソール.Eフォント種別.白, pChip.n整数値.ToString() ); +#endif + - x = ( x ) - ( ( int ) ( ( 130.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) ); switch ( pChip.nチャンネル番号 ) { case 0x11: - - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 130, num9, 130, 130 ) ); - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); - //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 130, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + } + if( this.txモノクロノーツ != null && CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 260, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + } + break; } - break; case 0x12: - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 260, num9, 130, 130) ); - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); - //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 260, num9, 130, 130) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + } + if ( this.txモノクロノーツ != null && CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 260, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + } + nLane = 1; + break; } - nLane = 1; - break; case 0x13: - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + { + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 390, num9, 130, 130 ) ); + //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); + } + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + } + if ( this.txモノクロノーツ != null && CDTXMania.ConfigIni.bMonochlo ) { - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 390, num9, 130, 130 ) ); - //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 520, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); } - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); - //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + break; } - break; + case 0x14: - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 520, num9, 130, 130 ) ); - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); - //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 520, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + //CDTXMania.act文字コンソール.tPrint( x + 60, y + 140, C文字コンソール.Eフォント種別.白, pChip.nSenote.ToString() ); + } + if ( this.txモノクロノーツ != null && CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 520, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 30 * pChip.nSenote, 136, 30 ) ); + } + nLane = 1; + break; } - nLane = 1; - break; case 0x1A: - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) { - if( nPlayer == 0 ) + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) { - this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); - this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + if( nPlayer == 0 ) + { + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + } + else if( nPlayer == 1 ) + { + this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); + this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + } + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1690, num9, 130, 130 ) ); + //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); } - else if( nPlayer == 1 ) + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 390, 136, 30 ) ); + } + if( this.txモノクロノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) { - this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); - this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + if( nPlayer == 0 ) + { + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + } + else if( nPlayer == 1 ) + { + this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); + this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + } + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1820, num9, 130, 130 ) ); + //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); } - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1690, num9, 130, 130 ) ); - //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 390, 136, 30 ) ); } - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 390, 136, 30 ) ); + break; } - break; case 0x1B: - if( this.tx太鼓ノーツ != null ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + if( this.tx太鼓ノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) { - if( nPlayer == 0 ) + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) { - this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); - this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + if( nPlayer == 0 ) + { + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + } + else if( nPlayer == 1 ) + { + this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); + this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + } + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1820, num9, 130, 130 ) ); } - else if( nPlayer == 1 ) + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 420, 136, 30 ) ); + } + if( this.txモノクロノーツ != null && !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) { - this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); - this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + if( nPlayer == 0 ) + { + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 25, ( y + 74 ) + nHand ); + this.txHand.t2D上下反転描画( CDTXMania.app.Device, x + 60, ( y + 104 ) - nHand ); + } + else if( nPlayer == 1 ) + { + this.txHand.t2D描画( CDTXMania.app.Device, x + 25, ( y - 44 ) + nHand ); + this.txHand.t2D描画( CDTXMania.app.Device, x + 60, ( y - 14 ) - nHand ); + } + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1820, num9, 130, 130 ) ); + //this.tx太鼓ノーツ.t3D描画( CDTXMania.app.Device, mat, new Rectangle( 390, num9, 130, 130 ) ); } - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1820, num9, 130, 130 ) ); + this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 390, 136, 30 ) ); } - this.txSenotes.t2D描画( CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle( 0, 420, 136, 30 ) ); + nLane = 1; + break; } - nLane = 1; - break; case 0x1F: break; @@ -1481,12 +1609,46 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn #region[ 作り直したもの ] if( pChip.b可視 ) { - if( pChip.nチャンネル番号 >= 0x15 && pChip.nチャンネル番号 <= 0x18 ) + //if( pChip.nチャンネル番号 >= 0x15 && pChip.nチャンネル番号 <= 0x18 ) + if( pChip.nチャンネル番号 >= 0x15 && pChip.nチャンネル番号 <= 0x17 ) { - if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) - pChip.bShow = false; - else if( pChip.nノーツ出現時刻ms != 0 && pChip.nノーツ移動開始時刻ms != 0 ) - pChip.bShow = true; + if( CDTXMania.ConfigIni.nJustHIDDEN == 0 ) + { + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) + pChip.bShow = false; + else if( pChip.nノーツ出現時刻ms != 0 && pChip.nノーツ移動開始時刻ms != 0 ) + pChip.bShow = true; + + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) + { + nノート座標 = (int)( ( ( ( pChip.n発声時刻ms ) - ( pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) ) * pChip.dbBPM * pChip.dbSCROLL * ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.5 ) ) / 628.7 ); + } + else + nノート座標 = 0; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 1 ) //TYPE-A 良、可の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms > pChip.n発声時刻ms - CDTXMania.ConfigIni.nヒット範囲ms.Good && CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.nノーツ終了時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Good ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 2 ) //TYPE-B 良の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms > pChip.n発声時刻ms - CDTXMania.ConfigIni.nヒット範囲ms.Perfect && CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.nノーツ終了時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Perfect ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 3 ) //TYPE-A 前後10ミリ秒のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms > pChip.n発声時刻ms - 10 && CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.nノーツ終了時刻ms + 10 ) + pChip.bShow = true; + else + pChip.bShow = false; + } + + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) { @@ -1501,17 +1663,51 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn } if( pChip.nチャンネル番号 == 0x18 ) { - if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < n先頭発声位置 - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) - pChip.bShow = false; - else - pChip.bShow = true; - - if( CDTXMania.stage演奏ドラム画面.r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮( pChip.n発声時刻ms, 0x10 + pChip.n連打音符State, 0, nPlayer ) != null ) + if ( CDTXMania.stage演奏ドラム画面.r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮( pChip.n発声時刻ms, 0x10 + pChip.n連打音符State, 0, nPlayer ) != null ) { n先頭発声位置 = CDTXMania.stage演奏ドラム画面.r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮( pChip.n発声時刻ms, 0x10 + pChip.n連打音符State, 0, nPlayer ).n発声時刻ms; nX末端 = CDTXMania.stage演奏ドラム画面.r指定時刻に一番近い連打Chip_ヒット未済問わず不可視考慮( pChip.n発声時刻ms, 0x10 + pChip.n連打音符State, 0, nPlayer ).nバーからのノーツ末端距離dot.Taiko; } + if( CDTXMania.ConfigIni.nJustHIDDEN == 0 ) + { + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < n先頭発声位置 - pChip.nノーツ出現時刻ms ) && pChip.nノーツ出現時刻ms != 0 ) + pChip.bShow = false; + else + pChip.bShow = true; + + if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) + { + nノート座標 = (int)( ( ( ( pChip.n発声時刻ms ) - ( pChip.n発声時刻ms - pChip.nノーツ移動開始時刻ms ) ) * pChip.dbBPM * pChip.dbSCROLL * ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.5 ) ) / 628.7 ); + } + else + nノート座標 = 0; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 1 ) //TYPE-A 良、可の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Good && CSound管理.rc演奏用タイマ.n現在時刻ms > pChip.n発声時刻ms - CDTXMania.ConfigIni.nヒット範囲ms.Good ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 2 ) //TYPE-B 良の範囲のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms + CDTXMania.ConfigIni.nヒット範囲ms.Perfect && CSound管理.rc演奏用タイマ.n現在時刻ms > n先頭発声位置 - CDTXMania.ConfigIni.nヒット範囲ms.Perfect ) + pChip.bShow = true; + else + pChip.bShow = false; + } + else if( CDTXMania.ConfigIni.nJustHIDDEN == 3 ) //TYPE-A 前後1ミリ秒のみ表示 + { + if( CSound管理.rc演奏用タイマ.n現在時刻ms < pChip.n発声時刻ms + 10 && CSound管理.rc演奏用タイマ.n現在時刻ms > pChip.n発声時刻ms - 10 ) + pChip.bShow = true; + else + pChip.bShow = false; + } + + + + //連打音符先頭の開始時刻を取得しなければならない。 //そうしなければ連打先頭と連打末端の移動開始時刻にズレが出てしまう。 if( ( CSound管理.rc演奏用タイマ.n現在時刻ms < n先頭発声位置 - pChip.nノーツ移動開始時刻ms ) && pChip.nノーツ移動開始時刻ms != 0 ) @@ -1593,13 +1789,24 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn { //x = ( x + 10 ) - ( ( int ) ( ( 130.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) ); int index = x末端 - x; //連打の距離 - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + if( !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + { + this.tx太鼓ノーツ.vc拡大縮小倍率.X = index - 65; + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 780, 0, 1, 130 ) ); + this.tx太鼓ノーツ.vc拡大縮小倍率.X = 1.0f; + //this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 650, num9, 130, 130 ) ); + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, 0, new Rectangle( 650, num9, 130, 130 ) ); + } + } + else { - this.tx太鼓ノーツ.vc拡大縮小倍率.X = index - 65; - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 780, 0, 1, 130 ) ); - this.tx太鼓ノーツ.vc拡大縮小倍率.X = 1.0f; + this.txモノクロノーツ.vc拡大縮小倍率.X = index - 65; + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 780, 0, 1, 130 ) ); + this.txモノクロノーツ.vc拡大縮小倍率.X = 1.0f; //this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 650, num9, 130, 130 ) ); - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, 0, new Rectangle( 650, num9, 130, 130 ) ); + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, 0, new Rectangle( 650, num9, 130, 130 ) ); } this.txSenotes.vc拡大縮小倍率.X = index - 34; @@ -1617,13 +1824,22 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn { //x = ( x + 10 ) - ( ( int ) ( ( 130.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) ); int index = x末端 - x; //連打の距離 - - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + if( !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + { + this.tx太鼓ノーツ.vc拡大縮小倍率.X = index - 65; + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 1170, 0, 1, 130 ) ); + this.tx太鼓ノーツ.vc拡大縮小倍率.X = 1.0f; + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1040, num9, 130, 130 ) ); + } + } + else { - this.tx太鼓ノーツ.vc拡大縮小倍率.X = index - 65; - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 1170, 0, 1, 130 ) ); - this.tx太鼓ノーツ.vc拡大縮小倍率.X = 1.0f; - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1040, num9, 130, 130 ) ); + this.txモノクロノーツ.vc拡大縮小倍率.X = index - 65; + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x + 65, y, new Rectangle( 1170, 0, 1, 130 ) ); + this.txモノクロノーツ.vc拡大縮小倍率.X = 1.0f; + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1040, num9, 130, 130 ) ); } this.txSenotes.vc拡大縮小倍率.X = index - 60; @@ -1639,8 +1855,15 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn { if( pChip.n発声時刻ms < CSound管理.rc演奏用タイマ.n現在時刻ms && pChip.nノーツ終了時刻ms > CSound管理.rc演奏用タイマ.n現在時刻ms ) x = 349; - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1430, num9, 260, 130 ) ); + if( !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1430, num9, 260, 130 ) ); + } + else + { + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 1430, num9, 260, 130 ) ); + } this.txSenotes.t2D描画(CDTXMania.app.Device, x - 2, y + nSenotesY, new Rectangle(0, 30 * pChip.nSenote, 136, 30)); } @@ -1663,8 +1886,16 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn } if( pChip.n連打音符State != 7 ) { - if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) - this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170 + if( !CDTXMania.ConfigIni.bMonochlo ) + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.tx太鼓ノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170 + } + else + { + if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON ) + this.txモノクロノーツ.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170 + } this.txSenotes.t2D描画(CDTXMania.app.Device, x + 56, y + nSenotesY, new Rectangle( 58, 270, 78, 30 ) ); } @@ -1673,7 +1904,6 @@ protected override void t進行描画_チップ_Taiko連打( CConfigIni configIn //CDTXMania.act文字コンソール.tPrint(x, y - 26, C文字コンソール.Eフォント種別.白, pChip.n連打音符State.ToString()); //CDTXMania.act文字コンソール.tPrint(x, y - 42, C文字コンソール.Eフォント種別.白, pChip.dbSCROLL.ToString()); //CDTXMania.act文字コンソール.tPrint(x, y - 58, C文字コンソール.Eフォント種別.白, pChip.dbBPM.ToString()); - } } } @@ -1732,7 +1962,7 @@ protected override void t進行描画_チップ_小節線( CConfigIni configIni, int n小節番号 = this.actPlayInfo.n小節番号; //int n小節番号 = pChip.n整数値; if( x >= 310 ) - CDTXMania.act文字コンソール.tPrint( x + 8, y - 26, C文字コンソール.Eフォント種別.白, n小節番号.ToString() ); + CDTXMania.act文字コンソール.tPrint( x + 8, y - 26, C文字コンソール.Eフォント種別.白, pChip.n整数値_内部番号.ToString() ); //CDTXMania.act文字コンソール.tPrint( x + 8, y - 10, C文字コンソール.Eフォント種別.白, pChip.dbBPM.ToString() ); } if ( ( pChip.b可視 ) && ( this.tx小節線 != null ) ) @@ -1786,7 +2016,7 @@ public void t全体制御メソッド() } } } - + #region[ 譜面分岐ガイド建設予定地 ] //現在実験状態です。 @@ -2004,6 +2234,59 @@ private void t大文字表示( int x, int y, string str ) x += 28; } } + + //以下から拝借 + //http://www.r-nakai.com/archives/41 + /// + /// 指定された画像を白黒にしたイメージを作成する + /// + /// 元画像 + public CTexture CreateMonochromeImage( Image img ) + { + CTexture texture; + //RGBの比率(YIQカラーモデル) + const float r = 0.298912F; + const float g = 0.586611F; + const float b = 0.114478F; + + //ColorMatrixにセットする行列を 5 * 5 の配列で用意 + //入力のRGBの各チャンネルを重み付けをした上で、 + //出力するRGBがR = G = B となるような行列をセット + float[][] matrixElement = + {new float[]{r, r, r, 0, 0}, + new float[]{g, g, g, 0, 0}, + new float[]{b, b, b, 0, 0}, + new float[]{0, 0, 0, 1, 0}, + new float[]{0, 0, 0, 0, 1}}; + + //ColorMatrixオブジェクトの作成 + ColorMatrix matrix = new ColorMatrix(matrixElement); + + //ImageAttributesにセット + ImageAttributes attr = new ImageAttributes(); + attr.SetColorMatrix(matrix); + + int imageWidth = img.Width; + int imageHeight = img.Height; + + //新しいビットマップを用意 + Bitmap changedImage = new Bitmap(imageWidth, imageHeight); + + //新しいビットマップにImageAttributesを指定して + //元のビットマップを描画 + Graphics graph = Graphics.FromImage(changedImage); + + graph.DrawImage(img, + new Rectangle(0, 0, imageWidth, imageHeight), + 0, 0, imageWidth, imageHeight, + GraphicsUnit.Pixel, + attr); + texture = CDTXMania.tテクスチャの生成( changedImage ); + graph.Dispose(); + + return texture; + } + //----------------- #endregion } } diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CConfigIni.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CConfigIni.cs" index eb0ae0f20..f9ca31d50 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CConfigIni.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CConfigIni.cs" @@ -705,6 +705,9 @@ public enum ESoundDeviceTypeForConfig public bool bHispeedRandom; public Eステルスモード eSTEALTH; public bool bNoInfo; + public bool bMonochlo; + public int nJustHIDDEN; //2018.03.30 kairera0467 + public bool bZeroSpeed; public int nDefaultSongSort; @@ -715,6 +718,7 @@ public enum ESoundDeviceTypeForConfig public bool bEndingAnime = false; // 2017.01.27 DD 「また遊んでね」画面の有効/無効オプション追加 public EWindowMovieMode eWindowMovieMode; + public Eゲージモード eGaugeMode; //2018.03.26 kairera0467 public STDGBVALUE 判定文字表示位置; // public int nハイハット切り捨て下限Velocity; @@ -1353,6 +1357,7 @@ public CConfigIni() this.eSTEALTH = Eステルスモード.OFF; this.bNoInfo = false; + this.eGaugeMode = Eゲージモード.Normal; //this.bNoMP3Streaming = false; this.nMasterVolume = 100; // #33700 2014.4.26 yyagi マスターボリュームの設定(WASAPI/ASIO用) @@ -1362,6 +1367,8 @@ public CConfigIni() this.eGameMode = EGame.OFF; this.bEndingAnime = false; this.nPlayerCount = 1; //2017.08.18 kairera0467 マルチプレイ対応 + this.eGaugeMode = Eゲージモード.Normal; + #region[ Ver.K追加 ] this.eLaneType = Eレーンタイプ.TypeA; this.bDirectShowMode = false; diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CDTXMania.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CDTXMania.cs" index 322c471a9..6793195ac 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CDTXMania.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CDTXMania.cs" @@ -20,7 +20,7 @@ internal class CDTXMania : Game { // プロパティ #region [ properties ] - public static readonly string VERSION = "Ver0.824β(170722)"; + public static readonly string VERSION = "Ver0.83b(180406)"; 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 diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFastFont.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFastFont.cs" index 463d0ae13..4d34b5a43 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFastFont.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFastFont.cs" @@ -36,21 +36,21 @@ private struct FontCache #region [ コンストラクタ ] - public CPrivateFastFont( FontFamily fontfamily, int pt, FontStyle style ) + public CPrivateFastFont( FontFamily fontfamily, float pt, FontStyle style ) { - Initialize( null, fontfamily, pt, style ); + Initialize( null, null, fontfamily, pt, style ); } - public CPrivateFastFont( FontFamily fontfamily, int pt ) + public CPrivateFastFont( FontFamily fontfamily, float pt ) { - Initialize( null, fontfamily, pt, FontStyle.Regular ); + Initialize( null, null, fontfamily, pt, FontStyle.Regular ); } - public CPrivateFastFont( string fontpath, int pt, FontStyle style ) + public CPrivateFastFont( string fontpath, float pt, FontStyle style ) { - Initialize( fontpath, null, pt, style ); + Initialize( fontpath, null, null, pt, style ); } - public CPrivateFastFont( string fontpath, int pt ) + public CPrivateFastFont( string fontpath, float pt ) { - Initialize( fontpath, null, pt, FontStyle.Regular ); + Initialize( fontpath, null, null, pt, FontStyle.Regular ); } public CPrivateFastFont() { @@ -58,11 +58,11 @@ public CPrivateFastFont() } #endregion #region [ コンストラクタから呼ばれる初期化処理 ] - protected new void Initialize( string fontpath, FontFamily fontfamily, int pt, FontStyle style ) + protected new void Initialize( string fontpath, string baseFontPath, FontFamily fontfamily, float pt, FontStyle style ) { this.bDispose完了済み_CPrivateFastFont = false; this.listFontCache = new List(); - base.Initialize( fontpath, fontfamily, pt, style ); + base.Initialize( fontpath, baseFontPath, fontfamily, pt, style ); } #endregion diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFont.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFont.cs" index 56eda441a..7bb811f34 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFont.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/CPrivateFont.cs" @@ -39,22 +39,41 @@ namespace DTXMania /// public class CPrivateFont : IDisposable { + /// + /// プライベートフォントのFontクラス。CPrivateFont()の初期化後に使用可能となる。 + /// プライベートフォントでDrawString()したい場合にご利用ください。 + /// + public Font font + { + get => _font; + } + + /// + /// フォント登録失敗時に代替使用するフォント名。システムフォントのみ設定可能。 + /// 後日外部指定できるようにします。(=コンストラクタで指定できるようにします) + /// + private string strAlternativeFont = "MS PGothic"; + #region [ コンストラクタ ] - public CPrivateFont( FontFamily fontfamily, int pt, FontStyle style ) + public CPrivateFont( FontFamily fontfamily, float pt, FontStyle style ) { - Initialize( null, fontfamily, pt, style ); + Initialize( null, null, fontfamily, pt, style ); } - public CPrivateFont( FontFamily fontfamily, int pt ) + public CPrivateFont( FontFamily fontfamily, float pt ) { - Initialize( null, fontfamily, pt, FontStyle.Regular ); + Initialize( null, null, fontfamily, pt, FontStyle.Regular ); } - public CPrivateFont( string fontpath, int pt, FontStyle style ) + public CPrivateFont(string fontpath, FontFamily fontfamily, float pt, FontStyle style) { - Initialize( fontpath, null, pt, style ); + Initialize(fontpath, null, fontfamily, pt, style); } - public CPrivateFont( string fontpath, int pt ) + public CPrivateFont( string fontpath, float pt, FontStyle style ) { - Initialize( fontpath, null, pt, FontStyle.Regular ); + Initialize( fontpath, null, null, pt, style ); + } + public CPrivateFont( string fontpath, float pt ) + { + Initialize( fontpath, null, null, pt, FontStyle.Regular ); } public CPrivateFont() { @@ -62,7 +81,7 @@ public CPrivateFont() } #endregion - protected void Initialize( string fontpath, FontFamily fontfamily, int pt, FontStyle style ) + protected void Initialize(string fontpath, string baseFontPath, FontFamily fontfamily, float pt, FontStyle style) { this._pfc = null; this._fontfamily = null; @@ -71,6 +90,17 @@ protected void Initialize( string fontpath, FontFamily fontfamily, int pt, FontS this._rectStrings = new Rectangle(0, 0, 0, 0); this._ptOrigin = new Point(0, 0); this.bDispose完了済み = false; + this._baseFontname = baseFontPath; + this.bIsSystemFont = false; + + float emSize = 0f; + using (Bitmap b = new Bitmap(1, 1)) + { + using (Graphics g = Graphics.FromImage(b)) + { + emSize = pt * 96.0f / 72.0f * g.DpiX / 96.0f; // DPIを考慮したpxサイズ。GraphicsUnit.Pixelと併用のこと + } + } if (fontfamily != null) { @@ -80,15 +110,28 @@ protected void Initialize( string fontpath, FontFamily fontfamily, int pt, FontS { try { - this._pfc = new System.Drawing.Text.PrivateFontCollection(); //PrivateFontCollectionオブジェクトを作成する - this._pfc.AddFontFile(fontpath); //PrivateFontCollectionにフォントを追加する - _fontfamily = _pfc.Families[0]; + //拡張子あり == 通常のPrivateFontパス指定 + if (Path.GetExtension(fontpath) != string.Empty) + { + this._pfc = new System.Drawing.Text.PrivateFontCollection(); //PrivateFontCollectionオブジェクトを作成する + this._pfc.AddFontFile(fontpath); //PrivateFontCollectionにフォントを追加する + _fontfamily = _pfc.Families[0]; + bIsSystemFont = false; + } + //拡張子なし == Arial, MS Gothicなど、システムフォントの指定 + else + { + this._font = PublicFont(Path.GetFileName(fontpath), emSize, style, GraphicsUnit.Pixel); + bIsSystemFont = true; + } } - catch (System.IO.FileNotFoundException) + catch (Exception e) when (e is System.IO.FileNotFoundException || e is System.Runtime.InteropServices.ExternalException) { - Trace.TraceWarning("プライベートフォントの追加に失敗しました({0})。代わりにMS PGothicの使用を試みます。", fontpath); + Trace.TraceWarning(e.Message); + Trace.TraceWarning("プライベートフォントの追加に失敗しました({0})。代わりに{1}の使用を試みます。", fontpath, strAlternativeFont); //throw new FileNotFoundException( "プライベートフォントの追加に失敗しました。({0})", Path.GetFileName( fontpath ) ); //return; + _fontfamily = null; } @@ -108,14 +151,18 @@ protected void Initialize( string fontpath, FontFamily fontfamily, int pt, FontS //} } - // 指定されたフォントスタイルが適用できない場合は、フォント内で定義されているスタイルから候補を選んで使用する - // 何もスタイルが使えないようなフォントなら、例外を出す。 - if (_fontfamily != null) + // システムフォントの登録に成功した場合 + if (bIsSystemFont && _font != null) + { + // 追加処理なし。何もしない + } + // PrivateFontの登録に成功した場合は、指定されたフォントスタイルをできるだけ適用する + else if (_fontfamily != null) { if (!_fontfamily.IsStyleAvailable(style)) { FontStyle[] FS = { FontStyle.Regular, FontStyle.Bold, FontStyle.Italic, FontStyle.Underline, FontStyle.Strikeout }; - style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout; // null非許容型なので、代わりに全盛をNGワードに設定 + style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout; // null非許容型なので、代わりに全盛をNGワードに設定 foreach (FontStyle ff in FS) { if (this._fontfamily.IsStyleAvailable(ff)) @@ -130,30 +177,45 @@ protected void Initialize( string fontpath, FontFamily fontfamily, int pt, FontS Trace.TraceWarning("フォント{0}は適切なスタイル{1}を選択できませんでした。", Path.GetFileName(fontpath), style.ToString()); } } - //this._font = new Font(this._fontfamily, pt, style); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する - float emSize = pt * 96.0f / 72.0f; - this._font = new Font(this._fontfamily, emSize, style, GraphicsUnit.Pixel); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する - //HighDPI対応のため、pxサイズで指定 + this._font = new Font(this._fontfamily, emSize, style, GraphicsUnit.Pixel); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する } + // PrivateFontと通常フォント、どちらの登録もできていない場合は、MS PGothic改め代替フォントを代わりに設定しようと試みる else - // フォントファイルが見つからなかった場合 (MS PGothicを代わりに指定する) { - float emSize = pt * 96.0f / 72.0f; - this._font = new Font("MS PGothic", emSize, style, GraphicsUnit.Pixel); //MS PGothicのFontオブジェクトを作成する - FontFamily[] ffs = new System.Drawing.Text.InstalledFontCollection().Families; - int lcid = System.Globalization.CultureInfo.GetCultureInfo("en-us").LCID; - foreach (FontFamily ff in ffs) + this._font = PublicFont(strAlternativeFont, emSize, style, GraphicsUnit.Pixel); + if (this._font != null ) + { + Trace.TraceInformation("{0}の代わりに{1}を指定しました。", Path.GetFileName(fontpath), strAlternativeFont); + bIsSystemFont = true; + return; + } + throw new FileNotFoundException(string.Format("プライベートフォントの追加に失敗し、{1}での代替処理にも失敗しました。({0})", Path.GetFileName(fontpath), strAlternativeFont)); + } + } + + /// + /// プライベートフォントではない、システムフォントの設定 + /// + /// フォント名 + /// フォントサイズ + /// フォントスタイル + /// GraphicsUnit + /// + private Font PublicFont(string fontname, float emSize, FontStyle style, GraphicsUnit unit) + { + Font f = new Font(fontname, emSize, style, unit); + FontFamily[] ffs = new System.Drawing.Text.InstalledFontCollection().Families; + int lcid = System.Globalization.CultureInfo.GetCultureInfo("en-us").LCID; + foreach (FontFamily ff in ffs) + { + // Trace.WriteLine( lcid ) ); + if (ff.GetName(lcid) == fontname) { - // Trace.WriteLine( lcid ) ); - if (ff.GetName(lcid) == "MS PGothic") - { - this._fontfamily = ff; - Trace.TraceInformation("MS PGothicを代わりに指定しました。"); - return; - } + this._fontfamily = ff; + return f; } - throw new FileNotFoundException("プライベートフォントの追加に失敗し、MS PGothicでの代替処理にも失敗しました。({0})", Path.GetFileName(fontpath)); } + return null; } [Flags] @@ -305,7 +367,7 @@ protected Bitmap DrawPrivateFont( string drawstr, DrawMode drawmode, Color fontC bool bGradation = ( ( drawmode & DrawMode.Gradation ) == DrawMode.Gradation ); // 縁取りの縁のサイズは、とりあえずフォントの大きさの1/4とする - int nEdgePt = (bEdge)? _pt / 4 : 0; + float nEdgePt = (bEdge)? _pt / 4 : 0; // 描画サイズを測定する Size stringSize = System.Windows.Forms.TextRenderer.MeasureText( drawstr, this._font, new Size( int.MaxValue, int.MaxValue ), @@ -315,7 +377,7 @@ protected Bitmap DrawPrivateFont( string drawstr, DrawMode drawmode, Color fontC stringSize.Width += 10; //2015.04.01 kairera0467 ROTTERDAM NATIONの描画サイズがうまくいかんので。 //取得した描画サイズを基に、描画先のbitmapを作成する - Bitmap bmp = new Bitmap( stringSize.Width + nEdgePt * 2, stringSize.Height + nEdgePt * 2 ); + Bitmap bmp = new Bitmap( (int)(stringSize.Width + nEdgePt * 2), (int)(stringSize.Height + nEdgePt * 2) ); bmp.MakeTransparent(); Graphics g = Graphics.FromImage( bmp ); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; @@ -325,7 +387,7 @@ protected Bitmap DrawPrivateFont( string drawstr, DrawMode drawmode, Color fontC sf.Alignment = StringAlignment.Center; // 画面中央(水平方向位置) // レイアウト枠 - Rectangle r = new Rectangle( 0, 0, stringSize.Width + nEdgePt * 2, stringSize.Height + nEdgePt * 2 ); + Rectangle r = new Rectangle( 0, 0, (int)(stringSize.Width + nEdgePt * 2), (int)(stringSize.Height + nEdgePt * 2) ); if ( bEdge ) // 縁取り有りの描画 { @@ -367,7 +429,7 @@ protected Bitmap DrawPrivateFont( string drawstr, DrawMode drawmode, Color fontC g.DrawRectangle( new Pen( Color.Green, 1 ), new Rectangle( 0, 0, bmp.Width - 1, bmp.Height - 1 ) ); #endif _rectStrings = new Rectangle( 0, 0, stringSize.Width, stringSize.Height ); - _ptOrigin = new Point( nEdgePt * 2, nEdgePt * 2 ); + _ptOrigin = new Point( (int)(nEdgePt * 2), (int)(nEdgePt * 2) ); #region [ リソースを解放する ] @@ -928,21 +990,42 @@ protected set //----------------- public void Dispose() { - if ( !this.bDispose完了済み ) + this.Dispose(true); + GC.SuppressFinalize(this); + } + protected void Dispose(bool disposeManagedObjects) + { + if (this.bDispose完了済み) + return; + + if (disposeManagedObjects) { - if ( this._font != null ) + // (A) Managed リソースの解放 + if (this._font != null) { this._font.Dispose(); this._font = null; } - if ( this._pfc != null ) + if (this._pfc != null) { this._pfc.Dispose(); this._pfc = null; } - - this.bDispose完了済み = true; + if (this._fontfamily != null) + { + this._fontfamily.Dispose(); + this._fontfamily = null; + } } + + // (B) Unamanaged リソースの解放 + + this.bDispose完了済み = true; + } + //----------------- + ~CPrivateFont() + { + this.Dispose(false); } //----------------- #endregion @@ -954,9 +1037,11 @@ public void Dispose() private System.Drawing.Text.PrivateFontCollection _pfc; private FontFamily _fontfamily; - private int _pt; + private float _pt; private Rectangle _rectStrings; private Point _ptOrigin; + private string _baseFontname = null; + private bool bIsSystemFont; //----------------- #endregion } diff --git "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/C\345\256\232\346\225\260.cs" "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/C\345\256\232\346\225\260.cs" index 6d841e288..cec30cfb1 100644 --- "a/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/C\345\256\232\346\225\260.cs" +++ "b/DTXMania\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/\345\205\250\344\275\223/C\345\256\232\346\225\260.cs" @@ -53,6 +53,14 @@ public enum Eダメージレベル 普通 = 1, 大きい = 2 } + public enum Eゲージモード + { + Normal, + IIDX, + HARD, + EXHARD, + DEATH + } public enum Eパッド // 演奏用のenum。ここを修正するときは、次に出てくる EKeyConfigPad と EパッドFlag もセットで修正すること。 { HH = 0, diff --git "a/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/00.\345\205\261\351\200\232/C\345\244\211\346\217\233.cs" "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/00.\345\205\261\351\200\232/C\345\244\211\346\217\233.cs" index 4dd4eeddb..21cbe9758 100644 --- "a/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/00.\345\205\261\351\200\232/C\345\244\211\346\217\233.cs" +++ "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/00.\345\205\261\351\200\232/C\345\244\211\346\217\233.cs" @@ -222,9 +222,9 @@ public static int n255ToParsent( int num ) public static SlimDX.Color4 n255ToColor4( int nR, int nG, int nB ) { - float fR = n255ToParsent( nR ); - float fG = n255ToParsent( nG ); - float fB = n255ToParsent( nB ); + float fR = nR / 255.0f; + float fG = nG / 255.0f; + float fB = nB / 255.0f; return new SlimDX.Color4( fR, fG, fB ); } diff --git "a/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CAviDS.cs" "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CAviDS.cs" new file mode 100644 index 000000000..ead221583 --- /dev/null +++ "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CAviDS.cs" @@ -0,0 +1,252 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.InteropServices; +using DirectShowLib; +using DirectShowLib.DES; +using SharpDX; + +namespace FDK +{ + public class CAviDS : IDisposable + { + const int timeOutMs = 1000; // グラフ state の遷移完了を待つタイムアウト期間 + + public uint nフレーム高さ + { + get + { + return (uint)nHeight; + } + } + + public uint nフレーム幅 + { + get + { + return (uint)nWidth; + } + } + public bool b再生中 + { + get + { + return bPlaying; + } + } + public bool b一時停止中 + { + get + { + return bPause; + } + } + + int nWidth; + int nHeight; + long nMediaLength; // [ms] + bool bPlaying; + bool bPause; + + public int GetDuration() + { + return (int)(nMediaLength / 10000); + } + + IGraphBuilder builder; + VideoInfoHeader videoInfo; + ISampleGrabber grabber; + IMediaControl control; + IMediaSeeking seeker; + IMediaFilter filter; + FilterState state; + AMMediaType mediaType; + IntPtr samplePtr = IntPtr.Zero; + + public CAviDS(string filename, double playSpeed) + { + int hr = 0x0; + + builder = (IGraphBuilder)new FilterGraph(); + + #region [Sample Grabber] + { + grabber = new SampleGrabber() as ISampleGrabber; + mediaType = new AMMediaType(); + mediaType.majorType = MediaType.Video; + mediaType.subType = MediaSubType.RGB32; + mediaType.formatType = FormatType.VideoInfo; + hr = grabber.SetMediaType(mediaType); + DsError.ThrowExceptionForHR(hr); + + hr = builder.AddFilter((IBaseFilter)grabber, "Sample Grabber"); + DsError.ThrowExceptionForHR(hr); + } + #endregion + + hr = builder.RenderFile(filename, null); + DsError.ThrowExceptionForHR(hr); + + // Null レンダラに接続しないとウィンドウが表示される。 + // また、レンダリングを行わないため処理速度を向上できる。 + CDirectShow.ConnectNullRendererFromSampleGrabber(builder, grabber as IBaseFilter); + CDirectShow.tグラフを解析しデバッグ出力する(builder); + + IVideoWindow videoWindow = builder as IVideoWindow; + if (videoWindow != null) + { + videoWindow.put_AutoShow(OABool.False); + } + + #region [Video Info] + { + hr = grabber.GetConnectedMediaType(mediaType); + DsError.ThrowExceptionForHR(hr); + + videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader)); + nWidth = videoInfo.BmiHeader.Width; + nHeight = videoInfo.BmiHeader.Height; + } + #endregion + + #region[ Seeker ] + { + seeker = builder as IMediaSeeking; + hr = seeker.GetDuration(out nMediaLength); + DsError.ThrowExceptionForHR(hr); + hr = seeker.SetRate(playSpeed / 20); + DsError.ThrowExceptionForHR(hr); + } + #endregion + + #region [Control] + { + control = builder as IMediaControl; + } + #endregion + + #region [Filter] + { + filter = builder as IMediaFilter; + } + #endregion + + grabber.SetBufferSamples(true); + this.Run(); + this.Pause(); + + bPlaying = false; + bPause = false; // 外見えには演奏停止している。PAUSE中として外に見せないこと。 + } + + public void Seek(int timeInMs) + { + int hr = seeker.SetPositions(new DsLong(timeInMs * 10000), AMSeekingSeekingFlags.AbsolutePositioning, null, AMSeekingSeekingFlags.NoPositioning); + DsError.ThrowExceptionForHR(hr); + hr = control.GetState(timeOutMs, out state); // state is Running + DsError.ThrowExceptionForHR(hr); + } + + public void Run() + { + int hr = control.Run(); + DsError.ThrowExceptionForHR(hr); + hr = control.GetState(timeOutMs, out state); + DsError.ThrowExceptionForHR(hr); + bPlaying = true; + bPause = false; + } + + public void Stop() + { + int hr = control.Stop(); + DsError.ThrowExceptionForHR(hr); + hr = control.GetState(timeOutMs, out state); + DsError.ThrowExceptionForHR(hr); + bPlaying = false; + bPause = false; + } + + public void Pause() + { + int hr = control.Pause(); + DsError.ThrowExceptionForHR(hr); + hr = control.GetState(timeOutMs, out state); + DsError.ThrowExceptionForHR(hr); + bPause = true; + } + + public void ToggleRun() + { + int hr = control.GetState(timeOutMs, out state); + DsError.ThrowExceptionForHR(hr); + if( state == FilterState.Paused ) + { + Run(); + } + else if( state == FilterState.Running ) + { + Pause(); + } + } + + public unsafe void tGetBitmap(SharpDX.Direct3D9.Device device, CTexture ctex, int timeMs) + { + int bufferSize = 0; + int hr = 0x0; + + hr = grabber.GetCurrentBuffer(ref bufferSize, IntPtr.Zero); + DsError.ThrowExceptionForHR(hr); + + if ( samplePtr == IntPtr.Zero ) + { + samplePtr = Marshal.AllocHGlobal(bufferSize); + } + + DataRectangle rectangle3 = ctex.texture.LockRectangle(0, SharpDX.Direct3D9.LockFlags.None); + hr = grabber.GetCurrentBuffer(ref bufferSize, rectangle3.DataPointer); + DsError.ThrowExceptionForHR(hr); + ctex.texture.UnlockRectangle(0); + } + + #region [ Dispose-Finalize パターン実装 ] + public void Dispose() + { + if (!this.bDisposed) + { + if (null != builder) + { + Marshal.ReleaseComObject(builder); + builder = null; + } + if( null != grabber ) + { + Marshal.ReleaseComObject(grabber); + grabber = null; + } + if (null != mediaType) + { + DsUtils.FreeAMMediaType(mediaType); + mediaType = null; + } + if (samplePtr != IntPtr.Zero) + { + Marshal.FreeHGlobal(samplePtr); + } + + GC.SuppressFinalize(this); + this.bDisposed = true; + } + } + + ~CAviDS() + { + this.Dispose(); + } + #endregion + + private bool bDisposed = false; + } +} diff --git "a/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CTexture.cs" "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CTexture.cs" index 04bc26593..06c93a1e5 100644 --- "a/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CTexture.cs" +++ "b/FDK17\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210/\343\202\263\343\203\274\343\203\211/04.\343\202\260\343\203\251\343\203\225\343\202\243\343\203\203\343\202\257/CTexture.cs" @@ -8,9 +8,21 @@ using SlimDX; using SlimDX.Direct3D9; +using Rectangle = System.Drawing.Rectangle; + namespace FDK { - public class CTexture : IDisposable + /// + /// テクスチャを扱うクラス。 + /// 使用終了時は必ずDispose()してください。Finalize時の自動Disposeはありません。 + /// Disposeを忘れた場合は、メモリリークに直結します。 + /// Finalize時にDisposeしない代わりに、Finalize時にテクスチャのDispose漏れを検出し、 + /// Trace.TraceWarning()でログを出力します。 + /// see also: + /// https://osdn.net/projects/dtxmania/ticket/38036 + /// https://github.com/sharpdx/SharpDX/pull/192?w=1 + /// + public class CTexture : IDisposable { // プロパティ public bool b加算合成 @@ -101,7 +113,8 @@ public CTexture() this.szテクスチャサイズ = new Size( 0, 0 ); this._透明度 = 0xff; this.texture = null; - this.cvPositionColoredVertexies = null; + this.bSlimDXTextureDispose完了済み = false; + this.cvPositionColoredVertexies = null; this.b加算合成 = false; this.fZ軸中心回転 = 0f; this.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); @@ -135,7 +148,8 @@ public CTexture( Device device, Bitmap bitmap, Format format ) stream.Seek( 0L, SeekOrigin.Begin ); int colorKey = unchecked( (int) 0xFF000000 ); this.texture = Texture.FromStream( device, stream, this.szテクスチャサイズ.Width, this.szテクスチャサイズ.Height, 1, Usage.None, format, poolvar, Filter.Point, Filter.None, colorKey ); - } + this.bSlimDXTextureDispose完了済み = false; + } } catch ( Exception e ) { @@ -228,7 +242,8 @@ public CTexture( Device device, int n幅, int n高さ, Format format, Pool pool, #endif // 中で更にメモリ読み込みし直していて無駄なので、Streamを使うのは止めたいところ this.texture = Texture.FromStream( device, stream, n幅, n高さ, 1, usage, format, pool, Filter.Point, Filter.None, 0 ); - } + this.bSlimDXTextureDispose完了済み = false; + } } } catch @@ -287,9 +302,10 @@ public void MakeTexture( Device device, byte[] txData, Format format, bool b黒 // { //Trace.TraceInformation( "CTexture() start: " ); this.texture = Texture.FromMemory( device, txData, this.sz画像サイズ.Width, this.sz画像サイズ.Height, 1, Usage.None, format, pool, Filter.Point, Filter.None, colorKey ); - //Trace.TraceInformation( "CTexture() end: " ); - // } - } + this.bSlimDXTextureDispose完了済み = false; + //Trace.TraceInformation( "CTexture() end: " ); + // } + } catch { this.Dispose(); @@ -352,7 +368,8 @@ public void MakeTexture( Device device, Bitmap bitmap, Format format, bool b黒 #endif texture.UnlockRectangle( 0 ); bitmap.UnlockBits( srcBufData ); - } + this.bSlimDXTextureDispose完了済み = false; + } //Trace.TraceInformation( "CTExture() End: " ); } catch @@ -893,21 +910,44 @@ public void t3D左上基準描画( Device device, Matrix mat, Rectangle rc画像 device.DrawUserPrimitives( PrimitiveType.TriangleStrip, 2, this.cvPositionColoredVertexies ); } - #region [ IDisposable 実装 ] + #region [ Dispose-Finalize パターン実装 ] //----------------- public void Dispose() { - if( !this.bDispose完了済み ) + this.Dispose(true); + GC.SuppressFinalize(this); + } + protected void Dispose(bool disposeManagedObjects) + { + if (this.bDispose完了済み) + return; + + if (disposeManagedObjects) { - // テクスチャの破棄 - if( this.texture != null ) + // (A) Managed リソースの解放 + // テクスチャの破棄 (SharpDXのテクスチャは、SharpDX側で管理されるため、FDKからはmanagedリソースと見做す) + if (this.texture != null) { this.texture.Dispose(); this.texture = null; + this.bSlimDXTextureDispose完了済み = true; } + } + + // (B) Unamanaged リソースの解放 - this.bDispose完了済み = true; + + this.bDispose完了済み = true; + } + ~CTexture() + { + // ファイナライザの動作時にtextureのDisposeがされていない場合は、 + // CTextureのDispose漏れと見做して警告をログ出力する + if (!this.bSlimDXTextureDispose完了済み) + { + Trace.TraceWarning("CTexture: Dispose漏れを検出しました。(Size=({0}, {1}))", sz画像サイズ.Width, sz画像サイズ.Height ); } + this.Dispose(false); } //----------------- #endregion @@ -918,8 +958,8 @@ public void Dispose() #region [ private ] //----------------- private int _透明度; - private bool bDispose完了済み; - private PositionColoredTexturedVertex[] cvPositionColoredVertexies; + private bool bDispose完了済み, bSlimDXTextureDispose完了済み; + private PositionColoredTexturedVertex[] cvPositionColoredVertexies; protected TransformedColoredTexturedVertex[] cvTransformedColoredVertexies = new TransformedColoredTexturedVertex[] { new TransformedColoredTexturedVertex(), diff --git "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/DTXManiaGR.exe" "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/DTXManiaGR.exe" index e56bff7f3..8546873dc 100644 Binary files "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/DTXManiaGR.exe" and "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/DTXManiaGR.exe" differ diff --git "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/System/Default/SkinConfig.ini" "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/System/Default/SkinConfig.ini" index 8cdada59f..ecf9fed6f 100644 --- "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/System/Default/SkinConfig.ini" +++ "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/System/Default/SkinConfig.ini" @@ -8,5 +8,6 @@ DiffDispMode=2 ;݂̃Xe[W\ȂB(ƒp) NowStageDisp=0 -;3̐lĂBlƂƂ邩B -COMMAND= \ No newline at end of file +;XRAZ̐摜̐F(10ĩJ[R[hJ}؂œ) +AddScoreColorP1=255,127,102 +AddScoreColorP2=102,127,255 \ No newline at end of file diff --git "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/dll/FDK.dll" "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/dll/FDK.dll" index a1c219d39..5e6ea715a 100644 Binary files "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/dll/FDK.dll" and "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/dll/FDK.dll" differ diff --git "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/readme.txt" "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/readme.txt" index a5b8482b1..772b37c78 100644 --- "a/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/readme.txt" +++ "b/\345\256\237\350\241\214\346\231\202\343\203\225\343\202\251\343\203\253\343\203\200/readme.txt" @@ -1,5 +1,5 @@ -KTT:J:A:I:2017072200 -TJAPlayer2 for.PC() +KTT:J:A:I:2018040100 +TJAPlayer2 for.PC() by.kairera0467 Tv DTXManiaXG(Ver.K)x[XɂāATJAPlayer2炢낢ƃR[hڐAđۂۂ\tgB @@ -46,7 +46,12 @@ TJAPlayer2 EShift&F1 RtBOʂɈړ EF2 ȈՃIvV EF3 I[gvC +EF4 Q[W^CvύX(ʏ큨IIDXHARDEX-HARD???) EF5 !@؂܃V[! X[p[n[h(u!@؂܃V[!(h)vL̏ꍇ̂) +EF6 BMSCROLLAHBSCROLL؂ւ(Ȃ蓮삪₵̂ŒӁBDELAY̓_) +EF7 JUST HIDDEN()(OFFTYPE-ATYPE-BTYPE-C) +EF8 NOTE(OFFMONOCHRO) +EF9 ZERO-SPEED ESpace \[gj[ (t) @@ -54,10 +59,10 @@ TJAPlayer2 EF or J ED or K -EF1 ꎞ~j[ -E1 ̕ʕŋIɕʕʂɈړ -E2 ̕ʕŋIɌlʂɈړ -E3 ̕ʕŋIɒBlʂɈړ +EF1 ꎞ~j[ +E1 ̕ʕŋIɕʕʂɈړ +E2 ̕ʕŋIɌlʂɈړ +E3 ̕ʕŋIɒBlʂɈړ EF4 A^C萔\̐؂ւ(1lvĈ) EF5 wi̕\ʒu̐؂ւ(wi\\Ȃ) EDelete fobO\(ɈӖ͖) @@ -77,6 +82,10 @@ TJAPlayer2 EhAXeXɑΉĂ܂B EORXǂŁuNoInfovȂIvV܂B E(V)u!@܃V[!vȂA^DAM̃pNQ[Ă܂B +E(V2)ver.2018040100łȂ񂩕ςȃIvVĂ܂B(F7AF8AF9) +@ꂼP̂łyݒ܂Ad˂邱ƂłʔȂ邩m܂B +@̘rɎM̂F7L[TYPE-ATYPE-BF9d˂AȂlF7L[TYPE-AF8IXXłB +@@łȂlF7TYPE-CF9ASF7TYPE-CF8F9JUSTEX-HARDQ[WłgƂB ̃IvV͑̓ƗĂ邽߁A{Ɠld˂”\łB ꕔIvV̓RtBOʂɓĂ܂B @@ -98,9 +107,13 @@ TJAPlayer2 E2015110500ŐhLATE肪P܂B EHSƌs”肪s2016021300ʼn܂B EDAł@悤ɂȂ^C~ÓA17~bOłB -E2017----002lvCo悤ɂȂ܂B(x[^) +E201708--002lvCo悤ɂȂ܂B(x[^) @E{Ƃۂ\ɂ͑ΉĂ܂B +ӏ܃[h֘A +EIȉʂF3L[ACONFIGʂ́uDrum/AutoPlayvŁAӏ܃[h̐؂ւł܂B +Ever2015082000I[g搶FAłȂȂIvVlj܂B +@ECONFIǴuAutoRollvŐݒł܂BOFF̏ꍇ͘Ał܂B(vC[͖̓͂܂) Đɂ‚ EtjaɁuBGMOVIE:v̋LqƁAwiĐ܂B @@ -108,19 +121,12 @@ TJAPlayer2 EڂDTXManiał̃tB^‹\zQlɂĂB @>>https://osdn.jp/projects/dtxmania/wiki/DirectShow%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 - -ӏ܃[h֘A -EIȉʂF3L[ACONFIGʂ́uDrum/AutoPlayvŁAӏ܃[h̐؂ւł܂B -Ever2015082000I[g搶FAłȂȂIvVlj܂B -@ECONFIǴuAutoRollvŐݒł܂BOFF̏ꍇ͘Ał܂B(vC[͖̓͂܂) - dl E{Ƃ̗vf\Ă܂...AŋߑĂ܂B EΉĂȂߑłB EȖAt@CTJAǂݍł܂B EXRA̓͂ȂłB @Ever2015082000SCOREMODE:2ɊւĂ͂قڊɂȂB -E2lvC͖ΉB Ever2015062000nCXRAۑɉΉ܂B @ENAv͑ΉĂȂ Eǂ񂿂̓łB @@ -138,6 +144,9 @@ TJAPlayer2 EuCOURSE:5vA܂́uCOURSE:Towervɂ͑ΉĂ܂B EʍĐɓՓxႢ̍Đ͂ł܂BΉ\łB E܂ɉtʂł蒼ɘAŃ`bvZbg܂B +EZERO-SPEED͘AŁAӂA‚ȂAAD-LIBɂ͓Kp܂B +Ever2018040100u#SECTIONv߂ꎞIɔp~Ă܂B +@EŐzuꂸʕʂƂĂ̂... ڂr[ȂƂ @@ -148,11 +157,11 @@ TJAPlayer2 E摜\K EB̃GtFNg1‚܂ł`悳ȂB EAʼn̐FςȂB -@EJ[}gNXƂ킩܂B +@EƂ킩肻ł킩Ȃ EtÍutR{vuNAsṽAj[V͑ΉĂ܂B @EtR͂܂ɂAj[VGANAs͖ʓ|B EgɌĂ܂B -@E2016081100ɒlj摜͊g0łB̂P܂B +@E2016081500ɒlj摜͊g0łB̂P܂B E‚Ȃ̌ڂGł ΉĂȂ @@ -228,18 +237,25 @@ TJAPlayer2 E#DELAY ?? @EłȂȂ + ׂdl EQ[W̏㏸͈ӊOƃK`BWikiɂf[^̗p܂B Eʕ̎dl͖{ƁAۂȂƂƓłB @E1ߑOŕ򏈗dg݂łB @EȂ̂ňꕔ̋Ȃł͂̃\tĝ߂ɉHKv܂B @@EuDADDY MULKv̏ꍇ͘AŒ1߂͂ށAȂǁB -EȖTJAǂݍ݂܂BDTXt@CɋȖKv肵܂B EVSyncWaitItɂȂĂȂƃvr[y܂[vĂ܂B E_IvV͎K̂ŁAʏRANDOMHYPER RANDOMSUPER RANDOMN\܂B EUgʂ̕\ÉAXRA7AȊO4łB EAʼn̕\Dx́ASR[XʂŁuʏ퉹vłB +@ÊߏŏƂACOURSE:5͑ΉĂ܂B ES[S[^C̎dlŝ̂ł͂܂B̂C\B(ƂɃtOw肵ĂȂ) +@E2018040100特ƂɃtOw肷dlɂȂ܂B +EIIDXQ[WAHARDQ[WAEX-HARDQ[Wɂ‚ĂIIDXƎdlقȂ܂B +@EHARDQ[WAEX-HARDQ[Wł̗ǂ̉Zl͑ۂ̉ZlƓłB(ЃQ[Ƃ͈ăm[gȂ̂l) +@Eʏ̕sAs‚ɂ錸l̈Ⴂ͂܂B(IIDXłƂ̌POORœ) +@EHARDQ[Ŵ݁u30%␳v܂ + XyVTNX FROM(DTXManiaAStrokeStyle) @@ -248,6 +264,7 @@ DD TJAPX5th650(TJAP2) fB[(^Cgʂ̔wi摜) Music Revolver 76573(NÃ[V摜) +AioiLight(hTJAP3B[Ň) WikiɂăQ[W̏㏸؁AvZZoꂽ oO񍐂ĂX @@ -270,28 +287,20 @@ Music Revolver 76573 @EuCheckmate!?v201602--00 @EuӁEEEǁEEEv2016040100 @EuDADDY MULK -Groove remix-v2016081500 +@EuX[p[EgnCp[~N}`bNv([X) E͉摜͈؎gĂ܂BSLv`悩̃g~OA܂̓xN^[ō쐬摜łB @E剹̃GtFNgꕔ𓡋{ ėProminence(http://game-hikidashi.com/category/prominence/)gpč쐬܂B ĔzzɊւ -{̂̍ĔzzAtAZu͎RłB -Ĕzzۂ́ALicensestH_̓YȂ悤ɂĂB - +2017N514I[v\[X߁AMITCZXɏ]΍Ĕzz”\ɂȂ܂B -摜̍Ĕzzɂ‚ -E쐬摜̍ĔzzEʗprł̗pȂǂ́ARɂĂĂ\łB -EȊO쐬̂ɂ‚ẮATJAPlayer2 for.PC()ȊÕ\tgł̎gpOƂĔzzEۂ͐҂ɂ₢킹B -@E2_background.jpg fB[ -@E7_combo taiko.png fB[(2016081100ȍ~) -@E7_combo taiko_large.png fB[(2016081100ȍ~) -@EChara/clear_(n).png Music Revolver 76573 -@ȆDTXManiả摜 RWSAGTȂ -EXLzźAł邾ftHgXL̍ɂĂƂ肪łB +XLzźAł邾ftHgXL݂̍Ȍ`ł̔zzɂĂƂ肪łB A HP:http://sites.google.com/site/kairera0467/ +Github(\[XR[h):https://github.com/kairera0467/TJAP2fPC Mail:gennsou76573@gmail.com Twitter:@kairera0467 @@ -309,6 +318,46 @@ Twitter:@kairera0467 XV +ver.2018040600 2018/4/7 +sC +EfobOp̕\̂܂܂ɂȂĂ̂C(#IF DEBUGɐ؂ւ) + +ver.2018040100 2018/4/1 +@\lj +EQ[W[h(IȉʂF4ƂŐ؂ւ܂BԂ̓Q[IɃZbg) +EVIvVuJUST SUDDENv(IȉʂF7ƂŐ؂ւ܂BԂ̓Q[IɃZbg) +EVIvVuMONOCHRO NOTEv(IȉʂF8ƂŐ؂ւ܂BԂ̓Q[IɃZbg) +EVIvVuZERO SPEEDv(IȉʂF9ƂŐ؂ւ܂BԂ̓Q[IɃZbg) +E2lvCBs̂ł܂茩ȂłĂB +EɁu‚ȂvljB(gɂ‚v) +E_uvCpʂ̓ǂݍ݂ɑΉ + +dlύX +ES[S[^C̔@ύX(‹ɂė_lYĂ܂̂͂ŏCꂽ͂) +Eʏ̃XRAColor4Œ悤ɂ̂XRAZ̐摜ƂĎg悤ɕύX +EXRAZ̐摜폜 +EAiEX̐o̕`@t3D`ɕύX +E剹̗蔻͈͂1f̂ŏC +E蒼̊Jnʒu𑁂߂ɂĂ݂ +ECONFIGʂ̃plPrivateFont`扻 +ESkinConfig.iniXRAZ̐FύXł悤ɂB(AddScoreColorP1AAddScoreColorP2B10ĩJ[R[hRGBJ}؂œ͂Ă) +EuCChip.nl_ԍvɏߔԍi[悤ύX +sC +E‚̃NXɂPrivateFont̉YĂӏ̂ŏC +ER{o[̕`DxC +EI[gvCɂ蒼2ڈȍ~AłȂȂoOC...ASɏCĂȂ +E^Ŕz_ő剹{[iXĂȂ̂ŏC(Issues#10) +Et̏ߔԍ\ӂ₾̂C +Eʕ򏈗Ɉꕔ̉ĂȂ̂C +Em[g摜1pxEɈʒu␳悤ɕύX(\tgł̕ύXł) + +@\p~ +E̖肪Ă邽߁u#SECTIONv߂ꎞIɔp~B + +̑ +EDTXMania Git́u1b481ac2d8aa7dd675a7628cff8850ef2667b479vud6ed058dcbd589a674d90cedc2b0de2313ed438ev(Ȃ΍)Kp +EDTXMania Git́uCTextureIDisposableǁv֘A̓Kp(r[ł...) + ver.2017072200 2017/7/22 dlύX E^Ń[h̔z_w肳ĂȂꍇAʏ̔z_ɃtH[obN悤ɕύX(z_܂ł̌q) @@ -354,51 +403,89 @@ ver.2017051800 2017/5/18 ̑ EVisualStudio 2015ȍ~ł̃rhɑΉ -2017050800 ftHgXL̃tH_uDefaultvɕύXB - BR}h̒ljB(I) -2017041600 ftHgXL̉摜Ă̂Œlj - xĐR{tŖ‚ȂȂĂsCB - G[h~̂߁ADTXV[hERpNg[hɐNȂ悤ɂB -2017031800 config.ini画͈͂ύXł悤ɂB - ݒʂ̃wb_[摜Atb^[摜ǂݍ߂悤ɂB - ftHgXL̂‚𐔖폜B -2017012400 ẗꎞ~j[ȈՎB - R[XV{摜B(uΊɂȂ 7vSkinConfig.iniݒ肷Kv܂B) - R{̃t@COt@CҏWł悤ɂB(Sound.csv) - ȈՐݒʁA\[gʂ̃tHg摜tHgIPAtHgŎۂɕ`悷ɕύXB - `bv`l̑啝ړB(݂̂Ȃ̂ʼne͂܂B) - Wˑ猻ݎɂ锻ɕύXB - R{\Jnl̃ftHgl10ɕύXB - tʉEɏo錻݂̃Xe[W\Łu1Ȗځv݂ȕ\ł悤ɂB - 莞ɉȂ悤CB - tʂŕsvȏ啝폜B - LN^[摜ŁuMAX̒ʏ탂[VvuMAX̃S[S[^C[VvgȂ̂CB - 100R{10000_ZȂȂĂ̂ŏCB - ̏ŁAI[g̕DAŎ0ZG[̂CB - I[gĐ̘Ał𖳌ɂԂŃI[gĐƁA1~b1ł̑xŘAłĂ܂Ă̂CB - ʕ̂ȂŁȀߐJEgȂĂ̂CB - {Ƃۂwip~BR[h͎cĂ̂ŁAOŃrhĂB - readmeꕔB -2016092600 DEBUGrhݒOčărhB - DEBUGrh̏ꍇA^Cgʂŕ\悤ɂB -2016092400 TvʂljB - 100R{ƂɏoAljB(2000R{ȏɂȂƕ\ꂵȂ܂B) - SUDDEN߂AʼnɑΉB - ߐ̕fXN[Ή(摜]܂) - DAł̕\ - @Ă镗DAł̉悤ɕύXB - gpłR{1100`1500R{܂ŒljB - Ȍ莞̉ljBuSongDecide.oggvSystem/SoundtH_ɊeljĂBftHgXLɂ͕tĂ܂B - Ugʂɓ鎞ɍĐ鉹ljBuResultIn.oggvSystem/SoundtH_ɊeljĂBftHgXLɂ͕tĂ܂B - wi̕\ʒuύXł悤ɂB - IȉʂŁ10ȏ̋ȂɃJ[\킹Ă鎞ɁA摜{[hяoȂ悤ɂB - tʂŒȖ̉ŏk悤ɂB - A^C萔\tʂONOFFł悤ɂB - DP(ڂ)̏ - u!@؂܃V[!v̓ՓxB - bass.netdllXVB - I[gvCɃXRAXVsCB - {́A摜Ĕzzɂ‚ĒNjLB +ver.2017050800 2017/5/8 +dlύX +EftHgXL̃tH_uDefaultvɕύXB +EBR}h̒ljB(I) + +ver.2017041600 2017/4/16 +dlύX +EftHgXL̉摜Ă̂Œlj +EG[h~̂߁ADTXV[hERpNg[hɐNȂ悤ɂB + +sC +ExĐR{tŖ‚ȂȂĂsCB + +ver.2017031800 2017/3/18 +dlύX +Econfig.ini画͈͂ύXł悤ɂB +Eݒʂ̃wb_[摜Atb^[摜ǂݍ߂悤ɂB + +̑ +EftHgXL̂‚𐔖폜B + +ver.2017012400 2017/1/24 +@\lj +Eẗꎞ~j[ȈՎB +ER[XV{摜B(uΊɂȂ 7vSkinConfig.iniݒ肷Kv܂B) + +dlύX +ER{̃t@COt@CҏWł悤ɂB(Sound.csv) +EȈՐݒʁA\[gʂ̃tHg摜tHgIPAtHgŎۂɕ`悷ɕύXB +E`bv`l̑啝ړB(݂̂Ȃ̂ʼne͂܂B) +EWˑ猻ݎɂ锻ɕύXB +ER{\Jnl̃ftHgl10ɕύXB +EtʉEɏo錻݂̃Xe[W\Łu1Ȗځv݂ȕ\ł悤ɂB + +sC +E莞ɉȂ悤CB +Etʂŕsvȏ啝폜B +ELN^[摜ŁuMAX̒ʏ탂[VvuMAX̃S[S[^C[VvgȂ̂CB +E100R{10000_ZȂȂĂ̂ŏCB +ȄŁAI[g̕DAŎ0ZG[̂CB +EI[gĐ̘Ał𖳌ɂԂŃI[gĐƁA1~b1ł̑xŘAłĂ܂Ă̂CB +Eʕ̂ȂŁȀߐJEgȂĂ̂CB + +@\p~ +E{Ƃۂwip~BR[h͎cĂ̂ŁAOŃrhĂB + +̑ +EreadmeꕔB + +ver.2016092600 2016/9/26 +dlύX +EDEBUGrh̏ꍇA^Cgʂŕ\悤ɂB + +̑ +EDEBUGrhݒOčărhB + +ver.2016092400 2016/9/24 +@\lj +E100R{ƂɏoAljB(2000R{ȏɂȂƕ\ꂵȂ܂B) +ESUDDEN߂AʼnɑΉB +Eߐ̕fXN[Ή(摜]܂) +EDAł̕\ +EȌ莞̉ljBuSongDecide.oggvSystem/SoundtH_ɊeljĂBftHgXLɂ͕tĂ܂B +EgpłR{1100`1500R{܂ŒljB +EUgʂɓ鎞ɍĐ鉹ljBuResultIn.oggvSystem/SoundtH_ɊeljĂBftHgXLɂ͕tĂ܂B + +dlύX +E@Ă镗DAł̉悤ɕύXB +Ewi̕\ʒuύXł悤ɂB +EIȉʂŁ10ȏ̋ȂɃJ[\킹Ă鎞ɁA摜{[hяoȂ悤ɂB +EtʂŒȖ̉ŏk悤ɂB +EA^C萔\tʂONOFFł悤ɂB +Eu!@؂܃V[!v̓ՓxB + +sC +EI[gvCɃXRAXVsCB + +̑ +ETvʂljB +EDP(ڂ)̏ +Ebass.netdllXVB +E{́A摜Ĕzzɂ‚ĒNjLB + 2016081501 pbP[WɃNA^ĂȂ̂ŒljB readmeMB 2016081500 wi摜{Ƃۂ郂[hljB(_ł͊g0łB) @@ -569,4 +656,4 @@ ver.2017051800 2017/5/18 readmeɁȗv2‚̂ŏCB 2015032000 eXg2B΂ƂɂȂĂ̂CB 2015031900 eXg1 -2014120000 Jn \ No newline at end of file +201412--00 Jn \ No newline at end of file