diff --git a/OpenTaiko/src/Common/CConfigIni.cs b/OpenTaiko/src/Common/CConfigIni.cs index ebfd1894..356e645f 100644 --- a/OpenTaiko/src/Common/CConfigIni.cs +++ b/OpenTaiko/src/Common/CConfigIni.cs @@ -1205,6 +1205,7 @@ namespace TJAPlayer3 }; public bool b大音符判定; + public bool bForceNormalGauge; public int n両手判定の待ち時間; public int nBranchAnime; @@ -1925,6 +1926,7 @@ namespace TJAPlayer3 this.nBranchAnime = 1; this.b大音符判定 = false; + bForceNormalGauge = false; this.n両手判定の待ち時間 = 50; this.bJudgeCountDisplay = false; @@ -2528,6 +2530,9 @@ namespace TJAPlayer3 sw.WriteLine( "; 大音符の両手判定(0:OFF, 1:ON)" ); sw.WriteLine( "BigNotesJudge={0}", this.b大音符判定 ? 1 : 0 ); sw.WriteLine(); + sw.WriteLine( "; ゲージをNormalに強制(0:OFF, 1:ON)" ); + sw.WriteLine( "ForceNormalGauge={0}", this.bForceNormalGauge ? 1 : 0 ); + sw.WriteLine(); sw.WriteLine( "; NoInfo(0:OFF, 1:ON)" ); sw.WriteLine( "NoInfo={0}", this.bNoInfo ? 1 : 0 ); sw.WriteLine(); @@ -3704,6 +3709,10 @@ namespace TJAPlayer3 { this.b大音符判定 = CConversion.bONorOFF( str4[ 0 ] ); } + else if ( str3.Equals( "ForceNormalGauge" ) ) + { + this.bForceNormalGauge = CConversion.bONorOFF( str4[ 0 ] ); + } else if ( str3.Equals( "BranchAnime" ) ) { this.nBranchAnime = CConversion.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, this.nBranchAnime ); diff --git a/OpenTaiko/src/Components/CSongReplay.cs b/OpenTaiko/src/Components/CSongReplay.cs index 9cc57e60..038df371 100644 --- a/OpenTaiko/src/Components/CSongReplay.cs +++ b/OpenTaiko/src/Components/CSongReplay.cs @@ -348,7 +348,7 @@ namespace TJAPlayer3 * - 2 : Extreme */ var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[actualPlayer].data.Character]; - GaugeType = (byte)HGaugeMethods.tGetGaugeTypeEnum(chara.effect.Gauge); + GaugeType = (byte)HGaugeMethods.tGetGaugeTypeEnum(chara.effect.tGetGaugeType()); // Gauge fill value GaugeFill = (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[storedPlayer]; // Generation timestamp (in ticks) diff --git a/OpenTaiko/src/Databases/DBCharacter.cs b/OpenTaiko/src/Databases/DBCharacter.cs index 6f38bef3..163e05f2 100644 --- a/OpenTaiko/src/Databases/DBCharacter.cs +++ b/OpenTaiko/src/Databases/DBCharacter.cs @@ -25,6 +25,11 @@ namespace TJAPlayer3 return mult; } + public string tGetGaugeType() + { + return TJAPlayer3.ConfigIni.bForceNormalGauge || TJAPlayer3.stage選曲.n確定された曲の難易度[0] >= 5 ? "Normal" : Gauge; + } + [JsonProperty("gauge")] public string Gauge; diff --git a/OpenTaiko/src/Helpers/HGaugeMethods.cs b/OpenTaiko/src/Helpers/HGaugeMethods.cs index b781d939..b420a554 100644 --- a/OpenTaiko/src/Helpers/HGaugeMethods.cs +++ b/OpenTaiko/src/Helpers/HGaugeMethods.cs @@ -452,7 +452,7 @@ namespace TJAPlayer3 return tNormaCheck( (Difficulty)_dif, TJAPlayer3.stage選曲.r確定された曲.arスコア[_dif].譜面情報.nレベル[_dif], - tGetGaugeTypeEnum(chara.effect.Gauge), + tGetGaugeTypeEnum(chara.effect.tGetGaugeType()), (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player], UNSAFE_KillZonePercent(player) ); @@ -461,7 +461,7 @@ namespace TJAPlayer3 public static bool UNSAFE_IsRainbow(int player) { var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character]; - if (tGetGaugeTypeEnum(chara.effect.Gauge) != EGaugeType.NORMAL) return false; + if (tGetGaugeTypeEnum(chara.effect.tGetGaugeType()) != EGaugeType.NORMAL) return false; return (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player] >= 100f; } @@ -489,7 +489,7 @@ namespace TJAPlayer3 return tHardGaugeGetKillscreenRatio( difficulty, level, - tGetGaugeTypeEnum(chara.effect.Gauge), + tGetGaugeTypeEnum(chara.effect.tGetGaugeType()), perfectHits, totalHits); } @@ -625,7 +625,7 @@ namespace TJAPlayer3 float currentPercent = (float)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[player]; // Gauge type - EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.Gauge); + EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.tGetGaugeType()); // Textures int _4pGaugeIDX = (TJAPlayer3.ConfigIni.nPlayerCount >= 3) ? 1 : 0; @@ -690,7 +690,7 @@ namespace TJAPlayer3 int totalHits = dtxs[player].nノーツ数[3]; // Gauge type - EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.Gauge); + EGaugeType gaugeType = tGetGaugeTypeEnum(chara.effect.tGetGaugeType()); // Current percent float currentPercent = segmentsDisplayed * 2f; diff --git a/OpenTaiko/src/I18N/CLang_en.cs b/OpenTaiko/src/I18N/CLang_en.cs index 43eee4c1..0f3b4260 100644 --- a/OpenTaiko/src/I18N/CLang_en.cs +++ b/OpenTaiko/src/I18N/CLang_en.cs @@ -306,6 +306,9 @@ namespace TJAPlayer3 [10124] = "Use Extreme/Extra Transitions", [10125] = "Play a skin-defined animation\nwhile switching between\nExtreme & Extra.", + [10126] = "Always use normal gauge", + [10127] = "Always use normal gauge", + [100] = "Taiko Mode", [101] = "Dan-i Dojo", [102] = "Taiko Towers", diff --git a/OpenTaiko/src/I18N/CLang_jp.cs b/OpenTaiko/src/I18N/CLang_jp.cs index ac0a4570..4f778031 100644 --- a/OpenTaiko/src/I18N/CLang_jp.cs +++ b/OpenTaiko/src/I18N/CLang_jp.cs @@ -359,6 +359,9 @@ namespace TJAPlayer3 [10124] = "裏表移行アニメーション", [10125] = "裏表移行アニメーションを有効する", + [10126] = "ゲージをNormalに固定", + [10127] = "ゲージをNormalに固定します", + [100] = "演奏ゲーム", [101] = "段位道場", [102] = "太鼓タワー", diff --git a/OpenTaiko/src/Stages/04.Config/CActConfigList.cs b/OpenTaiko/src/Stages/04.Config/CActConfigList.cs index 6f924650..5f33b739 100644 --- a/OpenTaiko/src/Stages/04.Config/CActConfigList.cs +++ b/OpenTaiko/src/Stages/04.Config/CActConfigList.cs @@ -388,6 +388,10 @@ namespace TJAPlayer3 CLangManager.LangInstance.GetString(92)); this.list項目リスト.Add( this.iTaikoBigNotesJudge ); + this.iTaikoForceNormalGauge = new CItemToggle(CLangManager.LangInstance.GetString(10126), TJAPlayer3.ConfigIni.bForceNormalGauge, + CLangManager.LangInstance.GetString(10127)); + this.list項目リスト.Add( this.iTaikoForceNormalGauge ); + this.iTaikoJudgeCountDisp = new CItemToggle(CLangManager.LangInstance.GetString(93), TJAPlayer3.ConfigIni.bJudgeCountDisplay, CLangManager.LangInstance.GetString(94)); this.list項目リスト.Add( this.iTaikoJudgeCountDisp ); @@ -1564,6 +1568,7 @@ namespace TJAPlayer3 private CItemToggle iTaikoJust; private CItemToggle iTaikoJudgeCountDisp; private CItemToggle iTaikoBigNotesJudge; + private CItemToggle iTaikoForceNormalGauge; private CItemInteger iTaikoPlayerCount; CItemToggle ShowChara; CItemToggle ShowDancer; @@ -1734,6 +1739,8 @@ namespace TJAPlayer3 TJAPlayer3.ConfigIni.bJudgeCountDisplay = this.iTaikoJudgeCountDisp.bON; TJAPlayer3.ConfigIni.ShowExExtraAnime = this.iShowExExtraAnime.bON; TJAPlayer3.ConfigIni.b大音符判定 = this.iTaikoBigNotesJudge.bON; + TJAPlayer3.ConfigIni.bForceNormalGauge = this.iTaikoForceNormalGauge.bON; + } //----------------- #endregion diff --git a/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs b/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs index 99e232df..04a4b578 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CStage選曲.cs @@ -999,7 +999,7 @@ namespace TJAPlayer3 if (this.n現在選択中の曲の難易度 >= (int)Difficulty.Tower) { - if (TJAPlayer3.ConfigIni.nPlayerCount == 1) + if (TJAPlayer3.ConfigIni.nPlayerCount == 1 && !TJAPlayer3.ConfigIni.bTokkunMode) { // Init tower variables if (this.n現在選択中の曲の難易度 == (int)Difficulty.Tower) diff --git a/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs b/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs index d0f4f9ae..100f649e 100644 --- a/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs +++ b/OpenTaiko/src/Stages/06.SongLoading/CStage曲読み込み.cs @@ -45,6 +45,11 @@ namespace TJAPlayer3 this.sd読み込み音 = null; } + if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] >= 5 || TJAPlayer3.ConfigIni.nPlayerCount != 1) + { + TJAPlayer3.ConfigIni.bTokkunMode = false; + } + if (TJAPlayer3.bコンパクトモード) { string strDTXファイルパス = TJAPlayer3.strコンパクトモードファイル; diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs index 7a4afc38..b114de00 100644 --- a/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CAct演奏ゲージ共通.cs @@ -112,7 +112,7 @@ namespace TJAPlayer3 { var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character]; - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { default: case "Normal": @@ -309,7 +309,7 @@ namespace TJAPlayer3 for (int i = 0; i < 3; i++) { var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character]; - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { default: case "Normal": @@ -326,7 +326,7 @@ namespace TJAPlayer3 for (int i = 0; i < 3; i++) { var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(nPlayer)].data.Character]; - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { default: case "Normal": @@ -447,7 +447,7 @@ namespace TJAPlayer3 int nanidou = TJAPlayer3.stage選曲.n確定された曲の難易度[nPlayer]; int level = this.DTX[nPlayer].LEVELtaiko[nanidou]; - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { case "Hard": fDamage = -HGaugeMethods.tHardGaugeGetDamage((Difficulty)nanidou, level); diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs index 487ab199..66384117 100644 --- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs +++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs @@ -563,7 +563,7 @@ namespace TJAPlayer3 for (int player = 0; player < TJAPlayer3.ConfigIni.nPlayerCount; player++) { var chara = TJAPlayer3.Tx.Characters[TJAPlayer3.SaveFileInstances[TJAPlayer3.GetActualPlayer(player)].data.Character]; - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { default: case "Normal": @@ -2126,7 +2126,7 @@ namespace TJAPlayer3 this.bIsAlreadyCleared[nPlayer] = false; TJAPlayer3.stage演奏ドラム画面.actBackground.ClearOut(nPlayer); - switch (chara.effect.Gauge) + switch (chara.effect.tGetGaugeType()) { case "Hard": case "Extreme": @@ -5319,13 +5319,10 @@ namespace TJAPlayer3 } this.actAVI.Stop(); this.actPanel.t歌詞テクスチャを削除する(); + bool[] cleared = new bool[5]; for (int i = 0; i < 5; i++) { - if (bIsAlreadyCleared[i]) - { - TJAPlayer3.stage演奏ドラム画面.actBackground.ClearOut(i); - } - + cleared[i] = bIsAlreadyCleared[i]; this.t演奏位置の変更(0, i); this.actPlayInfo.NowMeasure[i] = 0; JPOSCROLLX[i] = 0; @@ -5339,6 +5336,11 @@ namespace TJAPlayer3 TJAPlayer3.stage演奏ドラム画面.Activate(); for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ ) { + if (!bIsAlreadyCleared[i] && cleared[i]) + { + TJAPlayer3.stage演奏ドラム画面.actBackground.ClearOut(i); + } + if (NotesManager.IsKusudama(this.chip現在処理中の連打チップ[ i ]) && this.actChara.b風船連打中[i]) actBalloon.KusuMiss(); this.chip現在処理中の連打チップ[ i ] = null; this.actChara.b風船連打中[i] = false; diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs index 34df4e4b..a3190e4a 100644 --- a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs +++ b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs @@ -222,6 +222,11 @@ namespace TJAPlayer3 for (int i = 0; i < 5; i++) { ifp[i] = false; isDeniedPlaying[i] = false; + + if (bIsAlreadyCleared[i]) + { + actBackground.ClearIn(i); + } } this.nStoredHit = new int[TJAPlayer3.ConfigIni.nPlayerCount]; diff --git a/OpenTaiko/src/Stages/08.Result/CStage結果.cs b/OpenTaiko/src/Stages/08.Result/CStage結果.cs index 592344f9..6c9666b0 100644 --- a/OpenTaiko/src/Stages/08.Result/CStage結果.cs +++ b/OpenTaiko/src/Stages/08.Result/CStage結果.cs @@ -104,9 +104,6 @@ namespace TJAPlayer3 public override void Activate() { - - if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower) - bgmResultIn.t再生する(); Trace.TraceInformation("結果ステージを活性化します。"); Trace.Indent(); @@ -848,6 +845,9 @@ namespace TJAPlayer3 Trace.TraceInformation("結果ステージの活性化を完了しました。"); Trace.Unindent(); } + + if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower) + bgmResultIn.t再生する(); } public override void DeActivate() {