OSDN Git Service

#24204 rel087で#BASEBPMを使えなくしていた問題を修正。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 23 Jan 2011 04:00:58 +0000 (04:00 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 23 Jan 2011 04:00:58 +0000 (04:00 +0000)
#24063 ギターとベースの入力入れ替えに対応。Pick-G-G-Pickで入れ替え。レーン表示は入れ替えず、入力アサインのみ入れ替える。
#23058 InputAdjustの説明で、「入力ラグ軽減のためには負の数をセットせよ」と追記。また英文での説明が全てベース用となっていたので、ドラムス・ギター用に修正。

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@90 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs
DTXManiaプロジェクト/コード/スコア、曲/CSong管理.cs
DTXManiaプロジェクト/コード/ステージ/03.オプション/CActOptionList.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/CStage選曲.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs
DTXManiaプロジェクト/コード/全体/CConfigIni.cs
DTXManiaプロジェクト/コード/全体/CDTXMania.cs
DTXManiaプロジェクト/コード/全体/C定数.cs
DTXManiaプロジェクト/作成資料/ScreenSelect skill number on gauge etc.psd
実行時フォルダ/System/Graphics/ScreenSelect skill number on gauge etc.png

index 976fd32..cddd86a 100644 (file)
@@ -3396,7 +3396,7 @@ namespace DTXMania
                                                        if (str.StartsWith("PANEL", StringComparison.OrdinalIgnoreCase)) {\r
                                                                this.t入力・パラメータ食い込みチェック("PANEL", ref str, ref str2);\r
                                                                int dummyResult;                                                                // #23885 2010.12.12 yyagi: not to confuse "#PANEL strings (panel)" and "#PANEL int (panpot of EL)"\r
-                                                               if (!int.TryParse(str2, out dummyResult)) {     // 数値じゃないならPANELとみなす\r
+                                                               if (!int.TryParse(str2, out dummyResult)) {             // 数値じゃないならPANELとみなす\r
                                                                        this.PANEL = str2;                                                      //\r
                                                                        goto EOL;                                                                       //\r
                                                                }                                                                                               // 数値ならPAN ELとみなす\r
@@ -3418,8 +3418,8 @@ namespace DTXMania
                                                                        this.t入力・パラメータ食い込みチェック("BASEBPM", ref str, ref str2);\r
                                                                        double basebpm = 0.0;\r
                                                                        //if( double.TryParse( str2, out num6 ) && ( num6 > 0.0 ) )\r
-                                                                       if (!TryParse(str2, out basebpm) && basebpm > 0.0)      // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
-                                                                       {\r
+                                                                       if (TryParse(str2, out basebpm) && basebpm > 0.0)       // #23880 2010.12.30 yyagi: alternative TryParse to permit both '.' and ',' for decimal point\r
+                                                                       {                                                                                                       // #24204 2011.01.21 yyagi: Fix the condition correctly\r
                                                                                this.BASEBPM = basebpm;\r
                                                                        }\r
                                                                } else if (str.StartsWith("SOUND_STAGEFAILED", StringComparison.OrdinalIgnoreCase)) {\r
@@ -4063,34 +4063,33 @@ namespace DTXMania
                                {\r
                                        case "_SS":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 0, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_S":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 1, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_A":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 2, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_B":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 3, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_C":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 4, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_D":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 5, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
 \r
                                        case "_E":\r
                                                this.t入力・行解析・RESULTIMAGE・ファイルを設定する( 6, strパラメータ );\r
-                                               goto Label_0142;\r
+                                               break;\r
                                }\r
                        }\r
-               Label_0142:\r
                        return true;\r
                }\r
                private void t入力・行解析・RESULTIMAGE・ファイルを設定する( int nランク0to6, string strファイル名 )\r
index 5f81392..2027ed8 100644 (file)
@@ -42,8 +42,8 @@ namespace DTXMania
                        get; \r
                        set;\r
                }\r
-               public List<Cスコア> listSongsDB;\r
-               public List<C曲リストノード> list曲ルート;\r
+               public List<Cスコア> listSongsDB;                                    // songs.dbから構築されるlist\r
+               public List<C曲リストノード> list曲ルート;                   // 起動時にフォルダ検索して構築されるlist\r
 \r
 \r
                // コンストラクタ\r
index d5b4aa2..f40870a 100644 (file)
@@ -89,8 +89,8 @@ namespace DTXMania
                        this.list項目リスト.Add( this.iBassLeft );\r
                                                                                                                                                                                // #23580 2011.1.3 yyagi\r
                        this.iBassInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass,\r
-                               "ベースの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。",\r
-                               "To adjust the bass input timing.\nYou can set from -99 to 99ms.");\r
+                               "ベースの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",\r
+                               "To adjust the bass input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value.");\r
                        this.list項目リスト.Add(this.iBassInputAdjustTimeMs);\r
 \r
                        this.n現在の選択項目 = 0;\r
@@ -192,8 +192,8 @@ namespace DTXMania
                        this.list項目リスト.Add( this.iDrumsTight );\r
                                                                                                                                                                        // #23580 2011.1.3 yyagi\r
                        this.iDrumsInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums,\r
-                               "ドラムの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。",\r
-                               "To adjust the bass input timing.\nYou can set from -99 to 99ms.");\r
+                               "ドラムの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",\r
+                               "To adjust the drums input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value.");\r
                        this.list項目リスト.Add(this.iDrumsInputAdjustTimeMs);\r
 \r
                        this.n現在の選択項目 = 0;\r
@@ -252,9 +252,9 @@ namespace DTXMania
                        this.list項目リスト.Add( this.iGuitarLeft );\r
                                                                                                                                                                        // #23580 2011.1.3 yyagi\r
                        this.iGuitarInputAdjustTimeMs= new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar,\r
-                               "ギターの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。",\r
-                               "To adjust the bass input timing.\nYou can set from -99 to 99ms.");\r
-                       this.list項目リスト.Add(this.iGuitarInputAdjustTimeMs);\r
+                               "ギターの入力タイミングの微調整を\n行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、負の\n値を指定してください。",\r
+                               "To adjust the guitar input timing.\nYou can set from -99 to 99ms.\nTo decrease input lag, set minus value." );\r
+                       this.list項目リスト.Add( this.iGuitarInputAdjustTimeMs );\r
 \r
                        this.n現在の選択項目 = 0;\r
                        this.eメニュー種別 = Eメニュー種別.Guitar;\r
index 6500ab3..1055075 100644 (file)
@@ -75,6 +75,8 @@ namespace DTXMania
                        base.list子Activities.Add( this.actPresound = new CActSelectPresound() );\r
                        base.list子Activities.Add( this.actArtistComment = new CActSelectArtistComment() );\r
                        base.list子Activities.Add( this.actInformation = new CActSelectInformation() );\r
+\r
+                       this.CommandHistory = new CCommandHistory();            // #24063 2011.1.16 yyagi\r
                }\r
                \r
                \r
@@ -132,10 +134,10 @@ namespace DTXMania
                        {\r
                                this.eフェードアウト完了時の戻り値 = E戻り値.継続;\r
                                this.bBGM再生済み = false;\r
-                               this.n前回Bassを踏んだ時刻 = -1;\r
-                               this.n前回HHを叩いた時刻 = -1;\r
-                               this.n前回ギターをPickした時刻 = -1;\r
-                               this.n前回ベースをPickした時刻 = -1;\r
+//                             this.n前回Bassを踏んだ時刻 = -1;\r
+//                             this.n前回HHを叩いた時刻 = -1;\r
+//                             this.n前回ギターをPickした時刻 = -1;\r
+//                             this.n前回ベースをPickした時刻 = -1;\r
                                this.ftフォント = new Font( "MS PGothic", 26f, GraphicsUnit.Pixel );\r
                                for( int i = 0; i < 4; i++ )\r
                                        this.ctキー反復用[ i ] = new CCounter( 0, 0, 0, CDTXMania.Timer );\r
@@ -181,6 +183,7 @@ namespace DTXMania
                                this.tx上部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect header panel.png" ), true );\r
                                this.tx下部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect footer panel.png" ), true );\r
                                this.txコメントバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect comment bar.png" ), true );\r
+                               this.txFLIP = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect skill number on gauge etc.png" ), false );\r
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
@@ -192,6 +195,7 @@ namespace DTXMania
                                CDTXMania.tテクスチャの解放( ref this.tx上部パネル );\r
                                CDTXMania.tテクスチャの解放( ref this.tx下部パネル );\r
                                CDTXMania.tテクスチャの解放( ref this.txコメントバー );\r
+                               CDTXMania.tテクスチャの解放( ref this.txFLIP );\r
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
@@ -250,7 +254,12 @@ namespace DTXMania
                                }\r
                                this.actArtistComment.On進行描画();\r
                                this.actオプションパネル.On進行描画();\r
-                               switch( base.eフェーズID )\r
+                               if ( this.txFLIP != null && CDTXMania.ConfigIni.bIsSwappedGuitarBass )  // #24063 2011.1.16 yyagi\r
+                               {\r
+                                       Rectangle rect = new Rectangle(31, 49, 20, 11);\r
+                                       this.txFLIP.t2D描画( CDTXMania.app.Device, 40, 436, rect );\r
+                               }\r
+                               switch ( base.eフェーズID )\r
                                {\r
                                        case CStage.Eフェーズ.共通_フェードイン:\r
                                                if( this.actFIFO.On進行描画() != 0 )\r
@@ -292,16 +301,17 @@ namespace DTXMania
                                if( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 \r
                                        && CDTXMania.act現在入力を占有中のプラグイン == null )\r
                                {\r
-                                       if( CDTXMania.Input管理.Keyboard.bキーが押された( 0x35 ) || ( ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) && ( ( this.act曲リスト.r現在選択中の曲 != null ) && ( this.act曲リスト.r現在選択中の曲.r親ノード == null ) ) ) )\r
-                                       {\r
+                                       if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) || ( ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) || CDTXMania.Pad.b押されたGB( Eパッド.Cancel ) ) && ( ( this.act曲リスト.r現在選択中の曲 != null ) && ( this.act曲リスト.r現在選択中の曲.r親ノード == null ) ) ) )\r
+                                       {       // [ESC]\r
                                                CDTXMania.Skin.sound取消音.t再生する();\r
                                                this.eフェードアウト完了時の戻り値 = E戻り値.タイトルに戻る;\r
                                                this.actFIFO.tフェードアウト開始();\r
                                                base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                                return 0;\r
                                        }\r
-                                       if( ( CDTXMania.Input管理.Keyboard.bキーが押されている( 120 ) || CDTXMania.Input管理.Keyboard.bキーが押されている( 0x4e ) ) && CDTXMania.Input管理.Keyboard.bキーが押された( 0x36 ) )\r
-                                       {\r
+                                       if ( ( CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) &&\r
+                                               CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.F1 ) )\r
+                                       {       // [SHIFT] + [F1] OPTION\r
                                                this.actPresound.tサウンド停止();\r
                                                this.eフェードアウト完了時の戻り値 = E戻り値.オプション呼び出し;\r
                                                this.actFIFO.tフェードアウト開始();\r
@@ -309,8 +319,9 @@ namespace DTXMania
                                                CDTXMania.Skin.sound取消音.t再生する();\r
                                                return 0;\r
                                        }\r
-                                       if( ( CDTXMania.Input管理.Keyboard.bキーが押されている( 120 ) || CDTXMania.Input管理.Keyboard.bキーが押されている( 0x4e ) ) && CDTXMania.Input管理.Keyboard.bキーが押された( 0x37 ) )\r
-                                       {\r
+                                       if ( ( CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) &&\r
+                                               CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.F2 ) )\r
+                                       {       // [SHIFT] + [F2] CONFIGURATION\r
                                                this.actPresound.tサウンド停止();\r
                                                this.eフェードアウト完了時の戻り値 = E戻り値.コンフィグ呼び出し;\r
                                                this.actFIFO.tフェードアウト開始();\r
@@ -320,7 +331,8 @@ namespace DTXMania
                                        }\r
                                        if( this.act曲リスト.r現在選択中の曲 != null )\r
                                        {\r
-                                               if( ( CDTXMania.Pad.b押されたDGB( Eパッド.CY ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.RD ) ) || ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LC ) || ( CDTXMania.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Input管理.Keyboard.bキーが押された( 0x75 ) ) ) )\r
+                                               if( ( CDTXMania.Pad.b押されたDGB( Eパッド.Decide ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.RD ) ) ||\r
+                                                       ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LC ) || ( CDTXMania.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Return ) ) ) )\r
                                                {\r
                                                        CDTXMania.Skin.sound決定音.t再生する();\r
                                                        if( this.act曲リスト.r現在選択中の曲 != null )\r
@@ -349,19 +361,19 @@ namespace DTXMania
                                                                }\r
                                                        }\r
                                                }\r
-                                               this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( 0x84 ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
-                                               this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.HH ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
+                                               this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.UpArrow ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
+                                               this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.R ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
                                                if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.SD ) )\r
                                                {\r
                                                        this.tカーソルを上へ移動する();\r
                                                }\r
-                                               this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( 50 ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
-                                               this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.BD ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
+                                               this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.DownArrow ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
+                                               this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.B ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
                                                if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LT ) )\r
                                                {\r
                                                        this.tカーソルを下へ移動する();\r
                                                }\r
-                                               if( ( ( this.act曲リスト.r現在選択中の曲 != null ) && ( this.act曲リスト.r現在選択中の曲.r親ノード != null ) ) && ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )\r
+                                               if( ( ( this.act曲リスト.r現在選択中の曲 != null ) && ( this.act曲リスト.r現在選択中の曲.r親ノード != null ) ) && ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) || CDTXMania.Pad.b押されたGB( Eパッド.Cancel ) ) )\r
                                                {\r
                                                        this.actPresound.tサウンド停止();\r
                                                        CDTXMania.Skin.sound取消音.t再生する();\r
@@ -369,66 +381,101 @@ namespace DTXMania
                                                        this.t選択曲変更通知();\r
                                                }\r
                                                if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.BD ) )\r
-                                               {\r
-                                                       if( ( this.n前回Bassを踏んだ時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回Bassを踏んだ時刻 ) < 400 ) )\r
+                                               {       // [BD]x2 スクロール速度変更\r
+                                                       CommandHistory.Add( E楽器パート.DRUMS, EパッドFlag.BD );\r
+                                                       EパッドFlag[] comChangeScrollSpeed = new EパッドFlag[ 2 ] { EパッドFlag.BD, EパッドFlag.BD };\r
+                                                       if ( CommandHistory.CheckCommand( comChangeScrollSpeed, E楽器パート.DRUMS ) )\r
                                                        {\r
+Debug.WriteLine( "ドラムススクロール速度変更" );\r
                                                                CDTXMania.ConfigIni.n譜面スクロール速度.Drums = ( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1 ) % 0x10;\r
                                                                CDTXMania.Skin.sound変更音.t再生する();\r
-                                                               this.n前回Bassを踏んだ時刻 = -1;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               this.n前回Bassを踏んだ時刻 = CDTXMania.Timer.n現在時刻;\r
                                                        }\r
                                                }\r
                                                if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.HH ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.HHO ) )\r
-                                               {\r
-                                                       if( ( this.n前回HHを叩いた時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回HHを叩いた時刻 ) < 500 ) )\r
+                                               {       // [HH]x2 難易度変更\r
+                                                       CommandHistory.Add( E楽器パート.DRUMS, EパッドFlag.HH );\r
+                                                       EパッドFlag[] comChangeDifficulty = new EパッドFlag[ 2 ] { EパッドFlag.HH, EパッドFlag.HH };\r
+                                                       if ( CommandHistory.CheckCommand( comChangeDifficulty, E楽器パート.DRUMS ) )\r
                                                        {\r
+Debug.WriteLine( "ドラムス難易度変更" );\r
                                                                this.act曲リスト.t難易度レベルをひとつ進める();\r
                                                                CDTXMania.Skin.sound変更音.t再生する();\r
-                                                               this.n前回HHを叩いた時刻 = -1;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               this.n前回HHを叩いた時刻 = CDTXMania.Timer.n現在時刻;\r
                                                        }\r
                                                }\r
-                                               if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.SD ) || CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.HT ) )\r
-                                               {\r
-                                                       if( ( this.n前回ギターをPickした時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回ギターをPickした時刻 ) < 500 ) )\r
+                                               if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.Pick ) )     // #24177 2011.1.17 yyagi || -> &&\r
+                                               {       // [G] + [Pick][Pick] ギター難易度変更\r
+                                                       CommandHistory.Add( E楽器パート.GUITAR, EパッドFlag.Pick | EパッドFlag.G );\r
+                                                       EパッドFlag[] comChangeDifficulty = new EパッドFlag[ 2 ] { EパッドFlag.Pick | EパッドFlag.G, EパッドFlag.Pick | EパッドFlag.G };\r
+                                                       if ( CommandHistory.CheckCommand( comChangeDifficulty, E楽器パート.GUITAR ) )\r
                                                        {\r
+Debug.WriteLine( "ギター難易度変更" );\r
                                                                this.act曲リスト.t難易度レベルをひとつ進める();\r
                                                                CDTXMania.Skin.sound変更音.t再生する();\r
-                                                               this.n前回ギターをPickした時刻 = -1;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               this.n前回ギターをPickした時刻 = CDTXMania.Timer.n現在時刻;\r
                                                        }\r
                                                }\r
-                                               if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.SD ) || CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.HT ) )\r
-                                               {\r
-                                                       if( ( this.n前回ベースをPickした時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回ベースをPickした時刻 ) < 500 ) )\r
+                                               if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.Pick ) )         // #24177 2011.1.17 yyagi || -> &&\r
+                                               {       // [G] + [Pick][Pick] ベース難易度変更\r
+                                                       CommandHistory.Add( E楽器パート.BASS, EパッドFlag.Pick | EパッドFlag.G);\r
+                                                       EパッドFlag[] comChangeDifficulty = new EパッドFlag[ 2 ] { EパッドFlag.Pick | EパッドFlag.G, EパッドFlag.Pick | EパッドFlag.G };\r
+                                                       if ( CommandHistory.CheckCommand( comChangeDifficulty, E楽器パート.BASS ) )\r
                                                        {\r
+Debug.WriteLine( "ベース難易度変更" );\r
                                                                this.act曲リスト.t難易度レベルをひとつ進める();\r
                                                                CDTXMania.Skin.sound変更音.t再生する();\r
-                                                               this.n前回ベースをPickした時刻 = -1;\r
                                                        }\r
-                                                       else\r
+                                               }\r
+\r
+                                               if ( CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.Pick ) && !CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) )\r
+                                               {       // ギター[Pick]: コマンドとしてEnqueue\r
+                                                       CommandHistory.Add( E楽器パート.GUITAR, EパッドFlag.Pick );\r
+                                                       // Pick, G, G, Pick で、ギターとベースを入れ替え\r
+                                                       EパッドFlag[] comSwapGtBs = new EパッドFlag[ 4 ] { EパッドFlag.Pick, EパッドFlag.G, EパッドFlag.G, EパッドFlag.Pick };\r
+                                                       if ( CommandHistory.CheckCommand( comSwapGtBs, E楽器パート.GUITAR ) )\r
                                                        {\r
-                                                               this.n前回ベースをPickした時刻 = CDTXMania.Timer.n現在時刻;\r
+Debug.WriteLine( "ギターとベースの入れ替え1" );\r
+                                                               CDTXMania.Skin.sound変更音.t再生する();\r
+                                                               // ギターとベースのキーを入れ替え\r
+                                                               CDTXMania.ConfigIni.SwapGuitarBassKeyAssign();\r
                                                        }\r
                                                }\r
-                                               if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.HT ) )\r
-                                               {\r
-                                                       if( ( this.n前回HTを叩いた時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回HTを叩いた時刻 ) < 400 ) )\r
+                                               if ( CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.Pick )  && !CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) )\r
+                                               {       // ベース[Pick]: コマンドとしてEnqueue\r
+                                                       CommandHistory.Add( E楽器パート.BASS, EパッドFlag.Pick);\r
+                                                       // Pick, G, G, Pick で、ギターとベースを入れ替え\r
+                                                       EパッドFlag[] comSwapGtBs = new EパッドFlag[ 4 ] { EパッドFlag.Pick, EパッドFlag.G, EパッドFlag.G, EパッドFlag.Pick };\r
+                                                       if ( CommandHistory.CheckCommand( comSwapGtBs, E楽器パート.BASS ) )\r
                                                        {\r
-                                                               this.n前回HTを叩いた時刻 = -1;\r
+Debug.WriteLine( "ギターとベースの入れ替え2" );\r
+                                                               CDTXMania.Skin.sound変更音.t再生する();\r
+                                                               // ギターとベースのキーを入れ替え\r
+                                                               CDTXMania.ConfigIni.SwapGuitarBassKeyAssign();\r
                                                        }\r
-                                                       else\r
+                                               }\r
+                                               if ( CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.G ) )\r
+                                               {       // ギター[G]: コマンドとしてEnqueue\r
+                                                       CommandHistory.Add( E楽器パート.GUITAR, EパッドFlag.G );\r
+                                               }\r
+                                               if ( CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.G ) )\r
+                                               {       // ベース[G]: コマンドとしてEnqueue\r
+                                                       CommandHistory.Add( E楽器パート.BASS, EパッドFlag.G);\r
+                                               }\r
+                                               if ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.HT ) )\r
+                                               {       // [HT]x2 未使用\r
+                                                       //\r
+                                                       CommandHistory.Add( E楽器パート.DRUMS, EパッドFlag.HT );\r
+                                                       EパッドFlag[] comSort = new EパッドFlag[ 2 ] { EパッドFlag.BD, EパッドFlag.HT };\r
+                                                       if ( CommandHistory.CheckCommand( comSort, E楽器パート.DRUMS ) )\r
                                                        {\r
-                                                               this.n前回HTを叩いた時刻 = CDTXMania.Timer.n現在時刻;\r
+Debug.WriteLine( "ソート画面発動" );\r
+\r
+//                                                     if( ( this.n前回HTを叩いた時刻 != -1 ) && ( ( CDTXMania.Timer.n現在時刻 - this.n前回HTを叩いた時刻 ) < 400 ) )\r
+//                                                     {\r
+//                                                             this.n前回HTを叩いた時刻 = -1;\r
+//                                                     }\r
+//                                                     else\r
+//                                                     {\r
+//                                                             this.n前回HTを叩いた時刻 = CDTXMania.Timer.n現在時刻;\r
+//                                                     }\r
                                                        }\r
                                                }\r
                                        }\r
@@ -501,7 +548,6 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-\r
                private CActSelectArtistComment actArtistComment;\r
                private CActFIFOBlack actFIFO;\r
                private CActFIFOBlack actFIfrom結果画面;\r
@@ -518,15 +564,103 @@ namespace DTXMania
                private CCounter ct登場時アニメ用共通;\r
                private E戻り値 eフェードアウト完了時の戻り値;\r
                private Font ftフォント;\r
-               private long n前回Bassを踏んだ時刻;\r
-               private long n前回HHを叩いた時刻;\r
-               private long n前回HTを叩いた時刻;\r
-               private long n前回ギターをPickした時刻;\r
-               private long n前回ベースをPickした時刻;\r
+//             private long n前回Bassを踏んだ時刻;\r
+//             private long n前回HHを叩いた時刻;\r
+//             private long n前回HTを叩いた時刻;\r
+//             private long n前回ギターをPickした時刻;\r
+//             private long n前回ベースをPickした時刻;\r
                private CTexture txコメントバー;\r
                private CTexture tx下部パネル;\r
                private CTexture tx上部パネル;\r
                private CTexture tx背景;\r
+               private CTexture txFLIP;\r
+\r
+               private struct STCommandTime            // #24063 2011.1.16 yyagi コマンド入力時刻の記録用\r
+               {\r
+                       public E楽器パート eInst;          // 使用楽器\r
+                       public EパッドFlag ePad;             // 押されたコマンド(同時押しはOR演算で列挙する)\r
+                       public long time;                               // コマンド入力時刻\r
+               }\r
+               private class CCommandHistory           // #24063 2011.1.16 yyagi コマンド入力履歴を保持・確認するクラス\r
+               {\r
+                       readonly int buffersize = 16;\r
+                       private List<STCommandTime> stct;\r
+\r
+                       public CCommandHistory()                // コンストラクタ\r
+                       {\r
+                               stct = new List<STCommandTime>( buffersize );\r
+                       }\r
+\r
+                       /// <summary>\r
+                       /// コマンド入力履歴へのコマンド追加\r
+                       /// </summary>\r
+                       /// <param name="_eInst">楽器の種類</param>\r
+                       /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param>\r
+                       public void Add( E楽器パート _eInst, EパッドFlag _ePad )\r
+                       {\r
+                               STCommandTime _stct = new STCommandTime {\r
+                                       eInst = _eInst,\r
+                                       ePad = _ePad,\r
+                                       time = CDTXMania.Timer.n現在時刻\r
+                               };\r
+\r
+                               if ( stct.Count >= buffersize )\r
+                               {\r
+                                       stct.RemoveAt( 0 );\r
+                               }\r
+                               stct.Add(_stct);\r
+Debug.WriteLine( "CMDHIS: 楽器=" + _stct.eInst + ", CMD=" + _stct.ePad + ", time=" + _stct.time );\r
+                       }\r
+                       public void RemoveAt( int index )\r
+                       {\r
+                               stct.RemoveAt( index );\r
+                       }\r
+\r
+                       /// <summary>\r
+                       /// コマンド入力に成功しているか調べる\r
+                       /// </summary>\r
+                       /// <param name="_ePad">入力が成功したか調べたいコマンド</param>\r
+                       /// <param name="_eInst">対象楽器</param>\r
+                       /// <returns>コマンド入力成功時true</returns>\r
+                       public bool CheckCommand( EパッドFlag[] _ePad, E楽器パート _eInst)\r
+                       {\r
+                               int targetCount = _ePad.Length;\r
+                               int stciCount = stct.Count;\r
+                               if ( stciCount < targetCount )\r
+                               {\r
+                                       return false;\r
+                               }\r
+\r
+                               long curTime = CDTXMania.Timer.n現在時刻;\r
+                               for ( int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j-- )\r
+                               {\r
+                                       if ( _ePad[ i ] != stct[ j ].ePad )\r
+                                       {\r
+Debug.WriteLine( "CMD解析: false targetCount=" + targetCount + ", i=" + i + ", j=" + j + ": ePad[]=" + _ePad[i] + ", stci[j] = " + stct[j].ePad );\r
+                                               return false;\r
+                                       }\r
+                                       if ( stct[ j ].eInst != _eInst )\r
+                                       {\r
+Debug.WriteLine( "CMD解析: false " + i );\r
+                                               return false;\r
+                                       }\r
+                                       if ( curTime - stct[ j ].time > 500 )\r
+                                       {\r
+Debug.WriteLine( "CMD解析: false " + i + "; over 500ms" );\r
+                                               return false;\r
+                                       }\r
+                                       curTime = stct[ j ].time;\r
+                               }\r
+\r
+Debug.Write( "CMD解析: 成功!(" + _ePad.Length + ") " );\r
+for ( int i = 0; i < _ePad.Length; i++ ) Debug.Write( _ePad[ i ] + ", " );\r
+Debug.WriteLine( "" );\r
+                               stct.RemoveRange( 0, targetCount );\r
+\r
+                               return true;\r
+                       }\r
+               }\r
+               private CCommandHistory CommandHistory;\r
 \r
                private void tカーソルを下へ移動する()\r
                {\r
index 2e34b28..7ecb510 100644 (file)
@@ -2367,7 +2367,7 @@ namespace DTXMania
                }\r
 #if true       // DAMAGELEVELTUNING\r
                // ----------------------------------\r
-               public float[,] fDamageGaugeDelta = {                   // #23625 2011.1.10 ickw_284: tuned damege/recover factors\r
+               public float[,] fDamageGaugeDelta = {                   // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
                        // drums,   guitar,  bass\r
                        {  0.004f,  0.006f,  0.006f  },\r
                        {  0.002f,  0.003f,  0.003f  },\r
index 1c45d2d..638ca8e 100644 (file)
@@ -1453,11 +1453,11 @@ namespace DTXMania
                                {       // del (debug info)\r
                                        CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;\r
                                }\r
-                               else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.LeftArrow ) )            // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+                               else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.LeftArrow ) )            // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                                {\r
                                        ChangeInputAdjustTimeInPlaying( keyboard, -1 );\r
                                }\r
-                               else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) )          // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+                               else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) )          // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                                {\r
                                        ChangeInputAdjustTimeInPlaying( keyboard, +1 );\r
                                }\r
@@ -1469,7 +1469,7 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private void ChangeInputAdjustTimeInPlaying( IInputDevice keyboard, int plusminus )             // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+               private void ChangeInputAdjustTimeInPlaying( IInputDevice keyboard, int plusminus )             // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                {\r
                        int part, offset = plusminus;\r
                        if ( keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftShift ) || keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightShift ) )      // Guitar InputAdjustTime\r
@@ -4257,7 +4257,7 @@ namespace DTXMania
 \r
 #if true               // DAMAGELEVELTUNING\r
                // ----------------------------------\r
-               public float[,] fDamageGaugeDelta = {                   // #23625 2011.1.10 ickw_284: tuned damege/recover factors\r
+               public float[,] fDamageGaugeDelta = {                   // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
                        // drums,   guitar,  bass\r
                        {  0.004f,  0.006f,  0.006f  },\r
                        {  0.002f,  0.003f,  0.003f  },\r
index c857ecf..3d200cc 100644 (file)
@@ -552,7 +552,11 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-\r
+               public bool bIsSwappedGuitarBass                        // #24063 2011.1.16 yyagi ギターとベースの切り替え中か否か\r
+               {\r
+                       get;\r
+                       private set;\r
+               }\r
                public STAUTOPLAY bAutoPlay;\r
                [StructLayout( LayoutKind.Sequential )]\r
                public struct STAUTOPLAY\r
@@ -826,6 +830,7 @@ namespace DTXMania
                        this.nハイハット切り捨て下限Velocity = 20;\r
                        this.n切り捨て下限Velocity = 0;                           // #23857 2010.12.12 yyagi VelocityMin\r
                        this.bバッファ入力を行う = true;\r
+                       this.bIsSwappedGuitarBass = false;                      // #24063 2011.1.16 yyagi ギターとベースの切り替え\r
                }\r
                public CConfigIni( string iniファイル名 )\r
                        : this()\r
@@ -1965,6 +1970,24 @@ namespace DTXMania
                        }\r
                }\r
 \r
+               /// <summary>\r
+               /// ギターとベースのキーアサイン入れ替え\r
+               /// </summary>\r
+               public void SwapGuitarBassKeyAssign()           // #24063 2011.1.16 yyagi\r
+               {\r
+                       for ( int j = 0; j < 10; j++ )\r
+                       {\r
+                               CKeyAssign.STKEYASSIGN t; //= new CConfigIni.CKeyAssign.STKEYASSIGN();\r
+                               for ( int k = 0; k < 16; k++ )\r
+                               {\r
+                                       t = this.KeyAssign[ 1 ][ j ][ k ];\r
+                                       this.KeyAssign[ 1 ][ j ][ k ] = this.KeyAssign[ 2 ][ j ][ k ];\r
+                                       this.KeyAssign[ 2 ][ j ][ k ] = t;\r
+                               }\r
+                       }\r
+                       this.bIsSwappedGuitarBass = !bIsSwappedGuitarBass;\r
+               }\r
+\r
 \r
                // その他\r
 \r
index 2f18cf2..d96bb97 100644 (file)
@@ -1749,6 +1749,10 @@ for (int i = 0; i < 3; i++) {
                                #region [ Config.iniの出力 ]\r
                                //---------------------\r
                                Trace.TraceInformation("Config.ini を出力します。");\r
+                               if ( ConfigIni.bIsSwappedGuitarBass )                   // #24063 2011.1.16 yyagi ギターベースがスワップしているときは元に戻す\r
+                               {\r
+                                       ConfigIni.SwapGuitarBassKeyAssign();\r
+                               }\r
                                string str = strEXEのあるフォルダ + "Config.ini";\r
                                Trace.Indent();\r
                                try\r
@@ -1797,18 +1801,6 @@ for (int i = 0; i < 3; i++) {
                                }\r
                                e.Handled = true;\r
                                e.SuppressKeyPress = true;\r
-/*\r
- * while (Input管理.Keyboard.bキーが押されている(0x75))\r
-                               {\r
-                                       Trace.TraceInformation("Enterが押されている");\r
-                                       Thread.Sleep(100);\r
-                                       if (Input管理.Keyboard.bキーが離された(0x75))\r
-                                       {\r
-                                               Trace.TraceInformation("Enterが離された");\r
-                                               break;\r
-                                       }\r
-                               }\r
-*/\r
                        }\r
                }\r
                private CScoreIni tScoreIniへBGMAdjustとHistoryとPlayCountを更新(string str新ヒストリ行)\r
index 5880793..68fdfeb 100644 (file)
@@ -55,6 +55,29 @@ namespace DTXMania
                UNKNOWN = 0x63,\r
                Wail = 4\r
        }\r
+       [Flags]\r
+       public enum EパッドFlag              // #24063 2011.1.16 yyagi コマンド入力用 パッド入力のフラグ化\r
+       {\r
+               None=0,\r
+               HH = 1,\r
+               R = 1,\r
+               SD = 2,\r
+               G = 2,\r
+               B = 4,\r
+               BD = 4,\r
+               HT = 8,\r
+               Pick = 8,\r
+               LT = 16,\r
+               Wail = 16,\r
+               FT = 32,\r
+               Cancel = 32,\r
+               CY = 64,\r
+               Decide = 128,\r
+               HHO = 128,\r
+               RD = 256,\r
+               LC = 512,\r
+               UNKNOWN = 1024\r
+       }\r
        public enum Eランダムモード\r
        {\r
                OFF,\r
index 2ee799e..751fe5e 100644 (file)
Binary files a/DTXManiaプロジェクト/作成資料/ScreenSelect skill number on gauge etc.psd and b/DTXManiaプロジェクト/作成資料/ScreenSelect skill number on gauge etc.psd differ
index 77728ef..2ba91fa 100644 (file)
Binary files a/実行時フォルダ/System/Graphics/ScreenSelect skill number on gauge etc.png and b/実行時フォルダ/System/Graphics/ScreenSelect skill number on gauge etc.png differ