Revision | 542 (tree) |
---|---|
Time | 2016-06-01 20:49:00 |
Author | kairera0467 |
#35742 ドラム譜面はランダム処理をしてからレーン数変更を行うようにした。
#35905 (XG風版のみ)演奏画面、リザルト画面でもスクリプトを使えるようにした。
#35943 Rebuild版(4.00RC)から、スキルメーターのコードを移植を行った。ただし、ギターでの動作の確認が足りない。
#35943 GITADORA風表示にスキルメーターを実装。一部機能は未実装、またギター画面での仕様が定まっていない。
#35943 ゴーストファイルから達成率等を計算する機能を実装。(使用できるのは演奏画面のみです。)
#36335 GITADORA風表示にゴースト機能を移植。
#xxxxx PrivateFontのコードを本家rev929を一部移植。
#xxxxx ターゲットフレームワークを.NET 3.5に変更。
#xxxxx StageEffectの画像仕様を、以前の仕様に戻した。
#xxxxx SongsDB生成時にdtxファイルを2回(ヘッダ無し1回、全体1回)読み込んでいたので、1回(全体1回)で読み込むよう修正。
#xxxxx Config画面の「InputAdjust」の項目を、アクセスしやすい位置に移動。
@@ -840,8 +840,8 @@ | ||
840 | 840 | { |
841 | 841 | try |
842 | 842 | { |
843 | - CDTX cdtx = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, true ); //2013.06.04 kairera0467 ここの「ヘッダのみ読み込む」をfalseにすると、選曲画面のBPM表示が狂う場合があるので注意。 | |
844 | - CDTX cdtx2 = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, false ); | |
843 | + CDTX cdtx = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, false ); //2013.06.04 kairera0467 ここの「ヘッダのみ読み込む」をfalseにすると、選曲画面のBPM表示が狂う場合があるので注意。 | |
844 | + //CDTX cdtx2 = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, false ); | |
845 | 845 | c曲リストノード.arスコア[ i ].譜面情報.タイトル = cdtx.TITLE; |
846 | 846 | c曲リストノード.arスコア[ i ].譜面情報.アーティスト名 = cdtx.ARTIST; |
847 | 847 | c曲リストノード.arスコア[ i ].譜面情報.コメント = cdtx.COMMENT; |
@@ -857,12 +857,12 @@ | ||
857 | 857 | c曲リストノード.arスコア[ i ].譜面情報.レベルDec.Guitar = cdtx.LEVELDEC.Guitar; |
858 | 858 | c曲リストノード.arスコア[ i ].譜面情報.レベルDec.Bass = cdtx.LEVELDEC.Bass; |
859 | 859 | c曲リストノード.arスコア[ i ].譜面情報.レベルを非表示にする = cdtx.HIDDENLEVEL; |
860 | - c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Drums = (cdtx2.bチップがある.LeftCymbal == false && cdtx2.bチップがある.LP == false && cdtx2.bチップがある.LBD == false && cdtx2.bチップがある.FT == false && cdtx2.bチップがある.Ride == false) ? true : false; | |
861 | - c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Guitar = !cdtx2.bチップがある.YPGuitar ? true : false; | |
862 | - c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Bass = !cdtx2.bチップがある.YPBass ? true : false; | |
863 | - c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Drums = cdtx2.bチップがある.Drums; | |
864 | - c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Guitar = cdtx2.bチップがある.Guitar; | |
865 | - c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Bass = cdtx2.bチップがある.Bass; | |
860 | + c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Drums = (cdtx.bチップがある.LeftCymbal == false && cdtx.bチップがある.LP == false && cdtx.bチップがある.LBD == false && cdtx.bチップがある.FT == false && cdtx.bチップがある.Ride == false) ? true : false; | |
861 | + c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Guitar = !cdtx.bチップがある.YPGuitar ? true : false; | |
862 | + c曲リストノード.arスコア[ i ].譜面情報.b完全にCLASSIC譜面である.Bass = !cdtx.bチップがある.YPBass ? true : false; | |
863 | + c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Drums = cdtx.bチップがある.Drums; | |
864 | + c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Guitar = cdtx.bチップがある.Guitar; | |
865 | + c曲リストノード.arスコア[ i ].譜面情報.b譜面がある.Bass = cdtx.bチップがある.Bass; | |
866 | 866 | c曲リストノード.arスコア[ i ].譜面情報.曲種別 = cdtx.e種別; |
867 | 867 | c曲リストノード.arスコア[ i ].譜面情報.Bpm = cdtx.BPM; |
868 | 868 | c曲リストノード.arスコア[ i ].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms; |
@@ -481,7 +481,7 @@ | ||
481 | 481 | public bool bSTAGEFAILED有効; |
482 | 482 | public STDGBVALUE<bool> bSudden; |
483 | 483 | public bool bTight; |
484 | - public bool bGraph有効; // #24074 2011.01.23 add ikanick | |
484 | + public STDGBVALUE<bool> bGraph有効; // #24074 2011.01.23 add ikanick | |
485 | 485 | public bool bWave再生位置自動調整機能有効; |
486 | 486 | public bool bシンバルフリー; |
487 | 487 | public bool bストイックモード; |
@@ -1808,7 +1808,9 @@ | ||
1808 | 1808 | |
1809 | 1809 | // #24074 2011.01.23 add ikanick |
1810 | 1810 | sw.WriteLine( "; グラフ表示(0:OFF, 1:ON)" ); |
1811 | - sw.WriteLine( "SkillMater={0}", this.bGraph有効 ? 1 : 0 ); | |
1811 | + sw.WriteLine( "DrumGraph={0}", this.bGraph有効.Drums ? 1 : 0 ); | |
1812 | + sw.WriteLine( "GuitarGraph={0}", this.bGraph有効.Guitar ? 1 : 0 ); | |
1813 | + sw.WriteLine( "BassGraph={0}", this.bGraph有効.Bass ? 1 : 0 ); | |
1812 | 1814 | sw.WriteLine(); |
1813 | 1815 | |
1814 | 1816 | sw.WriteLine("; ドラムコンボの表示(0:OFF, 1:ON)"); // #29500 2012.9.11 kairera0467 |
@@ -2859,10 +2861,18 @@ | ||
2859 | 2861 | //----------------------------- |
2860 | 2862 | case Eセクション種別.PlayOption: |
2861 | 2863 | { |
2862 | - if( str3.Equals( "SkillMater" ) ) // #24074 2011.01.23 addikanick | |
2864 | + if( str3.Equals( "DrumSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2863 | 2865 | { |
2864 | - this.bGraph有効 = C変換.bONorOFF( str4[ 0 ] ); | |
2866 | + this.bGraph有効.Drums = C変換.bONorOFF( str4[ 0 ] ); | |
2865 | 2867 | } |
2868 | + else if( str3.Equals( "GuitarSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2869 | + { | |
2870 | + this.bGraph有効.Guitar = C変換.bONorOFF( str4[ 0 ] ); | |
2871 | + } | |
2872 | + else if( str3.Equals( "BassSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2873 | + { | |
2874 | + this.bGraph有効.Bass = C変換.bONorOFF( str4[ 0 ] ); | |
2875 | + } | |
2866 | 2876 | else if( str3.Equals( "DrumsReverse" ) ) |
2867 | 2877 | { |
2868 | 2878 | this.bReverse.Drums = C変換.bONorOFF( str4[ 0 ] ); |
@@ -23,7 +23,7 @@ | ||
23 | 23 | { |
24 | 24 | // プロパティ |
25 | 25 | |
26 | - public static readonly string VERSION = "Ver3.51(160110)"; | |
26 | + public static readonly string VERSION = "Ver3.60(16----)"; | |
27 | 27 | public static readonly string SLIMDXDLL = "c_net20x86_Jun2010"; |
28 | 28 | public static readonly string D3DXDLL = "d3dx9_43.dll"; // June 2010 |
29 | 29 | //public static readonly string D3DXDLL = "d3dx9_42.dll"; // February 2010 |
@@ -450,15 +450,6 @@ | ||
450 | 450 | this.list項目リスト.Add(this.iSystemNamePlateType); |
451 | 451 | #endregion |
452 | 452 | |
453 | - // #24074 2011.01.23 add ikanick | |
454 | - this.iSystemGraph = new CItemToggle( "SkillMater", CDTXMania.ConfigIni.bGraph有効, | |
455 | - "最高スキルと比較できるグラフを表示します。\n" + | |
456 | - "(※現状ドラムパートのみ)\n" + | |
457 | - "オートプレイだと表示されません。", | |
458 | - "To draw Graph or not.\n"+ | |
459 | - "(drums only)"); | |
460 | - this.list項目リスト.Add( this.iSystemGraph ); | |
461 | - | |
462 | 453 | this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex, |
463 | 454 | "スキン切替:スキンを切り替えます。\n" + |
464 | 455 | "\n", |
@@ -885,16 +876,6 @@ | ||
885 | 876 | "You can specify from 1 to 99999." ); |
886 | 877 | this.list項目リスト.Add( this.iSystemMinComboDrums ); |
887 | 878 | |
888 | - // #23580 2011.1.3 yyagi | |
889 | - this.iDrumsInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums, | |
890 | - "ドラムの入力タイミングの微調整を行います。\n" + | |
891 | - "-99 ~ 99ms まで指定可能です。\n" + | |
892 | - "値を指定してください。\n", | |
893 | - "To adjust the drums input timing.\n" + | |
894 | - "You can set from -99 to 0ms.\n" + | |
895 | - "To decrease input lag, set minus value." ); | |
896 | - this.list項目リスト.Add( this.iDrumsInputAdjustTimeMs ); | |
897 | - | |
898 | 879 | this.iDrumsHHOGraphics = new CItemList("HHOGraphics", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eHHOGraphics.Drums, |
899 | 880 | "オープンハイハットの表示画像を変更します。\n" + |
900 | 881 | "A: DTXMania元仕様\n" + |
@@ -1021,6 +1002,22 @@ | ||
1021 | 1002 | new string[] { "OFF", "Mirror", "Part", "Super", "Hyper", "Master", "Another" }); |
1022 | 1003 | this.list項目リスト.Add(this.iDrumsRandomPedal); |
1023 | 1004 | |
1005 | + this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Drums, | |
1006 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1007 | + "オートプレイだと表示されません。", | |
1008 | + "To draw Graph or not." ); | |
1009 | + this.list項目リスト.Add( this.iDrumsGraph ); | |
1010 | + | |
1011 | + // #23580 2011.1.3 yyagi | |
1012 | + this.iDrumsInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums, | |
1013 | + "ドラムの入力タイミングの微調整を行います。\n" + | |
1014 | + "-99 ~ 99ms まで指定可能です。\n" + | |
1015 | + "値を指定してください。\n", | |
1016 | + "To adjust the drums input timing.\n" + | |
1017 | + "You can set from -99 to 0ms.\n" + | |
1018 | + "To decrease input lag, set minus value." ); | |
1019 | + this.list項目リスト.Add( this.iDrumsInputAdjustTimeMs ); | |
1020 | + | |
1024 | 1021 | this.iDrumsGoToKeyAssign = new CItemBase( "Drums Keys", CItemBase.Eパネル種別.通常, |
1025 | 1022 | "ドラムのキー入力に関する項目を設定します。", |
1026 | 1023 | "Settings for the drums key/pad inputs." ); |
@@ -1217,6 +1214,14 @@ | ||
1217 | 1214 | "Initial number to show the combo\n for the guitar.\nYou can specify from 1 to 99999." ); |
1218 | 1215 | this.list項目リスト.Add( this.iSystemMinComboGuitar ); |
1219 | 1216 | |
1217 | + this.iGuitarGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Guitar, | |
1218 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1219 | + "オートプレイだと表示されません。\n" + | |
1220 | + "この項目を有効にすると、ベースパートのグラフは\n" + | |
1221 | + "無効になります。", | |
1222 | + "To draw Graph or not." ); | |
1223 | + this.list項目リスト.Add( this.iGuitarGraph ); | |
1224 | + | |
1220 | 1225 | // #23580 2011.1.3 yyagi |
1221 | 1226 | this.iGuitarInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar, |
1222 | 1227 | "ギターの入力タイミングの微調整を行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、\n負の値を指定してください。", |
@@ -1410,6 +1415,14 @@ | ||
1410 | 1415 | ""); |
1411 | 1416 | this.list項目リスト.Add( this.iBassShutterOutPos ); |
1412 | 1417 | |
1418 | + this.iBassGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Bass, | |
1419 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1420 | + "オートプレイだと表示されません。\n" + | |
1421 | + "この項目を有効にすると、ギターパートのグラフは\n" + | |
1422 | + "無効になります。", | |
1423 | + "To draw Graph or not." ); | |
1424 | + this.list項目リスト.Add( this.iBassGraph ); | |
1425 | + | |
1413 | 1426 | // #23580 2011.1.3 yyagi |
1414 | 1427 | this.iBassInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass, |
1415 | 1428 | "ベースの入力タイミングの微調整を行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、\n負の値を指定してください。", |
@@ -2578,7 +2591,7 @@ | ||
2578 | 2591 | private CItemList iSystemSkillMode; |
2579 | 2592 | private CItemToggle iMutingLP; |
2580 | 2593 | private CItemToggle iSystemClassicNotes; |
2581 | - private CItemToggle iSystemGraph; // #24074 2011.01.23 add ikanick | |
2594 | + //private CItemToggle iSystemGraph; // #24074 2011.01.23 add ikanick | |
2582 | 2595 | |
2583 | 2596 | #region [ GDオプション ] |
2584 | 2597 | /* |
@@ -2657,6 +2670,7 @@ | ||
2657 | 2670 | private CItemInteger iBassShutterInPos; |
2658 | 2671 | private CItemInteger iBassShutterOutPos; |
2659 | 2672 | private CItemToggle iBassLaneFlush; |
2673 | + private CItemToggle iBassGraph; | |
2660 | 2674 | |
2661 | 2675 | private CItemInteger iCommonPlaySpeed; |
2662 | 2676 | // private CItemBase iCommonReturnToMenu; |
@@ -2698,6 +2712,7 @@ | ||
2698 | 2712 | private CItemInteger iDrumsShutterInPos; |
2699 | 2713 | private CItemInteger iDrumsShutterOutPos; |
2700 | 2714 | private CItemToggle iDrumsComboDisp; |
2715 | + private CItemToggle iDrumsGraph; | |
2701 | 2716 | |
2702 | 2717 | //private CItemToggle iGuitarAutoPlay; |
2703 | 2718 | private CItemThreeState iGuitarAutoPlayAll; // #23886 2012.5.8 yyagi |
@@ -2725,6 +2740,7 @@ | ||
2725 | 2740 | private CItemInteger iGuitarShutterInPos; |
2726 | 2741 | private CItemInteger iGuitarShutterOutPos; |
2727 | 2742 | private CItemToggle iGuitarLaneFlush; |
2743 | + private CItemToggle iGuitarGraph; | |
2728 | 2744 | |
2729 | 2745 | private CItemInteger iDrumsInputAdjustTimeMs; // #23580 2011.1.3 yyagi |
2730 | 2746 | private CItemInteger iGuitarInputAdjustTimeMs; // |
@@ -2818,7 +2834,6 @@ | ||
2818 | 2834 | CDTXMania.ConfigIni.bAVI有効 = this.iSystemAVI.bON; |
2819 | 2835 | CDTXMania.ConfigIni.bBGA有効 = this.iSystemBGA.bON; |
2820 | 2836 | CDTXMania.ConfigIni.bDirectShowMode = this.iSystemDirectShowMode.bON; |
2821 | - CDTXMania.ConfigIni.bGraph有効 = this.iSystemGraph.bON; | |
2822 | 2837 | CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = this.iSystemPreviewSoundWait.n現在の値; |
2823 | 2838 | CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = this.iSystemPreviewImageWait.n現在の値; |
2824 | 2839 | CDTXMania.ConfigIni.b演奏情報を表示する = this.iSystemDebugInfo.bON; |
@@ -2907,6 +2922,7 @@ | ||
2907 | 2922 | |
2908 | 2923 | CDTXMania.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON; |
2909 | 2924 | CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値; |
2925 | + CDTXMania.ConfigIni.bGraph有効.Bass = this.iBassGraph.bON; | |
2910 | 2926 | } |
2911 | 2927 | private void tConfigIniへ記録する・Drums() |
2912 | 2928 | { |
@@ -2964,6 +2980,7 @@ | ||
2964 | 2980 | CDTXMania.ConfigIni.nShutterOutSide.Drums = this.iDrumsShutterOutPos.n現在の値; |
2965 | 2981 | CDTXMania.ConfigIni.bドラムコンボ文字の表示 = this.iDrumsComboDisp.bON; |
2966 | 2982 | |
2983 | + CDTXMania.ConfigIni.bGraph有効.Drums = this.iDrumsGraph.bON; | |
2967 | 2984 | //CDTXMania.ConfigIni.eDark = (Eダークモード) this.iCommonDark.n現在選択されている項目番号; // ダークはプリセット切り替えとして使うため、保存はしない。 |
2968 | 2985 | } |
2969 | 2986 | private void tConfigIniへ記録する・Guitar() |
@@ -2995,6 +3012,7 @@ | ||
2995 | 3012 | |
2996 | 3013 | CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar = this.iSystemMinComboGuitar.n現在の値; |
2997 | 3014 | CDTXMania.ConfigIni.b演奏音を強調する.Guitar = this.iSystemSoundMonitorGuitar.bON; |
3015 | + CDTXMania.ConfigIni.bGraph有効.Guitar = this.iGuitarGraph.bON; | |
2998 | 3016 | } |
2999 | 3017 | //----------------- |
3000 | 3018 | #endregion |
@@ -339,8 +339,9 @@ | ||
339 | 339 | if (this.txリザルトパネル != null) |
340 | 340 | this.txリザルトパネル.t2D描画(CDTXMania.app.Device, this.n本体X[i], this.n本体Y[i]); |
341 | 341 | |
342 | - if (this.txDifficulty != null) | |
343 | - this.txDifficulty.t2D描画(CDTXMania.app.Device, this.n本体X[i] + 510, this.n本体Y[i] + 8, new Rectangle(0, CDTXMania.nSongDifficulty * 20, 120, 20)); | |
342 | + //if (this.txDifficulty != null) | |
343 | + // this.txDifficulty.t2D描画(CDTXMania.app.Device, this.n本体X[i] + 510, this.n本体Y[i] + 8, new Rectangle(0, CDTXMania.nSongDifficulty * 20, 120, 20)); | |
344 | + this.t難易度パネルを描画する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ], 941, 19 ); | |
344 | 345 | |
345 | 346 | if (this.txPart != null) |
346 | 347 | this.txPart.t2D描画(CDTXMania.app.Device, this.n本体X[i] + 388, this.n本体Y[i] + 8, new Rectangle(0, 0 + (20 * i), 120, 20)); |
@@ -499,9 +500,7 @@ | ||
499 | 500 | private CTexture txRisky; |
500 | 501 | private CTexture txリザルトパネル; |
501 | 502 | private CTexture[] tx文字; |
502 | - protected Rectangle rectDiffPanelPoint; | |
503 | 503 | |
504 | - | |
505 | 504 | private void t小文字表示(int x, int y, string str) |
506 | 505 | { |
507 | 506 | this.t小文字表示(x, y, str, false); |
@@ -613,10 +612,12 @@ | ||
613 | 612 | } |
614 | 613 | } |
615 | 614 | } |
616 | - private void tスクリプトから難易度ラベルを取得する( string strラベル名 ) | |
615 | + private void t難易度パネルを描画する( string strラベル名, int nX, int nY ) | |
617 | 616 | { |
618 | 617 | string strRawScriptFile; |
619 | 618 | |
619 | + Rectangle rect = new Rectangle( 0, 0, 120, 20 ); | |
620 | + | |
620 | 621 | //ファイルの存在チェック |
621 | 622 | if( File.Exists( CSkin.Path( @"Script\difficult.dtxs" ) ) ) |
622 | 623 | { |
@@ -660,13 +661,15 @@ | ||
660 | 661 | continue; //ラベル名が違うなら無視。大文字小文字区別しない |
661 | 662 | } |
662 | 663 | } |
663 | - this.rectDiffPanelPoint.X = Convert.ToInt32( arScriptLine[ 2 ] ); | |
664 | - this.rectDiffPanelPoint.Y = Convert.ToInt32( arScriptLine[ 3 ] ); | |
664 | + rect.X = Convert.ToInt32( arScriptLine[ 2 ] ); | |
665 | + rect.Y = Convert.ToInt32( arScriptLine[ 3 ] ); | |
665 | 666 | |
666 | - reader.Close(); | |
667 | 667 | break; |
668 | 668 | } |
669 | 669 | } |
670 | + | |
671 | + if( this.txDifficulty != null ) | |
672 | + this.txDifficulty.t2D描画( CDTXMania.app.Device, nX, nY, rect ); | |
670 | 673 | } |
671 | 674 | //----------------- |
672 | 675 | #endregion |
@@ -12,19 +12,28 @@ | ||
12 | 12 | { |
13 | 13 | internal class CAct演奏スキルメーター : CActivity |
14 | 14 | { |
15 | - // #24074 2011.01.23 ikanick グラフの描画 | |
16 | - // 実装内容 | |
17 | - // ・左を現在、右を目標 | |
18 | - // ・基準線(60,70,80,90,100%)を超えると線が黄色くなる(元は白) | |
19 | - // ・目標を超えると現在が光る | |
20 | - // ・オート時には描画しない | |
21 | - // 要望・実装予定 | |
22 | - // ・グラフを波打たせるなどの視覚の向上→実装済 | |
23 | - // 修正等 | |
24 | - // ・画像がないと落ちる→修正済 | |
15 | + // グラフ仕様 | |
16 | + // ・ギターとベースで同時にグラフを出すことはない。 | |
17 | + // | |
18 | + // ・目標のメーター画像 | |
19 | + // →ゴーストがあった | |
20 | + // ・ゴーストに基づいたグラフ(リアルタイム比較) | |
21 | + // →なかった | |
22 | + // ・ScoreIniの自己ベストのグラフ | |
23 | + // | |
25 | 24 | |
26 | - // プロパティ | |
25 | + private STDGBVALUE<int> nGraphBG_XPos = new STDGBVALUE<int>(); //ドラムにも座標指定があるためDGBVALUEとして扱う。 | |
26 | + private int nGraphBG_YPos = 200; | |
27 | + private int DispHeight = 400; | |
28 | + private int DispWidth = 60; | |
29 | + private CCounter counterYposInImg = null; | |
30 | + private readonly int slices = 10; | |
31 | + private int nGraphUsePart = 0; | |
32 | + private int[] nGraphGauge_XPos = new int[ 2 ]; | |
33 | + private int nPart = 0; | |
27 | 34 | |
35 | + // プロパティ | |
36 | + | |
28 | 37 | public double dbグラフ値現在_渡 |
29 | 38 | { |
30 | 39 | get |
@@ -36,73 +45,60 @@ | ||
36 | 45 | this.dbグラフ値現在 = value; |
37 | 46 | } |
38 | 47 | } |
39 | - public double dbグラフ値ゴースト_渡 //2015.12.31 kairera0467 XG2を見る限り、ゴースト数値はゲージ画像と比較数値にしか使用されていないので、ゴースト数値と目標値は別に扱うことにした。 | |
48 | + public double dbグラフ値目標_渡 | |
40 | 49 | { |
41 | 50 | get |
42 | 51 | { |
43 | - return this.dbグラフ値ゴースト; | |
52 | + return this.dbグラフ値目標; | |
44 | 53 | } |
45 | 54 | set |
46 | 55 | { |
47 | - this.dbグラフ値ゴースト = value; | |
56 | + this.dbグラフ値目標 = value; | |
48 | 57 | } |
49 | 58 | } |
50 | - public double dbグラフ値目標_渡 | |
59 | + public int[] n現在のAutoを含まない判定数_渡 | |
51 | 60 | { |
52 | 61 | get |
53 | 62 | { |
54 | - return this.dbグラフ値目標; | |
63 | + return this.n現在のAutoを含まない判定数; | |
55 | 64 | } |
56 | 65 | set |
57 | 66 | { |
58 | - this.dbグラフ値目標 = value; | |
67 | + this.n現在のAutoを含まない判定数 = value; | |
59 | 68 | } |
60 | 69 | } |
70 | + | |
71 | + // コンストラクタ | |
61 | 72 | |
62 | - // コンストラクタ | |
73 | + public CAct演奏スキルメーター() | |
74 | + { | |
75 | + base.b活性化してない = true; | |
76 | + } | |
63 | 77 | |
64 | - public CAct演奏スキルメーター() | |
65 | - { | |
66 | - //スクリプト化の都合で、ここに置いていたコードは移動。活性化のタイミングで実行するようにした。 | |
67 | - base.b活性化してない = true; | |
68 | - } | |
69 | 78 | |
79 | + // CActivity 実装 | |
70 | 80 | |
71 | - // CActivity 実装 | |
72 | - | |
73 | - public override void On活性化() | |
81 | + public override void On活性化() | |
74 | 82 | { |
75 | - this.n本体X = 966; | |
76 | - this.list文字位置 = new List<ST文字位置>(); | |
77 | - this.t座標スクリプトを読み込む(); | |
78 | - | |
79 | - this.dbグラフ値目標 = 80f; | |
83 | + this.dbグラフ値目標 = 0f; | |
80 | 84 | this.dbグラフ値現在 = 0f; |
81 | - this.dbグラフ値比較 = 0f; | |
82 | - this.dbグラフ値ゴースト = 0f; | |
83 | - this.db現在の判定数合計 = 0f; | |
84 | 85 | |
85 | - this.dbグラフ値現在_表示 = 0f; | |
86 | - this.dbグラフ値目標_表示 = 0f; | |
87 | - this.dbグラフ値ゴースト_表示 = 0f; | |
88 | - this.bUseGhost = false; | |
89 | - base.On活性化(); | |
90 | - } | |
91 | - public override void On非活性化() | |
92 | - { | |
93 | - base.On非活性化(); | |
94 | - } | |
95 | - public override void OnManagedリソースの作成() | |
96 | - { | |
97 | - if (!base.b活性化してない) | |
98 | - { | |
86 | + this.n現在のAutoを含まない判定数 = new int[ 6 ]; | |
87 | + | |
88 | + base.On活性化(); | |
89 | + } | |
90 | + public override void On非活性化() | |
91 | + { | |
92 | + base.On非活性化(); | |
93 | + } | |
94 | + public override void OnManagedリソースの作成() | |
95 | + { | |
96 | + if( !base.b活性化してない ) | |
97 | + { | |
99 | 98 | this.pfNameFont = new CPrivateFastFont( new FontFamily( "Arial" ), 16, FontStyle.Bold ); |
99 | + this.txグラフ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_Main.png" ) ); | |
100 | + this.txグラフ_ゲージ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_Gauge.png" ) ); | |
100 | 101 | |
101 | - this.txグラフ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_main.png" ) ); | |
102 | - this.tx比較 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_main.png" ) ); | |
103 | - this.txグラフバックパネル = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\7_Graph_main.png" ) ); | |
104 | - this.txグラフゲージ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_Gauge.png" ) ); | |
105 | - | |
106 | 102 | if( this.pfNameFont != null ) |
107 | 103 | { |
108 | 104 | if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.PERFECT ) |
@@ -114,421 +110,376 @@ | ||
114 | 110 | this.txPlayerName = this.t指定された文字テクスチャを生成する( "LAST PLAY" ); |
115 | 111 | } |
116 | 112 | } |
117 | - base.OnManagedリソースの作成(); | |
118 | - } | |
119 | - } | |
120 | - public override void OnManagedリソースの解放() | |
121 | - { | |
122 | - if (!base.b活性化してない) | |
123 | - { | |
124 | - CDTXMania.tテクスチャの解放( ref this.txグラフ ); | |
125 | - CDTXMania.tテクスチャの解放( ref this.tx比較 ); | |
126 | - CDTXMania.tテクスチャの解放( ref this.txグラフバックパネル ); | |
127 | - CDTXMania.tテクスチャの解放( ref this.txPlayerName ); | |
128 | - base.OnManagedリソースの解放(); | |
129 | - } | |
130 | - } | |
131 | - public override int On進行描画() | |
132 | - { | |
133 | - if( !base.b活性化してない ) | |
134 | - { | |
135 | - if( base.b初めての進行描画 ) | |
136 | - { | |
113 | + base.OnManagedリソースの作成(); | |
114 | + } | |
115 | + } | |
116 | + public override void OnManagedリソースの解放() | |
117 | + { | |
118 | + if( !base.b活性化してない ) | |
119 | + { | |
120 | + CDTXMania.tテクスチャの解放( ref this.txグラフ ); | |
121 | + CDTXMania.tテクスチャの解放( ref this.txグラフ_ゲージ ); | |
122 | + CDTXMania.tテクスチャの解放( ref this.txグラフ値自己ベストライン ); | |
123 | + base.OnManagedリソースの解放(); | |
124 | + } | |
125 | + } | |
126 | + public override int On進行描画() | |
127 | + { | |
128 | + if( !base.b活性化してない ) | |
129 | + { | |
130 | + if( base.b初めての進行描画 ) | |
131 | + { | |
132 | + //座標などの定義は初回だけにする。 | |
133 | + //2016.03.29 kairera0467 非セッション譜面で、譜面が無いパートでグラフを有効にしている場合、譜面があるパートに一時的にグラフを切り替える。 | |
134 | + // 時間がなくて雑なコードになったため、後日最適化を行う。 | |
137 | 135 | if( CDTXMania.ConfigIni.bDrums有効 ) |
138 | 136 | { |
139 | - this.eGraphUsePart = E楽器パート.DRUMS; | |
137 | + this.nPart = 0; | |
138 | + this.nGraphUsePart = 0; | |
140 | 139 | } |
141 | 140 | else if( CDTXMania.ConfigIni.bGuitar有効 ) |
142 | 141 | { |
142 | + this.nGraphUsePart = ( CDTXMania.ConfigIni.bGraph有効.Guitar == true ) ? 1 : 2; | |
143 | + if( CDTXMania.DTX.bチップがある.Guitar ) | |
144 | + this.nPart = CDTXMania.ConfigIni.bGraph有効.Guitar ? 0 : 1; | |
145 | + else if( !CDTXMania.DTX.bチップがある.Guitar && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
146 | + { | |
147 | + this.nPart = 1; | |
148 | + this.nGraphUsePart = 2; | |
149 | + } | |
143 | 150 | |
151 | + if( !CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
152 | + this.nPart = 0; | |
144 | 153 | } |
145 | - this.ct爆発エフェクト = new CCounter(0, 13, 20, CDTXMania.Timer); | |
146 | - base.b初めての進行描画 = false; | |
147 | - } | |
148 | - #region[ 事前に各種数値を定義しておく ] | |
149 | - double db1ノーツごとの達成率 = (double)this.dbグラフ値目標 / CDTXMania.DTX.n可視チップ数.Drums; | |
150 | - this.n現在演奏されたノーツ数 = | |
151 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む.Drums.Perfect + | |
152 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む.Drums.Great + | |
153 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む.Drums.Good + | |
154 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む.Drums.Poor + | |
155 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む.Drums.Miss; | |
156 | - CScoreIni.C演奏記録 drums = new CScoreIni.C演奏記録(); | |
157 | - double rate = (double)n現在演奏されたノーツ数 / (double)CDTXMania.DTX.n可視チップ数.Drums; | |
158 | 154 | |
159 | - //ゴースト判別 | |
160 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.PERFECT ) | |
161 | - { | |
162 | - bUseGhost = true; //AUTOの場合は無条件で使用可能。 | |
163 | - this.dbグラフ値目標 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; | |
164 | - } | |
165 | - else if( CDTXMania.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE ) | |
166 | - { | |
167 | - bUseGhost = true; | |
168 | - //ゴーストデータはあるけどゴーストスコアデータが無い場合はScoreIni側から持ってくる。 | |
169 | - if( CDTXMania.listTargetGhsotLag.Drums != null && CDTXMania.listTargetGhostScoreData.Drums != null ) | |
155 | + this.nGraphBG_XPos.Drums = 966; | |
156 | + this.nGraphBG_XPos.Guitar = 356; | |
157 | + this.nGraphBG_XPos.Bass = 647; | |
158 | + this.nGraphBG_YPos = 50; | |
159 | + | |
160 | + if( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] != ETargetGhostData.NONE ) | |
170 | 161 | { |
171 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.PERFECT || CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.LAST_PLAY ) | |
172 | - this.dbグラフ値目標 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; | |
173 | - else | |
174 | - this.dbグラフ値目標 = CDTXMania.listTargetGhostScoreData.Drums.db演奏型スキル値; | |
162 | + if( CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
163 | + { | |
164 | + //this.dbグラフ値目標 = CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ].db演奏型スキル値; | |
165 | + this.dbグラフ値目標_表示 = CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ].db演奏型スキル値; | |
166 | + } | |
175 | 167 | } |
176 | - else | |
177 | - { | |
178 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums != ETargetGhostData.LAST_PLAY ) | |
179 | - this.dbグラフ値目標 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; | |
180 | - } | |
181 | - } | |
182 | - #endregion | |
183 | 168 | |
184 | - Rectangle rectangle = new Rectangle( 2, 2, 280, 720 ); | |
185 | - //グラフの背景 | |
186 | - if( this.txグラフバックパネル != null ) | |
187 | - { | |
188 | - this.txグラフバックパネル.t2D描画( CDTXMania.app.Device, this.stグラフ背景.nX, this.stグラフ背景.nY, this.stグラフ背景.rect ); | |
169 | + this.nGraphGauge_XPos = new int[] { 3, 205 }; | |
170 | + | |
171 | + base.b初めての進行描画 = false; | |
189 | 172 | } |
190 | 173 | |
191 | - //比較対象 | |
174 | + int stYposInImg = 0; | |
175 | + | |
176 | + | |
177 | + | |
192 | 178 | if( this.txグラフ != null ) |
193 | 179 | { |
194 | - int nTarget = 0; | |
180 | + //背景 | |
181 | + this.txグラフ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); | |
182 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos, new Rectangle( 2, 2, 280, 640 ) ); | |
183 | + | |
184 | + //ターゲット名 | |
185 | + #region[ ターゲット名画像座標 ] | |
186 | + int nTargetNameRectY = 0; | |
195 | 187 | switch( CDTXMania.ConfigIni.eTargetGhost.Drums ) |
196 | 188 | { |
197 | 189 | case ETargetGhostData.NONE: |
190 | + nTargetNameRectY = 556; | |
198 | 191 | break; |
192 | + case ETargetGhostData.HI_SKILL: | |
193 | + nTargetNameRectY = 588; | |
194 | + break; | |
199 | 195 | case ETargetGhostData.PERFECT: |
200 | - nTarget = 1; | |
196 | + nTargetNameRectY = 572; | |
201 | 197 | break; |
202 | - case ETargetGhostData.HI_SKILL: | |
203 | - nTarget = 2; | |
198 | + case ETargetGhostData.LAST_PLAY: | |
199 | + nTargetNameRectY = 636; | |
204 | 200 | break; |
205 | 201 | case ETargetGhostData.HI_SCORE: |
206 | - nTarget = 3; | |
202 | + nTargetNameRectY = 604; | |
207 | 203 | break; |
208 | - case ETargetGhostData.LAST_PLAY: | |
209 | - nTarget = 5; | |
204 | + case ETargetGhostData.ONLINE: | |
205 | + nTargetNameRectY = 620; | |
210 | 206 | break; |
211 | 207 | } |
212 | - if( !bUseGhost ) nTarget = 0; | |
208 | + #endregion | |
209 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + ( nPart == 1 ? 189 : 2), nGraphBG_YPos + 611, new Rectangle( 288, 652, 48, 16 ) ); | |
210 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + ( nPart == 1 ? 218 : 30 ), nGraphBG_YPos + 611, new Rectangle( 288, nTargetNameRectY, 48, 16 ) ); | |
213 | 211 | |
214 | - this.txグラフ.n透明度 = 255; | |
215 | - this.txグラフ.t2D描画( CDTXMania.app.Device, 32 + this.n本体X, 662, new Rectangle( 288, 556 + ( nTarget * 16 ), 48, 16 ) ); | |
216 | - } | |
212 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + ( this.nPart == 1 ? 172 : 90 ), nGraphBG_YPos + 600, new Rectangle( ( this.nPart == 1 ? 452 : 434), 556, 18, 28 ) ); | |
213 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + ( this.nPart == 1 ? 6 : 115 ), nGraphBG_YPos + 600, new Rectangle( 342, 556, 86, 28 ) ); | |
217 | 214 | |
218 | - this.dbグラフ値現在_表示 = this.dbグラフ値現在; | |
219 | - if( this.txグラフゲージ != null ) | |
220 | - { | |
221 | - //複雑な計算が必要になったよコンチキショウ! | |
222 | - //グラフ(100%時)のY座標にグラフ全体の高さを足す。これで0%時のY座標が算出できる。 | |
223 | - int gaugeY = this.stゲージ現在.nY + this.stゲージ現在.rect.Height; | |
224 | - this.txグラフゲージ.n透明度 = 255; | |
225 | - this.txグラフゲージ.t2D描画( CDTXMania.app.Device, this.stゲージ現在.nX, gaugeY - (int)( (float)this.stゲージ現在.rect.Height * this.dbグラフ値現在_表示 / 100.0f ), new Rectangle( this.stゲージ現在.rect.X, this.stゲージ現在.rect.Y, this.stゲージ現在.rect.Width, (int)( (float)this.stゲージ現在.rect.Height * this.dbグラフ値現在_表示 / 100.0f ) ) ); | |
226 | - } | |
227 | 215 | |
228 | - //矢印模様 | |
229 | - if( this.txグラフゲージ != null ) | |
230 | - { | |
231 | - this.txグラフゲージ.n透明度 = 32; | |
232 | - this.txグラフゲージ.t2D描画( CDTXMania.app.Device, 9 + this.n本体X, 90, new Rectangle( 550, 2, 60, 560 ) ); | |
233 | - | |
234 | - this.txグラフゲージ.n透明度 = 255; | |
216 | + //現在の達成率 | |
217 | + //2Pはおおよその目分量です。 | |
218 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + ( this.nPart == 1 ? 96 : 207 ), nGraphBG_YPos + 606, string.Format( "{0,6:##0.00}", this.dbグラフ値現在 ) ); | |
235 | 219 | } |
236 | 220 | |
237 | - // 基準線 | |
238 | - rectangle = new Rectangle(78, 0, 60, 3); | |
239 | - for (int i = 0; i < 6; i++) | |
221 | + //ゲージ現在 | |
222 | + if( this.txグラフ_ゲージ != null ) | |
240 | 223 | { |
241 | - //560.0 * this.dbグラフ値ゴースト_表示 / 100.0 | |
242 | - //グラフ下部 649 | |
243 | - int linepos = 0; | |
244 | - double target = 0.0; | |
245 | - switch( i ) | |
246 | - { | |
247 | - case 0:{ linepos = 0; target = 100.0; } | |
248 | - break; | |
249 | - case 1:{ linepos = 28; target = 95.0; } | |
250 | - break; | |
251 | - case 2:{ linepos = 112; target = 80.0; } | |
252 | - break; | |
253 | - case 3:{ linepos = 151; target = 73.0; } | |
254 | - break; | |
255 | - case 4:{ linepos = 207; target = 63.0; } | |
256 | - break; | |
257 | - case 5:{ linepos = 263; target = 53.0; } | |
258 | - break; | |
259 | - } | |
224 | + //ゲージ背景 | |
225 | + //ドラムとギター1Pでは左端、ギター2Pでは右端。 | |
226 | + this.txグラフ_ゲージ.n透明度 = 255; | |
227 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + this.nGraphGauge_XPos[ nPart ], nGraphBG_YPos + 40, new Rectangle( 418, 2, 72, 560 ) ); | |
260 | 228 | |
261 | - // 基準線を越えたら線が黄色くなる | |
262 | - if( this.dbグラフ値現在 >= target ) | |
263 | - { | |
264 | - rectangle = this.stゲージ基準線達成.rect;//黄色 | |
265 | - } | |
266 | - else | |
267 | - { | |
268 | - rectangle = this.stゲージ基準線.rect; | |
269 | - if (this.txグラフ != null) | |
270 | - { | |
271 | - this.txグラフ.n透明度 = 160; | |
272 | - } | |
273 | - } | |
229 | + //ゲージ本体 | |
230 | + int nGaugeSize = (int)( 560.0f * (float)this.dbグラフ値現在 / 100.0f ); | |
231 | + int nPosY = 650 - nGaugeSize; | |
232 | + this.txグラフ_ゲージ.n透明度 = 255; | |
233 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + this.nGraphGauge_XPos[ nPart ] + 7, nPosY, new Rectangle( 628, 2, 60, nGaugeSize ) ); | |
274 | 234 | |
275 | - if( this.txグラフ != null && CDTXMania.ConfigIni.nSkillMode == 1 ) | |
276 | - { | |
277 | - this.txグラフ.t2D描画( CDTXMania.app.Device, this.stゲージ基準線.nX, this.stゲージ基準線.nY + linepos, rectangle ); | |
278 | - } | |
279 | - } | |
235 | + //ゲージ矢印 | |
236 | + this.txグラフ_ゲージ.n透明度 = 32; | |
237 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + this.nGraphGauge_XPos[ nPart ] + 3, nGraphBG_YPos + 40, new Rectangle( 562, 2, 60, 560 ) ); | |
280 | 238 | |
281 | - this.dbグラフ値直前 = this.dbグラフ値現在; | |
239 | + //ゲージ比較 | |
240 | + int nTargetGaugeSize = (int)( 560.0f * ( (float)this.dbグラフ値目標 / 100.0f ) ); | |
241 | + int nTargetGaugePosY = 650 - nTargetGaugeSize; | |
242 | + int nTargetGaugeRectX = this.dbグラフ値現在 > this.dbグラフ値目標 ? 2 : 210; | |
243 | + this.txグラフ_ゲージ.n透明度 = 255; | |
244 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + ( nPart == 1 ? 3 : 75 ), nTargetGaugePosY, new Rectangle( nTargetGaugeRectX, 2, 201, nTargetGaugeSize ) ); | |
282 | 245 | |
283 | - // --目標値 | |
284 | - this.dbグラフ値目標_表示 = this.dbグラフ値目標; | |
285 | - | |
286 | - db現在の判定数合計 = 0; | |
287 | - | |
288 | - this.dbグラフ値ゴースト_表示 = this.dbグラフ値ゴースト; | |
289 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.NONE || CDTXMania.listTargetGhsotLag.Drums == null ) | |
290 | - { | |
291 | - //ゴーストを使用しない、またはゴーストのラグデータが無い場合は大きさを固定する。 | |
292 | - this.dbグラフ値ゴースト_表示 = this.dbグラフ値目標_表示; | |
246 | + string strPlus = this.dbグラフ値現在 >= this.dbグラフ値目標 ? "+" : "-"; | |
247 | + this.t比較文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + this.nGraphGauge_XPos[ nPart ] + 7, nPosY, string.Format( strPlus + "{0,5:#0.00}", Math.Abs( this.dbグラフ値現在 - this.dbグラフ値目標 ) ) ); | |
293 | 248 | } |
294 | - rectangle = new Rectangle(138, 0, 72, (int)(556.0 * this.dbグラフ値ゴースト_表示 / 100.0)); | |
295 | - if( this.txグラフゲージ != null ) | |
296 | - { | |
297 | - int gaugeTargetYF = this.stゲージ比較_敗.nY + this.stゲージ比較_敗.rect.Height; | |
298 | - int gaugeTargetYC = this.stゲージ比較_勝.nY + this.stゲージ比較_勝.rect.Height; | |
299 | - if( this.bUseGhost == false ) | |
300 | - { | |
301 | - this.txグラフゲージ.t2D描画( CDTXMania.app.Device, this.stゲージ比較_敗.nX, gaugeTargetYF - (int)(this.stゲージ比較_敗.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0), new Rectangle( this.stゲージ比較_敗.rect.X, this.stゲージ比較_敗.rect.Y, this.stゲージ比較_敗.rect.Width, (int)( (float)this.stゲージ比較_敗.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0 ) ) ); | |
302 | - } | |
303 | - else | |
304 | - { | |
305 | - if( this.dbグラフ値ゴースト_表示 < this.dbグラフ値現在 ) | |
306 | - { | |
307 | - this.txグラフゲージ.t2D描画( CDTXMania.app.Device, this.stゲージ比較_敗.nX, gaugeTargetYF - (int)(this.stゲージ比較_敗.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0), new Rectangle( this.stゲージ比較_敗.rect.X, this.stゲージ比較_敗.rect.Y, this.stゲージ比較_敗.rect.Width, (int)( (float)this.stゲージ比較_敗.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0 ) ) ); | |
308 | - } | |
309 | - else | |
310 | - { | |
311 | - this.txグラフゲージ.t2D描画( CDTXMania.app.Device, this.stゲージ比較_勝.nX, gaugeTargetYC - (int)(this.stゲージ比較_勝.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0), new Rectangle( this.stゲージ比較_勝.rect.X, this.stゲージ比較_勝.rect.Y, this.stゲージ比較_勝.rect.Width, (int)( (float)this.stゲージ比較_勝.rect.Height * this.dbグラフ値ゴースト_表示 / 100.0 ) ) ); | |
312 | - } | |
313 | - } | |
314 | 249 | |
315 | - } | |
316 | - | |
317 | - | |
318 | - this.t小文字表示(204 + this.n本体X, 658, string.Format("{0,6:##0.00}%", this.dbグラフ値現在)); | |
319 | - if( CDTXMania.ConfigIni.nInfoType == 0 ) //達成率表示 | |
250 | + if( this.txグラフ != null ) | |
320 | 251 | { |
321 | - if( bUseGhost == true ) | |
252 | + if( CDTXMania.ConfigIni.nInfoType == 0 ) | |
322 | 253 | { |
323 | - double dbTargetSkill = 0.0; | |
324 | - if( CDTXMania.listTargetGhostScoreData.Drums != null ) | |
325 | - { | |
326 | - dbTargetSkill = CDTXMania.listTargetGhostScoreData.Drums.db演奏型スキル値; | |
327 | - } | |
254 | + int nBoardPos = 180; | |
255 | + int[] nBoardX = new int[] { 102, 16 }; | |
256 | + int[,] nBoardY = new int[,] { { 180, 265 }, { 240, 180 } }; | |
257 | + int nBoard = 0; | |
258 | + | |
259 | + if( this.dbグラフ値自己ベスト > this.dbグラフ値目標_表示 ) | |
260 | + nBoard = 1; | |
328 | 261 | else |
329 | - { | |
330 | - //dbTargetSkill = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; | |
331 | - } | |
332 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.PERFECT ) | |
333 | - dbTargetSkill = 100.0; | |
262 | + nBoard = 0; | |
334 | 263 | |
335 | - switch( CDTXMania.ConfigIni.eTargetGhost.Drums ) | |
264 | + //ゴーストが存在するか | |
265 | + if( CDTXMania.listTargetGhsotLag[ this.nGraphUsePart ] != null ) | |
336 | 266 | { |
337 | - case ETargetGhostData.PERFECT: | |
338 | - case ETargetGhostData.LAST_PLAY: | |
267 | + if( CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
268 | + { | |
269 | + switch( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] ) | |
339 | 270 | { |
340 | - //LASTまたはAUTOの場合は自己ベストも表示させる。 | |
341 | - int ntargetPos = 200; | |
342 | - int nbestskillPos = 290; | |
343 | - if( dbTargetSkill <= this.dbグラフ値目標 ) | |
344 | - { | |
345 | - ntargetPos = 260; | |
346 | - nbestskillPos = 200; | |
347 | - } | |
271 | + case ETargetGhostData.PERFECT: | |
272 | + { | |
273 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardY[ nBoard, 0 ], new Rectangle( 288, 2, 162, 85 ) ); | |
274 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardY[ nBoard, 0 ] + 50, string.Format( "{0,6:##0.00}%", this.dbグラフ値目標_表示 ) ); | |
275 | + if( this.txPlayerName != null ) | |
276 | + { | |
277 | + this.txPlayerName.t2D描画( CDTXMania.app.Device, 96 + nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos + nBoardY[ nBoard, 0 ] + 14 ); | |
278 | + } | |
279 | + } | |
280 | + break; | |
281 | + case ETargetGhostData.LAST_PLAY: | |
282 | + case ETargetGhostData.HI_SCORE: | |
283 | + case ETargetGhostData.HI_SKILL: | |
284 | + { | |
285 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardY[ nBoard, 0 ], new Rectangle( 288, 2, 162, 85 ) ); | |
286 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardY[ nBoard, 0 ] + 50, string.Format( "{0,6:##0.00}%", this.dbグラフ値目標_表示 ) ); | |
287 | + if( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] == ETargetGhostData.LAST_PLAY ) | |
288 | + { | |
289 | + if( this.txPlayerName != null ) | |
290 | + { | |
291 | + this.txPlayerName.t2D描画( CDTXMania.app.Device, 96 + nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos + nBoardY[ nBoard, 0 ] + 14 ); | |
292 | + } | |
293 | + } | |
294 | + } | |
295 | + break; | |
296 | + } | |
297 | + } | |
298 | + } | |
348 | 299 | |
300 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardY[ nBoard, 1 ], new Rectangle( 288, 160, 162, 60 ) ); | |
301 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardY[ nBoard, 1 ] + 24, string.Format( "{0,6:##0.00}%", this.dbグラフ値自己ベスト ) ); | |
349 | 302 | |
350 | - if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.LAST_PLAY ) | |
351 | - { | |
352 | - if( this.dbグラフ値現在 > dbTargetSkill ) | |
353 | - this.tx比較.n透明度 = 128; | |
354 | - this.tx比較.t2D描画( CDTXMania.app.Device, 102 + this.n本体X, ntargetPos, new Rectangle( 288, 2, 162, 85 ) ); | |
303 | + if( this.dbグラフ値自己ベスト > this.dbグラフ値目標_表示 ) | |
304 | + this.t折れ線を描画する( nBoardY[ 0, 0 ], nBoardY[ 1, 0 ] ); | |
305 | + else | |
306 | + this.t折れ線を描画する( nBoardY[ 0, 1 ], nBoardY[ 1, 1 ] ); | |
307 | + } | |
308 | + else if( CDTXMania.ConfigIni.nInfoType == 1 ) | |
309 | + { | |
310 | + int nBoardPos = 50; | |
311 | + int[] nBoardX = new int[] { 102, 16 }; | |
312 | + int[] arBoardPos = new int[ 2 ]; | |
313 | + if( this.dbグラフ値自己ベスト < this.dbグラフ値目標_表示 ) nBoardPos += 54; | |
355 | 314 | |
356 | - this.t小文字表示( 192 + this.n本体X, ntargetPos + 50, string.Format( "{0,6:##0.00}%", dbTargetSkill ) ); | |
357 | - } | |
358 | - else | |
359 | - { | |
360 | - if( this.dbグラフ値現在 >= 100.0 ) | |
361 | - this.tx比較.n透明度 = 128; | |
362 | - this.tx比較.t2D描画( CDTXMania.app.Device, 102 + this.n本体X, ntargetPos, new Rectangle( 288, 2, 162, 85 ) ); | |
315 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 102, 240, new Rectangle( 288, 226, 162, 60 ) ); | |
316 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 102, 320, new Rectangle( 288, 292, 162, 60 ) ); | |
317 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 102, 400, new Rectangle( 288, 358, 162, 60 ) ); | |
318 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 102, 480, new Rectangle( 288, 424, 162, 60 ) ); | |
319 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 102, 560, new Rectangle( 288, 490, 162, 60 ) ); | |
363 | 320 | |
364 | - this.t小文字表示( 192 + this.n本体X, ntargetPos + 50, string.Format( "{0,6:##0.00}%", dbTargetSkill ) ); | |
365 | - } | |
321 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 186, 264, string.Format("{0,6:###0}", this.n現在のAutoを含まない判定数[ 0 ])); | |
322 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 186, 344, string.Format("{0,6:###0}", this.n現在のAutoを含まない判定数[ 1 ])); | |
323 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 186, 424, string.Format("{0,6:###0}", this.n現在のAutoを含まない判定数[ 2 ])); | |
324 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 186, 504, string.Format("{0,6:###0}", this.n現在のAutoを含まない判定数[ 3 ])); | |
325 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 186, 584, string.Format("{0,6:###0}", this.n現在のAutoを含まない判定数[ 4 ])); | |
366 | 326 | |
367 | - if( this.dbグラフ値現在 > this.dbグラフ値目標_表示 ) | |
368 | - this.tx比較.n透明度 = 128; | |
369 | - else | |
370 | - this.tx比較.n透明度 = 255; | |
371 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, nbestskillPos, new Rectangle(288, 160, 162, 60)); | |
372 | - this.t小文字表示( 192 + this.n本体X, nbestskillPos + 24, string.Format( "{0,6:##0.00}%", this.dbグラフ値目標_表示 ) ); | |
373 | - | |
374 | - | |
375 | - if( this.txPlayerName != null ) | |
376 | - { | |
377 | - this.txPlayerName.t2D描画( CDTXMania.app.Device, 96 + this.n本体X, ntargetPos + 14 ); | |
378 | - } | |
379 | - } | |
380 | - break; | |
381 | - case ETargetGhostData.HI_SCORE: | |
382 | - case ETargetGhostData.HI_SKILL: | |
327 | + //ゴーストが存在するか | |
328 | + if( CDTXMania.listTargetGhsotLag[ this.nGraphUsePart ] != null ) | |
329 | + { | |
330 | + if( CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
331 | + { | |
332 | + switch( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] ) | |
383 | 333 | { |
384 | - this.tx比較.n透明度 = 255; | |
385 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 200, new Rectangle(288, 160, 162, 60)); | |
386 | - this.t小文字表示(186 + this.n本体X, 224, string.Format("{0,6:##0.00}%", dbTargetSkill )); | |
387 | - if( this.dbグラフ値現在 > dbTargetSkill ) | |
388 | - this.tx比較.n透明度 = 128; | |
334 | + case ETargetGhostData.PERFECT: | |
335 | + { | |
336 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardPos, new Rectangle( 288, 2, 162, 85 ) ); | |
337 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardPos + 50, string.Format( "{0,6:##0.00}%", this.dbグラフ値目標_表示 ) ); | |
338 | + if( this.txPlayerName != null ) | |
339 | + { | |
340 | + this.txPlayerName.t2D描画( CDTXMania.app.Device, 96 + nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos + nBoardPos + 14 ); | |
341 | + } | |
342 | + } | |
343 | + break; | |
344 | + case ETargetGhostData.LAST_PLAY: | |
345 | + case ETargetGhostData.HI_SCORE: | |
346 | + case ETargetGhostData.HI_SKILL: | |
347 | + { | |
348 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardPos, new Rectangle( 288, 2, 162, 85 ) ); | |
349 | + //this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + 50, new Rectangle( 288, 2, 162, 85 ) ); | |
350 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardPos + 50, string.Format( "{0,6:##0.00}%", this.dbグラフ値目標_表示 ) ); | |
351 | + if( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] == ETargetGhostData.LAST_PLAY ) | |
352 | + { | |
353 | + if( this.txPlayerName != null ) | |
354 | + { | |
355 | + this.txPlayerName.t2D描画( CDTXMania.app.Device, 96 + nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos + nBoardPos + 14 ); | |
356 | + } | |
357 | + } | |
358 | + } | |
359 | + break; | |
389 | 360 | } |
390 | - break; | |
361 | + arBoardPos[ 1 ] = nBoardPos; | |
362 | + } | |
391 | 363 | } |
364 | + if( this.dbグラフ値自己ベスト < this.dbグラフ値目標_表示 ) nBoardPos -= 54; | |
365 | + else nBoardPos += 85; | |
366 | + arBoardPos[ 0 ] = nBoardPos; | |
392 | 367 | |
393 | - string strPlus = ""; | |
394 | - if ( this.dbグラフ値現在 >= this.dbグラフ値ゴースト ) | |
395 | - strPlus = "+"; | |
396 | - else | |
397 | - strPlus = "-"; | |
398 | - this.t比較数字表示( 10 + this.n本体X, 668 - (int)(560.0 * this.dbグラフ値現在 / 100.0) - 18, string.Format( strPlus + "{0,5:#0.00}", Math.Abs(this.dbグラフ値現在 - this.dbグラフ値ゴースト) ) ); | |
399 | - //this.t比較数字表示( 100 + this.n本体X, 668 - (int)(560.0 * this.dbグラフ値ゴースト / 100.0) - 18, string.Format( strPlus + "{0,5:#0.00}", this.dbグラフ値ゴースト )); | |
400 | - //CDTXMania.act文字コンソール.tPrint( 75 + this.n本体X[j], 652 - (int)(556.0 * this.dbグラフ値ゴースト_表示 / 100.0) - 18, C文字コンソール.Eフォント種別.白, string.Format( "{0,6:##0.00}%", this.dbグラフ値ゴースト ) ); | |
368 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ], nGraphBG_YPos + nBoardPos, new Rectangle( 288, 160, 162, 60 ) ); | |
369 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + nBoardX[ nPart ] + 90, nGraphBG_YPos + nBoardPos + 24, string.Format( "{0,6:##0.00}%", this.dbグラフ値自己ベスト ) ); | |
401 | 370 | |
371 | + this.t折れ線を描画する( arBoardPos[ 0 ], arBoardPos[ 1 ] ); | |
402 | 372 | } |
403 | - | |
404 | - if( bUseGhost == false ) | |
405 | - { | |
406 | - //比較対象のゴーストデータが無い | |
407 | - //ゴーストを使わない | |
408 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 200, new Rectangle(288, 160, 162, 60)); | |
409 | - this.t小文字表示(186 + this.n本体X, 224, string.Format("{0,6:##0.00}%", this.dbグラフ値目標_表示)); | |
410 | - if (this.dbグラフ値現在 > this.dbグラフ値目標) | |
411 | - { | |
412 | - this.tx比較.n透明度 = 128; | |
413 | - } | |
414 | - } | |
415 | 373 | } |
416 | - else if( CDTXMania.ConfigIni.nInfoType == 1 ) //判定数表示 | |
417 | - { | |
418 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 200, new Rectangle(288, 226, 162, 60)); | |
419 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 280, new Rectangle(288, 292, 162, 60)); | |
420 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 360, new Rectangle(288, 358, 162, 60)); | |
421 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 440, new Rectangle(288, 424, 162, 60)); | |
422 | - this.tx比較.t2D描画(CDTXMania.app.Device, 102 + this.n本体X, 520, new Rectangle(288, 490, 162, 60)); | |
374 | + } | |
375 | + return 0; | |
376 | + } | |
423 | 377 | |
424 | - this.t小文字表示(186 + this.n本体X, 224, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない.Drums.Perfect)); | |
425 | - this.t小文字表示(186 + this.n本体X, 304, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない.Drums.Great)); | |
426 | - this.t小文字表示(186 + this.n本体X, 384, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない.Drums.Good)); | |
427 | - this.t小文字表示(186 + this.n本体X, 464, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない.Drums.Poor)); | |
428 | - this.t小文字表示(186 + this.n本体X, 544, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない.Drums.Miss)); | |
429 | 378 | |
379 | + // その他 | |
430 | 380 | |
431 | - } | |
432 | - } | |
433 | - return 0; | |
434 | - } | |
435 | - | |
436 | - | |
437 | - // その他 | |
438 | - | |
439 | - #region [ private ] | |
440 | - //---------------- | |
441 | - [StructLayout(LayoutKind.Sequential)] | |
442 | - private struct STキラキラ | |
443 | - { | |
444 | - public int x; | |
445 | - public int y; | |
446 | - public float fScale; | |
447 | - public int Trans; | |
448 | - public CCounter ct進行; | |
449 | - } | |
450 | - [StructLayout(LayoutKind.Sequential)] | |
451 | - private struct ST文字位置 | |
452 | - { | |
453 | - public string strMode; | |
454 | - public char ch; | |
455 | - public Point pt; | |
456 | - public Rectangle rect; | |
457 | - } | |
458 | - private List<ST文字位置> list文字位置; | |
459 | - private STキラキラ[] stキラキラ = new STキラキラ[64]; | |
460 | - private STキラキラ[] stフラッシュ = new STキラキラ[16]; | |
461 | - | |
462 | - private bool bUseGhost; | |
463 | - private CCounter ct爆発エフェクト; | |
464 | - public double db現在の判定数合計; | |
381 | + #region [ private ] | |
382 | + //---------------- | |
465 | 383 | private double dbグラフ値目標; |
466 | - private double dbグラフ値ゴースト; | |
467 | - private double dbグラフ値ゴースト_表示; | |
468 | - public double dbグラフ値比較; | |
469 | 384 | private double dbグラフ値目標_表示; |
470 | 385 | private double dbグラフ値現在; |
471 | 386 | private double dbグラフ値現在_表示; |
472 | - private double dbグラフ値直前; | |
473 | - private int nグラフフラッシュct; | |
474 | - private int n現在演奏されたノーツ数; | |
475 | - private int n本体X; | |
476 | - private CTexture tx比較; | |
477 | - private CTexture txグラフ; | |
478 | - private CTexture txグラフバックパネル; | |
479 | - private CTexture txグラフゲージ; | |
387 | + public double dbグラフ値自己ベスト; | |
388 | + private int[] n現在のAutoを含まない判定数; | |
389 | + | |
480 | 390 | private CTexture txPlayerName; |
391 | + private CTexture txグラフ; | |
392 | + private CTexture txグラフ_ゲージ; | |
393 | + private CTexture txグラフ値自己ベストライン; | |
481 | 394 | |
482 | - private Bitmap bmpGraph; | |
483 | - private Graphics gGraph; | |
484 | 395 | private CPrivateFastFont pfNameFont; |
485 | - private E楽器パート eGraphUsePart; | |
486 | 396 | |
487 | 397 | [StructLayout(LayoutKind.Sequential)] |
488 | - private struct STスクリプト座標 | |
398 | + private struct ST文字位置 | |
489 | 399 | { |
490 | - public string strParam; | |
491 | - public int nX; | |
492 | - public int nY; | |
493 | - public Rectangle rect; | |
494 | - public bool b本体座標を加算する; | |
495 | - public string str; | |
400 | + public char ch; | |
401 | + public Point pt; | |
402 | + public ST文字位置( char ch, Point pt ) | |
403 | + { | |
404 | + this.ch = ch; | |
405 | + this.pt = pt; | |
406 | + } | |
496 | 407 | } |
497 | - #region[ スクリプトから取得した座標を格納する変数 ] | |
498 | - private STスクリプト座標 stグラフ背景; | |
499 | - private STスクリプト座標 stゲージ現在; | |
500 | - private STスクリプト座標 stゲージ比較_敗; | |
501 | - private STスクリプト座標 stゲージ比較_勝; | |
502 | - private STスクリプト座標 stゲージ矢印; | |
503 | - private STスクリプト座標 stゲージ基準線; | |
504 | - private STスクリプト座標 stゲージ基準線達成; | |
505 | 408 | |
506 | - private STスクリプト座標 stパネル筐体トップ; | |
507 | - private STスクリプト座標 stパネル自己ベスト; | |
508 | - private STスクリプト座標 stパネルPERFECT; | |
509 | - private STスクリプト座標 stパネルGREAT; | |
510 | - private STスクリプト座標 stパネルGOOD; | |
511 | - private STスクリプト座標 stパネルPOOR; | |
512 | - private STスクリプト座標 stパネルMISS; | |
409 | + private ST文字位置[] st比較数字位置 = new ST文字位置[]{ | |
410 | + new ST文字位置( '0', new Point( 0, 0 ) ), | |
411 | + new ST文字位置( '1', new Point( 10, 0 ) ), | |
412 | + new ST文字位置( '2', new Point( 20, 0 ) ), | |
413 | + new ST文字位置( '3', new Point( 30, 0 ) ), | |
414 | + new ST文字位置( '4', new Point( 40, 0 ) ), | |
415 | + new ST文字位置( '5', new Point( 50, 0 ) ), | |
416 | + new ST文字位置( '6', new Point( 60, 0 ) ), | |
417 | + new ST文字位置( '7', new Point( 70, 0 ) ), | |
418 | + new ST文字位置( '8', new Point( 80, 0 ) ), | |
419 | + new ST文字位置( '9', new Point( 90, 0 ) ), | |
420 | + new ST文字位置( '.', new Point( 100, 0 ) ), | |
421 | + new ST文字位置( '-', new Point( 110, 0 ) ), | |
422 | + new ST文字位置( '+', new Point( 120, 0 ) ) | |
423 | + }; | |
424 | + private ST文字位置[] st達成率数字位置 = new ST文字位置[]{ | |
425 | + new ST文字位置( '0', new Point( 0, 0 ) ), | |
426 | + new ST文字位置( '1', new Point( 12, 0 ) ), | |
427 | + new ST文字位置( '2', new Point( 24, 0 ) ), | |
428 | + new ST文字位置( '3', new Point( 36, 0 ) ), | |
429 | + new ST文字位置( '4', new Point( 48, 0 ) ), | |
430 | + new ST文字位置( '5', new Point( 60, 0 ) ), | |
431 | + new ST文字位置( '6', new Point( 72, 0 ) ), | |
432 | + new ST文字位置( '7', new Point( 84, 0 ) ), | |
433 | + new ST文字位置( '8', new Point( 96, 0 ) ), | |
434 | + new ST文字位置( '9', new Point( 108, 0 ) ), | |
435 | + new ST文字位置( '.', new Point( 120, 0 ) ), | |
436 | + }; | |
513 | 437 | |
514 | - private STスクリプト座標 stパネル数字座標; | |
515 | - private STスクリプト座標 st比較用数字座標; | |
516 | 438 | |
517 | - private STスクリプト座標 st比較対象名_自己ベスト; | |
518 | - private STスクリプト座標 st比較対象名_オート; | |
519 | - private STスクリプト座標 st比較対象名_ハイスキル; | |
520 | - private STスクリプト座標 st比較対象名_ハイスコア; | |
521 | - private STスクリプト座標 st比較対象名_オンライン; | |
522 | - #endregion | |
523 | - | |
524 | - //----------------- | |
525 | - | |
439 | + private void t比較文字表示( int x, int y, string str ) | |
440 | + { | |
441 | + foreach( char ch in str ) | |
442 | + { | |
443 | + for( int i = 0; i < this.st比較数字位置.Length; i++ ) | |
444 | + { | |
445 | + if( this.st比較数字位置[ i ].ch == ch ) | |
446 | + { | |
447 | + Rectangle rectangle = new Rectangle( 342 + this.st比較数字位置[ i ].pt.X, 612, 10, 14 ); | |
448 | + if( this.txグラフ != null ) | |
449 | + { | |
450 | + this.txグラフ.n透明度 = 255; | |
451 | + this.txグラフ.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
452 | + } | |
453 | + break; | |
454 | + } | |
455 | + } | |
456 | + x += 10; | |
457 | + } | |
458 | + } | |
459 | + private void t達成率文字表示( int x, int y, string str ) | |
460 | + { | |
461 | + foreach( char ch in str ) | |
462 | + { | |
463 | + for( int i = 0; i < this.st達成率数字位置.Length; i++ ) | |
464 | + { | |
465 | + if( this.st達成率数字位置[ i ].ch == ch ) | |
466 | + { | |
467 | + Rectangle rectangle = new Rectangle( 342 + this.st達成率数字位置[ i ].pt.X, 590, 12, 16 ); | |
468 | + if( this.txグラフ != null ) | |
469 | + { | |
470 | + this.txグラフ.n透明度 = 255; | |
471 | + this.txグラフ.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
472 | + } | |
473 | + break; | |
474 | + } | |
475 | + } | |
476 | + if( ch == '.' ) x += 6; | |
477 | + else x += 12; | |
478 | + } | |
479 | + } | |
526 | 480 | private CTexture t指定された文字テクスチャを生成する( string str文字 ) |
527 | 481 | { |
528 | - //2015.12.27.kairera0467 こいついつも使いまわししてんな。 | |
529 | - //まだDJ.AUTO専用なので、文字列の長さとかそういうのは考慮してません。 | |
530 | 482 | Bitmap bmp; |
531 | - | |
532 | 483 | bmp = this.pfNameFont.DrawPrivateFont( str文字, Color.White, Color.Transparent ); |
533 | 484 | |
534 | 485 | CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false ); |
@@ -540,211 +491,71 @@ | ||
540 | 491 | |
541 | 492 | return tx文字テクスチャ; |
542 | 493 | } |
543 | - | |
544 | - private void t小文字表示(int x, int y, string str) | |
494 | + private void t折れ線を描画する( int nBoardPosA, int nBoardPosB ) | |
545 | 495 | { |
546 | - foreach (char ch in str) | |
496 | + //やる気がまるでない線 | |
497 | + //2016.03.28 kairera0467 ギター画面では1Pと2Pで向きが変わるが、そこは残念ながら未対応。 | |
498 | + //参考 http://dobon.net/vb/dotnet/graphics/drawline.html | |
499 | + if( this.txグラフ値自己ベストライン == null ) | |
547 | 500 | { |
548 | - //for (int i = 0; i < this.st小文字位置.Length; i++) | |
549 | - //{ | |
550 | - // if (this.st小文字位置[i].ch == ch) | |
551 | - // { | |
552 | - // Rectangle rectangle = new Rectangle( this.st小文字位置[i].pt.X, 556, 12, 16 ); | |
553 | - // if (ch == '.') | |
554 | - // { | |
555 | - // rectangle.Width -= 8; | |
556 | - // } | |
557 | - // if (this.txグラフバックパネル != null) | |
558 | - // { | |
559 | - // this.txグラフバックパネル.t2D描画(CDTXMania.app.Device, x, y, rectangle); | |
560 | - // } | |
561 | - // break; | |
562 | - // } | |
563 | - //} | |
501 | + Bitmap canvas = new Bitmap( 280, 720 ); | |
564 | 502 | |
565 | - //if( ch == '.' ) x += 6; | |
566 | - //else x += 12; | |
503 | + Graphics g = Graphics.FromImage( canvas ); | |
504 | + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; | |
505 | + int nMybestGaugeSize = (int)( 560.0f * (float)this.dbグラフ値自己ベスト / 100.0f ); | |
506 | + int nMybestGaugePosY = 600 - nMybestGaugeSize; | |
567 | 507 | |
568 | - //2016.01.30 kairera0467 ちょっと変更。 | |
569 | - for( int i = 0; i < this.list文字位置.Count; i++ ) | |
570 | - { | |
571 | - if( this.list文字位置[ i ].ch == ch && this.list文字位置[ i ].strMode == "recpanel_number" ) | |
572 | - { | |
573 | - Rectangle rectangle = new Rectangle( this.list文字位置[ i ].rect.X, this.list文字位置[ i ].rect.Y, this.list文字位置[ i ].rect.Width, this.list文字位置[ i ].rect.Height ); | |
574 | - if( this.txグラフバックパネル != null ) | |
575 | - { | |
576 | - this.txグラフバックパネル.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
577 | - } | |
578 | - break; | |
579 | - } | |
580 | - } | |
508 | + int nTargetGaugeSize = (int)( 560.0f * (float)this.dbグラフ値目標_表示 / 100.0f ); | |
509 | + int nTargetGaugePosY = 600 - nTargetGaugeSize; | |
581 | 510 | |
582 | - if( ch == '.' ) x += 6; | |
583 | - else x += 12; | |
584 | - } | |
585 | - } | |
586 | - private void t比較数字表示(int x, int y, string str) | |
587 | - { | |
588 | - foreach (char ch in str) | |
589 | - { | |
590 | - //for (int i = 0; i < this.st比較数字位置.Length; i++) | |
591 | - //{ | |
592 | - // if (this.st比較数字位置[i].ch == ch) | |
593 | - // { | |
594 | - // Rectangle rectangle = new Rectangle( 342 + this.st比較数字位置[i].pt.X, 578, 10, 14 ); | |
595 | - // if (this.txグラフバックパネル != null) | |
596 | - // { | |
597 | - // this.txグラフバックパネル.t2D描画(CDTXMania.app.Device, x, y, rectangle); | |
598 | - // } | |
599 | - // break; | |
600 | - // } | |
601 | - //} | |
511 | + Point[] posMybest = { | |
512 | + new Point( 3, nMybestGaugePosY ), | |
513 | + new Point( 75, nMybestGaugePosY ), | |
514 | + new Point( 94, nBoardPosA + 31 ), | |
515 | + new Point( 102, nBoardPosA + 31 ) | |
516 | + }; | |
602 | 517 | |
603 | - //2016.01.30 kairera0467 ちょっと変更。 | |
604 | - for( int i = 0; i < this.list文字位置.Count; i++ ) | |
518 | + Point[] posTarget = { | |
519 | + new Point( 3, nTargetGaugePosY ), | |
520 | + new Point( 75, nTargetGaugePosY ), | |
521 | + new Point( 94, nBoardPosB + 59 ), | |
522 | + new Point( 102, nBoardPosB + 59 ) | |
523 | + }; | |
524 | + | |
525 | + if( this.nGraphUsePart == 2 ) | |
605 | 526 | { |
606 | - if( this.list文字位置[ i ].ch == ch && this.list文字位置[ i ].strMode == "target_number" ) | |
607 | - { | |
608 | - Rectangle rectangle = new Rectangle( this.list文字位置[ i ].rect.X, this.list文字位置[ i ].rect.Y, this.list文字位置[ i ].rect.Width, this.list文字位置[ i ].rect.Height ); | |
609 | - if( this.txグラフバックパネル != null ) | |
610 | - { | |
611 | - this.txグラフバックパネル.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
612 | - } | |
613 | - break; | |
614 | - } | |
527 | + posMybest = new Point[]{ | |
528 | + new Point( 271, nMybestGaugePosY ), | |
529 | + new Point( 206, nMybestGaugePosY ), | |
530 | + new Point( 187, nBoardPosA + 31 ), | |
531 | + new Point( 178, nBoardPosA + 31 ) | |
532 | + }; | |
533 | + | |
534 | + posTarget = new Point[]{ | |
535 | + new Point( 271, nTargetGaugePosY ), | |
536 | + new Point( 206, nTargetGaugePosY ), | |
537 | + new Point( 187, nBoardPosB + 59 ), | |
538 | + new Point( 178, nBoardPosB + 59 ) | |
539 | + }; | |
615 | 540 | } |
616 | 541 | |
617 | - x += 9; | |
542 | + Pen penMybest = new Pen( Color.Pink, 2 ); | |
543 | + g.DrawLines( penMybest, posMybest ); | |
618 | 544 | |
619 | - } | |
620 | - } | |
621 | - private void t座標スクリプトを読み込む() | |
622 | - { | |
623 | - string strRawScriptFile; | |
624 | - | |
625 | - //ファイルの存在チェック | |
626 | - if( File.Exists( CSkin.Path( @"Script\SkillMater.dtxs" ) ) ) | |
627 | - { | |
628 | - //スクリプトを開く | |
629 | - StreamReader reader = new StreamReader( CSkin.Path( @"Script\SkillMater.dtxs" ), Encoding.GetEncoding( "Shift_JIS" ) ); | |
630 | - strRawScriptFile = reader.ReadToEnd(); | |
631 | - | |
632 | - strRawScriptFile = strRawScriptFile.Replace( Environment.NewLine, "\n" ); | |
633 | - string[] delimiter = { "\n" }; | |
634 | - string[] strSingleLine = strRawScriptFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries ); | |
635 | - | |
636 | - for( int i = 0; i < strSingleLine.Length; i++ ) | |
545 | + if( CDTXMania.listTargetGhsotLag[ this.nGraphUsePart ] != null && CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
637 | 546 | { |
638 | - if( strSingleLine[ i ].StartsWith( "//" ) ) | |
639 | - continue; //コメント行の場合は無視 | |
547 | + Pen penTarget = new Pen( Color.Orange, 2 ); | |
548 | + g.DrawLines( penTarget, posTarget ); | |
549 | + } | |
640 | 550 | |
641 | - //まずSplit | |
642 | - string[] arScriptLine = strSingleLine[ i ].Split( ',' ); | |
551 | + g.Dispose(); | |
643 | 552 | |
644 | - if( ( arScriptLine.Length >= 7 && arScriptLine.Length <= 9 ) == false ) | |
645 | - continue; //引数が7~9でなければ無視。 | |
646 | - var st = new STスクリプト座標(); | |
647 | - | |
648 | - if( arScriptLine.Length >= 7 ) | |
649 | - { | |
650 | - st.strParam = arScriptLine[ 0 ]; | |
651 | - st.nX = Convert.ToInt32( arScriptLine[ 1 ] ); | |
652 | - st.nY = Convert.ToInt32( arScriptLine[ 2 ] ); | |
653 | - st.rect.X = Convert.ToInt32( arScriptLine[ 3 ] ); | |
654 | - st.rect.Y = Convert.ToInt32( arScriptLine[ 4 ] ); | |
655 | - st.rect.Width = Convert.ToInt32( arScriptLine[ 5 ] ); | |
656 | - st.rect.Height = Convert.ToInt32( arScriptLine[ 6 ] ); | |
657 | - } | |
658 | - if( arScriptLine.Length == 8 ) | |
659 | - { | |
660 | - st.b本体座標を加算する = Convert.ToBoolean( arScriptLine[ 7 ] == "0" ? false : true ); | |
661 | - } | |
662 | - if( arScriptLine.Length == 9 ) | |
663 | - { | |
664 | - st.str = arScriptLine[ 8 ]; | |
665 | - } | |
666 | - | |
667 | - //本体座標を加算する場合はここで加算する。 | |
668 | - if( st.b本体座標を加算する ) | |
669 | - { | |
670 | - st.nX += this.n本体X; | |
671 | - } | |
672 | - | |
673 | - this.tパラメーターから座標の格納先を決定する( st.strParam, st ); | |
674 | - } | |
553 | + this.txグラフ値自己ベストライン = new CTexture( CDTXMania.app.Device, canvas, CDTXMania.TextureFormat, false ); | |
675 | 554 | } |
555 | + if( this.txグラフ値自己ベストライン != null ) | |
556 | + this.txグラフ値自己ベストライン.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos ); | |
676 | 557 | } |
677 | - private void tパラメーターから座標の格納先を決定する( string strParam, STスクリプト座標 stScriptPosSet ) | |
678 | - { | |
679 | - switch( strParam ) | |
680 | - { | |
681 | - case "backpanel": | |
682 | - this.stグラフ背景 = stScriptPosSet; | |
683 | - break; | |
684 | - case "recpanel_cabtop": | |
685 | - break; | |
686 | - case "recpanel_mybest": | |
687 | - break; | |
688 | - case "recpanel_perfect": | |
689 | - break; | |
690 | - case "recpanel_great": | |
691 | - break; | |
692 | - case "recpanel_good": | |
693 | - break; | |
694 | - case "recpanel_poor": | |
695 | - break; | |
696 | - case "recpanel_miss": | |
697 | - break; | |
698 | - case "recpanel_number_pos": | |
699 | - break; | |
700 | - case "target_number_pos": | |
701 | - break; | |
702 | - case "targetname_mybest": | |
703 | - break; | |
704 | - case "targetname_auto": | |
705 | - break; | |
706 | - case "targetname_hiskill": | |
707 | - break; | |
708 | - case "targetname_hiscore": | |
709 | - break; | |
710 | - case "targetname_online": | |
711 | - break; | |
712 | - case "recpanel_number": | |
713 | - case "target_number": | |
714 | - this.t文字位置リストに追加する( stScriptPosSet ); | |
715 | - break; | |
716 | - case "gauge_red": | |
717 | - this.stゲージ現在 = stScriptPosSet; | |
718 | - break; | |
719 | - case "gauge_mark": | |
720 | - this.stゲージ矢印 = stScriptPosSet; | |
721 | - break; | |
722 | - case "gauge_target_failed": | |
723 | - this.stゲージ比較_敗 = stScriptPosSet; | |
724 | - break; | |
725 | - case "gauge_target_clear": | |
726 | - this.stゲージ比較_勝 = stScriptPosSet; | |
727 | - break; | |
728 | - case "gaugeline_failed": | |
729 | - this.stゲージ基準線 = stScriptPosSet; | |
730 | - break; | |
731 | - case "gaugeline_clear": | |
732 | - this.stゲージ基準線達成 = stScriptPosSet; | |
733 | - break; | |
734 | - | |
735 | - } | |
736 | - } | |
737 | - private void t文字位置リストに追加する( STスクリプト座標 stScriptPosSet ) | |
738 | - { | |
739 | - ST文字位置 stCharPos = new ST文字位置(); | |
740 | - stCharPos.strMode = stScriptPosSet.strParam; | |
741 | - stCharPos.ch = stScriptPosSet.str[ 0 ]; | |
742 | - stCharPos.pt.X = stScriptPosSet.rect.X; | |
743 | - stCharPos.pt.Y = stScriptPosSet.rect.Y; | |
744 | - stCharPos.rect = stScriptPosSet.rect; | |
745 | - | |
746 | - this.list文字位置.Add( stCharPos ); | |
747 | - } | |
748 | - #endregion | |
749 | - } | |
558 | + //----------------- | |
559 | + #endregion | |
560 | + } | |
750 | 561 | } |
@@ -79,7 +79,7 @@ | ||
79 | 79 | |
80 | 80 | |
81 | 81 | } |
82 | - else if (CDTXMania.ConfigIni.nInfoType == 1 && !CDTXMania.ConfigIni.bGraph有効) | |
82 | + else if (CDTXMania.ConfigIni.nInfoType == 1 && ( !CDTXMania.ConfigIni.bGraph有効.Drums && !CDTXMania.ConfigIni.bGraph有効.Guitar && !CDTXMania.ConfigIni.bGraph有効.Bass ) ) | |
83 | 83 | { |
84 | 84 | |
85 | 85 | y += 0x123; |
@@ -29,7 +29,7 @@ | ||
29 | 29 | base.list子Activities.Add( this.actDANGER = new CAct演奏DrumsDanger() ); |
30 | 30 | base.list子Activities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() ); |
31 | 31 | base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() ); |
32 | - base.list子Activities.Add( this.actGraph = new CAct演奏Drumsスキルメーター() ); // #24074 2011.01.23 add ikanick | |
32 | + base.list子Activities.Add( this.actGraph = new CAct演奏スキルメーター() ); // #24074 2011.01.23 add ikanick | |
33 | 33 | base.list子Activities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() ); |
34 | 34 | base.list子Activities.Add( this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD() ); |
35 | 35 | base.list子Activities.Add( this.actScore = new CAct演奏Drumsスコア() ); |
@@ -317,7 +317,7 @@ | ||
317 | 317 | |
318 | 318 | this.t進行描画・ステータスパネル(); |
319 | 319 | |
320 | - if (CDTXMania.ConfigIni.eNamePlate != Eタイプ.A || CDTXMania.ConfigIni.bGraph有効 || CDTXMania.ConfigIni.ドラムコンボ文字の表示位置 != Eドラムコンボ文字の表示位置.RIGHT) | |
320 | + if (CDTXMania.ConfigIni.eNamePlate != Eタイプ.A || CDTXMania.ConfigIni.bGraph有効.Drums || CDTXMania.ConfigIni.ドラムコンボ文字の表示位置 != Eドラムコンボ文字の表示位置.RIGHT) | |
321 | 321 | this.t進行描画・コンボ(); |
322 | 322 | |
323 | 323 | this.t進行描画・ゲージ(); |
@@ -427,7 +427,6 @@ | ||
427 | 427 | public int nミス数; |
428 | 428 | public int nパフェ数; |
429 | 429 | private CAct演奏DrumsチップファイアD actChipFireD; |
430 | - public CAct演奏Drumsスキルメーター actGraph; // #24074 2011.01.23 add ikanick | |
431 | 430 | public CAct演奏Drumsパッド actPad; |
432 | 431 | public CAct演奏Drumsドラムセット actDrumSet; |
433 | 432 | public bool bフィルイン中; |
@@ -526,7 +525,13 @@ | ||
526 | 525 | this.nヒット数・Auto含まない.Drums.Great * 7 + |
527 | 526 | this.actCombo.n現在のコンボ数.最高値.Drums * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Drums); |
528 | 527 | } |
529 | - //2016.01.03 kairera0467 | |
528 | + //2016.01.03 kairera0467 | |
529 | + | |
530 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 0 ] = this.nヒット数・Auto含まない.Drums.Perfect; | |
531 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 1 ] = this.nヒット数・Auto含まない.Drums.Great; | |
532 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 2 ] = this.nヒット数・Auto含まない.Drums.Good; | |
533 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 3 ] = this.nヒット数・Auto含まない.Drums.Poor; | |
534 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 4 ] = this.nヒット数・Auto含まない.Drums.Miss; | |
530 | 535 | return eJudgeResult; |
531 | 536 | } |
532 | 537 |
@@ -737,12 +742,11 @@ | ||
737 | 742 | } |
738 | 743 | */ |
739 | 744 | |
740 | - private void t進行描画・グラフ() | |
745 | + private void t進行描画・グラフ() | |
741 | 746 | { |
742 | - if (CDTXMania.ConfigIni.bGraph有効) | |
747 | + if( CDTXMania.ConfigIni.bGraph有効.Drums ) | |
743 | 748 | { |
744 | 749 | this.actGraph.On進行描画(); |
745 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Drums.Perfect + this.nヒット数・Auto含む.Drums.Great + this.nヒット数・Auto含む.Drums.Good + this.nヒット数・Auto含む.Drums.Miss + this.nヒット数・Auto含む.Drums.Poor; | |
746 | 750 | } |
747 | 751 | } |
748 | 752 |
@@ -3502,7 +3506,7 @@ | ||
3502 | 3506 | } |
3503 | 3507 | if (val < 0) val = 0; |
3504 | 3508 | if (val > 100) val = 100; |
3505 | - this.actGraph.dbグラフ値ゴースト_渡 = val; | |
3509 | + this.actGraph.dbグラフ値目標_渡 = val; | |
3506 | 3510 | } |
3507 | 3511 | return; |
3508 | 3512 | } // end of "if configIni.bDrums有効" |
@@ -656,6 +656,7 @@ | ||
656 | 656 | public CAct演奏スクロール速度 act譜面スクロール速度; |
657 | 657 | public CAct演奏LivePoint共通 actLivePoint; |
658 | 658 | public CAct演奏BPMバー共通 actBPMBar; |
659 | + protected CAct演奏スキルメーター actGraph; | |
659 | 660 | protected bool bPAUSE; |
660 | 661 | protected STDGBVALUE<bool> b演奏にMIDI入力を使った; |
661 | 662 | protected STDGBVALUE<bool> b演奏にキーボードを使った; |
@@ -3300,7 +3301,7 @@ | ||
3300 | 3301 | CDTXMania.ConfigIni.bBGA有効 = true; |
3301 | 3302 | for ( int i = 0; i < 3; i++ ) |
3302 | 3303 | { |
3303 | - CDTXMania.ConfigIni.bGraph有効 = false; | |
3304 | + CDTXMania.ConfigIni.bGraph有効[ i ] = false; | |
3304 | 3305 | CDTXMania.ConfigIni.bLeft[ i ] = false; |
3305 | 3306 | CDTXMania.ConfigIni.bLight[ i ] = false; |
3306 | 3307 | CDTXMania.ConfigIni.bReverse[ i ] = false; |
@@ -3575,22 +3576,63 @@ | ||
3575 | 3576 | } |
3576 | 3577 | #endregion |
3577 | 3578 | //if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) ) |
3578 | - if ( ( !pChip.bHit ) && ( pChip.nバーからの距離dot[ instIndex ] < 0 ) ) | |
3579 | - { | |
3580 | - int lo = ( inst == E楽器パート.GUITAR ) ? 0 : 5; // lane offset | |
3581 | - bool autoR = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR; | |
3582 | - bool autoG = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG; | |
3583 | - bool autoB = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB; | |
3584 | - bool autoY = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtY : bIsAutoPlay.BsY; | |
3585 | - bool autoP = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtP : bIsAutoPlay.BsP; | |
3586 | - bool autoPick = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick; | |
3587 | - bool pushingR = CDTXMania.Pad.b押されている( inst, Eパッド.R ); | |
3588 | - bool pushingG = CDTXMania.Pad.b押されている( inst, Eパッド.G ); | |
3589 | - bool pushingB = CDTXMania.Pad.b押されている( inst, Eパッド.B ); | |
3590 | - bool pushingY = CDTXMania.Pad.b押されている( inst, Eパッド.Y ); | |
3591 | - bool pushingP = CDTXMania.Pad.b押されている( inst, Eパッド.P ); | |
3579 | + //if ( ( !pChip.bHit ) && ( pChip.nバーからの距離dot[ instIndex ] < 0 ) ) | |
3580 | + | |
3581 | + // #35411 2015.08.20 chnmr0 modified | |
3582 | + // 従来のAUTO処理に加えてプレーヤーゴーストの再生機能を追加 | |
3583 | + bool autoPlayCondition = (!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0); | |
3584 | + if ( autoPlayCondition ) | |
3585 | + { | |
3586 | + //cInvisibleChip.StartSemiInvisible( inst ); | |
3587 | + } | |
3592 | 3588 | |
3593 | - #region [ Chip Fire effects ] | |
3589 | + bool autoPick = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick; | |
3590 | + autoPlayCondition = !pChip.bHit && autoPick; | |
3591 | + long ghostLag = 0; | |
3592 | + bool bUsePerfectGhost = true; | |
3593 | + | |
3594 | + if ( (pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS ) && | |
3595 | + CDTXMania.ConfigIni.eAutoGhost[(int)(pChip.e楽器パート)] != EAutoGhostData.PERFECT && | |
3596 | + CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート] != null && | |
3597 | + 0 <= pChip.n楽器パートでの出現順 && | |
3598 | + pChip.n楽器パートでの出現順 < CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート].Count) | |
3599 | + { | |
3600 | + // #35411 (mod) Ghost data が有効なので 従来のAUTOではなくゴーストのラグを利用 | |
3601 | + // 発生時刻と現在時刻からこのタイミングで演奏するかどうかを決定 | |
3602 | + ghostLag = CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート][pChip.n楽器パートでの出現順]; | |
3603 | + bool resetCombo = ghostLag > 255; | |
3604 | + ghostLag = (ghostLag & 255) - 128; | |
3605 | + ghostLag -= (pChip.e楽器パート == E楽器パート.GUITAR ? nInputAdjustTimeMs.Guitar : nInputAdjustTimeMs.Bass); | |
3606 | + autoPlayCondition &= (pChip.n発声時刻ms + ghostLag <= CSound管理.rc演奏用タイマ.n現在時刻ms); | |
3607 | + if (resetCombo && autoPlayCondition ) | |
3608 | + { | |
3609 | + this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート] = 0; | |
3610 | + } | |
3611 | + bUsePerfectGhost = false; | |
3612 | + } | |
3613 | + | |
3614 | + if( bUsePerfectGhost ) | |
3615 | + { | |
3616 | + // 従来のAUTOを使用する場合 | |
3617 | + autoPlayCondition &= ( pChip.nバーからの距離dot[ instIndex ] < 0 ); | |
3618 | + } | |
3619 | + | |
3620 | + if ( autoPlayCondition ) | |
3621 | + { | |
3622 | + int lo = (inst == E楽器パート.GUITAR) ? 0 : 5; // lane offset | |
3623 | + bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR; | |
3624 | + bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG; | |
3625 | + bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB; | |
3626 | + bool autoY = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtY : bIsAutoPlay.BsY; | |
3627 | + bool autoP = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtP : bIsAutoPlay.BsP; | |
3628 | + bool pushingR = CDTXMania.Pad.b押されている(inst, Eパッド.R); | |
3629 | + bool pushingG = CDTXMania.Pad.b押されている(inst, Eパッド.G); | |
3630 | + bool pushingB = CDTXMania.Pad.b押されている(inst, Eパッド.B); | |
3631 | + bool pushingY = CDTXMania.Pad.b押されている(inst, Eパッド.Y); | |
3632 | + bool pushingP = CDTXMania.Pad.b押されている(inst, Eパッド.P); | |
3633 | + | |
3634 | + #region [ Chip Fire effects (auto時用) ] | |
3635 | + // autoPickでない時の処理は、 t入力処理・ギターベース(E楽器パート) で行う | |
3594 | 3636 | bool bSuccessOPEN = bChipIsO && ( autoR || !pushingR ) && ( autoG || !pushingG ) && ( autoB || !pushingB ) && ( autoY || !pushingY ) && ( autoP || !pushingP ); |
3595 | 3637 | if ( ( bChipHasR && ( autoR || pushingR ) && autoPick ) || bSuccessOPEN && autoPick ) |
3596 | 3638 | { |
@@ -3613,6 +3655,42 @@ | ||
3613 | 3655 | this.actChipFireGB.Start( 4 + lo ); |
3614 | 3656 | } |
3615 | 3657 | #endregion |
3658 | + #region [ autopick ] | |
3659 | + { | |
3660 | + bool bMiss = true; | |
3661 | + if ( bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB ) // autoレーンとチップレーン一致時はOK | |
3662 | + { // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。 | |
3663 | + bMiss = false; | |
3664 | + } | |
3665 | + else if ( ( autoR || ( bChipHasR == pushingR ) ) && ( autoG || ( bChipHasG == pushingG ) ) && ( autoB || ( bChipHasB == pushingB ) ) ) | |
3666 | + // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) ) | |
3667 | + { | |
3668 | + bMiss = false; | |
3669 | + } | |
3670 | + else if ( ( ( bChipIsO == true ) && ( !pushingR | autoR ) && ( !pushingG | autoG ) && ( !pushingB | autoB ) ) ) // OPEN時 | |
3671 | + { | |
3672 | + bMiss = false; | |
3673 | + } | |
3674 | + pChip.bHit = true; | |
3675 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, inst, dTX.nモニタを考慮した音量( inst ), false, bMiss ); | |
3676 | + this.r次にくるギターChip = null; | |
3677 | + if ( !bMiss ) | |
3678 | + { | |
3679 | + this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip); | |
3680 | + } | |
3681 | + else | |
3682 | + { | |
3683 | + pChip.nLag = 0; // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入 | |
3684 | + this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip, false); | |
3685 | + } | |
3686 | + int chWailingChip = ( inst == E楽器パート.GUITAR ) ? 0x28 : 0xA8; | |
3687 | + CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[instIndex], 140); | |
3688 | + if ( item != null && !bMiss ) | |
3689 | + { | |
3690 | + this.queWailing[ instIndex ].Enqueue( item ); | |
3691 | + } | |
3692 | + } | |
3693 | + #endregion | |
3616 | 3694 | if ( autoPick ) |
3617 | 3695 | { |
3618 | 3696 | bool bMiss = true; |
@@ -3630,25 +3708,130 @@ | ||
3630 | 3708 | bMiss = false; |
3631 | 3709 | } |
3632 | 3710 | pChip.bHit = true; |
3633 | - this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量( inst ), false, bMiss ); | |
3711 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, inst, dTX.nモニタを考慮した音量( inst ), false, bMiss ); | |
3634 | 3712 | this.r次にくるギターChip = null; |
3635 | 3713 | if ( !bMiss ) |
3636 | 3714 | { |
3637 | - this.tチップのヒット処理( pChip.n発声時刻ms, pChip ); | |
3715 | + this.tチップのヒット処理( pChip.n発声時刻ms + ghostLag, pChip ); | |
3638 | 3716 | } |
3639 | 3717 | else |
3640 | 3718 | { |
3641 | 3719 | pChip.nLag = 0; // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入 |
3642 | - this.tチップのヒット処理( pChip.n発声時刻ms, pChip, false ); | |
3720 | + this.tチップのヒット処理( pChip.n発声時刻ms + ghostLag, pChip, false ); | |
3643 | 3721 | } |
3644 | 3722 | int chWailingChip = ( inst == E楽器パート.GUITAR ) ? 0x28 : 0xA8; |
3645 | - CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( pChip.n発声時刻ms, chWailingChip, this.nInputAdjustTimeMs[ instIndex ], 140 ); | |
3723 | + CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[ instIndex ], 140 ); | |
3646 | 3724 | if ( item != null && !bMiss ) |
3647 | 3725 | { |
3648 | 3726 | this.queWailing[ instIndex ].Enqueue( item ); |
3649 | 3727 | } |
3650 | 3728 | } |
3729 | + // #35411 modify end | |
3651 | 3730 | } |
3731 | + | |
3732 | + if( pChip.e楽器パート == E楽器パート.GUITAR && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
3733 | + { | |
3734 | + #region[ ギターゴースト ] | |
3735 | + if (CDTXMania.ConfigIni.eTargetGhost.Guitar != ETargetGhostData.NONE && | |
3736 | + CDTXMania.listTargetGhsotLag.Guitar != null) | |
3737 | + { | |
3738 | + double val = 0; | |
3739 | + if (CDTXMania.ConfigIni.eTargetGhost.Guitar == ETargetGhostData.ONLINE) | |
3740 | + { | |
3741 | + if (CDTXMania.DTX.n可視チップ数.Guitar > 0) | |
3742 | + { | |
3743 | + // Online Stats の計算式 | |
3744 | + val = 100 * | |
3745 | + (this.nヒット数_TargetGhost.Guitar.Perfect * 17 + | |
3746 | + this.nヒット数_TargetGhost.Guitar.Great * 7 + | |
3747 | + this.n最大コンボ数_TargetGhost.Guitar * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Guitar); | |
3748 | + } | |
3749 | + } | |
3750 | + else | |
3751 | + { | |
3752 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
3753 | + { | |
3754 | + val = CScoreIni.t旧演奏型スキルを計算して返す( | |
3755 | + CDTXMania.DTX.n可視チップ数.Guitar, | |
3756 | + this.nヒット数_TargetGhost.Guitar.Perfect, | |
3757 | + this.nヒット数_TargetGhost.Guitar.Great, | |
3758 | + this.nヒット数_TargetGhost.Guitar.Good, | |
3759 | + this.nヒット数_TargetGhost.Guitar.Poor, | |
3760 | + this.nヒット数_TargetGhost.Guitar.Miss, | |
3761 | + E楽器パート.GUITAR, new STAUTOPLAY()); | |
3762 | + } | |
3763 | + else | |
3764 | + { | |
3765 | + val = CScoreIni.t演奏型スキルを計算して返す( | |
3766 | + CDTXMania.DTX.n可視チップ数.Guitar, | |
3767 | + this.nヒット数_TargetGhost.Guitar.Perfect, | |
3768 | + this.nヒット数_TargetGhost.Guitar.Great, | |
3769 | + this.nヒット数_TargetGhost.Guitar.Good, | |
3770 | + this.nヒット数_TargetGhost.Guitar.Poor, | |
3771 | + this.nヒット数_TargetGhost.Guitar.Miss, | |
3772 | + this.n最大コンボ数_TargetGhost.Guitar, | |
3773 | + E楽器パート.GUITAR, new STAUTOPLAY()); | |
3774 | + } | |
3775 | + | |
3776 | + } | |
3777 | + if (val < 0) val = 0; | |
3778 | + if (val > 100) val = 100; | |
3779 | + this.actGraph.dbグラフ値目標_渡 = val; | |
3780 | + } | |
3781 | + #endregion | |
3782 | + } | |
3783 | + else if( pChip.e楽器パート == E楽器パート.BASS && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
3784 | + { | |
3785 | + #region[ ベースゴースト ] | |
3786 | + if (CDTXMania.ConfigIni.eTargetGhost.Bass != ETargetGhostData.NONE && | |
3787 | + CDTXMania.listTargetGhsotLag.Bass != null) | |
3788 | + { | |
3789 | + double val = 0; | |
3790 | + if (CDTXMania.ConfigIni.eTargetGhost.Bass == ETargetGhostData.ONLINE) | |
3791 | + { | |
3792 | + if (CDTXMania.DTX.n可視チップ数.Bass > 0) | |
3793 | + { | |
3794 | + // Online Stats の計算式 | |
3795 | + val = 100 * | |
3796 | + (this.nヒット数_TargetGhost.Bass.Perfect * 17 + | |
3797 | + this.nヒット数_TargetGhost.Bass.Great * 7 + | |
3798 | + this.n最大コンボ数_TargetGhost.Bass * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Bass); | |
3799 | + } | |
3800 | + } | |
3801 | + else | |
3802 | + { | |
3803 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
3804 | + { | |
3805 | + val = CScoreIni.t旧演奏型スキルを計算して返す( | |
3806 | + CDTXMania.DTX.n可視チップ数.Bass, | |
3807 | + this.nヒット数_TargetGhost.Bass.Perfect, | |
3808 | + this.nヒット数_TargetGhost.Bass.Great, | |
3809 | + this.nヒット数_TargetGhost.Bass.Good, | |
3810 | + this.nヒット数_TargetGhost.Bass.Poor, | |
3811 | + this.nヒット数_TargetGhost.Bass.Miss, | |
3812 | + E楽器パート.BASS, new STAUTOPLAY()); | |
3813 | + } | |
3814 | + else | |
3815 | + { | |
3816 | + val = CScoreIni.t演奏型スキルを計算して返す( | |
3817 | + CDTXMania.DTX.n可視チップ数.Bass, | |
3818 | + this.nヒット数_TargetGhost.Bass.Perfect, | |
3819 | + this.nヒット数_TargetGhost.Bass.Great, | |
3820 | + this.nヒット数_TargetGhost.Bass.Good, | |
3821 | + this.nヒット数_TargetGhost.Bass.Poor, | |
3822 | + this.nヒット数_TargetGhost.Bass.Miss, | |
3823 | + this.n最大コンボ数_TargetGhost.Bass, | |
3824 | + E楽器パート.BASS, new STAUTOPLAY()); | |
3825 | + } | |
3826 | + | |
3827 | + } | |
3828 | + if (val < 0) val = 0; | |
3829 | + if (val > 100) val = 100; | |
3830 | + this.actGraph.dbグラフ値目標_渡 = val; | |
3831 | + } | |
3832 | + #endregion | |
3833 | + } | |
3834 | + | |
3652 | 3835 | return; |
3653 | 3836 | } // end of "if configIni.bGuitar有効" |
3654 | 3837 | if ( !pChip.bHit && ( pChip.nバーからの距離dot[ instIndex ] < 0 ) ) // Guitar/Bass無効の場合は、自動演奏する |
@@ -419,21 +419,21 @@ | ||
419 | 419 | #region[ 演奏パートやスキルメーターの有無に応じて、読み込むクリップパネル画像を変更する ] |
420 | 420 | if( CDTXMania.ConfigIni.bGuitar有効 ) |
421 | 421 | this.txクリップパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_ClipPanelC.png" ) ); |
422 | - else if( CDTXMania.ConfigIni.bGraph有効 && CDTXMania.ConfigIni.bDrums有効 ) | |
422 | + else if( CDTXMania.ConfigIni.bGraph有効.Drums && CDTXMania.ConfigIni.bDrums有効 ) | |
423 | 423 | this.txクリップパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_ClipPanelB.png" ) ); |
424 | 424 | else |
425 | 425 | this.txクリップパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_ClipPanel.png" ) ); |
426 | 426 | #endregion |
427 | - this.txArフィルインエフェクト = new CTexture[ 31 ]; | |
428 | - for( int ar = 0; ar < 31; ar++ ) | |
429 | - { | |
430 | - this.txArフィルインエフェクト[ ar ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\StageEffect\7_StageEffect_" + ar.ToString() + ".png" ) ); | |
431 | - if( this.txArフィルインエフェクト[ ar ] == null ) | |
432 | - continue; //テクスチャが欠けていた場合は、事故防止のためにループを1つスキップする。 | |
427 | + //this.txArフィルインエフェクト = new CTexture[ 31 ]; | |
428 | + //for( int ar = 0; ar < 31; ar++ ) | |
429 | + //{ | |
430 | + // this.txArフィルインエフェクト[ ar ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\StageEffect\7_StageEffect_" + ar.ToString() + ".png" ) ); | |
431 | + // if( this.txArフィルインエフェクト[ ar ] == null ) | |
432 | + // continue; //テクスチャが欠けていた場合は、事故防止のためにループを1つスキップする。 | |
433 | 433 | |
434 | - this.txArフィルインエフェクト[ ar ].b加算合成 = true; | |
435 | - this.txArフィルインエフェクト[ ar ].vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
436 | - } | |
434 | + // this.txArフィルインエフェクト[ ar ].b加算合成 = true; | |
435 | + // this.txArフィルインエフェクト[ ar ].vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
436 | + //} | |
437 | 437 | for( int i = 0; i < 1; i++ ) |
438 | 438 | { |
439 | 439 | this.stフィルイン[ i ] = new STフィルイン(); |
@@ -469,10 +469,10 @@ | ||
469 | 469 | CDTXMania.tテクスチャの解放( ref this.txクリップパネル ); |
470 | 470 | CDTXMania.tテクスチャの解放( ref this.tx黒幕 ); |
471 | 471 | |
472 | - for( int ar = 0; ar < 31; ar++ ) | |
473 | - { | |
474 | - CDTXMania.tテクスチャの解放( ref this.txArフィルインエフェクト[ ar ] ); | |
475 | - } | |
472 | + //for( int ar = 0; ar < 31; ar++ ) | |
473 | + //{ | |
474 | + // CDTXMania.tテクスチャの解放( ref this.txArフィルインエフェクト[ ar ] ); | |
475 | + //} | |
476 | 476 | base.OnManagedリソースの解放(); |
477 | 477 | } |
478 | 478 | } |
@@ -733,20 +733,41 @@ | ||
733 | 733 | { |
734 | 734 | for( int i = 0; i < 1; i++ ) |
735 | 735 | { |
736 | - if( this.stフィルイン[i].b使用中 ) | |
736 | + if (this.stフィルイン[ i ].b使用中) | |
737 | 737 | { |
738 | - int numf = this.stフィルイン[i].ct進行.n現在の値; | |
739 | - this.stフィルイン[i].ct進行.t進行(); | |
740 | - if ( this.stフィルイン[i].ct進行.b終了値に達した ) | |
738 | + int numf = this.stフィルイン[ i ].ct進行.n現在の値; | |
739 | + this.stフィルイン[ i ].ct進行.t進行(); | |
740 | + if( this.stフィルイン[ i ].ct進行.b終了値に達した ) | |
741 | 741 | { |
742 | - this.stフィルイン[i].ct進行.t停止(); | |
743 | - this.stフィルイン[i].b使用中 = false; | |
742 | + this.stフィルイン[ i ].ct進行.t停止(); | |
743 | + this.stフィルイン[ i ].b使用中 = false; | |
744 | 744 | } |
745 | - if( CDTXMania.ConfigIni.bDrums有効 ) | |
745 | + //if ( this.txフィルインエフェクト != null ) | |
746 | + CStage演奏ドラム画面 stageDrum = CDTXMania.stage演奏ドラム画面; | |
747 | + //CStage演奏ギター画面 stageGuitar = CDTXMania.stage演奏ギター画面; | |
748 | + | |
749 | + //if( ( CDTXMania.ConfigIni.bDrums有効 ? stageDrum.txボーナスエフェクト : stageGuitar.txボーナスエフェクト ) != null ) | |
746 | 750 | { |
747 | - if( this.txArフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ] != null ) | |
748 | - this.txArフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ].t2D描画( CDTXMania.app.Device, 0, 0 ); | |
751 | + //this.txフィルインエフェクト.vc拡大縮小倍率.X = 2.0f; | |
752 | + //this.txフィルインエフェクト.vc拡大縮小倍率.Y = 2.0f; | |
753 | + //this.txフィルインエフェクト.b加算合成 = true; | |
754 | + //this.txフィルインエフェクト.t2D描画(CDTXMania.app.Device, 0, -2, new Rectangle(0, 0 + (360 * numf), 640, 360)); | |
755 | + if( CDTXMania.ConfigIni.bDrums有効 ) | |
756 | + { | |
757 | + stageDrum.txボーナスエフェクト.vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
758 | + stageDrum.txボーナスエフェクト.b加算合成 = true; | |
759 | + stageDrum.txボーナスエフェクト.t2D描画( CDTXMania.app.Device, 0, -2, new Rectangle(0, 0 + ( 360 * numf ), 640, 360 )) ; | |
760 | + try | |
761 | + { | |
762 | + //if( this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ] != null ) | |
763 | + // this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ].t2D描画( CDTXMania.app.Device, 0, 0 ); | |
764 | + } | |
765 | + catch( Exception ex ) | |
766 | + { | |
767 | + } | |
768 | + } | |
749 | 769 | } |
770 | + | |
750 | 771 | } |
751 | 772 | } |
752 | 773 | } |
@@ -857,7 +878,7 @@ | ||
857 | 878 | |
858 | 879 | //コンボ、ネームプレート |
859 | 880 | //グラフ無効&ネームプレートA,C |
860 | - if (CDTXMania.ConfigIni.bGraph有効 == false && CDTXMania.ConfigIni.eNamePlate == Eタイプ.A && CDTXMania.ConfigIni.bドラムコンボ文字の表示 == true ) | |
881 | + if (CDTXMania.ConfigIni.bGraph有効.Drums == false && CDTXMania.ConfigIni.eNamePlate == Eタイプ.A && CDTXMania.ConfigIni.bドラムコンボ文字の表示 == true ) | |
861 | 882 | { |
862 | 883 | CDTXMania.stage演奏ドラム画面.actCombo.On進行描画(); |
863 | 884 | } |
@@ -870,7 +891,7 @@ | ||
870 | 891 | |
871 | 892 | if( CDTXMania.ConfigIni.bDrums有効 ) |
872 | 893 | { |
873 | - if( CDTXMania.ConfigIni.bGraph有効 ) | |
894 | + if( CDTXMania.ConfigIni.bGraph有効.Drums ) | |
874 | 895 | { |
875 | 896 | #region[ スキルメーター有効 ] |
876 | 897 | this.n本体X = 2; |
@@ -966,9 +987,9 @@ | ||
966 | 987 | this.n本体Y = 50; |
967 | 988 | int nグラフX = 267; |
968 | 989 | |
969 | - if( CDTXMania.ConfigIni.bGraph有効 && !CDTXMania.DTX.bチップがある.Bass ) | |
990 | + if( CDTXMania.ConfigIni.bGraph有効.Bass && !CDTXMania.DTX.bチップがある.Bass ) | |
970 | 991 | this.n本体X = this.n本体X + nグラフX; |
971 | - if( CDTXMania.ConfigIni.bGraph有効 && !CDTXMania.DTX.bチップがある.Guitar ) | |
992 | + if( CDTXMania.ConfigIni.bGraph有効.Guitar && !CDTXMania.DTX.bチップがある.Guitar ) | |
972 | 993 | this.n本体X = this.n本体X - nグラフX; |
973 | 994 | #endregion |
974 | 995 |
@@ -27,7 +27,7 @@ | ||
27 | 27 | base.list子Activities.Add( this.actDANGER = new CAct演奏GuitarDanger() ); |
28 | 28 | base.list子Activities.Add( this.actAVI = new CAct演奏AVI() ); |
29 | 29 | base.list子Activities.Add( this.actBGA = new CAct演奏BGA() ); |
30 | - base.list子Activities.Add( this.actGraph = new CAct演奏Guitarスキルメーター() ); | |
30 | + base.list子Activities.Add( this.actGraph = new CAct演奏スキルメーター() ); | |
31 | 31 | base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() ); |
32 | 32 | base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() ); |
33 | 33 | base.list子Activities.Add( this.actStatusPanels = new CAct演奏Guitarステータスパネル() ); |
@@ -74,22 +74,28 @@ | ||
74 | 74 | public override void On活性化() |
75 | 75 | { |
76 | 76 | this.ct登場用 = new CCounter(0, 12, 16, CDTXMania.Timer); |
77 | + int nGraphUsePart = CDTXMania.ConfigIni.bGraph有効.Guitar ? 1 : 2; | |
77 | 78 | dtLastQueueOperation = DateTime.MinValue; |
78 | - if (CDTXMania.bコンパクトモード) | |
79 | + if( CDTXMania.bコンパクトモード ) | |
79 | 80 | { |
80 | 81 | var score = new Cスコア(); |
81 | 82 | CDTXMania.Songs管理.tScoreIniを読み込んで譜面情報を設定する(CDTXMania.strコンパクトモードファイル + ".score.ini", ref score); |
82 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
83 | - this.actGraph.dbグラフ値目標G_渡 = score.譜面情報.最大スキル[1]; | |
84 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
85 | - this.actGraph.dbグラフ値目標B_渡 = score.譜面情報.最大スキル[2]; | |
83 | + this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[ nGraphUsePart ]; | |
86 | 84 | } |
87 | 85 | else |
88 | 86 | { |
89 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
90 | - this.actGraph.dbグラフ値目標G_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[1]; // #24074 2011.01.23 add ikanick | |
91 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
92 | - this.actGraph.dbグラフ値目標B_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[2]; // #24074 2011.01.23 add ikanick | |
87 | + this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ nGraphUsePart ]; // #24074 2011.01.23 add ikanick | |
88 | + //this.actGraph.dbグラフ値自己ベスト = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ nGraphUsePart ]; | |
89 | + | |
90 | + // #35411 2015.08.21 chnmr0 add | |
91 | + // ゴースト利用可のなとき、0で初期化 | |
92 | + if (CDTXMania.ConfigIni.eTargetGhost[ nGraphUsePart ] != ETargetGhostData.NONE) | |
93 | + { | |
94 | + if (CDTXMania.listTargetGhsotLag[ nGraphUsePart ] != null) | |
95 | + { | |
96 | + this.actGraph.dbグラフ値目標_渡 = 0; | |
97 | + } | |
98 | + } | |
93 | 99 | } |
94 | 100 | base.On活性化(); |
95 | 101 | } |
@@ -186,7 +192,7 @@ | ||
186 | 192 | |
187 | 193 | this.t進行描画・DANGER(); |
188 | 194 | |
189 | - //this.t進行描画・グラフ(); | |
195 | + this.t進行描画・グラフ(); | |
190 | 196 | |
191 | 197 | this.t進行描画・WailingBonus(); |
192 | 198 | this.t進行描画・譜面スクロール速度(); |
@@ -305,7 +311,7 @@ | ||
305 | 311 | #region [ private ] |
306 | 312 | //----------------- |
307 | 313 | private CTexture txレーン; |
308 | - public CAct演奏Guitarスキルメーター actGraph; | |
314 | + public CAct演奏スキルメーター actGraph; | |
309 | 315 | public bool bサビ区間; |
310 | 316 | public double UnitTime; |
311 | 317 | public CAct演奏Guitarスピーカー actSpeaker; |
@@ -321,19 +327,53 @@ | ||
321 | 327 | protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip, bool bCorrectLane ) |
322 | 328 | { |
323 | 329 | E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.GUITAR, bCorrectLane ); |
324 | - if (CDTXMania.ConfigIni.nSkillMode == 0) | |
330 | + if( pChip.e楽器パート == E楽器パート.GUITAR && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
325 | 331 | { |
326 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
327 | - this.actGraph.dbグラフ値現在G_渡 = CScoreIni.t旧演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay); | |
328 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
329 | - this.actGraph.dbグラフ値現在B_渡 = CScoreIni.t旧演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay); | |
332 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
333 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay ); | |
334 | + else | |
335 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, this.actCombo.n現在のコンボ数.最高値.Guitar, E楽器パート.GUITAR, bIsAutoPlay ); | |
336 | + | |
337 | + if( CDTXMania.listTargetGhsotLag.Guitar != null && | |
338 | + CDTXMania.ConfigIni.eTargetGhost.Guitar == ETargetGhostData.ONLINE && | |
339 | + CDTXMania.DTX.n可視チップ数.Guitar > 0 ) | |
340 | + { | |
341 | + | |
342 | + this.actGraph.dbグラフ値現在_渡 = 100 * | |
343 | + (this.nヒット数・Auto含まない.Guitar.Perfect * 17 + | |
344 | + this.nヒット数・Auto含まない.Guitar.Great * 7 + | |
345 | + this.actCombo.n現在のコンボ数.最高値.Guitar * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Guitar ); | |
346 | + } | |
347 | + | |
348 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 0 ] = this.nヒット数・Auto含まない.Guitar.Perfect; | |
349 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 1 ] = this.nヒット数・Auto含まない.Guitar.Great; | |
350 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 2 ] = this.nヒット数・Auto含まない.Guitar.Good; | |
351 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 3 ] = this.nヒット数・Auto含まない.Guitar.Poor; | |
352 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 4 ] = this.nヒット数・Auto含まない.Guitar.Miss; | |
330 | 353 | } |
331 | - else if (CDTXMania.ConfigIni.nSkillMode == 1) | |
354 | + else if( pChip.e楽器パート == E楽器パート.BASS && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
332 | 355 | { |
333 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
334 | - this.actGraph.dbグラフ値現在G_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, this.actCombo.n現在のコンボ数.最高値.Guitar, E楽器パート.GUITAR, bIsAutoPlay); | |
335 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
336 | - this.actGraph.dbグラフ値現在B_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, this.actCombo.n現在のコンボ数.最高値.Bass, E楽器パート.BASS, bIsAutoPlay); | |
356 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
357 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay ); | |
358 | + else | |
359 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, this.actCombo.n現在のコンボ数.最高値.Bass, E楽器パート.BASS, bIsAutoPlay ); | |
360 | + | |
361 | + if( CDTXMania.listTargetGhsotLag.Bass != null && | |
362 | + CDTXMania.ConfigIni.eTargetGhost.Bass == ETargetGhostData.ONLINE && | |
363 | + CDTXMania.DTX.n可視チップ数.Bass > 0 ) | |
364 | + { | |
365 | + | |
366 | + this.actGraph.dbグラフ値現在_渡 = 100 * | |
367 | + (this.nヒット数・Auto含まない.Bass.Perfect * 17 + | |
368 | + this.nヒット数・Auto含まない.Bass.Great * 7 + | |
369 | + this.actCombo.n現在のコンボ数.最高値.Bass * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Bass ); | |
370 | + } | |
371 | + | |
372 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 0 ] = this.nヒット数・Auto含まない.Bass.Perfect; | |
373 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 1 ] = this.nヒット数・Auto含まない.Bass.Great; | |
374 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 2 ] = this.nヒット数・Auto含まない.Bass.Good; | |
375 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 3 ] = this.nヒット数・Auto含まない.Bass.Poor; | |
376 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 4 ] = this.nヒット数・Auto含まない.Bass.Miss; | |
337 | 377 | } |
338 | 378 | return eJudgeResult; |
339 | 379 | } |
@@ -363,16 +403,10 @@ | ||
363 | 403 | } |
364 | 404 | private void t進行描画・グラフ() |
365 | 405 | { |
366 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
367 | - { | |
406 | + if ( !CDTXMania.ConfigIni.bストイックモード && ( CDTXMania.ConfigIni.bGraph有効.Guitar || CDTXMania.ConfigIni.bGraph有効.Bass ) ) | |
407 | + { | |
368 | 408 | this.actGraph.On進行描画(); |
369 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Guitar.Perfect + this.nヒット数・Auto含む.Guitar.Great + this.nヒット数・Auto含む.Guitar.Good + this.nヒット数・Auto含む.Guitar.Miss + this.nヒット数・Auto含む.Guitar.Poor; | |
370 | 409 | } |
371 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
372 | - { | |
373 | - this.actGraph.On進行描画(); | |
374 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Bass.Perfect + this.nヒット数・Auto含む.Bass.Great + this.nヒット数・Auto含む.Bass.Good + this.nヒット数・Auto含む.Bass.Miss + this.nヒット数・Auto含む.Bass.Poor; | |
375 | - } | |
376 | 410 | } |
377 | 411 | protected override void t進行描画・Wailing枠() |
378 | 412 | { |
@@ -17,7 +17,10 @@ | ||
17 | 17 | this.strPlayerName = new string[2]; |
18 | 18 | |
19 | 19 | #region [ 本体位置 ] |
20 | - | |
20 | + //n本体X[ 0 ] 曲名パネルのX座標 | |
21 | + //n本体X[ 1 ] ギター側のY座標 | |
22 | + //n本体X[ 2 ] ベース側のX座標 | |
23 | + // | |
21 | 24 | if (CDTXMania.ConfigIni.eNamePlate == Eタイプ.A) |
22 | 25 | { |
23 | 26 | this.n本体X[0] = 515; |
@@ -45,8 +48,8 @@ | ||
45 | 48 | this.nグラフNX = 267; |
46 | 49 | } |
47 | 50 | |
48 | - //if (CDTXMania.ConfigIni.bGraph有効) | |
49 | - if(false) | |
51 | + if (CDTXMania.ConfigIni.bGraph有効.Guitar || CDTXMania.ConfigIni.bGraph有効.Bass) | |
52 | + //if(false) | |
50 | 53 | { |
51 | 54 | if (!CDTXMania.DTX.bチップがある.Bass) |
52 | 55 | { |
@@ -551,8 +554,10 @@ | ||
551 | 554 | { |
552 | 555 | if( !base.b活性化してない ) |
553 | 556 | { |
554 | - if ( CDTXMania.ConfigIni.bShowMusicInfo ) | |
557 | + if( CDTXMania.ConfigIni.bShowMusicInfo ) | |
558 | + { | |
555 | 559 | this.tx曲名パネル.t2D描画(CDTXMania.app.Device, this.n本体X[0], this.n本体NY); |
560 | + } | |
556 | 561 | |
557 | 562 | if (CDTXMania.ConfigIni.eNamePlate == Eタイプ.A) |
558 | 563 | { |
@@ -288,6 +288,7 @@ | ||
288 | 288 | { |
289 | 289 | CDTXMania.listTargetGhsotLag[instIndex] = new List<int>(); |
290 | 290 | CDTXMania.listTargetGhostScoreData[ instIndex ] = new CScoreIni.C演奏記録(); |
291 | + this.stGhostLag[instIndex] = new List<STGhostLag>(); | |
291 | 292 | ReadGhost(filename, CDTXMania.listTargetGhsotLag[instIndex]); |
292 | 293 | } |
293 | 294 | else if( CDTXMania.ConfigIni.eTargetGhost[instIndex] == ETargetGhostData.PERFECT ) |
@@ -782,9 +783,92 @@ | ||
782 | 783 | if (chip.e楽器パート != E楽器パート.UNKNOWN) |
783 | 784 | { |
784 | 785 | chip.n楽器パートでの出現順 = curCount[(int)chip.e楽器パート]++; |
786 | + if( CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ] != null ) | |
787 | + { | |
788 | + var lag = new STGhostLag(); | |
789 | + lag.index = chip.n楽器パートでの出現順; | |
790 | + lag.nJudgeTime = chip.n発声時刻ms + CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ]; | |
791 | + lag.nLagTime = CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ]; | |
792 | + | |
793 | + this.stGhostLag[ (int)chip.e楽器パート ].Add( lag ); | |
794 | + } | |
785 | 795 | } |
786 | 796 | } |
797 | + | |
798 | + //演奏記録をゴーストから逆生成 | |
799 | + for( int i = 0; i < 3; i++ ) | |
800 | + { | |
801 | + int nNowCombo = 0; | |
802 | + int nMaxCombo = 0; | |
803 | + CDTXMania.listTargetGhostScoreData[ i ] = new CScoreIni.C演奏記録(); | |
804 | + if( this.stGhostLag[ i ] == null ) | |
805 | + continue; | |
806 | + for( int j = 0; j < this.stGhostLag[ i ].Count; j++ ) | |
807 | + { | |
808 | + int ghostLag = 128; | |
809 | + ghostLag = this.stGhostLag[ i ][ j ].nLagTime; | |
810 | + // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置) | |
811 | + if (ghostLag > 255) | |
812 | + { | |
813 | + nNowCombo = 0; | |
814 | + } | |
815 | + ghostLag = (ghostLag & 255) - 128; | |
787 | 816 | |
817 | + if( ghostLag <= 127 ) | |
818 | + { | |
819 | + E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(ghostLag, 0); | |
820 | + | |
821 | + switch( eJudge ) | |
822 | + { | |
823 | + case E判定.Perfect: | |
824 | + CDTXMania.listTargetGhostScoreData[ i ].nPerfect数++; | |
825 | + break; | |
826 | + case E判定.Great: | |
827 | + CDTXMania.listTargetGhostScoreData[ i ].nGreat数++; | |
828 | + break; | |
829 | + case E判定.Good: | |
830 | + CDTXMania.listTargetGhostScoreData[ i ].nGood数++; | |
831 | + break; | |
832 | + case E判定.Poor: | |
833 | + CDTXMania.listTargetGhostScoreData[ i ].nPoor数++; | |
834 | + break; | |
835 | + case E判定.Miss: | |
836 | + case E判定.Bad: | |
837 | + CDTXMania.listTargetGhostScoreData[ i ].nMiss数++; | |
838 | + break; | |
839 | + } | |
840 | + switch( eJudge ) | |
841 | + { | |
842 | + case E判定.Perfect: | |
843 | + case E判定.Great: | |
844 | + case E判定.Good: | |
845 | + nNowCombo++; | |
846 | + CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 ); | |
847 | + break; | |
848 | + case E判定.Poor: | |
849 | + case E判定.Miss: | |
850 | + case E判定.Bad: | |
851 | + CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 ); | |
852 | + nNowCombo = 0; | |
853 | + break; | |
854 | + } | |
855 | + //Trace.WriteLine( eJudge.ToString() + " " + nNowCombo.ToString() + "Combo Max:" + nMaxCombo.ToString() + "Combo" ); | |
856 | + } | |
857 | + } | |
858 | + //CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = nMaxCombo; | |
859 | + int nTotal = CDTXMania.DTX.n可視チップ数.Drums; | |
860 | + if( i == 1 ) nTotal = CDTXMania.DTX.n可視チップ数.Guitar; | |
861 | + else if( i == 2 ) nTotal = CDTXMania.DTX.n可視チップ数.Bass; | |
862 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
863 | + { | |
864 | + CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t旧演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay ); | |
865 | + } | |
866 | + else | |
867 | + { | |
868 | + CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay ); | |
869 | + } | |
870 | + } | |
871 | + | |
788 | 872 | span = (TimeSpan)(DateTime.Now - timeBeginLoad); |
789 | 873 | Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); |
790 | 874 |
@@ -852,8 +936,8 @@ | ||
852 | 936 | CDTXMania.DTX.t旧仕様のドコドコチップを振り分ける(E楽器パート.DRUMS, CDTXMania.ConfigIni.bAssignToLBD.Drums); |
853 | 937 | CDTXMania.DTX.tドコドコ仕様変更(E楽器パート.DRUMS, CDTXMania.ConfigIni.eDkdkType.Drums); |
854 | 938 | CDTXMania.DTX.tドラムのランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandom.Drums); |
939 | + CDTXMania.DTX.tドラムの足ランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandomPedal.Drums); | |
855 | 940 | CDTXMania.DTX.t譜面仕様変更(E楽器パート.DRUMS, CDTXMania.ConfigIni.eNumOfLanes.Drums); |
856 | - CDTXMania.DTX.tドラムの足ランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandomPedal.Drums); | |
857 | 941 | CDTXMania.DTX.tギターとベースのランダム化(E楽器パート.GUITAR, CDTXMania.ConfigIni.eRandom.Guitar); |
858 | 942 | CDTXMania.DTX.tギターとベースのランダム化(E楽器パート.BASS, CDTXMania.ConfigIni.eRandom.Bass); |
859 | 943 |
@@ -1130,6 +1214,23 @@ | ||
1130 | 1214 | } |
1131 | 1215 | public int nIndex; |
1132 | 1216 | public STATUSPANEL[] stパネルマップ; |
1217 | + | |
1218 | + | |
1219 | + private STDGBVALUE<List<STGhostLag>> stGhostLag; | |
1220 | + | |
1221 | + [StructLayout(LayoutKind.Sequential)] | |
1222 | + private struct STGhostLag | |
1223 | + { | |
1224 | + public int index; | |
1225 | + public int nJudgeTime; | |
1226 | + public int nLagTime; | |
1227 | + public STGhostLag( int index, int nJudgeTime, int nLagTime ) | |
1228 | + { | |
1229 | + this.index = index; | |
1230 | + this.nJudgeTime = nJudgeTime; | |
1231 | + this.nLagTime = nLagTime; | |
1232 | + } | |
1233 | + } | |
1133 | 1234 | //----------------- |
1134 | 1235 | |
1135 | 1236 | private void ReadGhost( string filename, List<int> list ) // #35411 2015.08.19 chnmr0 add |
@@ -1160,75 +1261,75 @@ | ||
1160 | 1261 | } |
1161 | 1262 | } |
1162 | 1263 | |
1163 | - if( File.Exists( filename + ".score" ) ) | |
1164 | - { | |
1165 | - using( FileStream fs = new FileStream( filename + ".score", FileMode.Open, FileAccess.Read ) ) | |
1166 | - { | |
1167 | - using( StreamReader sr = new StreamReader( fs ) ) | |
1168 | - { | |
1169 | - try | |
1170 | - { | |
1171 | - string strScoreDataFile = sr.ReadToEnd(); | |
1264 | + //if( File.Exists( filename + ".score" ) ) | |
1265 | + //{ | |
1266 | + // using( FileStream fs = new FileStream( filename + ".score", FileMode.Open, FileAccess.Read ) ) | |
1267 | + // { | |
1268 | + // using( StreamReader sr = new StreamReader( fs ) ) | |
1269 | + // { | |
1270 | + // try | |
1271 | + // { | |
1272 | + // string strScoreDataFile = sr.ReadToEnd(); | |
1172 | 1273 | |
1173 | - strScoreDataFile = strScoreDataFile.Replace( Environment.NewLine, "\n" ); | |
1174 | - string[] delimiter = { "\n" }; | |
1175 | - string[] strSingleLine = strScoreDataFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries ); | |
1274 | + // strScoreDataFile = strScoreDataFile.Replace( Environment.NewLine, "\n" ); | |
1275 | + // string[] delimiter = { "\n" }; | |
1276 | + // string[] strSingleLine = strScoreDataFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries ); | |
1176 | 1277 | |
1177 | - for( int i = 0; i < strSingleLine.Length; i++ ) | |
1178 | - { | |
1179 | - string[] strA = strSingleLine[ i ].Split( '=' ); | |
1180 | - if (strA.Length != 2) | |
1181 | - continue; | |
1278 | + // for( int i = 0; i < strSingleLine.Length; i++ ) | |
1279 | + // { | |
1280 | + // string[] strA = strSingleLine[ i ].Split( '=' ); | |
1281 | + // if (strA.Length != 2) | |
1282 | + // continue; | |
1182 | 1283 | |
1183 | - switch( strA[ 0 ] ) | |
1184 | - { | |
1185 | - case "Score": | |
1186 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nスコア = Convert.ToInt32( strA[ 1 ] ); | |
1187 | - continue; | |
1188 | - case "PlaySkill": | |
1189 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].db演奏型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
1190 | - continue; | |
1191 | - case "Skill": | |
1192 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].dbゲーム型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
1193 | - continue; | |
1194 | - case "Perfect": | |
1195 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPerfect数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1196 | - continue; | |
1197 | - case "Great": | |
1198 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGreat数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1199 | - continue; | |
1200 | - case "Good": | |
1201 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGood数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1202 | - continue; | |
1203 | - case "Poor": | |
1204 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPoor数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1205 | - continue; | |
1206 | - case "Miss": | |
1207 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nMiss数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1208 | - continue; | |
1209 | - case "MaxCombo": | |
1210 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].n最大コンボ数 = Convert.ToInt32( strA[ 1 ] ); | |
1211 | - continue; | |
1212 | - default: | |
1213 | - continue; | |
1214 | - } | |
1215 | - } | |
1216 | - } | |
1217 | - catch( NullReferenceException ) | |
1218 | - { | |
1219 | - Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
1220 | - } | |
1221 | - catch( EndOfStreamException ) | |
1222 | - { | |
1223 | - Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
1224 | - } | |
1225 | - } | |
1226 | - } | |
1227 | - } | |
1228 | - else | |
1229 | - { | |
1230 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ] = null; | |
1231 | - } | |
1284 | + // switch( strA[ 0 ] ) | |
1285 | + // { | |
1286 | + // case "Score": | |
1287 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nスコア = Convert.ToInt32( strA[ 1 ] ); | |
1288 | + // continue; | |
1289 | + // case "PlaySkill": | |
1290 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].db演奏型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
1291 | + // continue; | |
1292 | + // case "Skill": | |
1293 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].dbゲーム型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
1294 | + // continue; | |
1295 | + // case "Perfect": | |
1296 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPerfect数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1297 | + // continue; | |
1298 | + // case "Great": | |
1299 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGreat数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1300 | + // continue; | |
1301 | + // case "Good": | |
1302 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGood数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1303 | + // continue; | |
1304 | + // case "Poor": | |
1305 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPoor数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1306 | + // continue; | |
1307 | + // case "Miss": | |
1308 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nMiss数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
1309 | + // continue; | |
1310 | + // case "MaxCombo": | |
1311 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].n最大コンボ数 = Convert.ToInt32( strA[ 1 ] ); | |
1312 | + // continue; | |
1313 | + // default: | |
1314 | + // continue; | |
1315 | + // } | |
1316 | + // } | |
1317 | + // } | |
1318 | + // catch( NullReferenceException ) | |
1319 | + // { | |
1320 | + // Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
1321 | + // } | |
1322 | + // catch( EndOfStreamException ) | |
1323 | + // { | |
1324 | + // Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
1325 | + // } | |
1326 | + // } | |
1327 | + // } | |
1328 | + //} | |
1329 | + //else | |
1330 | + //{ | |
1331 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ] = null; | |
1332 | + //} | |
1232 | 1333 | } |
1233 | 1334 | |
1234 | 1335 | private void t小文字表示(int x, int y, string str) |
@@ -1354,6 +1455,31 @@ | ||
1354 | 1455 | if( this.tx難易度パネル != null ) |
1355 | 1456 | this.tx難易度パネル.t2D描画( CDTXMania.app.Device, nX, nY, rect ); |
1356 | 1457 | } |
1458 | + protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, int nInputAdjustTime ) | |
1459 | + { | |
1460 | + //if ( pChip != null ) | |
1461 | + { | |
1462 | + int nDeltaTime = Math.Abs( (int)nTime ); | |
1463 | + //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms)); | |
1464 | + if ( nDeltaTime <= CDTXMania.nPerfect範囲ms ) | |
1465 | + { | |
1466 | + return E判定.Perfect; | |
1467 | + } | |
1468 | + if ( nDeltaTime <= CDTXMania.nGreat範囲ms ) | |
1469 | + { | |
1470 | + return E判定.Great; | |
1471 | + } | |
1472 | + if ( nDeltaTime <= CDTXMania.nGood範囲ms ) | |
1473 | + { | |
1474 | + return E判定.Good; | |
1475 | + } | |
1476 | + if ( nDeltaTime <= CDTXMania.nPoor範囲ms ) | |
1477 | + { | |
1478 | + return E判定.Poor; | |
1479 | + } | |
1480 | + } | |
1481 | + return E判定.Miss; | |
1482 | + } | |
1357 | 1483 | #endregion |
1358 | 1484 | } |
1359 | 1485 | } |
@@ -373,23 +373,23 @@ | ||
373 | 373 | } |
374 | 374 | |
375 | 375 | //Ver.K追加 演奏結果の記録 |
376 | - CScoreIni.C演奏記録 cScoreData; | |
377 | - cScoreData = this.st演奏記録[ (int)inst ]; | |
378 | - using (FileStream fs = new FileStream(directory + "\\" + filename + ".score", FileMode.Create, FileAccess.Write)) | |
379 | - { | |
380 | - using (StreamWriter sw = new StreamWriter(fs)) | |
381 | - { | |
382 | - sw.WriteLine( "Score=" + cScoreData.nスコア ); | |
383 | - sw.WriteLine( "PlaySkill=" + cScoreData.db演奏型スキル値 ); | |
384 | - sw.WriteLine( "Skill=" + cScoreData.dbゲーム型スキル値 ); | |
385 | - sw.WriteLine( "Perfect=" + cScoreData.nPerfect数・Auto含まない ); | |
386 | - sw.WriteLine( "Great=" + cScoreData.nGreat数・Auto含まない ); | |
387 | - sw.WriteLine( "Good=" + cScoreData.nGood数・Auto含まない ); | |
388 | - sw.WriteLine( "Poor=" + cScoreData.nPoor数・Auto含まない ); | |
389 | - sw.WriteLine( "Miss=" + cScoreData.nMiss数・Auto含まない ); | |
390 | - sw.WriteLine( "MaxCombo=" + cScoreData.n最大コンボ数 ); | |
391 | - } | |
392 | - } | |
376 | + //CScoreIni.C演奏記録 cScoreData; | |
377 | + //cScoreData = this.st演奏記録[ (int)inst ]; | |
378 | + //using (FileStream fs = new FileStream(directory + "\\" + filename + ".score", FileMode.Create, FileAccess.Write)) | |
379 | + //{ | |
380 | + // using (StreamWriter sw = new StreamWriter(fs)) | |
381 | + // { | |
382 | + // sw.WriteLine( "Score=" + cScoreData.nスコア ); | |
383 | + // sw.WriteLine( "PlaySkill=" + cScoreData.db演奏型スキル値 ); | |
384 | + // sw.WriteLine( "Skill=" + cScoreData.dbゲーム型スキル値 ); | |
385 | + // sw.WriteLine( "Perfect=" + cScoreData.nPerfect数・Auto含まない ); | |
386 | + // sw.WriteLine( "Great=" + cScoreData.nGreat数・Auto含まない ); | |
387 | + // sw.WriteLine( "Good=" + cScoreData.nGood数・Auto含まない ); | |
388 | + // sw.WriteLine( "Poor=" + cScoreData.nPoor数・Auto含まない ); | |
389 | + // sw.WriteLine( "Miss=" + cScoreData.nMiss数・Auto含まない ); | |
390 | + // sw.WriteLine( "MaxCombo=" + cScoreData.n最大コンボ数 ); | |
391 | + // } | |
392 | + //} | |
393 | 393 | } |
394 | 394 | } |
395 | 395 | public override void On非活性化() |
@@ -96,6 +96,7 @@ | ||
96 | 96 | public long nCurrentScore; |
97 | 97 | public long n現在のスコアGuitar; |
98 | 98 | public long n現在のスコアBass; |
99 | + public STDGBVALUE<double> db現在の達成率; | |
99 | 100 | public int nIndex; |
100 | 101 | public int nStatus; |
101 | 102 | public STATUSPANEL[] stパネルマップ; |
@@ -69,23 +69,29 @@ | ||
69 | 69 | |
70 | 70 | public override void On活性化() |
71 | 71 | { |
72 | + int nGraphUsePart = CDTXMania.ConfigIni.bGraph有効.Guitar ? 1 : 2; | |
72 | 73 | this.ct登場用 = new CCounter(0, 12, 16, CDTXMania.Timer); |
73 | 74 | dtLastQueueOperation = DateTime.MinValue; |
74 | - if (CDTXMania.bコンパクトモード) | |
75 | + if( CDTXMania.bコンパクトモード ) | |
75 | 76 | { |
76 | 77 | var score = new Cスコア(); |
77 | 78 | CDTXMania.Songs管理.tScoreIniを読み込んで譜面情報を設定する(CDTXMania.strコンパクトモードファイル + ".score.ini", ref score); |
78 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
79 | - this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[1]; | |
80 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
81 | - this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[2]; | |
79 | + this.actGraph.dbグラフ値目標_渡 = score.譜面情報.最大スキル[ nGraphUsePart ]; | |
82 | 80 | } |
83 | 81 | else |
84 | 82 | { |
85 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
86 | - this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[1]; // #24074 2011.01.23 add ikanick | |
87 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
88 | - this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[2]; // #24074 2011.01.23 add ikanick | |
83 | + this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ nGraphUsePart ]; // #24074 2011.01.23 add ikanick | |
84 | + //this.actGraph.dbグラフ値自己ベスト = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ nGraphUsePart ]; | |
85 | + | |
86 | + // #35411 2015.08.21 chnmr0 add | |
87 | + // ゴースト利用可のなとき、0で初期化 | |
88 | + if (CDTXMania.ConfigIni.eTargetGhost[ nGraphUsePart ] != ETargetGhostData.NONE) | |
89 | + { | |
90 | + if (CDTXMania.listTargetGhsotLag[ nGraphUsePart ] != null) | |
91 | + { | |
92 | + this.actGraph.dbグラフ値目標_渡 = 0; | |
93 | + } | |
94 | + } | |
89 | 95 | } |
90 | 96 | base.On活性化(); |
91 | 97 | } |
@@ -179,8 +185,7 @@ | ||
179 | 185 | this.t進行描画・ステータスパネル(); |
180 | 186 | if (CDTXMania.ConfigIni.bShowScore) |
181 | 187 | this.t進行描画・スコア(); |
182 | - if (CDTXMania.ConfigIni.bGraph有効) | |
183 | - this.t進行描画・グラフ(); | |
188 | + this.t進行描画・グラフ(); | |
184 | 189 | this.t進行描画・コンボ(); |
185 | 190 | this.t進行描画・演奏情報(); |
186 | 191 | //this.t進行描画・Wailing枠(); |
@@ -221,7 +226,6 @@ | ||
221 | 226 | #region [ private ] |
222 | 227 | //----------------- |
223 | 228 | private CTexture txレーン; |
224 | - public CAct演奏スキルメーター actGraph; | |
225 | 229 | public bool bサビ区間; |
226 | 230 | public double UnitTime; |
227 | 231 |
@@ -228,19 +232,53 @@ | ||
228 | 232 | protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip, bool bCorrectLane ) |
229 | 233 | { |
230 | 234 | E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.GUITAR, bCorrectLane ); |
231 | - if (CDTXMania.ConfigIni.nSkillMode == 0) | |
235 | + if( pChip.e楽器パート == E楽器パート.GUITAR && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
232 | 236 | { |
233 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
234 | - this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay); | |
235 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
236 | - this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay); | |
237 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
238 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay ); | |
239 | + else | |
240 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, this.actCombo.n現在のコンボ数.最高値.Guitar, E楽器パート.GUITAR, bIsAutoPlay ); | |
241 | + | |
242 | + if( CDTXMania.listTargetGhsotLag.Guitar != null && | |
243 | + CDTXMania.ConfigIni.eTargetGhost.Guitar == ETargetGhostData.ONLINE && | |
244 | + CDTXMania.DTX.n可視チップ数.Guitar > 0 ) | |
245 | + { | |
246 | + | |
247 | + this.actGraph.dbグラフ値現在_渡 = 100 * | |
248 | + (this.nヒット数・Auto含まない.Guitar.Perfect * 17 + | |
249 | + this.nヒット数・Auto含まない.Guitar.Great * 7 + | |
250 | + this.actCombo.n現在のコンボ数.最高値.Guitar * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Guitar ); | |
251 | + } | |
252 | + | |
253 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 0 ] = this.nヒット数・Auto含まない.Guitar.Perfect; | |
254 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 1 ] = this.nヒット数・Auto含まない.Guitar.Great; | |
255 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 2 ] = this.nヒット数・Auto含まない.Guitar.Good; | |
256 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 3 ] = this.nヒット数・Auto含まない.Guitar.Poor; | |
257 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 4 ] = this.nヒット数・Auto含まない.Guitar.Miss; | |
237 | 258 | } |
238 | - else if (CDTXMania.ConfigIni.nSkillMode == 1) | |
259 | + else if( pChip.e楽器パート == E楽器パート.BASS && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
239 | 260 | { |
240 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
241 | - this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss, this.actCombo.n現在のコンボ数.最高値.Guitar, E楽器パート.GUITAR, bIsAutoPlay); | |
242 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
243 | - this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, this.actCombo.n現在のコンボ数.最高値.Bass, E楽器パート.BASS, bIsAutoPlay); | |
261 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
262 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t旧演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay ); | |
263 | + else | |
264 | + this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss, this.actCombo.n現在のコンボ数.最高値.Bass, E楽器パート.BASS, bIsAutoPlay ); | |
265 | + | |
266 | + if( CDTXMania.listTargetGhsotLag.Bass != null && | |
267 | + CDTXMania.ConfigIni.eTargetGhost.Bass == ETargetGhostData.ONLINE && | |
268 | + CDTXMania.DTX.n可視チップ数.Bass > 0 ) | |
269 | + { | |
270 | + | |
271 | + this.actGraph.dbグラフ値現在_渡 = 100 * | |
272 | + (this.nヒット数・Auto含まない.Bass.Perfect * 17 + | |
273 | + this.nヒット数・Auto含まない.Bass.Great * 7 + | |
274 | + this.actCombo.n現在のコンボ数.最高値.Bass * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Bass ); | |
275 | + } | |
276 | + | |
277 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 0 ] = this.nヒット数・Auto含まない.Bass.Perfect; | |
278 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 1 ] = this.nヒット数・Auto含まない.Bass.Great; | |
279 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 2 ] = this.nヒット数・Auto含まない.Bass.Good; | |
280 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 3 ] = this.nヒット数・Auto含まない.Bass.Poor; | |
281 | + this.actGraph.n現在のAutoを含まない判定数_渡[ 4 ] = this.nヒット数・Auto含まない.Bass.Miss; | |
244 | 282 | } |
245 | 283 | return eJudgeResult; |
246 | 284 | } |
@@ -270,16 +308,10 @@ | ||
270 | 308 | } |
271 | 309 | private void t進行描画・グラフ() |
272 | 310 | { |
273 | - if (CDTXMania.ConfigIni.bGraph有効 && ((CDTXMania.DTX.bチップがある.Guitar && !CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && !CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
274 | - { | |
311 | + if ( !CDTXMania.ConfigIni.bストイックモード && ( CDTXMania.ConfigIni.bGraph有効.Guitar || CDTXMania.ConfigIni.bGraph有効.Bass ) ) | |
312 | + { | |
275 | 313 | this.actGraph.On進行描画(); |
276 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Guitar.Perfect + this.nヒット数・Auto含む.Guitar.Great + this.nヒット数・Auto含む.Guitar.Good + this.nヒット数・Auto含む.Guitar.Miss + this.nヒット数・Auto含む.Guitar.Poor; | |
277 | 314 | } |
278 | - else if (CDTXMania.ConfigIni.bGraph有効 && ((!CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass) || (CDTXMania.DTX.bチップがある.Guitar && CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである))) | |
279 | - { | |
280 | - this.actGraph.On進行描画(); | |
281 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Bass.Perfect + this.nヒット数・Auto含む.Bass.Great + this.nヒット数・Auto含む.Bass.Good + this.nヒット数・Auto含む.Bass.Miss + this.nヒット数・Auto含む.Bass.Poor; | |
282 | - } | |
283 | 315 | } |
284 | 316 | protected override void t進行描画・Wailing枠() |
285 | 317 | { |
@@ -193,7 +193,7 @@ | ||
193 | 193 | this.n本体X[1] = 0; |
194 | 194 | } |
195 | 195 | } |
196 | - else if (CDTXMania.ConfigIni.bGraph有効) | |
196 | + else if (CDTXMania.ConfigIni.bGraph有効.Guitar || CDTXMania.ConfigIni.bGraph有効.Bass ) | |
197 | 197 | { |
198 | 198 | if (!CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである) |
199 | 199 | { |
@@ -430,8 +430,8 @@ | ||
430 | 430 | this.t小文字表示( 167 + this.n本体X[ i ], 192 + this.n本体Y, string.Format( "{0,3:##0}%", dbMISS率 ) ); |
431 | 431 | this.t小文字表示( 167 + this.n本体X[ i ], 222 + this.n本体Y, string.Format( "{0,3:##0}%", dbMAXCOMBO率 ) ); |
432 | 432 | |
433 | - this.t大文字表示(58 + this.n本体X[ i ], 277 + this.n本体Y, string.Format( "{0,6:##0.00}", CDTXMania.stage演奏ドラム画面.actGraph.dbグラフ値現在_渡 ) ); | |
434 | - this.t大文字表示(88 + this.n本体X[ i ], 363 + this.n本体Y, string.Format( "{0,6:##0.00}", CDTXMania.stage演奏ドラム画面.actGraph.dbグラフ値現在_渡 * ( CDTXMania.DTX.LEVEL[ i ] / 10.0 ) * 0.2 ) ); | |
433 | + this.t大文字表示(58 + this.n本体X[ i ], 277 + this.n本体Y, string.Format( "{0,6:##0.00}", CDTXMania.stage演奏ギター画面.actStatusPanels.db現在の達成率.Guitar ) ); | |
434 | + this.t大文字表示(88 + this.n本体X[ i ], 363 + this.n本体Y, string.Format( "{0,6:##0.00}", CDTXMania.stage演奏ギター画面.actStatusPanels.db現在の達成率.Guitar * ( CDTXMania.DTX.LEVEL[ i ] / 10.0 ) * 0.2 ) ); | |
435 | 435 | |
436 | 436 | if( this.tx難易度パネル != null ) |
437 | 437 | this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 14 + this.n本体X[ i ], 266 + this.n本体Y, new Rectangle( 0, 60 * nIndex, 60, 60 ) ); |
@@ -27,7 +27,7 @@ | ||
27 | 27 | this.n本体Y = 12; |
28 | 28 | } |
29 | 29 | |
30 | - if (CDTXMania.ConfigIni.bGraph有効) | |
30 | + if (CDTXMania.ConfigIni.bGraph有効.Guitar || CDTXMania.ConfigIni.bGraph有効.Bass ) | |
31 | 31 | { |
32 | 32 | if (!CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである) |
33 | 33 | { |
@@ -3,6 +3,7 @@ | ||
3 | 3 | using System.Text; |
4 | 4 | using System.Runtime.InteropServices; |
5 | 5 | using System.Drawing; |
6 | +using System.Diagnostics; | |
6 | 7 | using System.IO; |
7 | 8 | using SlimDX; |
8 | 9 | using FDK; |
@@ -11,21 +12,28 @@ | ||
11 | 12 | { |
12 | 13 | internal class CAct演奏スキルメーター : CActivity |
13 | 14 | { |
15 | + // グラフ仕様 | |
16 | + // ・ギターとベースで同時にグラフを出すことはない。 | |
17 | + // | |
18 | + // ・目標のメーター画像 | |
19 | + // →ゴーストがあった | |
20 | + // ・ゴーストに基づいたグラフ(リアルタイム比較) | |
21 | + // →なかった | |
22 | + // ・ScoreIniの自己ベストのグラフ | |
23 | + // | |
14 | 24 | |
25 | + private STDGBVALUE<int> nGraphBG_XPos = new STDGBVALUE<int>(); //ドラムにも座標指定があるためDGBVALUEとして扱う。 | |
26 | + private int nGraphBG_YPos = 200; | |
27 | + private int DispHeight = 400; | |
28 | + private int DispWidth = 60; | |
29 | + private CCounter counterYposInImg = null; | |
30 | + private readonly int slices = 10; | |
31 | + private int nGraphUsePart = 0; | |
32 | + private int[] nGraphGauge_XPos = new int[ 2 ]; | |
33 | + private int nPart = 0; | |
15 | 34 | |
16 | - // #24074 2011.01.23 ikanick グラフの描画 | |
17 | - // 実装内容 | |
18 | - // ・左を現在、右を目標 | |
19 | - // ・基準線(60,70,80,90,100%)を超えると線が黄色くなる(元は白) | |
20 | - // ・目標を超えると現在が光る | |
21 | - // ・オート時には描画しない | |
22 | - // 要望・実装予定 | |
23 | - // ・グラフを波打たせるなどの視覚の向上→実装済 | |
24 | - // 修正等 | |
25 | - // ・画像がないと落ちる→修正済 | |
35 | + // プロパティ | |
26 | 36 | |
27 | - // プロパティ | |
28 | - | |
29 | 37 | public double dbグラフ値現在_渡 |
30 | 38 | { |
31 | 39 | get |
@@ -48,445 +56,362 @@ | ||
48 | 56 | this.dbグラフ値目標 = value; |
49 | 57 | } |
50 | 58 | } |
51 | - | |
52 | - // コンストラクタ | |
53 | - | |
54 | - public CAct演奏スキルメーター() | |
59 | + public int[] n現在のAutoを含まない判定数_渡 | |
55 | 60 | { |
56 | - ST文字位置[] st文字位置Array = new ST文字位置[11]; | |
57 | - ST文字位置 st文字位置 = new ST文字位置(); | |
58 | - st文字位置.ch = '0'; | |
59 | - st文字位置.pt = new Point(210, 0); | |
60 | - st文字位置Array[0] = st文字位置; | |
61 | - ST文字位置 st文字位置2 = new ST文字位置(); | |
62 | - st文字位置2.ch = '1'; | |
63 | - st文字位置2.pt = new Point(223, 0); | |
64 | - st文字位置Array[1] = st文字位置2; | |
65 | - ST文字位置 st文字位置3 = new ST文字位置(); | |
66 | - st文字位置3.ch = '2'; | |
67 | - st文字位置3.pt = new Point(235, 0); | |
68 | - st文字位置Array[2] = st文字位置3; | |
69 | - ST文字位置 st文字位置4 = new ST文字位置(); | |
70 | - st文字位置4.ch = '3'; | |
71 | - st文字位置4.pt = new Point(247, 0); | |
72 | - st文字位置Array[3] = st文字位置4; | |
73 | - ST文字位置 st文字位置5 = new ST文字位置(); | |
74 | - st文字位置5.ch = '4'; | |
75 | - st文字位置5.pt = new Point(259, 0); | |
76 | - st文字位置Array[4] = st文字位置5; | |
77 | - ST文字位置 st文字位置6 = new ST文字位置(); | |
78 | - st文字位置6.ch = '5'; | |
79 | - st文字位置6.pt = new Point(271, 0); | |
80 | - st文字位置Array[5] = st文字位置6; | |
81 | - ST文字位置 st文字位置7 = new ST文字位置(); | |
82 | - st文字位置7.ch = '6'; | |
83 | - st文字位置7.pt = new Point(283, 0); | |
84 | - st文字位置Array[6] = st文字位置7; | |
85 | - ST文字位置 st文字位置8 = new ST文字位置(); | |
86 | - st文字位置8.ch = '7'; | |
87 | - st文字位置8.pt = new Point(295, 0); | |
88 | - st文字位置Array[7] = st文字位置8; | |
89 | - ST文字位置 st文字位置9 = new ST文字位置(); | |
90 | - st文字位置9.ch = '8'; | |
91 | - st文字位置9.pt = new Point(307, 0); | |
92 | - st文字位置Array[8] = st文字位置9; | |
93 | - ST文字位置 st文字位置10 = new ST文字位置(); | |
94 | - st文字位置10.ch = '9'; | |
95 | - st文字位置10.pt = new Point(319, 0); | |
96 | - st文字位置Array[9] = st文字位置10; | |
97 | - ST文字位置 st文字位置11 = new ST文字位置(); | |
98 | - st文字位置11.ch = '.'; | |
99 | - st文字位置11.pt = new Point(331, 0); | |
100 | - st文字位置Array[10] = st文字位置11; | |
101 | - this.st小文字位置 = st文字位置Array; | |
102 | - base.b活性化してない = true; | |
103 | - } | |
104 | - | |
105 | - | |
106 | - // CActivity 実装 | |
107 | - | |
108 | - public override void On活性化() | |
109 | - { | |
110 | - this.n本体X[0] = 900; | |
111 | - this.n本体X[1] = 574; | |
112 | - this.n本体X[2] = 290; | |
113 | - | |
114 | - this.dbグラフ値目標 = 80f; | |
115 | - this.dbグラフ値現在 = 0f; | |
116 | - this.dbグラフ値比較 = 0f; | |
117 | - this.db現在の判定数合計 = 0f; | |
118 | - base.On活性化(); | |
119 | - } | |
120 | - public override void On非活性化() | |
121 | - { | |
122 | - base.On非活性化(); | |
123 | - } | |
124 | - public override void OnManagedリソースの作成() | |
125 | - { | |
126 | - if (!base.b活性化してない) | |
61 | + get | |
127 | 62 | { |
128 | - this.txグラフ = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Graph_main.png")); | |
129 | - this.tx比較 = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Graph_main.png")); | |
130 | - this.txグラフバックパネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Graph_main.png")); | |
131 | - this.tx数字 = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Graph_main.png")); | |
132 | - this.txComboBom = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Combobomb.png")); | |
133 | - if (this.txComboBom != null) | |
134 | - this.txComboBom.b加算合成 = true; | |
135 | - base.OnManagedリソースの作成(); | |
63 | + return this.n現在のAutoを含まない判定数; | |
136 | 64 | } |
137 | - } | |
138 | - public override void OnManagedリソースの解放() | |
139 | - { | |
140 | - if (!base.b活性化してない) | |
65 | + set | |
141 | 66 | { |
142 | - CDTXMania.tテクスチャの解放(ref this.txグラフ); | |
143 | - CDTXMania.tテクスチャの解放(ref this.tx比較); | |
144 | - CDTXMania.tテクスチャの解放(ref this.txグラフバックパネル); | |
145 | - CDTXMania.tテクスチャの解放(ref this.tx数字); | |
146 | - CDTXMania.tテクスチャの解放(ref this.txComboBom); | |
147 | - base.OnManagedリソースの解放(); | |
67 | + this.n現在のAutoを含まない判定数 = value; | |
148 | 68 | } |
149 | 69 | } |
150 | - public override int On進行描画() | |
151 | - { | |
152 | - int j = 0; | |
70 | + | |
71 | + // コンストラクタ | |
153 | 72 | |
154 | - if (CDTXMania.ConfigIni.bGuitar有効) | |
155 | - { | |
156 | - if (!CDTXMania.DTX.bチップがある.Bass) | |
157 | - j = 1; | |
158 | - else if (!CDTXMania.DTX.bチップがある.Guitar) | |
159 | - j = 2; | |
160 | - else if (!CDTXMania.ConfigIni.bギターが全部オートプレイである && CDTXMania.ConfigIni.bベースが全部オートプレイである) | |
161 | - j = 1; | |
162 | - else if (CDTXMania.ConfigIni.bギターが全部オートプレイである && !CDTXMania.ConfigIni.bベースが全部オートプレイである) | |
163 | - j = 2; | |
164 | - } | |
73 | + public CAct演奏スキルメーター() | |
74 | + { | |
75 | + base.b活性化してない = true; | |
76 | + } | |
165 | 77 | |
166 | - if (!base.b活性化してない) | |
167 | - { | |
168 | - if (base.b初めての進行描画) | |
169 | - { | |
170 | - this.ct爆発エフェクト = new CCounter(0, 13, 20, CDTXMania.Timer); | |
171 | - base.b初めての進行描画 = false; | |
172 | - } | |
173 | - double db1ノーツごとの達成率 = (double)this.dbグラフ値目標 / CDTXMania.DTX.n可視チップ数[j]; | |
174 | 78 | |
175 | - if (j == 0) | |
176 | - this.n現在演奏されたノーツ数 = | |
177 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む[j].Perfect + | |
178 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む[j].Great + | |
179 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む[j].Good + | |
180 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む[j].Poor + | |
181 | - CDTXMania.stage演奏ドラム画面.nヒット数・Auto含む[j].Miss; | |
182 | - else | |
183 | - this.n現在演奏されたノーツ数 = | |
184 | - CDTXMania.stage演奏ギター画面.nヒット数・Auto含む[j].Perfect + | |
185 | - CDTXMania.stage演奏ギター画面.nヒット数・Auto含む[j].Great + | |
186 | - CDTXMania.stage演奏ギター画面.nヒット数・Auto含む[j].Good + | |
187 | - CDTXMania.stage演奏ギター画面.nヒット数・Auto含む[j].Poor + | |
188 | - CDTXMania.stage演奏ギター画面.nヒット数・Auto含む[j].Miss; | |
79 | + // CActivity 実装 | |
189 | 80 | |
190 | - CScoreIni.C演奏記録 drums = new CScoreIni.C演奏記録(); | |
81 | + public override void On活性化() | |
82 | + { | |
83 | + this.dbグラフ値目標 = 0f; | |
84 | + this.dbグラフ値現在 = 0f; | |
191 | 85 | |
192 | - double rate = (double)n現在演奏されたノーツ数 / (double)CDTXMania.DTX.n可視チップ数[j]; | |
86 | + this.n現在のAutoを含まない判定数 = new int[ 6 ]; | |
193 | 87 | |
194 | - if (CDTXMania.ConfigIni.nSkillMode == 0) | |
195 | - { | |
196 | - //int n逆算Perfect = drums.nPerfect数・Auto含まない / this.n現在演奏されたノーツ数; | |
197 | - //int n逆算Great = drums.nGreat数・Auto含まない / this.n現在演奏されたノーツ数; | |
198 | - //this.dbグラフ値比較 = CScoreIni.t旧ゴーストスキルを計算して返す(CDTXMania.DTX.n可視チップ数[j], drums.nPerfect数, drums.nGreat数, drums.nGood数, drums.nPoor数, drums.nMiss数, E楽器パート[j]) * rate; | |
199 | - //this.dbグラフ値比較 = ((this.dbグラフ値目標_渡) / (double)CDTXMania.DTX.n可視チップ数[j]) * rate; | |
200 | - this.dbグラフ値比較 = this.dbグラフ値目標_渡; | |
201 | - } | |
202 | - else if (CDTXMania.ConfigIni.nSkillMode == 1) | |
203 | - { | |
204 | - //this.dbグラフ値比較 = CScoreIni.tゴーストスキルを計算して返す(CDTXMania.DTX.n可視チップ数[j], this.n現在演奏されたノーツ数, drums.n最大コンボ数, E楽器パート[j]); | |
205 | - this.dbグラフ値比較 = (double)(db1ノーツごとの達成率 * n現在演奏されたノーツ数); | |
206 | - } | |
88 | + base.On活性化(); | |
89 | + } | |
90 | + public override void On非活性化() | |
91 | + { | |
92 | + base.On非活性化(); | |
93 | + } | |
94 | + public override void OnManagedリソースの作成() | |
95 | + { | |
96 | + if( !base.b活性化してない ) | |
97 | + { | |
98 | + this.pfNameFont = new CPrivateFastFont( new FontFamily( "Arial" ), 16, FontStyle.Bold ); | |
99 | + this.txグラフ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_Main.png" ) ); | |
100 | + this.txグラフ_ゲージ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Graph_Gauge.png" ) ); | |
207 | 101 | |
208 | - | |
209 | - //this.dbグラフ値比較 = (double)(db1ノーツごとの達成率 * n現在演奏されたノーツ数); | |
210 | - // 背景暗幕 | |
211 | - Rectangle rectangle = new Rectangle(900, 0, 380, 720); | |
212 | - if (this.txグラフ != null) | |
102 | + if( this.pfNameFont != null ) | |
213 | 103 | { |
214 | - this.txグラフバックパネル.t2D描画(CDTXMania.app.Device, this.n本体X[j], 0, rectangle); | |
215 | - this.txグラフバックパネル.t2D描画(CDTXMania.app.Device, 141 + this.n本体X[j], 650 - (int)(this.dbグラフ値現在 * 5.56), new Rectangle(499, 0, 201, (int)(this.dbグラフ値現在 * 5.56))); | |
216 | - } | |
217 | - | |
218 | - this.t小文字表示(270 + this.n本体X[j], 658, string.Format("{0,6:##0.00}%", this.dbグラフ値現在)); | |
219 | - if (CDTXMania.ConfigIni.nInfoType == 0) | |
220 | - { | |
221 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 200, new Rectangle(336, 0, 162, 60)); | |
222 | - this.t小文字表示(250 + this.n本体X[j], 224, string.Format("{0,6:##0.00}%", this.dbグラフ値目標)); | |
223 | - if (this.dbグラフ値現在 > this.dbグラフ値目標) | |
104 | + if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.PERFECT ) | |
224 | 105 | { |
225 | - this.tx比較.n透明度 = 128; | |
106 | + this.txPlayerName = this.t指定された文字テクスチャを生成する( "DJ AUTO" ); | |
226 | 107 | } |
227 | - } | |
228 | - else if (CDTXMania.ConfigIni.nInfoType == 1) | |
229 | - { | |
230 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 200, new Rectangle(336, 205, 162, 60)); | |
231 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 280, new Rectangle(336, 265, 162, 60)); | |
232 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 360, new Rectangle(336, 325, 162, 60)); | |
233 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 440, new Rectangle(336, 385, 162, 60)); | |
234 | - this.tx比較.t2D描画(CDTXMania.app.Device, 170 + this.n本体X[j], 520, new Rectangle(336, 445, 162, 60)); | |
235 | - | |
236 | - if (j == 0) | |
108 | + else if( CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.LAST_PLAY ) | |
237 | 109 | { |
238 | - this.t小文字表示(250 + this.n本体X[j], 224, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない[j].Perfect)); | |
239 | - this.t小文字表示(250 + this.n本体X[j], 304, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない[j].Great)); | |
240 | - this.t小文字表示(250 + this.n本体X[j], 384, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない[j].Good)); | |
241 | - this.t小文字表示(250 + this.n本体X[j], 464, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない[j].Poor)); | |
242 | - this.t小文字表示(250 + this.n本体X[j], 544, string.Format("{0,6:###0}", CDTXMania.stage演奏ドラム画面.nヒット数・Auto含まない[j].Miss)); | |
110 | + this.txPlayerName = this.t指定された文字テクスチャを生成する( "LAST PLAY" ); | |
243 | 111 | } |
244 | - else | |
245 | - { | |
246 | - this.t小文字表示(250 + this.n本体X[j], 224, string.Format("{0,6:###0}", CDTXMania.stage演奏ギター画面.nヒット数・Auto含まない[j].Perfect)); | |
247 | - this.t小文字表示(250 + this.n本体X[j], 304, string.Format("{0,6:###0}", CDTXMania.stage演奏ギター画面.nヒット数・Auto含まない[j].Great)); | |
248 | - this.t小文字表示(250 + this.n本体X[j], 384, string.Format("{0,6:###0}", CDTXMania.stage演奏ギター画面.nヒット数・Auto含まない[j].Good)); | |
249 | - this.t小文字表示(250 + this.n本体X[j], 464, string.Format("{0,6:###0}", CDTXMania.stage演奏ギター画面.nヒット数・Auto含まない[j].Poor)); | |
250 | - this.t小文字表示(250 + this.n本体X[j], 544, string.Format("{0,6:###0}", CDTXMania.stage演奏ギター画面.nヒット数・Auto含まない[j].Miss)); | |
251 | - } | |
252 | 112 | } |
253 | - | |
254 | - // 基準線 | |
255 | - rectangle = new Rectangle(78, 0, 60, 3); | |
256 | - if (this.txグラフ != null) | |
257 | - { | |
258 | - //this.txグラフ.n透明度 = 32; | |
259 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(58f, 1f, 1f); | |
260 | - for (int i = 0; i < 20; i++) | |
113 | + base.OnManagedリソースの作成(); | |
114 | + } | |
115 | + } | |
116 | + public override void OnManagedリソースの解放() | |
117 | + { | |
118 | + if( !base.b活性化してない ) | |
119 | + { | |
120 | + CDTXMania.tテクスチャの解放( ref this.txグラフ ); | |
121 | + CDTXMania.tテクスチャの解放( ref this.txグラフ_ゲージ ); | |
122 | + CDTXMania.tテクスチャの解放( ref this.txグラフ値自己ベストライン ); | |
123 | + base.OnManagedリソースの解放(); | |
124 | + } | |
125 | + } | |
126 | + public override int On進行描画() | |
127 | + { | |
128 | + if( !base.b活性化してない ) | |
129 | + { | |
130 | + if( base.b初めての進行描画 ) | |
131 | + { | |
132 | + //座標などの定義は初回だけにする。 | |
133 | + //2016.03.29 kairera0467 非セッション譜面で、譜面が無いパートでグラフを有効にしている場合、譜面があるパートに一時的にグラフを切り替える。 | |
134 | + // 時間がなくて雑なコードになったため、後日最適化を行う。 | |
135 | + if( CDTXMania.ConfigIni.bDrums有効 ) | |
261 | 136 | { |
262 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j], 94 + (int)(29.26 * i), rectangle); | |
137 | + this.nPart = 0; | |
138 | + this.nGraphUsePart = 0; | |
263 | 139 | } |
264 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 230f, 1f); | |
265 | - for (int i = 0; i < 2; i++) | |
140 | + else if( CDTXMania.ConfigIni.bGuitar有効 ) | |
266 | 141 | { |
267 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j] + (int)(29.26 * i), 94, rectangle); | |
268 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j] + (int)(29.26 * i), 94, rectangle); | |
269 | - } | |
270 | - } | |
271 | - if (this.txグラフ != null) | |
272 | - { | |
273 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(38f, 1f, 1f); | |
274 | - } | |
275 | - for (int i = 0; i < 5; i++) | |
276 | - { | |
277 | - // 基準線を越えたら線が黄色くなる | |
278 | - if (this.dbグラフ値現在 >= (100 - i * 10)) | |
279 | - { | |
280 | - rectangle = new Rectangle(78, 1, 60, 2);//黄色 | |
281 | - if (this.txグラフ != null) | |
142 | + this.nGraphUsePart = ( CDTXMania.ConfigIni.bGraph有効.Guitar == true ) ? 1 : 2; | |
143 | + if( CDTXMania.DTX.bチップがある.Guitar ) | |
144 | + this.nPart = CDTXMania.ConfigIni.bGraph有効.Guitar ? 0 : 1; | |
145 | + else if( !CDTXMania.DTX.bチップがある.Guitar && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
282 | 146 | { |
283 | - //this.txグラフ.n透明度 = 224; | |
147 | + this.nPart = 1; | |
148 | + this.nGraphUsePart = 2; | |
284 | 149 | } |
150 | + | |
151 | + if( !CDTXMania.DTX.bチップがある.Bass && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
152 | + this.nPart = 0; | |
285 | 153 | } |
286 | - else | |
154 | + | |
155 | + this.nGraphBG_XPos.Drums = 870; | |
156 | + this.nGraphBG_XPos.Guitar = 356; | |
157 | + this.nGraphBG_XPos.Bass = 647; | |
158 | + this.nGraphBG_YPos = 50; | |
159 | + | |
160 | + if( CDTXMania.ConfigIni.eTargetGhost[ this.nGraphUsePart ] != ETargetGhostData.NONE ) | |
287 | 161 | { |
288 | - rectangle = new Rectangle(78, 4, 60, 2); | |
289 | - if (this.txグラフ != null) | |
162 | + if( CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
290 | 163 | { |
291 | - this.txグラフ.n透明度 = 160; | |
164 | + //this.dbグラフ値目標 = CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ].db演奏型スキル値; | |
165 | + this.dbグラフ値目標_表示 = CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ].db演奏型スキル値; | |
292 | 166 | } |
293 | 167 | } |
294 | 168 | |
295 | - if (this.txグラフ != null) | |
296 | - { | |
297 | - this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j], 94 + (int)(58.52 * i), rectangle); | |
169 | + this.nGraphGauge_XPos = new int[] { 3, 205 }; | |
298 | 170 | |
299 | - } | |
171 | + base.b初めての進行描画 = false; | |
300 | 172 | } |
301 | - // グラフ | |
302 | - // --現在値 | |
303 | - if (this.dbグラフ値現在_表示 < this.dbグラフ値現在) | |
173 | + | |
174 | + int stYposInImg = 0; | |
175 | + | |
176 | + | |
177 | + | |
178 | + if( this.txグラフ != null ) | |
304 | 179 | { |
305 | - this.dbグラフ値現在_表示 += (this.dbグラフ値現在 - this.dbグラフ値現在_表示) / 5 + 0.01; | |
180 | + //背景 | |
181 | + this.txグラフ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); | |
182 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos, new Rectangle( 2, 2, 251, 584 ) ); | |
183 | + | |
184 | + //自己ベスト数値表示 | |
185 | + this.t達成率文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 136, nGraphBG_YPos + 501, string.Format( "{0,6:##0.00}" + "%", this.dbグラフ値自己ベスト ) ); | |
306 | 186 | } |
307 | - if (this.dbグラフ値現在_表示 >= this.dbグラフ値現在) | |
308 | - { | |
309 | - this.dbグラフ値現在_表示 = this.dbグラフ値現在; | |
310 | - } | |
311 | - rectangle = new Rectangle(0, 0, 72, (int)(556f * this.dbグラフ値現在_表示 / 100)); | |
312 | - if (this.txグラフ != null) | |
313 | - { | |
314 | - this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f); | |
315 | - //this.txグラフ.n透明度 = 192; | |
316 | - this.txグラフ.t2D描画(CDTXMania.app.Device, 69 + this.n本体X[j], 650 - (int)(556f * this.dbグラフ値現在_表示 / 100), rectangle); | |
317 | - } | |
318 | - for (int k = 0; k < 32; k++) | |
319 | - { | |
320 | - rectangle = new Rectangle(20, 0, 1, 1); | |
321 | - if (this.txグラフ != null) | |
322 | - { | |
323 | - //this.stキラキラ[ k ].ct進行.t進行Loop(); | |
324 | - int num1 = (int)this.stキラキラ[k].x; | |
325 | - //int num2 = this.stキラキラ[ k ].ct進行.n現在の値; | |
326 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale); | |
327 | - //this.txグラフ.n透明度 = 138 - 2 * this.stキラキラ[ k ].Trans; | |
328 | - //if ( num2 < (2.3f * this.dbグラフ値現在_表示) ) | |
329 | - { | |
330 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 860+num1, 318-num2, rectangle); | |
331 | - } | |
332 | - } | |
333 | - } | |
334 | - // --現在値_追加エフェクト | |
335 | 187 | |
336 | - if (this.dbグラフ値直前 != this.dbグラフ値現在) | |
188 | + //ゲージ現在 | |
189 | + if( this.txグラフ_ゲージ != null ) | |
337 | 190 | { |
338 | - this.stフラッシュ[nグラフフラッシュct].y = 0; | |
339 | - this.stフラッシュ[nグラフフラッシュct].Trans = 650; | |
340 | - nグラフフラッシュct++; | |
341 | - if (nグラフフラッシュct >= 16) | |
191 | + //ゲージ本体 | |
192 | + int nGaugeSize = (int)( 434.0f * (float)this.dbグラフ値現在 / 100.0f ); | |
193 | + int nPosY = 527 - nGaugeSize; | |
194 | + this.txグラフ_ゲージ.n透明度 = 255; | |
195 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 45, nPosY, new Rectangle( 2, 2, 30, nGaugeSize ) ); | |
196 | + | |
197 | + //ゲージ比較 | |
198 | + int nTargetGaugeSize = (int)( 434.0f * ( (float)this.dbグラフ値目標 / 100.0f ) ); | |
199 | + int nTargetGaugePosY = 527 - nTargetGaugeSize; | |
200 | + int nTargetGaugeRectX = this.dbグラフ値現在 > this.dbグラフ値目標 ? 38 : 74; | |
201 | + this.txグラフ_ゲージ.n透明度 = 255; | |
202 | + this.txグラフ_ゲージ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 75, nTargetGaugePosY, new Rectangle( nTargetGaugeRectX, 2, 30, nTargetGaugeSize ) ); | |
203 | + if( this.txグラフ != null ) | |
342 | 204 | { |
343 | - nグラフフラッシュct = 0; | |
344 | - } | |
345 | - } | |
205 | + //ターゲット達成率数値 | |
346 | 206 | |
347 | - this.dbグラフ値直前 = this.dbグラフ値現在; | |
348 | - for (int m = 0; m < 16; m++) | |
349 | - { | |
350 | - rectangle = new Rectangle(6, 0, 60, 2); | |
351 | - if ((this.stフラッシュ[m].y >= 0) && (this.stフラッシュ[m].y + 3 < (int)(650f * this.dbグラフ値現在_表示 / 100)) && (this.txグラフ != null)) | |
352 | - { | |
353 | - //this.txグラフ.n透明度 = this.stフラッシュ[ m ].Trans; | |
354 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j], this.stフラッシュ[ m ].y + (620 - (int)(556f * this.dbグラフ値現在_表示 / 100)), rectangle); | |
355 | - //this.txグラフ.n透明度 = this.stフラッシュ[ m ].Trans; | |
356 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 75 + this.n本体X[j], this.stフラッシュ[ m ].y + 2 + (620 - (int)(556f * this.dbグラフ値現在_表示 / 100)), rectangle); | |
207 | + //ターゲット名 | |
208 | + //現在 | |
209 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 45, nGraphBG_YPos + 357, new Rectangle( 260, 2, 30, 120 ) ); | |
210 | + //自己ベスト | |
211 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 75, nGraphBG_YPos + 357, new Rectangle( 260 + 90, 2, 30, 120 ) ); | |
212 | + | |
213 | + //以下使用予定 | |
214 | + //最終プレイ | |
215 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 106, nGraphBG_YPos + 357, new Rectangle( 260 + 60, 2, 30, 120 ) ); | |
216 | + //自己ベスト | |
217 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 136, nGraphBG_YPos + 357, new Rectangle( 260 + 90, 2, 30, 120 ) ); | |
218 | + //最高スコア | |
219 | + this.txグラフ.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ] + 164, nGraphBG_YPos + 357, new Rectangle( 260 + 120, 2, 30, 120 ) ); | |
357 | 220 | } |
358 | - this.stフラッシュ[m].y += 5; | |
359 | - this.stフラッシュ[m].Trans -= 5; | |
221 | + this.t比較文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 44, nPosY - 10, string.Format( "{0,5:##0.00}", Math.Abs( this.dbグラフ値現在 ) ) ); | |
222 | + this.t比較文字表示( nGraphBG_XPos[ this.nGraphUsePart ] + 74, nTargetGaugePosY - 10, string.Format( "{0,5:##0.00}", Math.Abs( this.dbグラフ値目標 ) ) ); | |
360 | 223 | } |
361 | - // --現在値_目標越 | |
362 | - rectangle = new Rectangle(0, 0, 10, (int)(556f * this.dbグラフ値現在_表示 / 100)); | |
363 | - if ((dbグラフ値現在 >= dbグラフ値目標) && (this.txグラフ != null)) | |
364 | - { | |
365 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(1.4f, 1f, 1f); | |
366 | - //this.txグラフ.n透明度 = 128; | |
367 | - //this.txグラフ.b加算合成 = true; | |
368 | - this.txグラフ.t2D描画(CDTXMania.app.Device, 69 + this.n本体X[j], 650 - (int)(556f * this.dbグラフ値現在_表示 / 100), rectangle); | |
369 | 224 | |
370 | - } | |
371 | - // --目標値 | |
372 | 225 | |
373 | - if (this.dbグラフ値目標_表示 < this.dbグラフ値目標) | |
374 | - { | |
375 | - this.dbグラフ値目標_表示 += (this.dbグラフ値目標 - this.dbグラフ値目標_表示) / 5 + 0.01; | |
376 | - } | |
377 | - if (this.dbグラフ値目標_表示 >= this.dbグラフ値目標) | |
378 | - { | |
379 | - this.dbグラフ値目標_表示 = this.dbグラフ値目標; | |
380 | - } | |
226 | + } | |
227 | + return 0; | |
228 | + } | |
381 | 229 | |
382 | - db現在の判定数合計 = 0; | |
383 | - //db現在の判定数合計 = CDTXMania.stage演奏画面共通.nヒット数・Auto含む[j].Perfect + CDTXMania.stage演奏画面共通.nヒット数・Auto含む[j].Great + CDTXMania.stage演奏画面共通.nヒット数・Auto含む[j].Good + CDTXMania.stage演奏画面共通.nヒット数・Auto含む[j].Miss + CDTXMania.stage演奏画面共通.nヒット数・Auto含む[j].Poor; | |
384 | - //this.dbグラフ値目標_Ghost = ((1.0 * CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[0] / CDTXMania.DTX.n可視チップ数[j]) * db現在の判定数合計); | |
385 | - //System.IO.StreamWriter sw = new System.IO.StreamWriter(@"debug.txt", true, System.Text.Encoding.GetEncoding("shift_jis")); | |
386 | - //sw.WriteLine("TotalJudgeは{0}で、Ghostは{1}です。", db現在の判定数合計, this.dbグラフ値目標_Ghost); | |
387 | - //sw.Close(); | |
388 | - this.dbグラフ値目標_表示 = this.dbグラフ値目標; | |
389 | - rectangle = new Rectangle(138, 0, 72, (int)(556f * this.dbグラフ値目標_表示 / 100)); | |
390 | - if (this.txグラフ != null) | |
391 | - { | |
392 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f); | |
393 | - //this.txグラフ.n透明度 = 192; | |
394 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 69 + this.n本体X[j], 650 - (int)(556f * this.dbグラフ値目標_表示 / 100), rectangle); | |
395 | - //this.txグラフ.vc拡大縮小倍率 = new Vector3(1.4f, 1f, 1f); | |
396 | - this.txグラフ.n透明度 = 48; | |
397 | - //this.txグラフ.b加算合成 = true; | |
398 | - //this.txグラフ.t2D描画(CDTXMania.app.Device, 69 + this.n本体X[j], 650 - (int)(556f * this.dbグラフ値目標_表示 / 100), rectangle); | |
399 | - this.txグラフ.t2D描画(CDTXMania.app.Device, 69 + this.n本体X[j], 650 - (int)(556f * this.dbグラフ値比較 / 100), new Rectangle(138, 0, 72, (int)(556f * this.dbグラフ値比較 / 100))); | |
400 | - } | |
401 | - /* | |
402 | - for( int k = 32; k < 64; k++ ) | |
403 | - { | |
404 | - rectangle = new Rectangle(6, 0, 1, 1); | |
405 | - if (this.txグラフ != null) | |
406 | - { | |
407 | - this.stキラキラ[ k ].ct進行.t進行Loop(); | |
408 | - int num1 = (int)this.stキラキラ[ k ].x; | |
409 | - int num2 = this.stキラキラ[ k ].ct進行.n現在の値; | |
410 | - this.txグラフ.vc拡大縮小倍率 = new Vector3(this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale, this.stキラキラ[ k ].fScale); | |
411 | - //this.txグラフ.n透明度 = 138 - 2 * this.stキラキラ[ k ].Trans; | |
412 | - if ( num2 < (2.3f * this.dbグラフ値目標_表示) ) | |
413 | - { | |
414 | - this.txグラフ.t2D描画(CDTXMania.app.Device, 75 +this.n本体X[j] + num1, 318 - num2, rectangle); | |
415 | - } | |
416 | - } | |
417 | - } | |
418 | - */ | |
419 | 230 | |
420 | - } | |
421 | - return 0; | |
422 | - } | |
231 | + // その他 | |
423 | 232 | |
233 | + #region [ private ] | |
234 | + //---------------- | |
235 | + private double dbグラフ値目標; | |
236 | + private double dbグラフ値目標_表示; | |
237 | + private double dbグラフ値現在; | |
238 | + private double dbグラフ値現在_表示; | |
239 | + public double dbグラフ値自己ベスト; | |
240 | + private int[] n現在のAutoを含まない判定数; | |
424 | 241 | |
425 | - // その他 | |
242 | + private CTexture txPlayerName; | |
243 | + private CTexture txグラフ; | |
244 | + private CTexture txグラフ_ゲージ; | |
245 | + private CTexture txグラフ値自己ベストライン; | |
426 | 246 | |
427 | - #region [ private ] | |
428 | - //---------------- | |
247 | + private CPrivateFastFont pfNameFont; | |
248 | + | |
429 | 249 | [StructLayout(LayoutKind.Sequential)] |
430 | - private struct STキラキラ | |
431 | - { | |
432 | - public int x; | |
433 | - public int y; | |
434 | - public float fScale; | |
435 | - public int Trans; | |
436 | - public CCounter ct進行; | |
437 | - } | |
438 | - [StructLayout(LayoutKind.Sequential)] | |
439 | 250 | private struct ST文字位置 |
440 | 251 | { |
441 | 252 | public char ch; |
442 | 253 | public Point pt; |
254 | + public ST文字位置( char ch, Point pt ) | |
255 | + { | |
256 | + this.ch = ch; | |
257 | + this.pt = pt; | |
258 | + } | |
443 | 259 | } |
444 | - private readonly ST文字位置[] st小文字位置; | |
445 | - private STキラキラ[] stキラキラ = new STキラキラ[64]; | |
446 | - private STキラキラ[] stフラッシュ = new STキラキラ[16]; | |
447 | 260 | |
448 | - private CCounter ct爆発エフェクト; | |
449 | - public double db現在の判定数合計; | |
450 | - private double dbグラフ値目標; | |
451 | - public double dbグラフ値比較; | |
452 | - private double dbグラフ値目標_表示; | |
453 | - private double dbグラフ値現在; | |
454 | - private double dbグラフ値現在_表示; | |
455 | - private double dbグラフ値直前; | |
456 | - private int nグラフフラッシュct; | |
457 | - private int n現在演奏されたノーツ数; | |
458 | - private STDGBVALUE<int> n本体X; | |
459 | - private CTexture tx数字; | |
460 | - private CTexture tx比較; | |
461 | - private CTexture txグラフ; | |
462 | - private CTexture txグラフバックパネル; | |
463 | - protected CTexture txComboBom; | |
464 | - //----------------- | |
261 | + private ST文字位置[] st比較数字位置 = new ST文字位置[]{ | |
262 | + new ST文字位置( '0', new Point( 0, 0 ) ), | |
263 | + new ST文字位置( '1', new Point( 8, 0 ) ), | |
264 | + new ST文字位置( '2', new Point( 16, 0 ) ), | |
265 | + new ST文字位置( '3', new Point( 24, 0 ) ), | |
266 | + new ST文字位置( '4', new Point( 32, 0 ) ), | |
267 | + new ST文字位置( '5', new Point( 40, 0 ) ), | |
268 | + new ST文字位置( '6', new Point( 48, 0 ) ), | |
269 | + new ST文字位置( '7', new Point( 56, 0 ) ), | |
270 | + new ST文字位置( '8', new Point( 64, 0 ) ), | |
271 | + new ST文字位置( '9', new Point( 72, 0 ) ), | |
272 | + new ST文字位置( '.', new Point( 80, 0 ) ) | |
273 | + }; | |
274 | + private ST文字位置[] st達成率数字位置 = new ST文字位置[]{ | |
275 | + new ST文字位置( '0', new Point( 0, 0 ) ), | |
276 | + new ST文字位置( '1', new Point( 16, 0 ) ), | |
277 | + new ST文字位置( '2', new Point( 32, 0 ) ), | |
278 | + new ST文字位置( '3', new Point( 48, 0 ) ), | |
279 | + new ST文字位置( '4', new Point( 64, 0 ) ), | |
280 | + new ST文字位置( '5', new Point( 80, 0 ) ), | |
281 | + new ST文字位置( '6', new Point( 96, 0 ) ), | |
282 | + new ST文字位置( '7', new Point( 112, 0 ) ), | |
283 | + new ST文字位置( '8', new Point( 128, 0 ) ), | |
284 | + new ST文字位置( '9', new Point( 144, 0 ) ), | |
285 | + new ST文字位置( '.', new Point( 160, 0 ) ), | |
286 | + new ST文字位置( '%', new Point( 168, 0 ) ), | |
287 | + }; | |
465 | 288 | |
466 | 289 | |
467 | - private void t小文字表示(int x, int y, string str) | |
290 | + private void t比較文字表示( int x, int y, string str ) | |
291 | + { | |
292 | + foreach( char ch in str ) | |
293 | + { | |
294 | + for( int i = 0; i < this.st比較数字位置.Length; i++ ) | |
295 | + { | |
296 | + if( this.st比較数字位置[ i ].ch == ch ) | |
297 | + { | |
298 | + int RectX = 8; | |
299 | + if( ch == '.' ) RectX = 2; | |
300 | + Rectangle rectangle = new Rectangle( 260 + this.st比較数字位置[ i ].pt.X, 162, RectX, 10 ); | |
301 | + if( this.txグラフ != null ) | |
302 | + { | |
303 | + this.txグラフ.n透明度 = 255; | |
304 | + this.txグラフ.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
305 | + } | |
306 | + break; | |
307 | + } | |
308 | + } | |
309 | + if( ch == '.' ) x += 2; | |
310 | + else x += 7; | |
311 | + } | |
312 | + } | |
313 | + private void t達成率文字表示( int x, int y, string str ) | |
314 | + { | |
315 | + foreach( char ch in str ) | |
316 | + { | |
317 | + for( int i = 0; i < this.st達成率数字位置.Length; i++ ) | |
318 | + { | |
319 | + if( this.st達成率数字位置[ i ].ch == ch ) | |
320 | + { | |
321 | + int RectX = 16; | |
322 | + if( ch == '.' ) RectX = 8; | |
323 | + Rectangle rectangle = new Rectangle( 260 + this.st達成率数字位置[ i ].pt.X, 128, RectX, 28 ); | |
324 | + if( this.txグラフ != null ) | |
325 | + { | |
326 | + this.txグラフ.n透明度 = 255; | |
327 | + this.txグラフ.t2D描画( CDTXMania.app.Device, x, y, rectangle ); | |
328 | + } | |
329 | + break; | |
330 | + } | |
331 | + } | |
332 | + if( ch == '.' ) x += 8; | |
333 | + else x += 16; | |
334 | + } | |
335 | + } | |
336 | + private CTexture t指定された文字テクスチャを生成する( string str文字 ) | |
468 | 337 | { |
469 | - foreach (char ch in str) | |
338 | + Bitmap bmp; | |
339 | + bmp = this.pfNameFont.DrawPrivateFont( str文字, Color.White, Color.Transparent ); | |
340 | + | |
341 | + CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false ); | |
342 | + | |
343 | + if( tx文字テクスチャ != null ) | |
344 | + tx文字テクスチャ.vc拡大縮小倍率 = new Vector3( 1.0f, 1.0f, 1f ); | |
345 | + | |
346 | + bmp.Dispose(); | |
347 | + | |
348 | + return tx文字テクスチャ; | |
349 | + } | |
350 | + private void t折れ線を描画する( int nBoardPosA, int nBoardPosB ) | |
351 | + { | |
352 | + //やる気がまるでない線 | |
353 | + //2016.03.28 kairera0467 ギター画面では1Pと2Pで向きが変わるが、そこは残念ながら未対応。 | |
354 | + //参考 http://dobon.net/vb/dotnet/graphics/drawline.html | |
355 | + if( this.txグラフ値自己ベストライン == null ) | |
470 | 356 | { |
471 | - for (int i = 0; i < this.st小文字位置.Length; i++) | |
357 | + Bitmap canvas = new Bitmap( 280, 720 ); | |
358 | + | |
359 | + Graphics g = Graphics.FromImage( canvas ); | |
360 | + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; | |
361 | + int nMybestGaugeSize = (int)( 560.0f * (float)this.dbグラフ値自己ベスト / 100.0f ); | |
362 | + int nMybestGaugePosY = 600 - nMybestGaugeSize; | |
363 | + | |
364 | + int nTargetGaugeSize = (int)( 560.0f * (float)this.dbグラフ値目標_表示 / 100.0f ); | |
365 | + int nTargetGaugePosY = 600 - nTargetGaugeSize; | |
366 | + | |
367 | + Point[] posMybest = { | |
368 | + new Point( 3, nMybestGaugePosY ), | |
369 | + new Point( 75, nMybestGaugePosY ), | |
370 | + new Point( 94, nBoardPosA + 31 ), | |
371 | + new Point( 102, nBoardPosA + 31 ) | |
372 | + }; | |
373 | + | |
374 | + Point[] posTarget = { | |
375 | + new Point( 3, nTargetGaugePosY ), | |
376 | + new Point( 75, nTargetGaugePosY ), | |
377 | + new Point( 94, nBoardPosB + 59 ), | |
378 | + new Point( 102, nBoardPosB + 59 ) | |
379 | + }; | |
380 | + | |
381 | + if( this.nGraphUsePart == 2 ) | |
472 | 382 | { |
473 | - if (this.st小文字位置[i].ch == ch) | |
474 | - { | |
475 | - Rectangle rectangle = new Rectangle(this.st小文字位置[i].pt.X, this.st小文字位置[i].pt.Y, 12, 16); | |
476 | - if (ch == '.') | |
477 | - { | |
478 | - rectangle.Width -= 8; | |
479 | - } | |
480 | - if (this.tx数字 != null) | |
481 | - { | |
482 | - this.tx数字.t2D描画(CDTXMania.app.Device, x, y, rectangle); | |
483 | - } | |
484 | - break; | |
485 | - } | |
383 | + posMybest = new Point[]{ | |
384 | + new Point( 271, nMybestGaugePosY ), | |
385 | + new Point( 206, nMybestGaugePosY ), | |
386 | + new Point( 187, nBoardPosA + 31 ), | |
387 | + new Point( 178, nBoardPosA + 31 ) | |
388 | + }; | |
389 | + | |
390 | + posTarget = new Point[]{ | |
391 | + new Point( 271, nTargetGaugePosY ), | |
392 | + new Point( 206, nTargetGaugePosY ), | |
393 | + new Point( 187, nBoardPosB + 59 ), | |
394 | + new Point( 178, nBoardPosB + 59 ) | |
395 | + }; | |
486 | 396 | } |
487 | - x += 12; | |
397 | + | |
398 | + Pen penMybest = new Pen( Color.Pink, 2 ); | |
399 | + g.DrawLines( penMybest, posMybest ); | |
400 | + | |
401 | + if( CDTXMania.listTargetGhsotLag[ this.nGraphUsePart ] != null && CDTXMania.listTargetGhostScoreData[ this.nGraphUsePart ] != null ) | |
402 | + { | |
403 | + Pen penTarget = new Pen( Color.Orange, 2 ); | |
404 | + g.DrawLines( penTarget, posTarget ); | |
405 | + } | |
406 | + | |
407 | + g.Dispose(); | |
408 | + | |
409 | + this.txグラフ値自己ベストライン = new CTexture( CDTXMania.app.Device, canvas, CDTXMania.TextureFormat, false ); | |
488 | 410 | } |
411 | + if( this.txグラフ値自己ベストライン != null ) | |
412 | + this.txグラフ値自己ベストライン.t2D描画( CDTXMania.app.Device, nGraphBG_XPos[ this.nGraphUsePart ], nGraphBG_YPos ); | |
489 | 413 | } |
490 | - #endregion | |
491 | - } | |
414 | + //----------------- | |
415 | + #endregion | |
416 | + } | |
492 | 417 | } |
@@ -396,8 +396,8 @@ | ||
396 | 396 | this.t小文字表示(167 + this.n本体X[i], 192 + this.n本体Y, string.Format("{0,3:##0}%", dbMISS率)); |
397 | 397 | this.t小文字表示(167 + this.n本体X[i], 222 + this.n本体Y, string.Format("{0,3:##0}%", dbMAXCOMBO率)); |
398 | 398 | |
399 | - this.t大文字表示(58 + this.n本体X[i], 277 + this.n本体Y, string.Format("{0,6:##0.00}", CDTXMania.stage演奏ドラム画面.actGraph.dbグラフ値現在_渡)); | |
400 | - this.t大文字表示(88 + this.n本体X[i], 363 + this.n本体Y, string.Format("{0,6:##0.00}", (CDTXMania.stage演奏ドラム画面.actGraph.dbグラフ値現在_渡 * (CDTXMania.DTX.LEVEL[i] / 10.0) * 0.2))); | |
399 | + this.t大文字表示(58 + this.n本体X[i], 277 + this.n本体Y, string.Format("{0,6:##0.00}", CDTXMania.stage演奏ドラム画面.actStatusPanels.db現在の達成率.Drums ) ); | |
400 | + this.t大文字表示(88 + this.n本体X[i], 363 + this.n本体Y, string.Format("{0,6:##0.00}", (CDTXMania.stage演奏ドラム画面.actStatusPanels.db現在の達成率.Drums * (CDTXMania.DTX.LEVEL[i] / 10.0) * 0.2))); | |
401 | 401 | |
402 | 402 | if (this.tx難易度パネル != null) |
403 | 403 | this.tx難易度パネル.t2D描画(CDTXMania.app.Device, 14 + this.n本体X[i], 266 + this.n本体Y, new Rectangle(0, 60 * nIndex, 60, 60)); |
@@ -92,7 +92,18 @@ | ||
92 | 92 | } |
93 | 93 | else |
94 | 94 | { |
95 | - this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[0]; // #24074 2011.01.23 add ikanick | |
95 | + this.actGraph.dbグラフ値目標_渡 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; // #24074 2011.01.23 add ikanick | |
96 | + this.actGraph.dbグラフ値自己ベスト = CDTXMania.stage選曲.r確定されたスコア.譜面情報.最大スキル[ 0 ]; | |
97 | + | |
98 | + // #35411 2015.08.21 chnmr0 add | |
99 | + // ゴースト利用可のなとき、0で初期化 | |
100 | + if (CDTXMania.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE) | |
101 | + { | |
102 | + if (CDTXMania.listTargetGhsotLag[(int)E楽器パート.DRUMS] != null) | |
103 | + { | |
104 | + this.actGraph.dbグラフ値目標_渡 = 0; | |
105 | + } | |
106 | + } | |
96 | 107 | } |
97 | 108 | dtLastQueueOperation = DateTime.MinValue; |
98 | 109 | } |
@@ -398,10 +409,9 @@ | ||
398 | 409 | // this.t進行描画・パネル文字列(); |
399 | 410 | if (CDTXMania.ConfigIni.nInfoType == 1) |
400 | 411 | this.t進行描画・ステータスパネル(); |
401 | - if (CDTXMania.ConfigIni.bGraph有効) | |
402 | - this.t進行描画・グラフ(); | |
403 | 412 | this.t進行描画・ゲージ(); |
404 | 413 | this.t進行描画・コンボ(); |
414 | + this.t進行描画・グラフ(); | |
405 | 415 | this.t進行描画・演奏情報(); |
406 | 416 | this.t進行描画・判定文字列1・通常位置指定の場合(); |
407 | 417 | this.t進行描画・判定文字列2・判定ライン上指定の場合(); |
@@ -498,7 +508,6 @@ | ||
498 | 508 | public int nミス数; |
499 | 509 | public int nパフェ数; |
500 | 510 | private CAct演奏DrumsチップファイアD actChipFireD; |
501 | - public CAct演奏スキルメーター actGraph; // #24074 2011.01.23 add ikanick | |
502 | 511 | public CAct演奏Drumsパッド actPad; |
503 | 512 | public bool bフィルイン中; |
504 | 513 | public bool bフィルイン終了; |
@@ -581,6 +590,19 @@ | ||
581 | 590 | { |
582 | 591 | this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss, this.actCombo.n現在のコンボ数.最高値.Drums, E楽器パート.DRUMS, bIsAutoPlay); |
583 | 592 | } |
593 | + // #35411 2015.09.07 add chnmr0 | |
594 | + if( CDTXMania.listTargetGhsotLag.Drums != null && | |
595 | + CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.ONLINE && | |
596 | + CDTXMania.DTX.n可視チップ数.Drums > 0 ) | |
597 | + { | |
598 | + // Online Stats の計算式 | |
599 | + this.actGraph.dbグラフ値現在_渡 = 100 * | |
600 | + ( this.nヒット数・Auto含まない.Drums.Perfect * 17 + | |
601 | + this.nヒット数・Auto含まない.Drums.Great * 7 + | |
602 | + this.actCombo.n現在のコンボ数.最高値.Drums * 3 ) / ( 20.0 * CDTXMania.DTX.n可視チップ数.Drums ); | |
603 | + } | |
604 | + | |
605 | + this.actStatusPanels.db現在の達成率.Drums = this.actGraph.dbグラフ値現在_渡; | |
584 | 606 | return eJudgeResult; |
585 | 607 | } |
586 | 608 |
@@ -791,10 +813,9 @@ | ||
791 | 813 | |
792 | 814 | private void t進行描画・グラフ() |
793 | 815 | { |
794 | - if (CDTXMania.ConfigIni.bGraph有効) | |
816 | + if( CDTXMania.ConfigIni.bGraph有効.Drums ) | |
795 | 817 | { |
796 | 818 | this.actGraph.On進行描画(); |
797 | - this.actGraph.db現在の判定数合計 = this.nヒット数・Auto含む.Drums.Perfect + this.nヒット数・Auto含む.Drums.Great + this.nヒット数・Auto含む.Drums.Good + this.nヒット数・Auto含む.Drums.Miss + this.nヒット数・Auto含む.Drums.Poor; | |
798 | 819 | } |
799 | 820 | } |
800 | 821 |
@@ -3386,21 +3407,93 @@ | ||
3386 | 3407 | } |
3387 | 3408 | |
3388 | 3409 | int indexSevenLanes = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ]; |
3410 | + // #35411 chnmr0 modified | |
3411 | + bool autoPlayCondition = ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ); | |
3412 | + bool UsePerfectGhost = true; | |
3413 | + long ghostLag = 0; | |
3389 | 3414 | |
3415 | + if( CDTXMania.ConfigIni.eAutoGhost.Drums != EAutoGhostData.PERFECT && | |
3416 | + CDTXMania.listAutoGhostLag.Drums != null && | |
3417 | + 0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.listAutoGhostLag.Drums.Count) | |
3390 | 3418 | |
3391 | - if( ( pChip.nチャンネル番号 == 0x1C ? ( configIni.bAutoPlay.LBD && !pChip.bHit ) : ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ) ) && ( pChip.nバーからの距離dot.Drums < 0 ) ) | |
3419 | + { | |
3420 | + // ゴーストデータが有効 : ラグに合わせて判定 | |
3421 | + ghostLag = CDTXMania.listAutoGhostLag.Drums[pChip.n楽器パートでの出現順]; | |
3422 | + ghostLag = (ghostLag & 255) - 128; | |
3423 | + ghostLag -= this.nInputAdjustTimeMs.Drums; | |
3424 | + autoPlayCondition &= !pChip.bHit && (ghostLag + pChip.n発声時刻ms <= CSound管理.rc演奏用タイマ.n現在時刻ms); | |
3425 | + UsePerfectGhost = false; | |
3426 | + } | |
3427 | + if( UsePerfectGhost ) | |
3428 | + { | |
3429 | + // 従来の AUTO : バー下で判定 | |
3430 | + autoPlayCondition &= ( pChip.nバーからの距離dot.Drums < 0 ); | |
3431 | + } | |
3432 | + | |
3433 | + if ( autoPlayCondition ) | |
3392 | 3434 | { |
3393 | 3435 | pChip.bHit = true; |
3394 | - this.actLaneFlushD.Start( ( Eレーン ) indexSevenLanes, ( ( float ) CInput管理.n通常音量 ) / 127f ); | |
3436 | + this.actLaneFlushD.Start( (Eレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f ); | |
3395 | 3437 | bool flag = this.bフィルイン中; |
3396 | 3438 | bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip ); |
3397 | 3439 | //bool flag3 = flag2; |
3398 | - // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加 | |
3399 | - this.actChipFireD.Start( ( Eレーン )indexSevenLanes, flag, flag2, flag2, nJudgeLinePosY_delta.Drums ); | |
3440 | + // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加 | |
3441 | + this.actChipFireD.Start( (Eレーン)indexSevenLanes, flag, flag2, flag2, nJudgeLinePosY_delta.Drums ); | |
3400 | 3442 | this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] ); |
3401 | - this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) ); | |
3402 | - this.tチップのヒット処理( pChip.n発声時刻ms, pChip ); | |
3443 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) ); | |
3444 | + this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip); | |
3445 | + //cInvisibleChip.StartSemiInvisible( E楽器パート.DRUMS ); | |
3403 | 3446 | } |
3447 | + // #35411 modify end | |
3448 | + | |
3449 | + // #35411 2015.08.21 chnmr0 add | |
3450 | + // 目標値グラフにゴーストの達成率を渡す | |
3451 | + if (CDTXMania.ConfigIni.eTargetGhost.Drums != ETargetGhostData.NONE && | |
3452 | + CDTXMania.listTargetGhsotLag.Drums != null) | |
3453 | + { | |
3454 | + double val = 0; | |
3455 | + if (CDTXMania.ConfigIni.eTargetGhost.Drums == ETargetGhostData.ONLINE) | |
3456 | + { | |
3457 | + if (CDTXMania.DTX.n可視チップ数.Drums > 0) | |
3458 | + { | |
3459 | + // Online Stats の計算式 | |
3460 | + val = 100 * | |
3461 | + (this.nヒット数_TargetGhost.Drums.Perfect * 17 + | |
3462 | + this.nヒット数_TargetGhost.Drums.Great * 7 + | |
3463 | + this.n最大コンボ数_TargetGhost.Drums * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Drums); | |
3464 | + } | |
3465 | + } | |
3466 | + else | |
3467 | + { | |
3468 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
3469 | + { | |
3470 | + val = CScoreIni.t旧演奏型スキルを計算して返す( | |
3471 | + CDTXMania.DTX.n可視チップ数.Drums, | |
3472 | + this.nヒット数_TargetGhost.Drums.Perfect, | |
3473 | + this.nヒット数_TargetGhost.Drums.Great, | |
3474 | + this.nヒット数_TargetGhost.Drums.Good, | |
3475 | + this.nヒット数_TargetGhost.Drums.Poor, | |
3476 | + this.nヒット数_TargetGhost.Drums.Miss, | |
3477 | + E楽器パート.DRUMS, new STAUTOPLAY()); | |
3478 | + } | |
3479 | + else | |
3480 | + { | |
3481 | + val = CScoreIni.t演奏型スキルを計算して返す( | |
3482 | + CDTXMania.DTX.n可視チップ数.Drums, | |
3483 | + this.nヒット数_TargetGhost.Drums.Perfect, | |
3484 | + this.nヒット数_TargetGhost.Drums.Great, | |
3485 | + this.nヒット数_TargetGhost.Drums.Good, | |
3486 | + this.nヒット数_TargetGhost.Drums.Poor, | |
3487 | + this.nヒット数_TargetGhost.Drums.Miss, | |
3488 | + this.n最大コンボ数_TargetGhost.Drums, | |
3489 | + E楽器パート.DRUMS, new STAUTOPLAY()); | |
3490 | + } | |
3491 | + | |
3492 | + } | |
3493 | + if (val < 0) val = 0; | |
3494 | + if (val > 100) val = 100; | |
3495 | + this.actGraph.dbグラフ値目標_渡 = val; | |
3496 | + } | |
3404 | 3497 | return; |
3405 | 3498 | } // end of "if configIni.bDrums有効" |
3406 | 3499 | if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) ) |
@@ -261,12 +261,14 @@ | ||
261 | 261 | } |
262 | 262 | this.r現在の空うちギターChip = null; |
263 | 263 | this.r現在の空うちベースChip = null; |
264 | + this.n最大コンボ数_TargetGhost = new STDGBVALUE<int>(); // #35411 2015.08.21 chnmr0 add | |
264 | 265 | for (int k = 0; k < 3; k++) |
265 | 266 | { |
266 | 267 | //for ( int n = 0; n < 5; n++ ) |
267 | 268 | { |
268 | - this.nヒット数・Auto含まない[k] = new CHITCOUNTOFRANK(); | |
269 | - this.nヒット数・Auto含む[k] = new CHITCOUNTOFRANK(); | |
269 | + this.nヒット数・Auto含まない[ k ] = new CHITCOUNTOFRANK(); | |
270 | + this.nヒット数・Auto含む[ k ] = new CHITCOUNTOFRANK(); | |
271 | + this.nヒット数_TargetGhost[ k ] = new CHITCOUNTOFRANK(); // #35411 2015.08.21 chnmr0 add | |
270 | 272 | } |
271 | 273 | this.queWailing[k] = new Queue<CDTX.CChip>(); |
272 | 274 | this.r現在の歓声Chip[k] = null; |
@@ -640,6 +642,7 @@ | ||
640 | 642 | public CAct演奏ステータスパネル共通 actStatusPanels; |
641 | 643 | protected CAct演奏WailingBonus共通 actWailingBonus; |
642 | 644 | public CAct演奏スクロール速度 act譜面スクロール速度; |
645 | + protected CAct演奏スキルメーター actGraph; | |
643 | 646 | protected bool bPAUSE; |
644 | 647 | protected STDGBVALUE<bool> b演奏にMIDI入力を使った; |
645 | 648 | protected STDGBVALUE<bool> b演奏にキーボードを使った; |
@@ -709,6 +712,11 @@ | ||
709 | 712 | public CTexture tx判定画像anime_3; |
710 | 713 | public CTexture txボーナスエフェクト; |
711 | 714 | |
715 | + //fork | |
716 | + protected STDGBVALUE<CHITCOUNTOFRANK> nヒット数_TargetGhost; // #35411 2015.08.21 chnmr0 add | |
717 | + protected STDGBVALUE<int> nコンボ数_TargetGhost; | |
718 | + public STDGBVALUE<int> n最大コンボ数_TargetGhost; | |
719 | + | |
712 | 720 | protected CTexture tx背景; |
713 | 721 | protected STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi |
714 | 722 | public STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi |
@@ -771,12 +779,23 @@ | ||
771 | 779 | } |
772 | 780 | } |
773 | 781 | |
774 | - protected E判定 e指定時刻からChipのJUDGEを返す(long nTime, CDTX.CChip pChip, int nInputAdjustTime) | |
782 | + protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime, bool saveLag = true ) | |
775 | 783 | { |
776 | 784 | if (pChip != null) |
777 | 785 | { |
778 | - pChip.nLag = (int)(nTime + nInputAdjustTime - pChip.n発声時刻ms); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature | |
779 | - int nDeltaTime = Math.Abs(pChip.nLag); | |
786 | + // #35411 2015.08.22 chnmr0 modified add check save lag flag for ghost | |
787 | + int lag = (int)(nTime + nInputAdjustTime - pChip.n発声時刻ms); | |
788 | + if (saveLag) | |
789 | + { | |
790 | + pChip.nLag = lag; // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature | |
791 | + if (pChip.e楽器パート != E楽器パート.UNKNOWN) | |
792 | + { | |
793 | + pChip.nCurrentComboForGhost = this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート]; | |
794 | + } | |
795 | + } | |
796 | + // #35411 modify end | |
797 | + | |
798 | + int nDeltaTime = Math.Abs( lag ); | |
780 | 799 | if (nDeltaTime <= CDTXMania.nPerfect範囲ms) |
781 | 800 | { |
782 | 801 | return E判定.Perfect; |
@@ -2325,11 +2344,57 @@ | ||
2325 | 2344 | |
2326 | 2345 | int nInputAdjustTime = (bPChipIsAutoPlay || (pChip.e楽器パート == E楽器パート.UNKNOWN)) ? 0 : this.nInputAdjustTimeMs[(int)pChip.e楽器パート]; |
2327 | 2346 | |
2328 | - if (((pChip.e楽器パート != E楽器パート.UNKNOWN) && !pChip.bHit) && | |
2329 | - ((pChip.nバーからの距離dot.Drums < 0) && (this.e指定時刻からChipのJUDGEを返す(CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime) == E判定.Miss))) | |
2347 | + int instIndex = (int) pChip.e楽器パート; | |
2348 | + if ( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) && | |
2349 | + ( ( pChip.nバーからの距離dot[ instIndex ] < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) ) | |
2350 | + { | |
2351 | + this.tチップのヒット処理( CSound管理.rc演奏用タイマ.n現在時刻, pChip ); | |
2352 | + } | |
2353 | + | |
2354 | + // #35411 chnmr0 add (ターゲットゴースト) | |
2355 | + if ( CDTXMania.ConfigIni.eTargetGhost[instIndex] != ETargetGhostData.NONE && | |
2356 | + CDTXMania.listTargetGhsotLag[instIndex] != null && | |
2357 | + pChip.e楽器パート != E楽器パート.UNKNOWN && | |
2358 | + pChip.nバーからの距離dot[instIndex] < 0 ) | |
2330 | 2359 | { |
2331 | - this.tチップのヒット処理(CSound管理.rc演奏用タイマ.n現在時刻, pChip); | |
2360 | + if ( !pChip.bTargetGhost判定済み ) | |
2361 | + { | |
2362 | + pChip.bTargetGhost判定済み = true; | |
2363 | + | |
2364 | + int ghostLag = 128; | |
2365 | + if( 0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.listTargetGhsotLag[instIndex].Count ) | |
2366 | + { | |
2367 | + ghostLag = CDTXMania.listTargetGhsotLag[instIndex][pChip.n楽器パートでの出現順]; | |
2368 | + // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置) | |
2369 | + if( ghostLag > 255 ) | |
2370 | + { | |
2371 | + this.nコンボ数_TargetGhost[instIndex] = 0; | |
2372 | + } | |
2373 | + ghostLag = (ghostLag & 255) - 128; | |
2374 | + } | |
2375 | + else if( CDTXMania.ConfigIni.eTargetGhost[instIndex] == ETargetGhostData.PERFECT ) | |
2376 | + { | |
2377 | + ghostLag = 0; | |
2378 | + } | |
2379 | + | |
2380 | + if ( ghostLag <= 127 ) | |
2381 | + { | |
2382 | + E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(pChip.n発声時刻ms + ghostLag, pChip, 0, false); | |
2383 | + this.nヒット数_TargetGhost[instIndex][(int)eJudge]++; | |
2384 | + if (eJudge == E判定.Miss || eJudge == E判定.Poor) | |
2385 | + { | |
2386 | + this.n最大コンボ数_TargetGhost[instIndex] = Math.Max(this.n最大コンボ数_TargetGhost[instIndex], this.nコンボ数_TargetGhost[instIndex]); | |
2387 | + this.nコンボ数_TargetGhost[instIndex] = 0; | |
2388 | + } | |
2389 | + else | |
2390 | + { | |
2391 | + this.n最大コンボ数_TargetGhost[instIndex] = Math.Max(this.n最大コンボ数_TargetGhost[instIndex], this.nコンボ数_TargetGhost[instIndex]); | |
2392 | + this.nコンボ数_TargetGhost[instIndex]++; | |
2393 | + } | |
2394 | + } | |
2395 | + } | |
2332 | 2396 | } |
2397 | + | |
2333 | 2398 | switch (pChip.nチャンネル番号) |
2334 | 2399 | { |
2335 | 2400 | //描画順の都合上こちらから描画。 |
@@ -3824,9 +3889,50 @@ | ||
3824 | 3889 | } |
3825 | 3890 | } |
3826 | 3891 | #endregion |
3827 | - //if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) ) | |
3828 | - if ((!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0)) | |
3892 | + //if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) ) | |
3893 | + //if ( ( !pChip.bHit ) && ( pChip.nバーからの距離dot[ instIndex ] < 0 ) ) | |
3894 | + | |
3895 | + // #35411 2015.08.20 chnmr0 modified | |
3896 | + // 従来のAUTO処理に加えてプレーヤーゴーストの再生機能を追加 | |
3897 | + bool autoPlayCondition = (!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0); | |
3898 | + if ( autoPlayCondition ) | |
3829 | 3899 | { |
3900 | + //cInvisibleChip.StartSemiInvisible( inst ); | |
3901 | + } | |
3902 | + | |
3903 | + bool autoPick = ( inst == E楽器パート.GUITAR ) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick; | |
3904 | + autoPlayCondition = !pChip.bHit && autoPick; | |
3905 | + long ghostLag = 0; | |
3906 | + bool bUsePerfectGhost = true; | |
3907 | + | |
3908 | + if ( (pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS ) && | |
3909 | + CDTXMania.ConfigIni.eAutoGhost[(int)(pChip.e楽器パート)] != EAutoGhostData.PERFECT && | |
3910 | + CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート] != null && | |
3911 | + 0 <= pChip.n楽器パートでの出現順 && | |
3912 | + pChip.n楽器パートでの出現順 < CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート].Count) | |
3913 | + { | |
3914 | + // #35411 (mod) Ghost data が有効なので 従来のAUTOではなくゴーストのラグを利用 | |
3915 | + // 発生時刻と現在時刻からこのタイミングで演奏するかどうかを決定 | |
3916 | + ghostLag = CDTXMania.listAutoGhostLag[(int)pChip.e楽器パート][pChip.n楽器パートでの出現順]; | |
3917 | + bool resetCombo = ghostLag > 255; | |
3918 | + ghostLag = (ghostLag & 255) - 128; | |
3919 | + ghostLag -= (pChip.e楽器パート == E楽器パート.GUITAR ? nInputAdjustTimeMs.Guitar : nInputAdjustTimeMs.Bass); | |
3920 | + autoPlayCondition &= (pChip.n発声時刻ms + ghostLag <= CSound管理.rc演奏用タイマ.n現在時刻ms); | |
3921 | + if (resetCombo && autoPlayCondition ) | |
3922 | + { | |
3923 | + this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート] = 0; | |
3924 | + } | |
3925 | + bUsePerfectGhost = false; | |
3926 | + } | |
3927 | + | |
3928 | + if( bUsePerfectGhost ) | |
3929 | + { | |
3930 | + // 従来のAUTOを使用する場合 | |
3931 | + autoPlayCondition &= ( pChip.nバーからの距離dot[ instIndex ] < 0 ); | |
3932 | + } | |
3933 | + | |
3934 | + if ( autoPlayCondition ) | |
3935 | + { | |
3830 | 3936 | int lo = (inst == E楽器パート.GUITAR) ? 0 : 5; // lane offset |
3831 | 3937 | bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR; |
3832 | 3938 | bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG; |
@@ -3833,7 +3939,6 @@ | ||
3833 | 3939 | bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB; |
3834 | 3940 | bool autoY = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtY : bIsAutoPlay.BsY; |
3835 | 3941 | bool autoP = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtP : bIsAutoPlay.BsP; |
3836 | - bool autoPick = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick; | |
3837 | 3942 | bool pushingR = CDTXMania.Pad.b押されている(inst, Eパッド.R); |
3838 | 3943 | bool pushingG = CDTXMania.Pad.b押されている(inst, Eパッド.G); |
3839 | 3944 | bool pushingB = CDTXMania.Pad.b押されている(inst, Eパッド.B); |
@@ -3840,72 +3945,214 @@ | ||
3840 | 3945 | bool pushingY = CDTXMania.Pad.b押されている(inst, Eパッド.Y); |
3841 | 3946 | bool pushingP = CDTXMania.Pad.b押されている(inst, Eパッド.P); |
3842 | 3947 | |
3843 | - #region [ Chip Fire effects ] | |
3844 | - bool bSuccessOPEN = bChipIsO && (autoR || !pushingR) && (autoG || !pushingG) && (autoB || !pushingB) && (autoY || !pushingY) && (autoP || !pushingP); | |
3845 | - if ((bChipHasR && (autoR || pushingR) && autoPick) || bSuccessOPEN) | |
3948 | + #region [ Chip Fire effects (auto時用) ] | |
3949 | + // autoPickでない時の処理は、 t入力処理・ギターベース(E楽器パート) で行う | |
3950 | + bool bSuccessOPEN = bChipIsO && ( autoR || !pushingR ) && ( autoG || !pushingG ) && ( autoB || !pushingB ) && ( autoY || !pushingY ) && ( autoP || !pushingP ); | |
3951 | + if ( ( bChipHasR && ( autoR || pushingR ) && autoPick ) || bSuccessOPEN && autoPick ) | |
3952 | + { | |
3953 | + this.actChipFireGB.Start( 0 + lo ); | |
3954 | + } | |
3955 | + if ( ( bChipHasG && ( autoG || pushingG ) && autoPick ) || bSuccessOPEN && autoPick ) | |
3956 | + { | |
3957 | + this.actChipFireGB.Start( 1 + lo ); | |
3958 | + } | |
3959 | + if ( ( bChipHasB && ( autoB || pushingB ) && autoPick ) || bSuccessOPEN && autoPick ) | |
3960 | + { | |
3961 | + this.actChipFireGB.Start( 2 + lo ); | |
3962 | + } | |
3963 | + if ( ( bChipHasY && ( autoY || pushingY ) && autoPick ) || bSuccessOPEN && autoPick ) | |
3964 | + { | |
3965 | + this.actChipFireGB.Start( 3 + lo ); | |
3966 | + } | |
3967 | + if ( ( bChipHasP && ( autoP || pushingP ) && autoPick ) || bSuccessOPEN && autoPick ) | |
3968 | + { | |
3969 | + this.actChipFireGB.Start( 4 + lo ); | |
3970 | + } | |
3971 | + #endregion | |
3972 | + #region [ autopick ] | |
3973 | + { | |
3974 | + bool bMiss = true; | |
3975 | + if ( bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB ) // autoレーンとチップレーン一致時はOK | |
3976 | + { // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。 | |
3977 | + bMiss = false; | |
3978 | + } | |
3979 | + else if ( ( autoR || ( bChipHasR == pushingR ) ) && ( autoG || ( bChipHasG == pushingG ) ) && ( autoB || ( bChipHasB == pushingB ) ) ) | |
3980 | + // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) ) | |
3981 | + { | |
3982 | + bMiss = false; | |
3983 | + } | |
3984 | + else if ( ( ( bChipIsO == true ) && ( !pushingR | autoR ) && ( !pushingG | autoG ) && ( !pushingB | autoB ) ) ) // OPEN時 | |
3985 | + { | |
3986 | + bMiss = false; | |
3987 | + } | |
3988 | + pChip.bHit = true; | |
3989 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, inst, dTX.nモニタを考慮した音量( inst ), false, bMiss ); | |
3990 | + this.r次にくるギターChip = null; | |
3991 | + if ( !bMiss ) | |
3992 | + { | |
3993 | + this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip); | |
3994 | + } | |
3995 | + else | |
3996 | + { | |
3997 | + pChip.nLag = 0; // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入 | |
3998 | + this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip, false); | |
3999 | + } | |
4000 | + int chWailingChip = ( inst == E楽器パート.GUITAR ) ? 0x28 : 0xA8; | |
4001 | + CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[instIndex], 140); | |
4002 | + if ( item != null && !bMiss ) | |
4003 | + { | |
4004 | + this.queWailing[ instIndex ].Enqueue( item ); | |
4005 | + } | |
4006 | + } | |
4007 | + #endregion | |
4008 | + if ( autoPick ) | |
4009 | + { | |
4010 | + bool bMiss = true; | |
4011 | + if ( bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB && bChipHasY == autoY && bChipHasP == autoP ) // autoレーンとチップレーン一致時はOK | |
4012 | + { // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。 | |
4013 | + bMiss = false; | |
4014 | + } | |
4015 | + else if ( ( autoR || ( bChipHasR == pushingR ) ) && ( autoG || ( bChipHasG == pushingG ) ) && ( autoB || ( bChipHasB == pushingB ) ) && ( autoY || ( bChipHasY == pushingY ) ) && ( autoP || bChipHasP == pushingP ) ) | |
4016 | + // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) ) | |
4017 | + { | |
4018 | + bMiss = false; | |
4019 | + } | |
4020 | + else if ( ( ( bChipIsO == true ) && ( !pushingR | autoR ) && ( !pushingG | autoG ) && ( !pushingB | autoB ) && ( !pushingY | autoY) && ( !pushingP | autoP) ) ) // OPEN時 | |
4021 | + { | |
4022 | + bMiss = false; | |
4023 | + } | |
4024 | + pChip.bHit = true; | |
4025 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, inst, dTX.nモニタを考慮した音量( inst ), false, bMiss ); | |
4026 | + this.r次にくるギターChip = null; | |
4027 | + if ( !bMiss ) | |
4028 | + { | |
4029 | + this.tチップのヒット処理( pChip.n発声時刻ms + ghostLag, pChip ); | |
4030 | + } | |
4031 | + else | |
4032 | + { | |
4033 | + pChip.nLag = 0; // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入 | |
4034 | + this.tチップのヒット処理( pChip.n発声時刻ms + ghostLag, pChip, false ); | |
4035 | + } | |
4036 | + int chWailingChip = ( inst == E楽器パート.GUITAR ) ? 0x28 : 0xA8; | |
4037 | + CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[ instIndex ], 140 ); | |
4038 | + if ( item != null && !bMiss ) | |
4039 | + { | |
4040 | + this.queWailing[ instIndex ].Enqueue( item ); | |
4041 | + } | |
4042 | + } | |
4043 | + // #35411 modify end | |
4044 | + } | |
4045 | + | |
4046 | + if( pChip.e楽器パート == E楽器パート.GUITAR && CDTXMania.ConfigIni.bGraph有効.Guitar ) | |
4047 | + { | |
4048 | + #region[ ギターゴースト ] | |
4049 | + if (CDTXMania.ConfigIni.eTargetGhost.Guitar != ETargetGhostData.NONE && | |
4050 | + CDTXMania.listTargetGhsotLag.Guitar != null) | |
3846 | 4051 | { |
3847 | - this.actChipFireGB.Start(0 + lo); | |
3848 | - } | |
3849 | - if ((bChipHasG && (autoG || pushingG) && autoPick) || bSuccessOPEN) | |
3850 | - { | |
3851 | - this.actChipFireGB.Start(1 + lo); | |
3852 | - } | |
3853 | - if ((bChipHasB && (autoB || pushingB) && autoPick) || bSuccessOPEN) | |
3854 | - { | |
3855 | - this.actChipFireGB.Start(2 + lo); | |
3856 | - } | |
3857 | - if ((bChipHasY && (autoY || pushingY) && autoPick) || bSuccessOPEN) | |
3858 | - { | |
3859 | - this.actChipFireGB.Start(3 + lo); | |
3860 | - } | |
3861 | - if ((bChipHasP && (autoP || pushingP) && autoPick) || bSuccessOPEN) | |
3862 | - { | |
3863 | - this.actChipFireGB.Start(4 + lo); | |
3864 | - } | |
3865 | - #endregion | |
3866 | - if (autoPick) | |
3867 | - { | |
3868 | - bool bMiss = true; | |
3869 | - if (bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB && bChipHasY == autoY && bChipHasP == autoP) // autoレーンとチップレーン一致時はOK | |
3870 | - { // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。 | |
3871 | - bMiss = false; | |
3872 | - } | |
3873 | - else if ((autoR || (bChipHasR == pushingR)) && (autoG || (bChipHasG == pushingG)) && (autoB || (bChipHasB == pushingB)) && (autoY || (bChipHasY == pushingY)) && (autoP || bChipHasP == pushingP)) | |
3874 | - // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) ) | |
4052 | + double val = 0; | |
4053 | + if (CDTXMania.ConfigIni.eTargetGhost.Guitar == ETargetGhostData.ONLINE) | |
3875 | 4054 | { |
3876 | - bMiss = false; | |
4055 | + if (CDTXMania.DTX.n可視チップ数.Guitar > 0) | |
4056 | + { | |
4057 | + // Online Stats の計算式 | |
4058 | + val = 100 * | |
4059 | + (this.nヒット数_TargetGhost.Guitar.Perfect * 17 + | |
4060 | + this.nヒット数_TargetGhost.Guitar.Great * 7 + | |
4061 | + this.n最大コンボ数_TargetGhost.Guitar * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Guitar); | |
4062 | + } | |
3877 | 4063 | } |
3878 | - else if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB) && (!pushingY | autoY) && (!pushingP | autoP))) // OPEN時 | |
4064 | + else | |
3879 | 4065 | { |
3880 | - bMiss = false; | |
4066 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
4067 | + { | |
4068 | + val = CScoreIni.t旧演奏型スキルを計算して返す( | |
4069 | + CDTXMania.DTX.n可視チップ数.Guitar, | |
4070 | + this.nヒット数_TargetGhost.Guitar.Perfect, | |
4071 | + this.nヒット数_TargetGhost.Guitar.Great, | |
4072 | + this.nヒット数_TargetGhost.Guitar.Good, | |
4073 | + this.nヒット数_TargetGhost.Guitar.Poor, | |
4074 | + this.nヒット数_TargetGhost.Guitar.Miss, | |
4075 | + E楽器パート.GUITAR, new STAUTOPLAY()); | |
4076 | + } | |
4077 | + else | |
4078 | + { | |
4079 | + val = CScoreIni.t演奏型スキルを計算して返す( | |
4080 | + CDTXMania.DTX.n可視チップ数.Guitar, | |
4081 | + this.nヒット数_TargetGhost.Guitar.Perfect, | |
4082 | + this.nヒット数_TargetGhost.Guitar.Great, | |
4083 | + this.nヒット数_TargetGhost.Guitar.Good, | |
4084 | + this.nヒット数_TargetGhost.Guitar.Poor, | |
4085 | + this.nヒット数_TargetGhost.Guitar.Miss, | |
4086 | + this.n最大コンボ数_TargetGhost.Guitar, | |
4087 | + E楽器パート.GUITAR, new STAUTOPLAY()); | |
4088 | + } | |
4089 | + | |
3881 | 4090 | } |
3882 | - pChip.bHit = true; | |
3883 | - this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst), false, bMiss); | |
3884 | - this.r次にくるギターChip = null; | |
3885 | - if (!bMiss) | |
4091 | + if (val < 0) val = 0; | |
4092 | + if (val > 100) val = 100; | |
4093 | + this.actGraph.dbグラフ値目標_渡 = val; | |
4094 | + } | |
4095 | + #endregion | |
4096 | + } | |
4097 | + else if( pChip.e楽器パート == E楽器パート.BASS && CDTXMania.ConfigIni.bGraph有効.Bass ) | |
4098 | + { | |
4099 | + #region[ ベースゴースト ] | |
4100 | + if (CDTXMania.ConfigIni.eTargetGhost.Bass != ETargetGhostData.NONE && | |
4101 | + CDTXMania.listTargetGhsotLag.Bass != null) | |
4102 | + { | |
4103 | + double val = 0; | |
4104 | + if (CDTXMania.ConfigIni.eTargetGhost.Bass == ETargetGhostData.ONLINE) | |
3886 | 4105 | { |
3887 | - this.tチップのヒット処理(pChip.n発声時刻ms, pChip); | |
4106 | + if (CDTXMania.DTX.n可視チップ数.Bass > 0) | |
4107 | + { | |
4108 | + // Online Stats の計算式 | |
4109 | + val = 100 * | |
4110 | + (this.nヒット数_TargetGhost.Bass.Perfect * 17 + | |
4111 | + this.nヒット数_TargetGhost.Bass.Great * 7 + | |
4112 | + this.n最大コンボ数_TargetGhost.Bass * 3) / (20.0 * CDTXMania.DTX.n可視チップ数.Bass); | |
4113 | + } | |
3888 | 4114 | } |
3889 | 4115 | else |
3890 | 4116 | { |
3891 | - pChip.nLag = 0; // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入 | |
3892 | - this.tチップのヒット処理(pChip.n発声時刻ms, pChip, false); | |
4117 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
4118 | + { | |
4119 | + val = CScoreIni.t旧演奏型スキルを計算して返す( | |
4120 | + CDTXMania.DTX.n可視チップ数.Bass, | |
4121 | + this.nヒット数_TargetGhost.Bass.Perfect, | |
4122 | + this.nヒット数_TargetGhost.Bass.Great, | |
4123 | + this.nヒット数_TargetGhost.Bass.Good, | |
4124 | + this.nヒット数_TargetGhost.Bass.Poor, | |
4125 | + this.nヒット数_TargetGhost.Bass.Miss, | |
4126 | + E楽器パート.BASS, new STAUTOPLAY()); | |
4127 | + } | |
4128 | + else | |
4129 | + { | |
4130 | + val = CScoreIni.t演奏型スキルを計算して返す( | |
4131 | + CDTXMania.DTX.n可視チップ数.Bass, | |
4132 | + this.nヒット数_TargetGhost.Bass.Perfect, | |
4133 | + this.nヒット数_TargetGhost.Bass.Great, | |
4134 | + this.nヒット数_TargetGhost.Bass.Good, | |
4135 | + this.nヒット数_TargetGhost.Bass.Poor, | |
4136 | + this.nヒット数_TargetGhost.Bass.Miss, | |
4137 | + this.n最大コンボ数_TargetGhost.Bass, | |
4138 | + E楽器パート.BASS, new STAUTOPLAY()); | |
4139 | + } | |
4140 | + | |
3893 | 4141 | } |
3894 | - int chWailingChip = (inst == E楽器パート.GUITAR) ? 0x28 : 0xA8; | |
3895 | - CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms, chWailingChip, this.nInputAdjustTimeMs[instIndex], 140); | |
3896 | - if (item != null && !bMiss) | |
3897 | - { | |
3898 | - this.queWailing[instIndex].Enqueue(item); | |
3899 | - } | |
4142 | + if (val < 0) val = 0; | |
4143 | + if (val > 100) val = 100; | |
4144 | + this.actGraph.dbグラフ値目標_渡 = val; | |
3900 | 4145 | } |
4146 | + #endregion | |
3901 | 4147 | } |
3902 | - return; | |
3903 | - } // end of "if configIni.bGuitar有効" | |
3904 | - if (!pChip.bHit && (pChip.nバーからの距離dot[instIndex] < 0)) // Guitar/Bass無効の場合は、自動演奏する | |
3905 | - { | |
3906 | - pChip.bHit = true; | |
3907 | - this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst)); | |
3908 | - } | |
4148 | + | |
4149 | + return; | |
4150 | + } // end of "if configIni.bGuitar有効" | |
4151 | + if ( !pChip.bHit && ( pChip.nバーからの距離dot[ instIndex ] < 0 ) ) // Guitar/Bass無効の場合は、自動演奏する | |
4152 | + { | |
4153 | + pChip.bHit = true; | |
4154 | + this.tサウンド再生( pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量( inst ) ); | |
4155 | + } | |
3909 | 4156 | } |
3910 | 4157 | |
3911 | 4158 |
@@ -3,6 +3,7 @@ | ||
3 | 3 | using System.Text; |
4 | 4 | using System.Runtime.InteropServices; |
5 | 5 | using System.Drawing; |
6 | +using System.Diagnostics; | |
6 | 7 | using System.IO; |
7 | 8 | using SlimDX; |
8 | 9 | using SlimDX.Direct3D9; |
@@ -17,235 +18,305 @@ | ||
17 | 18 | |
18 | 19 | public CAct演奏AVI() |
19 | 20 | { |
20 | - base.list子Activities.Add(this.actFill = new CAct演奏Drumsフィルインエフェクト()); | |
21 | - base.list子Activities.Add(this.actPanel = new CAct演奏パネル文字列()); | |
21 | + base.list子Activities.Add( this.actFill = new CAct演奏Drumsフィルインエフェクト() ); | |
22 | + base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() ); | |
22 | 23 | base.b活性化してない = true; |
23 | 24 | } |
24 | 25 | |
25 | 26 | |
26 | 27 | // メソッド |
27 | - | |
28 | + | |
28 | 29 | public void Start(int nチャンネル番号, CDTX.CAVI rAVI, CDTX.CDirectShow dsBGV, int n開始サイズW, int n開始サイズH, int n終了サイズW, int n終了サイズH, int n画像側開始位置X, int n画像側開始位置Y, int n画像側終了位置X, int n画像側終了位置Y, int n表示側開始位置X, int n表示側開始位置Y, int n表示側終了位置X, int n表示側終了位置Y, int n総移動時間ms, int n移動開始時刻ms) |
29 | 30 | { |
30 | - if ( ( nチャンネル番号 == 0x54 || nチャンネル番号 == 0x5A ) && CDTXMania.ConfigIni.bDirectShowMode == false && CDTXMania.ConfigIni.bAVI有効 ) | |
31 | + //2016.01.21 kairera0467 VfW時代のコードを除去+大改造 | |
32 | + | |
33 | + this.rAVI = rAVI; | |
34 | + #region[ アスペクト比からどっちを使うか判別 ] | |
35 | + // 旧DShowモードを使っていて、旧規格クリップだったら新DShowモードを使う。 | |
36 | + if( CDTXMania.ConfigIni.bDirectShowMode == false ) | |
31 | 37 | { |
32 | - this.rAVI = rAVI; | |
33 | - //this.dsBGV.dshow.Dispose(); | |
34 | - this.n開始サイズW = n開始サイズW; | |
35 | - this.n開始サイズH = n開始サイズH; | |
36 | - this.n終了サイズW = n終了サイズW; | |
37 | - this.n終了サイズH = n終了サイズH; | |
38 | - this.n画像側開始位置X = n画像側開始位置X; | |
39 | - this.n画像側開始位置Y = n画像側開始位置Y; | |
40 | - this.n画像側終了位置X = n画像側終了位置X; | |
41 | - this.n画像側終了位置Y = n画像側終了位置Y; | |
42 | - this.n表示側開始位置X = n表示側開始位置X; | |
43 | - this.n表示側開始位置Y = n表示側開始位置Y; | |
44 | - this.n表示側終了位置X = n表示側終了位置X; | |
45 | - this.n表示側終了位置Y = n表示側終了位置Y; | |
46 | - this.n総移動時間ms = n総移動時間ms; | |
47 | - this.n移動開始時刻ms = (n移動開始時刻ms != -1) ? n移動開始時刻ms : CSound管理.rc演奏用タイマ.n現在時刻; | |
48 | - this.n前回表示したフレーム番号 = -1; | |
49 | - if ((this.rAVI != null) && (this.rAVI.avi != null)) | |
38 | + this.fClipアスペクト比 = ( (float)rAVI.avi.nフレーム幅 / (float)rAVI.avi.nフレーム高さ ); | |
39 | + this.bUseMRenderer = false; | |
40 | + } | |
41 | + else | |
42 | + { | |
43 | + this.fClipアスペクト比 = ( (float)dsBGV.dshow.n幅px / (float)dsBGV.dshow.n高さpx ); | |
44 | + if( this.fClipアスペクト比 < 1.77f ) | |
45 | + this.bUseMRenderer = false; | |
46 | + } | |
47 | + #endregion | |
48 | + | |
49 | + if( nチャンネル番号 == 0x54 || nチャンネル番号 == 0x5A ) | |
50 | + { | |
51 | + if( this.bUseMRenderer ) | |
50 | 52 | { |
51 | - float f拡大率x; | |
52 | - float f拡大率y; | |
53 | - this.framewidth = this.rAVI.avi.nフレーム幅; | |
54 | - this.frameheight = this.rAVI.avi.nフレーム高さ; | |
55 | - this.fAVIアスペクト比 = ((float)this.framewidth) / ((float)this.frameheight); | |
56 | - if (this.tx描画用 == null) | |
53 | + //MemoryRenderer | |
54 | + this.dsBGV = dsBGV; | |
55 | + if( this.dsBGV != null && this.dsBGV.dshow != null ) | |
57 | 56 | { |
58 | - this.tx描画用 = new CTexture(CDTXMania.app.Device, (int)this.framewidth, (int)this.frameheight, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Managed); | |
59 | - } | |
60 | - if (fAVIアスペクト比 < 1.77f) | |
61 | - { | |
62 | - //旧企画クリップだった場合 | |
63 | - this.ratio1 = 720f / ((float)this.frameheight); | |
64 | - this.position = (int)((1280f - (this.framewidth * this.ratio1)) / 2f); | |
65 | - int num = (int)(this.framewidth * this.ratio1); | |
66 | - if (num <= 565) | |
57 | + this.framewidth = (uint)this.dsBGV.dshow.n幅px; | |
58 | + this.frameheight = (uint)this.dsBGV.dshow.n高さpx; | |
59 | + float f拡大率x; | |
60 | + float f拡大率y; | |
61 | + | |
62 | + if ( this.tx描画用 == null ) | |
67 | 63 | { |
68 | - this.position = 295 + ((int)((565f - (this.framewidth * this.ratio1)) / 2f)); | |
69 | - this.i1 = 0; | |
70 | - this.i2 = (int)this.framewidth; | |
71 | - this.rec = new Rectangle(0, 0, 0, 0); | |
72 | - this.rec3 = new Rectangle(0, 0, 0, 0); | |
73 | - this.rec2 = new Rectangle(0, 0, (int)this.framewidth, (int)this.frameheight); | |
64 | + try | |
65 | + { | |
66 | + this.tx描画用 = new CTexture( CDTXMania.app.Device, (int)this.framewidth, (int)this.frameheight, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Managed ); | |
67 | + } | |
68 | + catch ( CTextureCreateFailedException e ) | |
69 | + { | |
70 | + Trace.TraceError( "CActAVI: OnManagedリソースの作成(): " + e.Message ); | |
71 | + this.tx描画用 = null; | |
72 | + } | |
74 | 73 | } |
75 | - else | |
76 | - { | |
77 | - this.position = 295 - ((int)(((this.framewidth * this.ratio1) - 565f) / 2f)); | |
78 | - this.i1 = (int)(((float)(295 - this.position)) / this.ratio1); | |
79 | - this.i2 = (int)((565f / ((float)num)) * this.framewidth); | |
80 | - this.rec = new Rectangle(0, 0, this.i1, (int)this.frameheight); | |
81 | - this.rec3 = new Rectangle(this.i1 + this.i2, 0, (((int)this.framewidth) - this.i1) - this.i2, (int)this.frameheight); | |
82 | - this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
83 | - } | |
84 | - this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
85 | - this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
86 | - } | |
87 | - else | |
88 | - { | |
74 | + | |
75 | + #region[ リサイズ処理 ] | |
89 | 76 | //ワイドクリップの処理 |
90 | - this.ratio1 = 1280f / ((float)this.framewidth); | |
91 | - this.position = (int)((720f - (this.frameheight * this.ratio1)) / 2f); | |
92 | - this.i1 = (int)(this.framewidth * 0.23046875); | |
93 | - this.i2 = (int)(this.framewidth * 0.44140625); | |
94 | - this.rec = new Rectangle(0, 0, this.i1, (int)this.frameheight); | |
95 | - this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
96 | - this.rec3 = new Rectangle(this.i1 + this.i2, 0, (((int)this.framewidth) - this.i1) - this.i2, (int)this.frameheight); | |
77 | + this.ratio1 = 1280.0f / ( (float)this.framewidth ); | |
78 | + this.position = (int)( ( 720.0f - ( this.frameheight * this.ratio1 ) ) / 2.0f ); | |
79 | + this.i1 = (int)( this.framewidth * 0.23046875 ); | |
80 | + this.i2 = (int)( this.framewidth * 0.44140625 ); | |
81 | + this.rec = new Rectangle( 0, 0, this.i1, (int)this.frameheight ); | |
82 | + this.rec2 = new Rectangle( this.i1, 0, this.i2, (int)this.frameheight ); | |
83 | + this.rec3 = new Rectangle( this.i1 + this.i2, 0, ( ( (int)this.framewidth ) - this.i1 ) - this.i2, (int)this.frameheight ); | |
97 | 84 | this.tx描画用.vc拡大縮小倍率.X = this.ratio1; |
98 | 85 | this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; |
99 | - } | |
100 | 86 | |
87 | + if( this.framewidth > 420 ) | |
88 | + f拡大率x = 420f / ( (float)this.framewidth ); | |
89 | + else | |
90 | + f拡大率x = 1f; | |
101 | 91 | |
102 | - if (this.framewidth > 420) | |
103 | - { | |
104 | - f拡大率x = 420f / ((float)this.framewidth); | |
92 | + if( this.frameheight > 580 ) | |
93 | + f拡大率y = 580f / ( (float)this.frameheight ); | |
94 | + else | |
95 | + f拡大率y = 1f; | |
96 | + | |
97 | + if( f拡大率x > f拡大率y ) | |
98 | + f拡大率x = f拡大率y; | |
99 | + else | |
100 | + f拡大率y = f拡大率x; | |
101 | + | |
102 | + this.smallvc = new Vector3( f拡大率x, f拡大率y, 1.0f ); | |
103 | + #endregion | |
105 | 104 | } |
106 | - else | |
105 | + | |
106 | + if ( fClipアスペクト比 > 1.77f && this.dsBGV != null && this.dsBGV.dshow != null ) | |
107 | 107 | { |
108 | - f拡大率x = 1f; | |
108 | + this.dsBGV.dshow.t再生開始(); | |
109 | + this.bDShowクリップを再生している = true; | |
109 | 110 | } |
110 | - if (this.frameheight > 580) | |
111 | + if ( fClipアスペクト比 < 1.77f && this.dsBGV != null && this.dsBGV.dshow != null ) | |
111 | 112 | { |
112 | - f拡大率y = 580f / ((float)this.frameheight); | |
113 | + this.dsBGV.dshow.t再生開始(); | |
114 | + this.bDShowクリップを再生している = true; | |
113 | 115 | } |
114 | - else | |
115 | - { | |
116 | - f拡大率y = 1f; | |
117 | - } | |
118 | - if (f拡大率x > f拡大率y) | |
119 | - { | |
120 | - f拡大率x = f拡大率y; | |
121 | - } | |
122 | - else | |
123 | - { | |
124 | - f拡大率y = f拡大率x; | |
125 | - } | |
126 | - | |
127 | - this.smallvc = new Vector3(f拡大率x, f拡大率y, 1f); | |
128 | - this.vclip = new Vector3(1.42f, 1.42f, 1f); | |
129 | 116 | } |
130 | - } | |
131 | - else if ( ( nチャンネル番号 == 0x54 || nチャンネル番号 == 0x5A ) && CDTXMania.ConfigIni.bDirectShowMode && CDTXMania.ConfigIni.bAVI有効 ) | |
132 | - { | |
133 | - this.rAVI = rAVI; | |
134 | - this.dsBGV = dsBGV; | |
135 | - if (this.dsBGV != null && this.dsBGV.dshow != null) | |
117 | + else if( this.bUseCAviDS ) | |
136 | 118 | { |
137 | - this.framewidth = (uint)this.dsBGV.dshow.n幅px; | |
138 | - this.frameheight = (uint)this.dsBGV.dshow.n高さpx; | |
139 | - float f拡大率x; | |
140 | - float f拡大率y; | |
141 | - this.fAVIアスペクト比 = ((float)this.framewidth) / ((float)this.frameheight); | |
119 | + //CAviDS | |
120 | + this.rAVI = rAVI; | |
121 | + this.n開始サイズW = n開始サイズW; | |
122 | + this.n開始サイズH = n開始サイズH; | |
123 | + this.n終了サイズW = n終了サイズW; | |
124 | + this.n終了サイズH = n終了サイズH; | |
125 | + this.n画像側開始位置X = n画像側開始位置X; | |
126 | + this.n画像側開始位置Y = n画像側開始位置Y; | |
127 | + this.n画像側終了位置X = n画像側終了位置X; | |
128 | + this.n画像側終了位置Y = n画像側終了位置Y; | |
129 | + this.n表示側開始位置X = n表示側開始位置X; | |
130 | + this.n表示側開始位置Y = n表示側開始位置Y; | |
131 | + this.n表示側終了位置X = n表示側終了位置X; | |
132 | + this.n表示側終了位置Y = n表示側終了位置Y; | |
133 | + this.n総移動時間ms = n総移動時間ms; | |
134 | + this.n移動開始時刻ms = ( n移動開始時刻ms != -1 ) ? n移動開始時刻ms : CSound管理.rc演奏用タイマ.n現在時刻; | |
142 | 135 | |
143 | - if (fAVIアスペクト比 < 1.77f) | |
136 | + if( ( this.rAVI != null ) && ( this.rAVI.avi != null ) ) | |
144 | 137 | { |
145 | - #region[ 旧規格クリップ時の処理。結果的には面倒な処理なんだよな・・・・ ] | |
146 | - this.n開始サイズW = n開始サイズW; | |
147 | - this.n開始サイズH = n開始サイズH; | |
148 | - this.n終了サイズW = n終了サイズW; | |
149 | - this.n終了サイズH = n終了サイズH; | |
150 | - this.n画像側開始位置X = n画像側開始位置X; | |
151 | - this.n画像側開始位置Y = n画像側開始位置Y; | |
152 | - this.n画像側終了位置X = n画像側終了位置X; | |
153 | - this.n画像側終了位置Y = n画像側終了位置Y; | |
154 | - this.n表示側開始位置X = n表示側開始位置X; | |
155 | - this.n表示側開始位置Y = n表示側開始位置Y; | |
156 | - this.n表示側終了位置X = n表示側終了位置X; | |
157 | - this.n表示側終了位置Y = n表示側終了位置Y; | |
158 | - this.n総移動時間ms = n総移動時間ms; | |
159 | - this.n移動開始時刻ms = (n移動開始時刻ms != -1) ? n移動開始時刻ms : CSound管理.rc演奏用タイマ.n現在時刻; | |
160 | - this.n前回表示したフレーム番号 = -1; | |
138 | + float f拡大率x; | |
139 | + float f拡大率y; | |
140 | + this.framewidth = (uint)this.rAVI.avi.nフレーム幅; | |
141 | + this.frameheight = (uint)this.rAVI.avi.nフレーム高さ; | |
142 | + if( this.tx描画用 == null ) | |
143 | + { | |
144 | + this.tx描画用 = new CTexture( CDTXMania.app.Device, (int)this.framewidth, (int)this.frameheight, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Managed ); | |
145 | + } | |
161 | 146 | |
162 | - this.vclip = new Vector3(1.42f, 1.42f, 1f); | |
163 | - this.dsBGV = null; | |
164 | - #endregion | |
147 | + if( fClipアスペクト比 < 1.77f ) | |
148 | + { | |
149 | + //旧規格クリップだった場合 | |
150 | + this.ratio1 = 720f / ( (float)this.frameheight ); | |
151 | + this.position = (int)( ( 1280f - ( this.framewidth * this.ratio1 ) ) / 2f ); | |
152 | + int num = (int)( this.framewidth * this.ratio1 ); | |
153 | + if( num <= 565 ) | |
154 | + { | |
155 | + this.position = 295 + ( (int)( ( 565f - ( this.framewidth * this.ratio1 ) ) / 2f ) ); | |
156 | + this.i1 = 0; | |
157 | + this.i2 = (int)this.framewidth; | |
158 | + this.rec = new Rectangle( 0, 0, 0, 0 ); | |
159 | + this.rec3 = new Rectangle( 0, 0, 0, 0 ); | |
160 | + this.rec2 = new Rectangle( 0, 0, (int)this.framewidth, (int)this.frameheight ); | |
161 | + } | |
162 | + else | |
163 | + { | |
164 | + this.position = 295 - ( (int)( ( ( this.framewidth * this.ratio1 ) - 565f ) / 2f ) ); | |
165 | + this.i1 = (int)( ( (float)( 295 - this.position ) ) / this.ratio1 ); | |
166 | + this.i2 = (int)( ( 565f / ( (float)num ) ) * this.framewidth ); | |
167 | + this.rec = new Rectangle( 0, 0, this.i1, (int)this.frameheight ); | |
168 | + this.rec3 = new Rectangle( this.i1 + this.i2, 0, ( ( (int)this.framewidth ) - this.i1 ) - this.i2, (int)this.frameheight ); | |
169 | + this.rec2 = new Rectangle( this.i1, 0, this.i2, (int)this.frameheight ); | |
170 | + } | |
171 | + this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
172 | + this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
173 | + } | |
174 | + else | |
175 | + { | |
176 | + //ワイドクリップの処理 | |
177 | + this.ratio1 = 1280f / ( (float)this.framewidth ); | |
178 | + this.position = (int)( ( 720f - ( this.frameheight * this.ratio1 ) ) / 2f ); | |
179 | + this.i1 = (int)( this.framewidth * 0.23046875 ); | |
180 | + this.i2 = (int)( this.framewidth * 0.44140625 ); | |
181 | + this.rec = new Rectangle( 0, 0, this.i1, (int)this.frameheight ); | |
182 | + this.rec2 = new Rectangle( this.i1, 0, this.i2, (int)this.frameheight ); | |
183 | + this.rec3 = new Rectangle( this.i1 + this.i2, 0, ( ( (int)this.framewidth ) - this.i1 ) - this.i2, (int)this.frameheight ); | |
184 | + this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
185 | + this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
186 | + } | |
187 | + | |
188 | + | |
189 | + if( this.framewidth > 420 ) | |
190 | + { | |
191 | + f拡大率x = 420f / ( (float)this.framewidth ); | |
192 | + } | |
193 | + else | |
194 | + { | |
195 | + f拡大率x = 1f; | |
196 | + } | |
197 | + if( this.frameheight > 580 ) | |
198 | + { | |
199 | + f拡大率y = 580f / ( (float)this.frameheight ); | |
200 | + } | |
201 | + else | |
202 | + { | |
203 | + f拡大率y = 1f; | |
204 | + } | |
205 | + if( f拡大率x > f拡大率y ) | |
206 | + { | |
207 | + f拡大率x = f拡大率y; | |
208 | + } | |
209 | + else | |
210 | + { | |
211 | + f拡大率y= f拡大率x; | |
212 | + } | |
213 | + | |
214 | + this.smallvc = new Vector3( f拡大率x, f拡大率y, 1f ); | |
215 | + this.vclip = new Vector3( 1.42f, 1.42f, 1f ); | |
216 | + //this.rAVI.avi.Run(); | |
165 | 217 | } |
166 | - if (this.tx描画用 == null) | |
218 | + } | |
219 | + else | |
220 | + { | |
221 | + this.rAVI = rAVI; | |
222 | + this.n開始サイズW = n開始サイズW; | |
223 | + this.n開始サイズH = n開始サイズH; | |
224 | + this.n終了サイズW = n終了サイズW; | |
225 | + this.n終了サイズH = n終了サイズH; | |
226 | + this.n画像側開始位置X = n画像側開始位置X; | |
227 | + this.n画像側開始位置Y = n画像側開始位置Y; | |
228 | + this.n画像側終了位置X = n画像側終了位置X; | |
229 | + this.n画像側終了位置Y = n画像側終了位置Y; | |
230 | + this.n表示側開始位置X = n表示側開始位置X; | |
231 | + this.n表示側開始位置Y = n表示側開始位置Y; | |
232 | + this.n表示側終了位置X = n表示側終了位置X; | |
233 | + this.n表示側終了位置Y = n表示側終了位置Y; | |
234 | + this.n総移動時間ms = n総移動時間ms; | |
235 | + this.n移動開始時刻ms = ( n移動開始時刻ms != -1 ) ? n移動開始時刻ms : CSound管理.rc演奏用タイマ.n現在時刻; | |
236 | + this.n前回表示したフレーム番号 = -1; | |
237 | + if( ( this.rAVI != null ) && ( this.rAVI.avi != null ) ) | |
167 | 238 | { |
168 | - this.tx描画用 = new CTexture(CDTXMania.app.Device, (int)this.framewidth, (int)this.frameheight, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Managed); | |
169 | - } | |
170 | - | |
171 | - #region[ リサイズ処理 ] | |
172 | - if (fAVIアスペクト比 < 1.77f) | |
173 | - { | |
174 | - //旧企画クリップだった場合 | |
175 | - this.ratio1 = 720f / ((float)this.frameheight); | |
176 | - this.position = (int)((1280f - (this.framewidth * this.ratio1)) / 2f); | |
177 | - int num = (int)(this.framewidth * this.ratio1); | |
178 | - if (num <= 565) | |
239 | + float f拡大率x; | |
240 | + float f拡大率y; | |
241 | + this.framewidth = this.rAVI.avi.nフレーム幅; | |
242 | + this.frameheight = this.rAVI.avi.nフレーム高さ; | |
243 | + if( this.tx描画用 == null ) | |
179 | 244 | { |
180 | - this.position = 295 + ((int)((565f - (this.framewidth * this.ratio1)) / 2f)); | |
181 | - this.i1 = 0; | |
182 | - this.i2 = (int)this.framewidth; | |
183 | - this.rec = new Rectangle(0, 0, 0, 0); | |
184 | - this.rec3 = new Rectangle(0, 0, 0, 0); | |
185 | - this.rec2 = new Rectangle(0, 0, (int)this.framewidth, (int)this.frameheight); | |
245 | + this.tx描画用 = new CTexture( CDTXMania.app.Device, (int)this.framewidth, (int)this.frameheight, CDTXMania.app.GraphicsDeviceManager.CurrentSettings.BackBufferFormat, Pool.Managed ); | |
186 | 246 | } |
247 | + if( fClipアスペクト比 < 1.77f ) | |
248 | + { | |
249 | + //旧規格クリップだった場合 | |
250 | + this.ratio1 = 720.0f / this.frameheight; | |
251 | + this.position = (int)( ( 1280.0f - ( this.framewidth * this.ratio1 ) ) / 2.0f ); | |
252 | + int num = (int)( this.framewidth * this.ratio1 ); | |
253 | + if( num <= 565 ) | |
254 | + { | |
255 | + this.position = 295 + ( (int)( ( 565f - ( this.framewidth * this.ratio1 ) ) / 2f ) ); | |
256 | + this.i1 = 0; | |
257 | + this.i2 = (int)this.framewidth; | |
258 | + this.rec = new Rectangle(0, 0, 0, 0); | |
259 | + this.rec3 = new Rectangle(0, 0, 0, 0); | |
260 | + this.rec2 = new Rectangle(0, 0, (int)this.framewidth, (int)this.frameheight); | |
261 | + } | |
262 | + else | |
263 | + { | |
264 | + this.position = 295 - ((int)(((this.framewidth * this.ratio1) - 565f) / 2f)); | |
265 | + this.i1 = (int)(((float)(295 - this.position)) / this.ratio1); | |
266 | + this.i2 = (int)((565f / ((float)num)) * this.framewidth); | |
267 | + this.rec = new Rectangle(0, 0, this.i1, (int)this.frameheight); | |
268 | + this.rec3 = new Rectangle(this.i1 + this.i2, 0, (((int)this.framewidth) - this.i1) - this.i2, (int)this.frameheight); | |
269 | + this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
270 | + } | |
271 | + this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
272 | + this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
273 | + } | |
187 | 274 | else |
188 | 275 | { |
189 | - this.position = 295 - ((int)(((this.framewidth * this.ratio1) - 565f) / 2f)); | |
190 | - this.i1 = (int)(((float)(295 - this.position)) / this.ratio1); | |
191 | - this.i2 = (int)((565f / ((float)num)) * this.framewidth); | |
276 | + //ワイドクリップの処理 | |
277 | + this.ratio1 = 1280f / ((float)this.framewidth); | |
278 | + this.position = (int)((720f - (this.frameheight * this.ratio1)) / 2f); | |
279 | + this.i1 = (int)(this.framewidth * 0.23046875); | |
280 | + this.i2 = (int)(this.framewidth * 0.44140625); | |
192 | 281 | this.rec = new Rectangle(0, 0, this.i1, (int)this.frameheight); |
282 | + this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
193 | 283 | this.rec3 = new Rectangle(this.i1 + this.i2, 0, (((int)this.framewidth) - this.i1) - this.i2, (int)this.frameheight); |
194 | - this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
284 | + this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
285 | + this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
195 | 286 | } |
196 | - this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
197 | - this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
198 | - } | |
199 | - else | |
200 | - { | |
201 | - //ワイドクリップの処理 | |
202 | - this.ratio1 = 1280f / ((float)this.framewidth); | |
203 | - this.position = (int)((720f - (this.frameheight * this.ratio1)) / 2f); | |
204 | - this.i1 = (int)(this.framewidth * 0.23046875); | |
205 | - this.i2 = (int)(this.framewidth * 0.44140625); | |
206 | - this.rec = new Rectangle(0, 0, this.i1, (int)this.frameheight); | |
207 | - this.rec2 = new Rectangle(this.i1, 0, this.i2, (int)this.frameheight); | |
208 | - this.rec3 = new Rectangle(this.i1 + this.i2, 0, (((int)this.framewidth) - this.i1) - this.i2, (int)this.frameheight); | |
209 | - this.tx描画用.vc拡大縮小倍率.X = this.ratio1; | |
210 | - this.tx描画用.vc拡大縮小倍率.Y = this.ratio1; | |
211 | - } | |
212 | 287 | |
213 | 288 | |
214 | - if (this.framewidth > 420) | |
215 | - { | |
216 | - f拡大率x = 420f / ((float)this.framewidth); | |
289 | + if (this.framewidth > 420) | |
290 | + { | |
291 | + f拡大率x = 420f / ((float)this.framewidth); | |
292 | + } | |
293 | + else | |
294 | + { | |
295 | + f拡大率x = 1f; | |
296 | + } | |
297 | + if (this.frameheight > 580) | |
298 | + { | |
299 | + f拡大率y = 580f / ((float)this.frameheight); | |
300 | + } | |
301 | + else | |
302 | + { | |
303 | + f拡大率y = 1f; | |
304 | + } | |
305 | + if (f拡大率x > f拡大率y) | |
306 | + { | |
307 | + f拡大率x = f拡大率y; | |
308 | + } | |
309 | + else | |
310 | + { | |
311 | + f拡大率y = f拡大率x; | |
312 | + } | |
313 | + | |
314 | + this.smallvc = new Vector3(f拡大率x, f拡大率y, 1f); | |
315 | + this.vclip = new Vector3(1.42f, 1.42f, 1f); | |
217 | 316 | } |
218 | - else | |
219 | - { | |
220 | - f拡大率x = 1f; | |
221 | - } | |
222 | - if (this.frameheight > 580) | |
223 | - { | |
224 | - f拡大率y = 580f / ((float)this.frameheight); | |
225 | - } | |
226 | - else | |
227 | - { | |
228 | - f拡大率y = 1f; | |
229 | - } | |
230 | - if (f拡大率x > f拡大率y) | |
231 | - { | |
232 | - f拡大率x = f拡大率y; | |
233 | - } | |
234 | - else | |
235 | - { | |
236 | - f拡大率y = f拡大率x; | |
237 | - } | |
238 | - | |
239 | - this.smallvc = new Vector3(f拡大率x, f拡大率y, 1f); | |
240 | - #endregion | |
241 | 317 | } |
318 | + } | |
242 | 319 | |
243 | - if (fAVIアスペクト比 > 1.77f && this.dsBGV != null && this.dsBGV.dshow != null) | |
244 | - { | |
245 | - this.dsBGV.dshow.t再生開始(); | |
246 | - this.bDShowクリップを再生している = true; | |
247 | - } | |
248 | - } | |
249 | 320 | } |
250 | 321 | public void SkipStart(int n移動開始時刻ms) |
251 | 322 | { |
@@ -352,7 +423,7 @@ | ||
352 | 423 | { |
353 | 424 | this.txクリップパネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_ClipPanelC.png")); |
354 | 425 | } |
355 | - else if (CDTXMania.ConfigIni.bGraph有効 && CDTXMania.ConfigIni.bDrums有効) | |
426 | + else if (CDTXMania.ConfigIni.bGraph有効.Drums && CDTXMania.ConfigIni.bDrums有効) | |
356 | 427 | { |
357 | 428 | this.txクリップパネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_ClipPanelB.png")); |
358 | 429 | } |
@@ -368,18 +439,18 @@ | ||
368 | 439 | this.stフィルイン[i].ct進行 = new CCounter(0, 30, 30, CDTXMania.Timer); |
369 | 440 | this.stフィルイン[i].b使用中 = false; |
370 | 441 | } |
371 | - //this.txフィルインエフェクト = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_Fillin Effect.png")); | |
442 | + this.txフィルインエフェクト = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Fillin Effect.png" ) ); | |
372 | 443 | |
373 | - this.txフィルインエフェクト = new CTexture[ 31 ]; | |
374 | - for( int fill = 0; fill < 31; fill++ ) | |
375 | - { | |
376 | - this.txフィルインエフェクト[ fill ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\StageEffect\7_StageEffect_" + fill.ToString() + ".png" ) ); | |
377 | - if( this.txフィルインエフェクト[ fill ] == null ) | |
378 | - continue; | |
444 | + //this.txフィルインエフェクト = new CTexture[ 31 ]; | |
445 | + //for( int fill = 0; fill < 31; fill++ ) | |
446 | + //{ | |
447 | + // this.txフィルインエフェクト[ fill ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\StageEffect\7_StageEffect_" + fill.ToString() + ".png" ) ); | |
448 | + // if( this.txフィルインエフェクト[ fill ] == null ) | |
449 | + // continue; | |
379 | 450 | |
380 | - this.txフィルインエフェクト[ fill ].b加算合成 = true; | |
381 | - this.txフィルインエフェクト[ fill ].vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
382 | - } | |
451 | + // this.txフィルインエフェクト[ fill ].b加算合成 = true; | |
452 | + // this.txフィルインエフェクト[ fill ].vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
453 | + //} | |
383 | 454 | |
384 | 455 | base.OnManagedリソースの作成(); |
385 | 456 | } |
@@ -413,11 +484,11 @@ | ||
413 | 484 | //テクスチャ 17枚 |
414 | 485 | //CDTXMania.tテクスチャの解放(ref this.txドラム); |
415 | 486 | CDTXMania.tテクスチャの解放(ref this.txクリップパネル); |
416 | - //CDTXMania.tテクスチャの解放( ref this.txフィルインエフェクト ); | |
417 | - for( int ar = 0; ar < 31; ar++ ) | |
418 | - { | |
419 | - CDTXMania.tテクスチャの解放( ref this.txフィルインエフェクト[ ar ] ); | |
420 | - } | |
487 | + CDTXMania.tテクスチャの解放( ref this.txフィルインエフェクト ); | |
488 | + //for( int ar = 0; ar < 31; ar++ ) | |
489 | + //{ | |
490 | + // CDTXMania.tテクスチャの解放( ref this.txフィルインエフェクト[ ar ] ); | |
491 | + //} | |
421 | 492 | base.OnManagedリソースの解放(); |
422 | 493 | } |
423 | 494 | } |
@@ -461,51 +532,44 @@ | ||
461 | 532 | #region[ムービーのフレーム作成処理] |
462 | 533 | if ((!base.b活性化してない)) |
463 | 534 | { |
464 | - if (((this.bFullScreen || this.bWindowMode) && (this.tx描画用 != null)) && (this.dsBGV != null || this.rAVI != null)) //クリップ無し曲での進入防止。 | |
535 | + if( ( ( this.tx描画用 != null )) && ( this.dsBGV != null || this.rAVI != null ) ) //クリップ無し曲での進入防止。 | |
465 | 536 | { |
466 | 537 | Rectangle rectangle; |
467 | 538 | Rectangle rectangle2; |
468 | 539 | |
469 | - int time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.ConfigIni.n演奏速度) / 20.0)); | |
540 | + #region[ frameNoFromTime ] | |
541 | + int time = (int)( ( CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms ) * ( ( (double)CDTXMania.ConfigIni.n演奏速度 ) / 20.0 ) ); | |
470 | 542 | int frameNoFromTime = 0; |
471 | - | |
472 | - #region[ frameNoFromTime ] | |
473 | - if (CDTXMania.ConfigIni.bDirectShowMode == true && (this.dsBGV != null)) | |
543 | + if( this.bUseMRenderer ) | |
474 | 544 | { |
475 | - if (this.fAVIアスペクト比 > 1.77f) | |
476 | - { | |
477 | - this.dsBGV.dshow.MediaSeeking.GetPositions(out this.lDshowPosition, out this.lStopPosition); | |
478 | - frameNoFromTime = (int)lDshowPosition; | |
479 | - } | |
480 | - else | |
481 | - { | |
482 | - frameNoFromTime = this.rAVI.avi.GetFrameNoFromTime(time); | |
483 | - } | |
545 | + this.dsBGV.dshow.MediaSeeking.GetPositions( out this.lDshowPosition, out this.lStopPosition ); | |
546 | + frameNoFromTime = (int)lDshowPosition; | |
484 | 547 | } |
485 | - else if (this.rAVI != null) | |
486 | - { | |
487 | - frameNoFromTime = this.rAVI.avi.GetFrameNoFromTime(time); | |
488 | - } | |
548 | + else if( this.bUseCAviDS ) | |
549 | + frameNoFromTime = time; | |
550 | + else | |
551 | + frameNoFromTime = this.rAVI.avi.GetFrameNoFromTime( time ); | |
489 | 552 | #endregion |
490 | 553 | |
491 | - if ((this.n総移動時間ms != 0) && (this.n総移動時間ms < time)) | |
554 | + if( ( this.n総移動時間ms != 0 ) && ( this.n総移動時間ms < time ) ) | |
492 | 555 | { |
493 | 556 | this.n総移動時間ms = 0; |
494 | 557 | this.n移動開始時刻ms = -1L; |
495 | 558 | } |
496 | - if ((this.n総移動時間ms == 0) && this.rAVI.avi != null ? (frameNoFromTime >= this.rAVI.avi.GetMaxFrameCount()) : false) | |
559 | + if((((this.n前回表示したフレーム番号 != frameNoFromTime) || !this.bフレームを作成した)) && ( fClipアスペクト比 < 1.77f || ( !this.bUseMRenderer ) )) | |
497 | 560 | { |
498 | - this.n移動開始時刻ms = -1L; | |
561 | + this.n前回表示したフレーム番号 = frameNoFromTime; | |
562 | + this.bフレームを作成した = true; | |
499 | 563 | } |
500 | - if ((((this.n前回表示したフレーム番号 != frameNoFromTime) || !this.bフレームを作成した)) && (fAVIアスペクト比 < 1.77f || CDTXMania.ConfigIni.bDirectShowMode == false)) | |
564 | + if( !this.bUseMRenderer && !this.bUseCAviDS ) | |
501 | 565 | { |
502 | - this.pBmp = this.rAVI.avi.GetFramePtr(frameNoFromTime); | |
566 | + this.pBmp = this.rAVI.avi.GetFramePtr( frameNoFromTime ); | |
503 | 567 | this.n前回表示したフレーム番号 = frameNoFromTime; |
504 | 568 | this.bフレームを作成した = true; |
505 | 569 | } |
506 | - | |
570 | + | |
507 | 571 | //ループ防止 |
508 | - if (this.lDshowPosition >= this.lStopPosition && CDTXMania.ConfigIni.bDirectShowMode == true && this.dsBGV != null) | |
572 | + if( this.lDshowPosition >= this.lStopPosition && this.bUseMRenderer && this.dsBGV != null ) | |
509 | 573 | { |
510 | 574 | this.dsBGV.dshow.MediaSeeking.SetPositions( |
511 | 575 | DsLong.FromInt64((long)(0)), |
@@ -516,31 +580,30 @@ | ||
516 | 580 | this.bDShowクリップを再生している = false; |
517 | 581 | } |
518 | 582 | |
519 | - Size size = new Size((int)this.framewidth, (int)this.frameheight); | |
520 | - Size sz720pサイズ = new Size(1280, 720); | |
521 | - Size sz開始サイズ = new Size(this.n開始サイズW, this.n開始サイズH); | |
522 | - Size sz終了サイズ = new Size(this.n終了サイズW, this.n終了サイズH); | |
523 | - Point location = new Point(this.n画像側開始位置X, this.n画像側終了位置Y); | |
524 | - Point point2 = new Point(this.n画像側終了位置X, this.n画像側終了位置Y); | |
525 | - Point point3 = new Point(this.n表示側開始位置X, this.n表示側開始位置Y); | |
526 | - Point point4 = new Point(this.n表示側終了位置X, this.n表示側終了位置Y); | |
527 | - if (CSound管理.rc演奏用タイマ.n現在時刻 < this.n移動開始時刻ms) | |
583 | + Size size = new Size( (int)this.framewidth, (int)this.frameheight ); | |
584 | + Size sz720pサイズ = new Size( 1280, 720); | |
585 | + Size sz開始サイズ = new Size( this.n開始サイズW, this.n開始サイズH ); | |
586 | + Size sz終了サイズ = new Size( this.n終了サイズW, this.n終了サイズH ); | |
587 | + Point location = new Point( this.n画像側開始位置X, this.n画像側終了位置Y ); | |
588 | + Point point2 = new Point( this.n画像側終了位置X, this.n画像側終了位置Y ); | |
589 | + Point point3 = new Point( this.n表示側開始位置X, this.n表示側開始位置Y ); | |
590 | + Point point4 = new Point( this.n表示側終了位置X, this.n表示側終了位置Y ); | |
591 | + if( CSound管理.rc演奏用タイマ.n現在時刻 < this.n移動開始時刻ms ) | |
528 | 592 | { |
529 | 593 | this.n移動開始時刻ms = CSound管理.rc演奏用タイマ.n現在時刻; |
530 | 594 | } |
531 | - time = (int)((CSound管理.rc演奏用タイマ.n現在時刻 - this.n移動開始時刻ms) * (((double)CDTXMania.ConfigIni.n演奏速度) / 20.0)); | |
532 | - if (this.n総移動時間ms == 0) | |
595 | + if( this.n総移動時間ms == 0 ) | |
533 | 596 | { |
534 | - rectangle = new Rectangle(location, sz開始サイズ); | |
535 | - rectangle2 = new Rectangle(point3, sz開始サイズ); | |
597 | + rectangle = new Rectangle( location, sz開始サイズ ); | |
598 | + rectangle2 = new Rectangle( point3, sz開始サイズ ); | |
536 | 599 | } |
537 | 600 | else |
538 | 601 | { |
539 | - double num5 = ((double)time) / ((double)this.n総移動時間ms); | |
540 | - Size size5 = new Size(sz開始サイズ.Width + ((int)((sz終了サイズ.Width - sz開始サイズ.Width) * num5)), sz開始サイズ.Height + ((int)((sz終了サイズ.Height - sz開始サイズ.Height) * num5))); | |
541 | - rectangle = new Rectangle((int)((point2.X - location.X) * num5), (int)((point2.Y - location.Y) * num5), ((int)((point2.X - location.X) * num5)) + size5.Width, ((int)((point2.Y - location.Y) * num5)) + size5.Height); | |
542 | - rectangle2 = new Rectangle((int)((point4.X - point3.X) * num5), (int)((point4.Y - point3.Y) * num5), ((int)((point4.X - point3.X) * num5)) + size5.Width, ((int)((point4.Y - point3.Y) * num5)) + size5.Height); | |
543 | - if (rectangle.X < 0) | |
602 | + double db経過時間倍率 = ( (double)time ) / ( (double)this.n総移動時間ms ); | |
603 | + Size size5 = new Size( sz開始サイズ.Width + ( (int)( ( sz終了サイズ.Width - sz開始サイズ.Width ) * db経過時間倍率 ) ), sz開始サイズ.Height + ( (int)( ( sz終了サイズ.Height - sz開始サイズ.Height ) * db経過時間倍率 ) ) ); | |
604 | + rectangle = new Rectangle( (int)( (point2.X - location.X ) * db経過時間倍率 ), (int)( ( point2.Y - location.Y ) * db経過時間倍率 ), ( (int)( ( point2.X - location.X ) * db経過時間倍率 ) ) + size5.Width, ( (int)((point2.Y - location.Y) * db経過時間倍率 ) ) + size5.Height ); | |
605 | + rectangle2 = new Rectangle( (int)( (point4.X - point3.X ) * db経過時間倍率 ), (int)( ( point4.Y - point3.Y ) * db経過時間倍率 ), ( (int)( (point4.X - point3.X ) * db経過時間倍率 ) ) + size5.Width, ( (int)( ( point4.Y - point3.Y ) * db経過時間倍率 ) ) + size5.Height ); | |
606 | + if( rectangle.X < 0 ) | |
544 | 607 | { |
545 | 608 | int num6 = -rectangle.X; |
546 | 609 | rectangle2.X += num6; |
@@ -548,7 +611,7 @@ | ||
548 | 611 | rectangle.X = 0; |
549 | 612 | rectangle.Width -= num6; |
550 | 613 | } |
551 | - if (rectangle.Y < 0) | |
614 | + if( rectangle.Y < 0 ) | |
552 | 615 | { |
553 | 616 | int num7 = -rectangle.Y; |
554 | 617 | rectangle2.Y += num7; |
@@ -556,19 +619,19 @@ | ||
556 | 619 | rectangle.Y = 0; |
557 | 620 | rectangle.Height -= num7; |
558 | 621 | } |
559 | - if (rectangle.Right > size.Width) | |
622 | + if( rectangle.Right > size.Width ) | |
560 | 623 | { |
561 | 624 | int num8 = rectangle.Right - size.Width; |
562 | 625 | rectangle2.Width -= num8; |
563 | 626 | rectangle.Width -= num8; |
564 | 627 | } |
565 | - if (rectangle.Bottom > size.Height) | |
628 | + if( rectangle.Bottom > size.Height ) | |
566 | 629 | { |
567 | 630 | int num9 = rectangle.Bottom - size.Height; |
568 | 631 | rectangle2.Height -= num9; |
569 | 632 | rectangle.Height -= num9; |
570 | 633 | } |
571 | - if (rectangle2.X < 0) | |
634 | + if( rectangle2.X < 0 ) | |
572 | 635 | { |
573 | 636 | int num10 = -rectangle2.X; |
574 | 637 | rectangle.X += num10; |
@@ -576,7 +639,7 @@ | ||
576 | 639 | rectangle2.X = 0; |
577 | 640 | rectangle2.Width -= num10; |
578 | 641 | } |
579 | - if (rectangle2.Y < 0) | |
642 | + if( rectangle2.Y < 0 ) | |
580 | 643 | { |
581 | 644 | int num11 = -rectangle2.Y; |
582 | 645 | rectangle.Y += num11; |
@@ -584,13 +647,13 @@ | ||
584 | 647 | rectangle2.Y = 0; |
585 | 648 | rectangle2.Height -= num11; |
586 | 649 | } |
587 | - if (rectangle2.Right > sz720pサイズ.Width) | |
650 | + if( rectangle2.Right > sz720pサイズ.Width ) | |
588 | 651 | { |
589 | 652 | int num12 = rectangle2.Right - sz720pサイズ.Width; |
590 | 653 | rectangle.Width -= num12; |
591 | 654 | rectangle2.Width -= num12; |
592 | 655 | } |
593 | - if (rectangle2.Bottom > sz720pサイズ.Height) | |
656 | + if( rectangle2.Bottom > sz720pサイズ.Height ) | |
594 | 657 | { |
595 | 658 | int num13 = rectangle2.Bottom - sz720pサイズ.Height; |
596 | 659 | rectangle.Height -= num13; |
@@ -597,13 +660,67 @@ | ||
597 | 660 | rectangle2.Height -= num13; |
598 | 661 | } |
599 | 662 | } |
600 | - if ((this.tx描画用 != null) && (this.n総移動時間ms != -1) && CDTXMania.ConfigIni.bDirectShowMode == false) | |
663 | + | |
664 | + | |
665 | + if( this.bUseMRenderer ) | |
601 | 666 | { |
667 | + if( fClipアスペクト比 > 1.77f && ( this.bDShowクリップを再生している == true ) && this.dsBGV.dshow != null ) | |
668 | + { | |
669 | + #region[ ワイドクリップ ] | |
670 | + this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する( this.tx描画用 ); | |
671 | + | |
672 | + if( this.bFullScreen ) | |
673 | + { | |
674 | + if( this.dsBGV.dshow.b上下反転 ) | |
675 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, this.position, y ); | |
676 | + else | |
677 | + this.tx描画用.t2D描画( CDTXMania.app.Device, x, y ); | |
678 | + } | |
679 | + #endregion | |
680 | + } | |
681 | + } | |
682 | + else if( this.bUseCAviDS ) | |
683 | + { | |
684 | + if( ( this.tx描画用 != null ) && ( this.n総移動時間ms != -1 ) ) | |
685 | + { | |
686 | + #region[ フレームの生成 ] | |
687 | + //this.rAVI.avi.tGetBitmap( CDTXMania.app.Device, this.tx描画用, time ); | |
688 | + #endregion | |
689 | + | |
690 | + if( this.bFullScreen ) | |
691 | + { | |
692 | + #region[ 動画の描画 ] | |
693 | + if( fClipアスペクト比 > 1.77f ) | |
694 | + { | |
695 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, this.position, 0 ); | |
696 | + } | |
697 | + else | |
698 | + { | |
699 | + if( CDTXMania.ConfigIni.bDrums有効 ) | |
700 | + { | |
701 | + this.tx描画用.vc拡大縮小倍率 = this.vclip; | |
702 | + //this.tx描画用.t2D描画( CDTXMania.app.Device, 882, 0 ); | |
703 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 882, 0 ); | |
704 | + } | |
705 | + else if( CDTXMania.ConfigIni.bGuitar有効 ) | |
706 | + { | |
707 | + this.tx描画用.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); | |
708 | + this.PositionG = (int)( ( 1280f - (float)( this.framewidth ) ) / 2f); | |
709 | + //this.tx描画用.t2D描画( CDTXMania.app.Device, this.PositionG, 0 ); | |
710 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, this.PositionG, 0); | |
711 | + } | |
712 | + } | |
713 | + #endregion | |
714 | + } | |
715 | + } | |
716 | + } | |
717 | + else | |
718 | + { | |
602 | 719 | #region[ 通常の動画生成&再生処理 ] |
603 | - if (this.bフレームを作成した && (this.pBmp != IntPtr.Zero)) | |
720 | + if( this.bフレームを作成した && ( this.pBmp != IntPtr.Zero ) ) | |
604 | 721 | { |
605 | 722 | #region[ フレームの生成 ] |
606 | - DataRectangle rectangle3 = this.tx描画用.texture.LockRectangle(0, LockFlags.None); | |
723 | + DataRectangle rectangle3 = this.tx描画用.texture.LockRectangle( 0, LockFlags.None ); | |
607 | 724 | DataStream data = rectangle3.Data; |
608 | 725 | int num14 = rectangle3.Pitch / this.tx描画用.szテクスチャサイズ.Width; |
609 | 726 | BitmapUtil.BITMAPINFOHEADER* pBITMAPINFOHEADER = (BitmapUtil.BITMAPINFOHEADER*)this.pBmp.ToPointer(); |
@@ -612,11 +729,11 @@ | ||
612 | 729 | switch (num14) |
613 | 730 | { |
614 | 731 | case 2: |
615 | - this.rAVI.avi.tBitmap24ToGraphicsStreamR5G6B5(pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height); | |
732 | + this.rAVI.avi.tBitmap24ToGraphicsStreamR5G6B5( pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height ); | |
616 | 733 | break; |
617 | 734 | |
618 | 735 | case 4: |
619 | - this.rAVI.avi.tBitmap24ToGraphicsStreamX8R8G8B8(pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height); | |
736 | + this.rAVI.avi.tBitmap24ToGraphicsStreamX8R8G8B8( pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height ); | |
620 | 737 | break; |
621 | 738 | } |
622 | 739 | } |
@@ -624,26 +741,26 @@ | ||
624 | 741 | this.bフレームを作成した = false; |
625 | 742 | #endregion |
626 | 743 | } |
627 | - if (this.bFullScreen) | |
744 | + if( this.bFullScreen ) | |
628 | 745 | { |
629 | 746 | #region[ 動画の描画 ] |
630 | - if (fAVIアスペクト比 > 1.77f) | |
747 | + if( fClipアスペクト比 > 1.77f ) | |
631 | 748 | { |
632 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position, 0); | |
633 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 0, this.position); | |
749 | + this.tx描画用.t2D描画( CDTXMania.app.Device, this.position, 0 ); | |
750 | + this.tx描画用.t2D描画( CDTXMania.app.Device, 0, this.position ); | |
634 | 751 | } |
635 | 752 | else |
636 | 753 | { |
637 | - if (CDTXMania.ConfigIni.bDrums有効) | |
754 | + if( CDTXMania.ConfigIni.bDrums有効 ) | |
638 | 755 | { |
639 | 756 | this.tx描画用.vc拡大縮小倍率 = this.vclip; |
640 | 757 | this.tx描画用.t2D描画(CDTXMania.app.Device, 882, 0); |
641 | 758 | } |
642 | - else if (CDTXMania.ConfigIni.bGuitar有効) | |
759 | + else if( CDTXMania.ConfigIni.bGuitar有効 ) | |
643 | 760 | { |
644 | - this.tx描画用.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f); | |
645 | - this.PositionG = (int)((1280f - (float)(this.framewidth)) / 2f); | |
646 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.PositionG, 0); | |
761 | + this.tx描画用.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f ); | |
762 | + this.PositionG = (int)( ( 1280f - (float)( this.framewidth ) ) / 2f ); | |
763 | + this.tx描画用.t2D描画( CDTXMania.app.Device, this.PositionG, 0 ); | |
647 | 764 | } |
648 | 765 | } |
649 | 766 | #endregion |
@@ -650,67 +767,6 @@ | ||
650 | 767 | } |
651 | 768 | #endregion |
652 | 769 | } |
653 | - else if ((this.tx描画用 != null) && CDTXMania.ConfigIni.bDirectShowMode == true) | |
654 | - { | |
655 | - #region[ DirectShowMode ] | |
656 | - if (fAVIアスペクト比 > 1.77f && (this.bDShowクリップを再生している == true) && this.dsBGV.dshow != null) | |
657 | - { | |
658 | - #region[ ワイドクリップ ] | |
659 | - //this.rAVI.avi.Dispose(); //2013.06.26.kairera0467 DShow時にAVIをメモリから外すことで軽くしたいが、エラーを吐くため保留。 | |
660 | - this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する(this.tx描画用); | |
661 | - | |
662 | - if (this.bFullScreen) | |
663 | - { | |
664 | - if (this.dsBGV.dshow.b上下反転) | |
665 | - this.tx描画用.t2D上下反転描画(CDTXMania.app.Device, this.position, y); | |
666 | - else | |
667 | - this.tx描画用.t2D描画(CDTXMania.app.Device, x, y); | |
668 | - } | |
669 | - #endregion | |
670 | - } | |
671 | - else if (fAVIアスペクト比 < 1.77f) | |
672 | - { | |
673 | - #region[ 旧規格クリップ(DShow未対応) ] | |
674 | - if (this.bフレームを作成した && (this.pBmp != IntPtr.Zero)) | |
675 | - { | |
676 | - DataRectangle rectangle3 = this.tx描画用.texture.LockRectangle(0, LockFlags.None); | |
677 | - DataStream data = rectangle3.Data; | |
678 | - int num14 = rectangle3.Pitch / this.tx描画用.szテクスチャサイズ.Width; | |
679 | - BitmapUtil.BITMAPINFOHEADER* pBITMAPINFOHEADER = (BitmapUtil.BITMAPINFOHEADER*)this.pBmp.ToPointer(); | |
680 | - if (pBITMAPINFOHEADER->biBitCount == 0x18) | |
681 | - { | |
682 | - switch (num14) | |
683 | - { | |
684 | - case 2: | |
685 | - this.rAVI.avi.tBitmap24ToGraphicsStreamR5G6B5(pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height); | |
686 | - break; | |
687 | - | |
688 | - case 4: | |
689 | - this.rAVI.avi.tBitmap24ToGraphicsStreamX8R8G8B8(pBITMAPINFOHEADER, data, this.tx描画用.szテクスチャサイズ.Width, this.tx描画用.szテクスチャサイズ.Height); | |
690 | - break; | |
691 | - } | |
692 | - } | |
693 | - this.tx描画用.texture.UnlockRectangle(0); | |
694 | - this.bフレームを作成した = false; | |
695 | - this.tx描画用.vc拡大縮小倍率 = this.vclip; | |
696 | - } | |
697 | - if (this.bFullScreen) | |
698 | - { | |
699 | - if (CDTXMania.ConfigIni.bDrums有効) | |
700 | - { | |
701 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 882, 0); | |
702 | - } | |
703 | - else if (CDTXMania.ConfigIni.bGuitar有効) | |
704 | - { | |
705 | - this.tx描画用.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f); | |
706 | - this.PositionG = (int)((1280f - (float)(this.framewidth)) / 2f); | |
707 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.PositionG, 0); | |
708 | - } | |
709 | - } | |
710 | - #endregion | |
711 | - } | |
712 | - #endregion | |
713 | - } | |
714 | 770 | } |
715 | 771 | |
716 | 772 |
@@ -738,7 +794,7 @@ | ||
738 | 794 | this.stフィルイン[ i ].b使用中 = false; |
739 | 795 | } |
740 | 796 | //if ( this.txフィルインエフェクト != null ) |
741 | - //CStage演奏ドラム画面 stageDrum = CDTXMania.stage演奏ドラム画面; | |
797 | + CStage演奏ドラム画面 stageDrum = CDTXMania.stage演奏ドラム画面; | |
742 | 798 | //CStage演奏ギター画面 stageGuitar = CDTXMania.stage演奏ギター画面; |
743 | 799 | |
744 | 800 | //if( ( CDTXMania.ConfigIni.bDrums有効 ? stageDrum.txボーナスエフェクト : stageGuitar.txボーナスエフェクト ) != null ) |
@@ -749,13 +805,13 @@ | ||
749 | 805 | //this.txフィルインエフェクト.t2D描画(CDTXMania.app.Device, 0, -2, new Rectangle(0, 0 + (360 * numf), 640, 360)); |
750 | 806 | if( CDTXMania.ConfigIni.bDrums有効 ) |
751 | 807 | { |
752 | - //stageDrum.txボーナスエフェクト.vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
753 | - //stageDrum.txボーナスエフェクト.b加算合成 = true; | |
754 | - //stageDrum.txボーナスエフェクト.t2D描画( CDTXMania.app.Device, 0, -2, new Rectangle(0, 0 + ( 360 * numf ), 640, 360 )) ; | |
808 | + stageDrum.txボーナスエフェクト.vc拡大縮小倍率 = new Vector3( 2.0f, 2.0f, 1.0f ); | |
809 | + stageDrum.txボーナスエフェクト.b加算合成 = true; | |
810 | + stageDrum.txボーナスエフェクト.t2D描画( CDTXMania.app.Device, 0, -2, new Rectangle(0, 0 + ( 360 * numf ), 640, 360 )) ; | |
755 | 811 | try |
756 | 812 | { |
757 | - if( this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ] != null ) | |
758 | - this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ].t2D描画( CDTXMania.app.Device, 0, 0 ); | |
813 | + //if( this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ] != null ) | |
814 | + // this.txフィルインエフェクト[ this.stフィルイン[ i ].ct進行.n現在の値 ].t2D描画( CDTXMania.app.Device, 0, 0 ); | |
759 | 815 | } |
760 | 816 | catch( Exception ex ) |
761 | 817 | { |
@@ -770,207 +826,187 @@ | ||
770 | 826 | if (CDTXMania.ConfigIni.bShowMusicInfo) |
771 | 827 | this.actPanel.t進行描画(); |
772 | 828 | |
773 | - if ((((this.n総移動時間ms != -1L) && (((this.rAVI != null)) && (this.rAVI.avi != null)) || (this.dsBGV != null && this.dsBGV.dshow != null))) && (this.bWindowMode) && this.tx描画用 != null && (CDTXMania.ConfigIni.bAVI有効)) | |
829 | + if( ( ( this.bWindowMode ) && this.tx描画用 != null && ( CDTXMania.ConfigIni.bAVI有効 ) ) ) | |
774 | 830 | { |
775 | 831 | this.vector = this.tx描画用.vc拡大縮小倍率; |
776 | 832 | this.tx描画用.vc拡大縮小倍率 = this.smallvc; |
777 | 833 | this.tx描画用.n透明度 = 0xff; |
778 | - #region[ スキルメーター有効 ] | |
779 | - if (CDTXMania.ConfigIni.bGraph有効 && CDTXMania.ConfigIni.bDrums有効) | |
834 | + | |
835 | + if( CDTXMania.ConfigIni.bDrums有効 ) | |
780 | 836 | { |
781 | - this.n本体X = 10; | |
782 | - this.n本体Y = 300; | |
783 | - | |
784 | - if (this.fAVIアスペクト比 > 0.96f) | |
837 | + if( CDTXMania.ConfigIni.bGraph有効.Drums ) | |
785 | 838 | { |
786 | - this.ratio2 = 260f / ((float)this.framewidth); | |
787 | - this.position2 = 20 + this.n本体Y + (int)((270f - (this.frameheight * this.ratio2)) / 2f); | |
788 | - } | |
789 | - else | |
790 | - { | |
791 | - this.ratio2 = 270f / ((float)this.frameheight); | |
792 | - this.position2 = 5 + this.n本体X + (int)((260 - (this.framewidth * this.ratio2)) / 2f); | |
793 | - } | |
794 | - if (this.txクリップパネル != null) | |
795 | - this.txクリップパネル.t2D描画(CDTXMania.app.Device, this.n本体X, this.n本体Y); | |
839 | + #region[ スキルメーター有効 ] | |
840 | + this.n本体X = 2; | |
841 | + this.n本体Y = 402; | |
796 | 842 | |
797 | - this.smallvc = new Vector3(this.ratio2, this.ratio2, 1f); | |
843 | + if( this.fClipアスペクト比 > 0.96f ) | |
844 | + { | |
845 | + this.ratio2 = 260f / ( (float)this.framewidth ); | |
846 | + this.position2 = 20 + this.n本体Y + (int)( (270f - ( this.frameheight * this.ratio2 ) ) / 2f ); | |
847 | + } | |
848 | + else | |
849 | + { | |
850 | + this.ratio2 = 270f / ( (float)this.frameheight ); | |
851 | + this.position2 = 5 + this.n本体X + (int)( ( 260 - ( this.framewidth * this.ratio2 ) ) / 2f ); | |
852 | + } | |
853 | + if( this.txクリップパネル != null ) | |
854 | + this.txクリップパネル.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y ); | |
798 | 855 | |
799 | - if (CDTXMania.ConfigIni.bDirectShowMode) | |
800 | - { | |
801 | - if (this.dsBGV != null && this.bDShowクリップを再生している) | |
856 | + this.smallvc = new Vector3( this.ratio2, this.ratio2, 1f ); | |
857 | + | |
858 | + if( this.bUseMRenderer ) | |
802 | 859 | { |
803 | - this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する(this.tx描画用); | |
804 | - if (this.dsBGV.dshow.b上下反転) | |
860 | + if( this.dsBGV != null && this.bDShowクリップを再生している ) | |
805 | 861 | { |
806 | - this.tx描画用.t2D上下反転描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
862 | + this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する( this.tx描画用 ); | |
863 | + if( this.dsBGV.dshow.b上下反転 ) | |
864 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
865 | + else if( this.dsBGV != null ) | |
866 | + this.tx描画用.t2D描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
807 | 867 | } |
808 | - else if (this.dsBGV != null && CDTXMania.ConfigIni.bDirectShowMode == true) | |
868 | + } | |
869 | + else | |
870 | + { | |
871 | + if( this.n総移動時間ms != -1 && this.rAVI != null ) | |
809 | 872 | { |
810 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
873 | + if( this.fClipアスペクト比 < 0.96f ) | |
874 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, this.position2, 20 + this.n本体Y ); | |
875 | + else | |
876 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
811 | 877 | } |
812 | 878 | } |
813 | - else if (this.n総移動時間ms != -1 && this.fAVIアスペクト比 < 0.96f) | |
814 | - { | |
815 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 20 + this.n本体Y); | |
816 | - } | |
817 | 879 | } |
880 | + #endregion | |
818 | 881 | else |
819 | 882 | { |
820 | - if (this.fAVIアスペクト比 < 0.96f) | |
883 | + #region[ スキルメーター無効 ] | |
884 | + this.n本体X = 854; | |
885 | + this.n本体Y = 142; | |
886 | + | |
887 | + if( this.fClipアスペクト比 > 1.77f ) | |
821 | 888 | { |
822 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 20 + this.n本体Y); | |
889 | + this.ratio2 = 416f / ((float)this.framewidth); | |
890 | + this.position2 = 30 + this.n本体Y + (int)((234f - (this.frameheight * this.ratio2)) / 2f); | |
823 | 891 | } |
824 | 892 | else |
825 | 893 | { |
826 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
894 | + this.ratio2 = 234f / ((float)this.frameheight); | |
895 | + this.position2 = 5 + this.n本体X + (int)((416f - (this.framewidth * this.ratio2)) / 2f); | |
827 | 896 | } |
828 | - } | |
829 | - } | |
830 | - #endregion | |
831 | - #region[ スキルメーター無効 ] | |
832 | - else if (!CDTXMania.ConfigIni.bGraph有効 && CDTXMania.ConfigIni.bDrums有効) | |
833 | - { | |
834 | - this.n本体X = 854; | |
835 | - this.n本体Y = 142; | |
836 | - | |
837 | - if (this.fAVIアスペクト比 > 1.77f) | |
838 | - { | |
839 | - this.ratio2 = 416f / ((float)this.framewidth); | |
840 | - this.position2 = 30 + this.n本体Y + (int)((234f - (this.frameheight * this.ratio2)) / 2f); | |
841 | - } | |
842 | - else | |
843 | - { | |
844 | - this.ratio2 = 234f / ((float)this.frameheight); | |
845 | - this.position2 = 5 + this.n本体X + (int)((416f - (this.framewidth * this.ratio2)) / 2f); | |
846 | - } | |
847 | - if (this.txクリップパネル != null) | |
848 | - this.txクリップパネル.t2D描画(CDTXMania.app.Device, this.n本体X, this.n本体Y); | |
849 | - this.smallvc = new Vector3(this.ratio2, this.ratio2, 1f); | |
850 | - this.tx描画用.vc拡大縮小倍率 = this.smallvc; | |
851 | - if (CDTXMania.ConfigIni.bDirectShowMode) | |
852 | - { | |
853 | - if (this.dsBGV != null && this.bDShowクリップを再生している) | |
897 | + if( this.txクリップパネル != null ) | |
898 | + this.txクリップパネル.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y ); | |
899 | + this.smallvc = new Vector3( this.ratio2, this.ratio2, 1f ); | |
900 | + this.tx描画用.vc拡大縮小倍率 = this.smallvc; | |
901 | + if( this.bUseMRenderer ) | |
854 | 902 | { |
855 | - this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する(this.tx描画用); | |
856 | - if (this.dsBGV.dshow.b上下反転) | |
903 | + if( this.dsBGV != null && this.bDShowクリップを再生している ) | |
857 | 904 | { |
858 | - this.tx描画用.t2D上下反転描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
905 | + this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する( this.tx描画用 ); | |
906 | + if( this.dsBGV.dshow.b上下反転 ) | |
907 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
908 | + else if( this.dsBGV != null ) | |
909 | + this.tx描画用.t2D描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
859 | 910 | } |
860 | - else if (this.dsBGV != null && CDTXMania.ConfigIni.bDirectShowMode) | |
861 | - { | |
862 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
863 | - } | |
864 | 911 | } |
865 | - else if (this.n総移動時間ms != -1 && this.fAVIアスペクト比 < 1.77f) | |
866 | - { | |
867 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 30 + this.n本体Y); | |
868 | - } | |
869 | - } | |
870 | - else | |
871 | - { | |
872 | - if (this.fAVIアスペクト比 < 1.77f) | |
873 | - { | |
874 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 30 + this.n本体Y); | |
875 | - } | |
876 | 912 | else |
877 | 913 | { |
878 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 5 + this.n本体X, this.position2); | |
914 | + if( this.n総移動時間ms != -1 && this.rAVI != null ) | |
915 | + { | |
916 | + if( this.fClipアスペクト比 < 1.77f ) | |
917 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, this.position2, 30 + this.n本体Y ); | |
918 | + else | |
919 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 5 + this.n本体X, this.position2 ); | |
920 | + } | |
879 | 921 | } |
922 | + #endregion | |
880 | 923 | } |
881 | 924 | } |
882 | - #endregion | |
883 | - #region[ ギター時 ] | |
884 | - if (CDTXMania.ConfigIni.bGuitar有効) | |
925 | + else if( CDTXMania.ConfigIni.bGuitar有効 ) | |
885 | 926 | { |
886 | - | |
927 | + #region[ ギター時 ] | |
887 | 928 | #region[ 本体位置 ] |
888 | 929 | this.n本体X = 380; |
889 | 930 | this.n本体Y = 50; |
890 | - | |
891 | 931 | int nグラフX = 267; |
892 | 932 | |
893 | - if (CDTXMania.ConfigIni.bGraph有効 && !CDTXMania.DTX.bチップがある.Bass) | |
933 | + if( CDTXMania.ConfigIni.bGraph有効.Bass && !CDTXMania.DTX.bチップがある.Bass ) | |
894 | 934 | this.n本体X = this.n本体X + nグラフX; |
895 | - | |
896 | - if (CDTXMania.ConfigIni.bGraph有効 && !CDTXMania.DTX.bチップがある.Guitar) | |
935 | + if( CDTXMania.ConfigIni.bGraph有効.Guitar && !CDTXMania.DTX.bチップがある.Guitar ) | |
897 | 936 | this.n本体X = this.n本体X - nグラフX; |
898 | 937 | #endregion |
899 | 938 | |
900 | - if (this.fAVIアスペクト比 > 1.77f) | |
939 | + if( this.fClipアスペクト比 > 1.77f ) | |
901 | 940 | { |
902 | - this.ratio2 = 460f / ((float)this.framewidth); | |
903 | - this.position2 = 5 + this.n本体Y + (int)((258f - (this.frameheight * this.ratio2)) / 2f); | |
941 | + this.ratio2 = 460f / ( (float)this.framewidth ); | |
942 | + this.position2 = 5 + this.n本体Y + (int)( ( 258f - ( this.frameheight * this.ratio2 ) ) / 2f ); | |
904 | 943 | } |
905 | 944 | else |
906 | 945 | { |
907 | - this.ratio2 = 258f / ((float)this.frameheight); | |
908 | - this.position2 = 30 + this.n本体X + (int)((460f - (this.framewidth * this.ratio2)) / 2f); | |
946 | + this.ratio2 = 258f / ( (float)this.frameheight ); | |
947 | + this.position2 = 30 + this.n本体X + (int)( ( 460f - ( this.framewidth * this.ratio2 ) ) / 2f ); | |
909 | 948 | } |
910 | - if (this.txクリップパネル != null) | |
911 | - this.txクリップパネル.t2D描画(CDTXMania.app.Device, this.n本体X, this.n本体Y); | |
912 | - this.smallvc = new Vector3(this.ratio2, this.ratio2, 1f); | |
949 | + if( this.txクリップパネル != null ) | |
950 | + this.txクリップパネル.t2D描画( CDTXMania.app.Device, this.n本体X, this.n本体Y ); | |
951 | + this.smallvc = new Vector3( this.ratio2, this.ratio2, 1f ); | |
913 | 952 | this.tx描画用.vc拡大縮小倍率 = this.smallvc; |
914 | - if (CDTXMania.ConfigIni.bDirectShowMode) | |
953 | + if( this.bUseMRenderer ) | |
915 | 954 | { |
916 | - if (this.dsBGV != null && this.bDShowクリップを再生している) | |
955 | + if( this.dsBGV != null && this.bDShowクリップを再生している ) | |
917 | 956 | { |
918 | - this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する(this.tx描画用); | |
919 | - if (this.dsBGV.dshow.b上下反転) | |
920 | - { | |
921 | - this.tx描画用.t2D上下反転描画(CDTXMania.app.Device, 30 + this.n本体X, this.position2); | |
922 | - } | |
923 | - else if (this.dsBGV != null && CDTXMania.ConfigIni.bDirectShowMode == true) | |
924 | - { | |
957 | + this.dsBGV.dshow.t現時点における最新のスナップイメージをTextureに転写する( this.tx描画用 ); | |
958 | + if( this.dsBGV.dshow.b上下反転 ) | |
959 | + this.tx描画用.t2D上下反転描画( CDTXMania.app.Device, 30 + this.n本体X, this.position2 ); | |
960 | + else if( this.dsBGV != null ) | |
925 | 961 | this.tx描画用.t2D描画(CDTXMania.app.Device, 30 + this.n本体X, this.position2); |
926 | - } | |
927 | 962 | } |
928 | - else | |
929 | - { | |
930 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 5 + this.n本体Y); | |
931 | - } | |
932 | 963 | } |
933 | 964 | else |
934 | 965 | { |
935 | - if (this.fAVIアスペクト比 < 1.77f) | |
966 | + if( this.rAVI != null ) | |
936 | 967 | { |
937 | - this.tx描画用.t2D描画(CDTXMania.app.Device, this.position2, 5 + this.n本体Y); | |
968 | + if( this.fClipアスペクト比 < 1.77f ) | |
969 | + this.tx描画用.t2D描画( CDTXMania.app.Device, this.position2, 5 + this.n本体Y ); | |
970 | + else | |
971 | + this.tx描画用.t2D描画( CDTXMania.app.Device, 30 + this.n本体X, this.position2 ); | |
938 | 972 | } |
939 | - else | |
940 | - { | |
941 | - this.tx描画用.t2D描画(CDTXMania.app.Device, 30 + this.n本体X, this.position2); | |
942 | - } | |
943 | 973 | } |
974 | + #endregion | |
944 | 975 | } |
945 | - #endregion | |
946 | 976 | this.tx描画用.vc拡大縮小倍率 = this.vector; |
947 | 977 | } |
948 | 978 | IInputDevice keyboard = CDTXMania.Input管理.Keyboard; |
949 | - if (CDTXMania.Pad.b押された(E楽器パート.BASS, Eパッド.Help)) | |
979 | + if( CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.Help ) ) | |
950 | 980 | { |
951 | - if (this.b再生トグル == false) | |
981 | + if( this.b再生トグル == false ) | |
952 | 982 | { |
953 | - if (this.dsBGV != null) | |
983 | + if( this.dsBGV != null ) | |
954 | 984 | { |
955 | - if (this.dsBGV.dshow != null) | |
985 | + if( this.dsBGV.dshow != null ) | |
956 | 986 | this.dsBGV.dshow.MediaCtrl.Pause(); |
957 | 987 | } |
958 | - if (this.ds汎用 != null) | |
988 | + if( !this.bUseMRenderer && this.bUseCAviDS ) | |
959 | 989 | { |
960 | - this.ds汎用.MediaCtrl.Pause(); | |
990 | + if( this.rAVI.avi != null ) | |
991 | + { | |
992 | + //this.rAVI.avi.Pause(); | |
993 | + } | |
961 | 994 | } |
962 | 995 | this.b再生トグル = true; |
963 | 996 | } |
964 | - else if (this.b再生トグル == true) | |
997 | + else if( this.b再生トグル == true ) | |
965 | 998 | { |
966 | - if (this.dsBGV != null) | |
999 | + if( this.dsBGV != null ) | |
967 | 1000 | { |
968 | - if (this.dsBGV.dshow != null) | |
1001 | + if( this.dsBGV.dshow != null ) | |
969 | 1002 | this.dsBGV.dshow.MediaCtrl.Run(); |
970 | 1003 | } |
971 | - if (this.ds汎用 != null) | |
1004 | + if( !this.bUseMRenderer && this.bUseCAviDS ) | |
972 | 1005 | { |
973 | - this.ds汎用.MediaCtrl.Run(); | |
1006 | + if( this.rAVI.avi != null ) | |
1007 | + { | |
1008 | + //this.rAVI.avi.Run(); | |
1009 | + } | |
974 | 1010 | } |
975 | 1011 | this.b再生トグル = false; |
976 | 1012 | } |
@@ -1022,7 +1058,9 @@ | ||
1022 | 1058 | private bool bフレームを作成した; |
1023 | 1059 | private bool b再生トグル; |
1024 | 1060 | private bool bDShowクリップを再生している; |
1025 | - public float fAVIアスペクト比; | |
1061 | + private bool bUseMRenderer = true; | |
1062 | + private bool bUseCAviDS = false; | |
1063 | + public float fClipアスペクト比; | |
1026 | 1064 | private uint frameheight; |
1027 | 1065 | private uint framewidth; |
1028 | 1066 | private int i1; |
@@ -1061,7 +1099,8 @@ | ||
1061 | 1099 | private CTexture txlanes; |
1062 | 1100 | private CTexture txクリップパネル; |
1063 | 1101 | //private CTexture txドラム; |
1064 | - private CTexture[] txフィルインエフェクト; | |
1102 | + //private CTexture[] txフィルインエフェクト; | |
1103 | + private CTexture txフィルインエフェクト; | |
1065 | 1104 | private CTexture tx描画用; |
1066 | 1105 | private CTexture tx描画用2; |
1067 | 1106 | private CTexture txDShow汎用; |
@@ -117,6 +117,18 @@ | ||
117 | 117 | new string[] { "OFF", "HIDDEN", "SUDDEN", "HID/SUD", "STEALTH" })); |
118 | 118 | //ドラム、ギター、ベースでのHIDDEN/SUDDENの設定の分離を考えなければならない。 |
119 | 119 | #endregion |
120 | + #region [ 個別 Ghost ] | |
121 | + l.Add( new CItemList("AUTO Ghost", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eAutoGhost[ nInst ], | |
122 | + "AUTOプレーのゴーストを指定します。\n", | |
123 | + "Specify Play Ghost data.\n", | |
124 | + new string[] {"Perfect", "Last Play", "Hi Skill", "Hi Score", "Online" } | |
125 | + )); | |
126 | + l.Add(new CItemList("Target Ghost", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eTargetGhost[ nInst ], | |
127 | + "ターゲットゴーストを指定します。\n", | |
128 | + "Specify Target Ghost data.\n", | |
129 | + new string[] {"None", "Perfect", "Last Play", "Hi Skill", "Hi Score", "Online" } | |
130 | + )); | |
131 | + #endregion | |
120 | 132 | #region [ 共通 SET切り替え/More/Return ] |
121 | 133 | l.Add(new CSwitchItemList("Config Set", CItemBase.Eパネル種別.通常, nCurrentConfigSet, "", "", new string[] { "SET-1", "SET-2", "SET-3" })); |
122 | 134 | l.Add(new CSwitchItemList("More...", CItemBase.Eパネル種別.通常, 0, "", "", new string[] { "" })); |
@@ -420,6 +432,15 @@ | ||
420 | 432 | } |
421 | 433 | //CDTXMania.ConfigIni.nHidSud = (int) GetObj現在値((int) EOrder.SuddenHidden); |
422 | 434 | break; |
435 | + case (int) EOrder.AutoGhost: // #35411 chnmr0 AUTOゴーストデータ | |
436 | + EAutoGhostData gd = (EAutoGhostData)GetIndex((int)EOrder.AutoGhost); | |
437 | + CDTXMania.ConfigIni.eAutoGhost[ nCurrentTarget ] = gd; | |
438 | + break; | |
439 | + | |
440 | + case (int)EOrder.TargetGhost: // #35411 chnmr0 ターゲットゴーストデータ | |
441 | + ETargetGhostData gtd = (ETargetGhostData)GetIndex((int)EOrder.TargetGhost); | |
442 | + CDTXMania.ConfigIni.eTargetGhost[ nCurrentTarget ] = gtd; | |
443 | + break; | |
423 | 444 | case (int)EOrder.ConfSet: // CONF-SET切り替え |
424 | 445 | nCurrentConfigSet = (int)GetIndex((int)EOrder.ConfSet); |
425 | 446 | //Initialize( lci[ nCurrentConfigSet ], true, QuickCfgTitle, pos ); |
@@ -621,6 +642,8 @@ | ||
621 | 642 | Risky, |
622 | 643 | PlaySpeed, |
623 | 644 | SuddenHidden, |
645 | + AutoGhost, | |
646 | + TargetGhost, | |
624 | 647 | ConfSet, |
625 | 648 | More, |
626 | 649 | Return, END, |
@@ -263,6 +263,7 @@ | ||
263 | 263 | { |
264 | 264 | CDTXMania.listTargetGhsotLag[instIndex] = new List<int>(); |
265 | 265 | CDTXMania.listTargetGhostScoreData[ instIndex ] = new CScoreIni.C演奏記録(); |
266 | + this.stGhostLag[instIndex] = new List<STGhostLag>(); | |
266 | 267 | ReadGhost(filename, CDTXMania.listTargetGhsotLag[instIndex]); |
267 | 268 | } |
268 | 269 | else if( CDTXMania.ConfigIni.eTargetGhost[instIndex] == ETargetGhostData.PERFECT ) |
@@ -562,6 +563,103 @@ | ||
562 | 563 | Trace.TraceInformation("FILE: {0}", CDTXMania.DTX.strファイル名の絶対パス); |
563 | 564 | Trace.TraceInformation("---------------------------"); |
564 | 565 | |
566 | + // #35411 2015.08.19 chnmr0 add ゴースト機能のためList chip 読み込み後楽器パート出現順インデックスを割り振る | |
567 | + int[] curCount = new int[(int)E楽器パート.UNKNOWN]; | |
568 | + for (int i = 0; i < curCount.Length; ++i) | |
569 | + { | |
570 | + curCount[i] = 0; | |
571 | + } | |
572 | + foreach (CDTX.CChip chip in CDTXMania.DTX.listChip) | |
573 | + { | |
574 | + if (chip.e楽器パート != E楽器パート.UNKNOWN) | |
575 | + { | |
576 | + chip.n楽器パートでの出現順 = curCount[(int)chip.e楽器パート]++; | |
577 | + if( CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ] != null ) | |
578 | + { | |
579 | + var lag = new STGhostLag(); | |
580 | + lag.index = chip.n楽器パートでの出現順; | |
581 | + lag.nJudgeTime = chip.n発声時刻ms + CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ]; | |
582 | + lag.nLagTime = CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ]; | |
583 | + | |
584 | + this.stGhostLag[ (int)chip.e楽器パート ].Add( lag ); | |
585 | + } | |
586 | + } | |
587 | + } | |
588 | + | |
589 | + //演奏記録をゴーストから逆生成 | |
590 | + for( int i = 0; i < 3; i++ ) | |
591 | + { | |
592 | + int nNowCombo = 0; | |
593 | + int nMaxCombo = 0; | |
594 | + CDTXMania.listTargetGhostScoreData[ i ] = new CScoreIni.C演奏記録(); | |
595 | + if( this.stGhostLag[ i ] == null ) | |
596 | + continue; | |
597 | + for( int n = 0; n < this.stGhostLag[ i ].Count; n++ ) | |
598 | + { | |
599 | + int ghostLag = 128; | |
600 | + ghostLag = this.stGhostLag[ i ][ n ].nLagTime; | |
601 | + // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置) | |
602 | + if (ghostLag > 255) | |
603 | + { | |
604 | + nNowCombo = 0; | |
605 | + } | |
606 | + ghostLag = (ghostLag & 255) - 128; | |
607 | + | |
608 | + if( ghostLag <= 127 ) | |
609 | + { | |
610 | + E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(ghostLag, 0); | |
611 | + | |
612 | + switch( eJudge ) | |
613 | + { | |
614 | + case E判定.Perfect: | |
615 | + CDTXMania.listTargetGhostScoreData[ i ].nPerfect数++; | |
616 | + break; | |
617 | + case E判定.Great: | |
618 | + CDTXMania.listTargetGhostScoreData[ i ].nGreat数++; | |
619 | + break; | |
620 | + case E判定.Good: | |
621 | + CDTXMania.listTargetGhostScoreData[ i ].nGood数++; | |
622 | + break; | |
623 | + case E判定.Poor: | |
624 | + CDTXMania.listTargetGhostScoreData[ i ].nPoor数++; | |
625 | + break; | |
626 | + case E判定.Miss: | |
627 | + case E判定.Bad: | |
628 | + CDTXMania.listTargetGhostScoreData[ i ].nMiss数++; | |
629 | + break; | |
630 | + } | |
631 | + switch( eJudge ) | |
632 | + { | |
633 | + case E判定.Perfect: | |
634 | + case E判定.Great: | |
635 | + case E判定.Good: | |
636 | + nNowCombo++; | |
637 | + CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 ); | |
638 | + break; | |
639 | + case E判定.Poor: | |
640 | + case E判定.Miss: | |
641 | + case E判定.Bad: | |
642 | + CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 ); | |
643 | + nNowCombo = 0; | |
644 | + break; | |
645 | + } | |
646 | + //Trace.WriteLine( eJudge.ToString() + " " + nNowCombo.ToString() + "Combo Max:" + nMaxCombo.ToString() + "Combo" ); | |
647 | + } | |
648 | + } | |
649 | + //CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = nMaxCombo; | |
650 | + int nTotal = CDTXMania.DTX.n可視チップ数.Drums; | |
651 | + if( i == 1 ) nTotal = CDTXMania.DTX.n可視チップ数.Guitar; | |
652 | + else if( i == 2 ) nTotal = CDTXMania.DTX.n可視チップ数.Bass; | |
653 | + if( CDTXMania.ConfigIni.nSkillMode == 0 ) | |
654 | + { | |
655 | + CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t旧演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay ); | |
656 | + } | |
657 | + else | |
658 | + { | |
659 | + CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay ); | |
660 | + } | |
661 | + } | |
662 | + | |
565 | 663 | span = (TimeSpan)(DateTime.Now - timeBeginLoad); |
566 | 664 | Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); |
567 | 665 |
@@ -607,8 +705,8 @@ | ||
607 | 705 | CDTXMania.DTX.t旧仕様のドコドコチップを振り分ける(E楽器パート.DRUMS, CDTXMania.ConfigIni.bAssignToLBD.Drums); |
608 | 706 | CDTXMania.DTX.tドコドコ仕様変更(E楽器パート.DRUMS, CDTXMania.ConfigIni.eDkdkType.Drums); |
609 | 707 | CDTXMania.DTX.tドラムのランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandom.Drums); |
708 | + CDTXMania.DTX.tドラムの足ランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandomPedal.Drums); | |
610 | 709 | CDTXMania.DTX.t譜面仕様変更(E楽器パート.DRUMS, CDTXMania.ConfigIni.eNumOfLanes.Drums); |
611 | - CDTXMania.DTX.tドラムの足ランダム化(E楽器パート.DRUMS, CDTXMania.ConfigIni.eRandomPedal.Drums); | |
612 | 710 | CDTXMania.DTX.tギターとベースのランダム化(E楽器パート.GUITAR, CDTXMania.ConfigIni.eRandom.Guitar); |
613 | 711 | CDTXMania.DTX.tギターとベースのランダム化(E楽器パート.BASS, CDTXMania.ConfigIni.eRandom.Bass); |
614 | 712 |
@@ -761,6 +859,47 @@ | ||
761 | 859 | } |
762 | 860 | public int nIndex; |
763 | 861 | public STATUSPANEL[] stパネルマップ; |
862 | + | |
863 | + private STDGBVALUE<List<STGhostLag>> stGhostLag; | |
864 | + | |
865 | + [StructLayout(LayoutKind.Sequential)] | |
866 | + private struct STGhostLag | |
867 | + { | |
868 | + public int index; | |
869 | + public int nJudgeTime; | |
870 | + public int nLagTime; | |
871 | + public STGhostLag( int index, int nJudgeTime, int nLagTime ) | |
872 | + { | |
873 | + this.index = index; | |
874 | + this.nJudgeTime = nJudgeTime; | |
875 | + this.nLagTime = nLagTime; | |
876 | + } | |
877 | + } | |
878 | + protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, int nInputAdjustTime ) | |
879 | + { | |
880 | + //if ( pChip != null ) | |
881 | + { | |
882 | + int nDeltaTime = Math.Abs( (int)nTime ); | |
883 | + //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms)); | |
884 | + if ( nDeltaTime <= CDTXMania.nPerfect範囲ms ) | |
885 | + { | |
886 | + return E判定.Perfect; | |
887 | + } | |
888 | + if ( nDeltaTime <= CDTXMania.nGreat範囲ms ) | |
889 | + { | |
890 | + return E判定.Great; | |
891 | + } | |
892 | + if ( nDeltaTime <= CDTXMania.nGood範囲ms ) | |
893 | + { | |
894 | + return E判定.Good; | |
895 | + } | |
896 | + if ( nDeltaTime <= CDTXMania.nPoor範囲ms ) | |
897 | + { | |
898 | + return E判定.Poor; | |
899 | + } | |
900 | + } | |
901 | + return E判定.Miss; | |
902 | + } | |
764 | 903 | //----------------- |
765 | 904 | private void ReadGhost( string filename, List<int> list ) // #35411 2015.08.19 chnmr0 add |
766 | 905 | { |
@@ -790,75 +929,75 @@ | ||
790 | 929 | } |
791 | 930 | } |
792 | 931 | |
793 | - if( File.Exists( filename + ".score" ) ) | |
794 | - { | |
795 | - using( FileStream fs = new FileStream( filename + ".score", FileMode.Open, FileAccess.Read ) ) | |
796 | - { | |
797 | - using( StreamReader sr = new StreamReader( fs ) ) | |
798 | - { | |
799 | - try | |
800 | - { | |
801 | - string strScoreDataFile = sr.ReadToEnd(); | |
932 | + //if( File.Exists( filename + ".score" ) ) | |
933 | + //{ | |
934 | + // using( FileStream fs = new FileStream( filename + ".score", FileMode.Open, FileAccess.Read ) ) | |
935 | + // { | |
936 | + // using( StreamReader sr = new StreamReader( fs ) ) | |
937 | + // { | |
938 | + // try | |
939 | + // { | |
940 | + // string strScoreDataFile = sr.ReadToEnd(); | |
802 | 941 | |
803 | - strScoreDataFile = strScoreDataFile.Replace( Environment.NewLine, "\n" ); | |
804 | - string[] delimiter = { "\n" }; | |
805 | - string[] strSingleLine = strScoreDataFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries ); | |
942 | + // strScoreDataFile = strScoreDataFile.Replace( Environment.NewLine, "\n" ); | |
943 | + // string[] delimiter = { "\n" }; | |
944 | + // string[] strSingleLine = strScoreDataFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries ); | |
806 | 945 | |
807 | - for( int i = 0; i < strSingleLine.Length; i++ ) | |
808 | - { | |
809 | - string[] strA = strSingleLine[ i ].Split( '=' ); | |
810 | - if (strA.Length != 2) | |
811 | - continue; | |
946 | + // for( int i = 0; i < strSingleLine.Length; i++ ) | |
947 | + // { | |
948 | + // string[] strA = strSingleLine[ i ].Split( '=' ); | |
949 | + // if (strA.Length != 2) | |
950 | + // continue; | |
812 | 951 | |
813 | - switch( strA[ 0 ] ) | |
814 | - { | |
815 | - case "Score": | |
816 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nスコア = Convert.ToInt32( strA[ 1 ] ); | |
817 | - continue; | |
818 | - case "PlaySkill": | |
819 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].db演奏型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
820 | - continue; | |
821 | - case "Skill": | |
822 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].dbゲーム型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
823 | - continue; | |
824 | - case "Perfect": | |
825 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPerfect数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
826 | - continue; | |
827 | - case "Great": | |
828 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGreat数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
829 | - continue; | |
830 | - case "Good": | |
831 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGood数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
832 | - continue; | |
833 | - case "Poor": | |
834 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPoor数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
835 | - continue; | |
836 | - case "Miss": | |
837 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nMiss数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
838 | - continue; | |
839 | - case "MaxCombo": | |
840 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].n最大コンボ数 = Convert.ToInt32( strA[ 1 ] ); | |
841 | - continue; | |
842 | - default: | |
843 | - continue; | |
844 | - } | |
845 | - } | |
846 | - } | |
847 | - catch( NullReferenceException ) | |
848 | - { | |
849 | - Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
850 | - } | |
851 | - catch( EndOfStreamException ) | |
852 | - { | |
853 | - Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
854 | - } | |
855 | - } | |
856 | - } | |
857 | - } | |
858 | - else | |
859 | - { | |
860 | - CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ] = null; | |
861 | - } | |
952 | + // switch( strA[ 0 ] ) | |
953 | + // { | |
954 | + // case "Score": | |
955 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nスコア = Convert.ToInt32( strA[ 1 ] ); | |
956 | + // continue; | |
957 | + // case "PlaySkill": | |
958 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].db演奏型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
959 | + // continue; | |
960 | + // case "Skill": | |
961 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].dbゲーム型スキル値 = Convert.ToDouble( strA[ 1 ] ); | |
962 | + // continue; | |
963 | + // case "Perfect": | |
964 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPerfect数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
965 | + // continue; | |
966 | + // case "Great": | |
967 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGreat数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
968 | + // continue; | |
969 | + // case "Good": | |
970 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nGood数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
971 | + // continue; | |
972 | + // case "Poor": | |
973 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nPoor数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
974 | + // continue; | |
975 | + // case "Miss": | |
976 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].nMiss数・Auto含まない = Convert.ToInt32( strA[ 1 ] ); | |
977 | + // continue; | |
978 | + // case "MaxCombo": | |
979 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ].n最大コンボ数 = Convert.ToInt32( strA[ 1 ] ); | |
980 | + // continue; | |
981 | + // default: | |
982 | + // continue; | |
983 | + // } | |
984 | + // } | |
985 | + // } | |
986 | + // catch( NullReferenceException ) | |
987 | + // { | |
988 | + // Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
989 | + // } | |
990 | + // catch( EndOfStreamException ) | |
991 | + // { | |
992 | + // Trace.TraceInformation("ゴーストデータの記録が正しく読み込まれませんでした。"); | |
993 | + // } | |
994 | + // } | |
995 | + // } | |
996 | + //} | |
997 | + //else | |
998 | + //{ | |
999 | + // CDTXMania.listTargetGhostScoreData[ (int)this.nCurrentInst ] = null; | |
1000 | + //} | |
862 | 1001 | } |
863 | 1002 | private void t小文字表示(int x, int y, string str) |
864 | 1003 | { |
@@ -444,13 +444,6 @@ | ||
444 | 444 | |
445 | 445 | #endregion |
446 | 446 | |
447 | - // #24074 2011.01.23 add ikanick | |
448 | - this.iSystemGraph = new CItemToggle("SkillMeter", CDTXMania.ConfigIni.bGraph有効, | |
449 | - "最高スキルと比較できるグラフを表示します。\n" + | |
450 | - "オートプレイだと表示されません。", | |
451 | - "To draw Graph or not."); | |
452 | - this.list項目リスト.Add(this.iSystemGraph); | |
453 | - | |
454 | 447 | this.iSystemSkinSubfolder = new CItemList("Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex, |
455 | 448 | "スキン切替:スキンを切り替えます。\n" + |
456 | 449 | "\n", |
@@ -882,17 +875,7 @@ | ||
882 | 875 | " for the drums.\n" + |
883 | 876 | "You can specify from 1 to 99999."); |
884 | 877 | this.list項目リスト.Add(this.iSystemMinComboDrums); |
885 | - | |
886 | - // #23580 2011.1.3 yyagi | |
887 | - this.iDrumsInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums, | |
888 | - "ドラムの入力タイミングの微調整を行います。\n" + | |
889 | - "-99 ~ 99ms まで指定可能です。\n" + | |
890 | - "値を指定してください。\n", | |
891 | - "To adjust the drums input timing.\n" + | |
892 | - "You can set from -99 to 0ms.\n" + | |
893 | - "To decrease input lag, set minus value."); | |
894 | - this.list項目リスト.Add(this.iDrumsInputAdjustTimeMs); | |
895 | - | |
878 | + | |
896 | 879 | this.iDrumsHHOGraphics = new CItemList("HHOGraphics", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eHHOGraphics.Drums, |
897 | 880 | "オープンハイハットの表示画像を変更します。\n" + |
898 | 881 | "A: DTXMania元仕様\n" + |
@@ -1025,6 +1008,22 @@ | ||
1025 | 1008 | new string[] { "OFF", "Mirror", "Part", "Super", "Hyper", "Master", "Another" }); |
1026 | 1009 | this.list項目リスト.Add(this.iDrumsRandomPedal); |
1027 | 1010 | |
1011 | + this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Drums, | |
1012 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1013 | + "オートプレイだと表示されません。", | |
1014 | + "To draw Graph or not." ); | |
1015 | + this.list項目リスト.Add( this.iDrumsGraph ); | |
1016 | + | |
1017 | + // #23580 2011.1.3 yyagi | |
1018 | + this.iDrumsInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums, | |
1019 | + "ドラムの入力タイミングの微調整を行います。\n" + | |
1020 | + "-99 ~ 99ms まで指定可能です。\n" + | |
1021 | + "値を指定してください。\n", | |
1022 | + "To adjust the drums input timing.\n" + | |
1023 | + "You can set from -99 to 0ms.\n" + | |
1024 | + "To decrease input lag, set minus value."); | |
1025 | + this.list項目リスト.Add(this.iDrumsInputAdjustTimeMs); | |
1026 | + | |
1028 | 1027 | this.iDrumsGoToKeyAssign = new CItemBase("Drums Keys", CItemBase.Eパネル種別.通常, |
1029 | 1028 | "ドラムのキー入力に関する項目を設定します。", |
1030 | 1029 | "Settings for the drums key/pad inputs."); |
@@ -1222,6 +1221,14 @@ | ||
1222 | 1221 | "Initial number to show the combo\n for the guitar.\nYou can specify from 1 to 99999."); |
1223 | 1222 | this.list項目リスト.Add(this.iSystemMinComboGuitar); |
1224 | 1223 | |
1224 | + this.iGuitarGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Guitar, | |
1225 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1226 | + "オートプレイだと表示されません。\n" + | |
1227 | + "この項目を有効にすると、ベースパートのグラフは\n" + | |
1228 | + "無効になります。", | |
1229 | + "To draw Graph or not." ); | |
1230 | + this.list項目リスト.Add( this.iGuitarGraph ); | |
1231 | + | |
1225 | 1232 | // #23580 2011.1.3 yyagi |
1226 | 1233 | this.iGuitarInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar, |
1227 | 1234 | "ギターの入力タイミングの微調整を行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、\n負の値を指定してください。", |
@@ -1416,6 +1423,14 @@ | ||
1416 | 1423 | ""); |
1417 | 1424 | this.list項目リスト.Add(this.iBassShutterOutPos); |
1418 | 1425 | |
1426 | + this.iBassGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効.Bass, | |
1427 | + "最高スキルと比較できるグラフを表示します。\n" + | |
1428 | + "オートプレイだと表示されません。\n" + | |
1429 | + "この項目を有効にすると、ギターパートのグラフは\n" + | |
1430 | + "無効になります。", | |
1431 | + "To draw Graph or not." ); | |
1432 | + this.list項目リスト.Add( this.iBassGraph ); | |
1433 | + | |
1419 | 1434 | // #23580 2011.1.3 yyagi |
1420 | 1435 | this.iBassInputAdjustTimeMs = new CItemInteger("InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass, |
1421 | 1436 | "ベースの入力タイミングの微調整を行います。\n-99 ~ 99ms まで指定可能です。\n入力ラグを軽減するためには、\n負の値を指定してください。", |
@@ -2677,7 +2692,6 @@ | ||
2677 | 2692 | private CItemList iSystemSkillMode; |
2678 | 2693 | private CItemToggle iMutingLP; |
2679 | 2694 | private CItemToggle iSystemClassicNotes; |
2680 | - private CItemToggle iSystemGraph; // #24074 2011.01.23 add ikanick | |
2681 | 2695 | |
2682 | 2696 | #region [ GDオプション ] |
2683 | 2697 |
@@ -2764,6 +2778,7 @@ | ||
2764 | 2778 | private CItemInteger iBassShutterInPos; |
2765 | 2779 | private CItemInteger iBassShutterOutPos; |
2766 | 2780 | private CItemToggle iBassLaneFlush; |
2781 | + private CItemToggle iBassGraph; | |
2767 | 2782 | |
2768 | 2783 | private CItemInteger iCommonPlaySpeed; |
2769 | 2784 | // private CItemBase iCommonReturnToMenu; |
@@ -2806,6 +2821,7 @@ | ||
2806 | 2821 | private CItemInteger iDrumsShutterInPos; |
2807 | 2822 | private CItemInteger iDrumsShutterOutPos; |
2808 | 2823 | private CItemToggle iDrumsComboDisp; |
2824 | + private CItemToggle iDrumsGraph; | |
2809 | 2825 | |
2810 | 2826 | //private CItemToggle iGuitarAutoPlay; |
2811 | 2827 | private CItemThreeState iGuitarAutoPlayAll; // #23886 2012.5.8 yyagi |
@@ -2833,6 +2849,7 @@ | ||
2833 | 2849 | private CItemInteger iGuitarShutterInPos; |
2834 | 2850 | private CItemInteger iGuitarShutterOutPos; |
2835 | 2851 | private CItemToggle iGuitarLaneFlush; |
2852 | + private CItemToggle iGuitarGraph; | |
2836 | 2853 | |
2837 | 2854 | private CItemInteger iDrumsInputAdjustTimeMs; // #23580 2011.1.3 yyagi |
2838 | 2855 | private CItemInteger iGuitarInputAdjustTimeMs; // |
@@ -2926,7 +2943,6 @@ | ||
2926 | 2943 | CDTXMania.ConfigIni.bAVI有効 = this.iSystemAVI.bON; |
2927 | 2944 | CDTXMania.ConfigIni.bBGA有効 = this.iSystemBGA.bON; |
2928 | 2945 | CDTXMania.ConfigIni.bDirectShowMode = this.iSystemDirectShowMode.bON; |
2929 | - CDTXMania.ConfigIni.bGraph有効 = this.iSystemGraph.bON; | |
2930 | 2946 | CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = this.iSystemPreviewSoundWait.n現在の値; |
2931 | 2947 | CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = this.iSystemPreviewImageWait.n現在の値; |
2932 | 2948 | CDTXMania.ConfigIni.b演奏情報を表示する = this.iSystemDebugInfo.bON; |
@@ -3007,6 +3023,7 @@ | ||
3007 | 3023 | |
3008 | 3024 | CDTXMania.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON; |
3009 | 3025 | CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値; |
3026 | + CDTXMania.ConfigIni.bGraph有効.Bass = this.iBassGraph.bON; | |
3010 | 3027 | } |
3011 | 3028 | private void tConfigIniへ記録する・Drums() |
3012 | 3029 | { |
@@ -3063,6 +3080,7 @@ | ||
3063 | 3080 | CDTXMania.ConfigIni.nShutterInSide.Drums = this.iDrumsShutterInPos.n現在の値; |
3064 | 3081 | CDTXMania.ConfigIni.nShutterOutSide.Drums = this.iDrumsShutterOutPos.n現在の値; |
3065 | 3082 | CDTXMania.ConfigIni.bドラムコンボ文字の表示 = this.iDrumsComboDisp.bON; |
3083 | + CDTXMania.ConfigIni.bGraph有効.Drums = this.iDrumsGraph.bON; | |
3066 | 3084 | |
3067 | 3085 | //CDTXMania.ConfigIni.eDark = (Eダークモード) this.iCommonDark.n現在選択されている項目番号; // ダークはプリセット切り替えとして使うため、保存はしない。 |
3068 | 3086 | } |
@@ -3095,6 +3113,7 @@ | ||
3095 | 3113 | |
3096 | 3114 | CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar = this.iSystemMinComboGuitar.n現在の値; |
3097 | 3115 | CDTXMania.ConfigIni.b演奏音を強調する.Guitar = this.iSystemSoundMonitorGuitar.bON; |
3116 | + CDTXMania.ConfigIni.bGraph有効.Guitar = this.iGuitarGraph.bON; | |
3098 | 3117 | } |
3099 | 3118 | //----------------- |
3100 | 3119 | #endregion |
@@ -481,7 +481,7 @@ | ||
481 | 481 | public bool bSTAGEFAILED有効; |
482 | 482 | public STDGBVALUE<bool> bSudden; |
483 | 483 | public bool bTight; |
484 | - public bool bGraph有効; // #24074 2011.01.23 add ikanick | |
484 | + public STDGBVALUE<bool> bGraph有効; // #24074 2011.01.23 add ikanick | |
485 | 485 | public bool bWave再生位置自動調整機能有効; |
486 | 486 | public bool bシンバルフリー; |
487 | 487 | public bool bストイックモード; |
@@ -1769,7 +1769,9 @@ | ||
1769 | 1769 | |
1770 | 1770 | // #24074 2011.01.23 add ikanick |
1771 | 1771 | sw.WriteLine( "; グラフ表示(0:OFF, 1:ON)" ); |
1772 | - sw.WriteLine( "SkillMater={0}", this.bGraph有効 ? 1 : 0 ); | |
1772 | + sw.WriteLine( "DrumGraph={0}", this.bGraph有効.Drums ? 1 : 0 ); | |
1773 | + sw.WriteLine( "GuitarGraph={0}", this.bGraph有効.Guitar ? 1 : 0 ); | |
1774 | + sw.WriteLine( "BassGraph={0}", this.bGraph有効.Bass ? 1 : 0 ); | |
1773 | 1775 | sw.WriteLine(); |
1774 | 1776 | |
1775 | 1777 | sw.WriteLine( "; ドラムコンボの表示(0:OFF, 1:ON)" ); // #29500 2012.9.11 kairera0467 |
@@ -2761,10 +2763,18 @@ | ||
2761 | 2763 | //----------------------------- |
2762 | 2764 | case Eセクション種別.PlayOption: |
2763 | 2765 | { |
2764 | - if( str3.Equals( "SkillMater" ) ) // #24074 2011.01.23 addikanick | |
2766 | + if( str3.Equals( "DrumSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2765 | 2767 | { |
2766 | - this.bGraph有効 = C変換.bONorOFF( str4[ 0 ] ); | |
2768 | + this.bGraph有効.Drums = C変換.bONorOFF( str4[ 0 ] ); | |
2767 | 2769 | } |
2770 | + else if( str3.Equals( "GuitarSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2771 | + { | |
2772 | + this.bGraph有効.Guitar = C変換.bONorOFF( str4[ 0 ] ); | |
2773 | + } | |
2774 | + else if( str3.Equals( "BassSkillMater" ) ) // #24074 2011.01.23 addikanick | |
2775 | + { | |
2776 | + this.bGraph有効.Bass = C変換.bONorOFF( str4[ 0 ] ); | |
2777 | + } | |
2768 | 2778 | else if( str3.Equals( "DrumsReverse" ) ) |
2769 | 2779 | { |
2770 | 2780 | this.bReverse.Drums = C変換.bONorOFF( str4[ 0 ] ); |
@@ -23,7 +23,7 @@ | ||
23 | 23 | { |
24 | 24 | // プロパティ |
25 | 25 | |
26 | - public static readonly string VERSION = "Ver3.40GD(150919)"; | |
26 | + public static readonly string VERSION = "Ver3.60GD(16----)"; | |
27 | 27 | public static readonly string SLIMDXDLL = "c_net20x86_Jun2010"; |
28 | 28 | public static readonly string D3DXDLL = "d3dx9_43.dll"; // June 2010 |
29 | 29 | //public static readonly string D3DXDLL = "d3dx9_42.dll"; // February 2010 |
@@ -109,25 +109,50 @@ | ||
109 | 109 | |
110 | 110 | // 指定されたフォントスタイルが適用できない場合は、フォント内で定義されているスタイルから候補を選んで使用する |
111 | 111 | // 何もスタイルが使えないようなフォントなら、例外を出す。 |
112 | - if ( !_fontfamily.IsStyleAvailable( style ) ) | |
112 | + if ( _fontfamily != null ) | |
113 | 113 | { |
114 | - FontStyle[] FS = { FontStyle.Regular, FontStyle.Bold, FontStyle.Italic, FontStyle.Underline, FontStyle.Strikeout }; | |
115 | - style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout; // null非許容型なので、代わりに全盛をNGワードに設定 | |
116 | - foreach ( FontStyle ff in FS ) | |
114 | + if ( !_fontfamily.IsStyleAvailable( style ) ) | |
117 | 115 | { |
118 | - if ( this._fontfamily.IsStyleAvailable( ff ) ) | |
116 | + FontStyle[] FS = { FontStyle.Regular, FontStyle.Bold, FontStyle.Italic, FontStyle.Underline, FontStyle.Strikeout }; | |
117 | + style = FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout; // null非許容型なので、代わりに全盛をNGワードに設定 | |
118 | + foreach ( FontStyle ff in FS ) | |
119 | 119 | { |
120 | - style = ff; | |
121 | - Trace.TraceWarning( "フォント{0}へのスタイル指定を、{1}に変更しました。", Path.GetFileName( fontpath ), style.ToString() ); | |
122 | - break; | |
120 | + if ( this._fontfamily.IsStyleAvailable( ff ) ) | |
121 | + { | |
122 | + style = ff; | |
123 | + Trace.TraceWarning( "フォント{0}へのスタイル指定を、{1}に変更しました。", Path.GetFileName( fontpath ), style.ToString() ); | |
124 | + break; | |
125 | + } | |
123 | 126 | } |
127 | + if ( style == ( FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout ) ) | |
128 | + { | |
129 | + Trace.TraceWarning( "フォント{0}は適切なスタイル{1}を選択できませんでした。", Path.GetFileName( fontpath ), style.ToString() ); | |
130 | + } | |
124 | 131 | } |
125 | - if ( style == ( FontStyle.Regular | FontStyle.Bold | FontStyle.Italic | FontStyle.Underline | FontStyle.Strikeout ) ) | |
132 | + //this._font = new Font(this._fontfamily, pt, style); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する | |
133 | + float emSize = pt * 96.0f / 72.0f; | |
134 | + this._font = new Font( this._fontfamily, emSize, style, GraphicsUnit.Pixel ); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する | |
135 | + //HighDPI対応のため、pxサイズで指定 | |
136 | + } | |
137 | + else | |
138 | + // フォントファイルが見つからなかった場合 (MS PGothicを代わりに指定する) | |
139 | + { | |
140 | + float emSize = pt * 96.0f / 72.0f; | |
141 | + this._font = new Font( "MS PGothic", emSize, style, GraphicsUnit.Pixel ); //MS PGothicのFontオブジェクトを作成する | |
142 | + FontFamily[] ffs = new System.Drawing.Text.InstalledFontCollection().Families; | |
143 | + int lcid = System.Globalization.CultureInfo.GetCultureInfo( "en-us" ).LCID; | |
144 | + foreach ( FontFamily ff in ffs ) | |
126 | 145 | { |
127 | - throw new ArgumentException( "フォント{0}は適切なスタイルを選択できず、使用できません。", Path.GetFileName( fontpath ) ); | |
146 | + // Trace.WriteLine( lcid ) ); | |
147 | + if ( ff.GetName( lcid ) == "MS PGothic" ) | |
148 | + { | |
149 | + this._fontfamily = ff; | |
150 | + Trace.TraceInformation( "MS PGothicを代わりに指定しました。" ); | |
151 | + return; | |
152 | + } | |
128 | 153 | } |
154 | + throw new FileNotFoundException( "プライベートフォントの追加に失敗し、MS PGothicでの代替処理にも失敗しました。({0})", Path.GetFileName( fontpath ) ); | |
129 | 155 | } |
130 | - this._font = new Font( this._fontfamily, pt, style ); //PrivateFontCollectionの先頭のフォントのFontオブジェクトを作成する | |
131 | 156 | } |
132 | 157 | |
133 | 158 | [Flags] |