diff --git a/README.md b/README.md index 52afaa29..e0b846c6 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ Discord以外で配布しておりません。 -# 短期で実装する予定機能 +## 短期で実装する予定機能 ``` ☐ 段位道場結果画面を実装し切る ☐ コイン(ドンメダル)を貯蓄可能にする機能を実装+ドンメダル商店 diff --git a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs index 14b267d3..60a67b12 100644 --- a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs +++ b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs @@ -132,7 +132,9 @@ namespace TJAPlayer3 #endregion return 0; - } + } + + #region [private] private CCounter ctExamConditionsAnim; @@ -386,5 +388,9 @@ namespace TJAPlayer3 } } } - } + + #endregion + + } + } diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs index 854d819a..a56a7cb1 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs @@ -666,7 +666,10 @@ namespace TJAPlayer3 TJAPlayer3.t安全にDisposeする( ref this.ft曲リスト用フォント ); - this.ct三角矢印アニメ = null; + this.ttk選択している曲の曲名 = null; + this.ttk選択している曲のサブタイトル = null; + + this.ct三角矢印アニメ = null; base.On非活性化(); } @@ -1431,97 +1434,98 @@ namespace TJAPlayer3 { // 難易度がTower、Danではない if (TJAPlayer3.stage選曲.n現在選択中の曲の難易度 != (int)Difficulty.Tower && TJAPlayer3.stage選曲.n現在選択中の曲の難易度 != (int)Difficulty.Dan) - { + { + #region [Display difficulty boxes] + + bool uraExists = TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[(int)Difficulty.Edit] >= 0; + bool omoteExists = TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[(int)Difficulty.Oni] >= 0; + for (int i = 0; i < (int)Difficulty.Edit + 1; i++) { if (ctBarOpen.n現在の値 >= 100) - { - if (TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i] >= 0) - { - TJAPlayer3.Tx.SongSelect_Frame_Score.color4 = new Color4(1f, 1f, 1f); + { + #region [Skip conditions] + + // Don't even bother process the Ura box if there isn't one + if (!uraExists && i == (int)Difficulty.Edit) + break; + + // Don't process oni box if ura exists but not oni + else if (uraExists && !omoteExists && i == (int)Difficulty.Oni) + continue; + + #endregion + + // avaliable : bool (Chart exists) + #region [Gray box if stage isn't avaliable] + + bool avaliable = TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i] >= 0; - int opacity = 0; + if (avaliable) + TJAPlayer3.Tx.SongSelect_Frame_Score.color4 = new Color4(1f, 1f, 1f); + else + TJAPlayer3.Tx.SongSelect_Frame_Score.color4 = new Color4(0.5f, 0.5f, 0.5f); + + #endregion + + // opacity : int (Box and scores opacity) + #region [Opacity management] + + int opacity = 0; + + if (avaliable && BarAnimeCount == 62) + { + if (ctScoreFrameAnime.n現在の値 <= 3000) + opacity = Math.Max(0, ctScoreFrameAnime.n現在の値 - 2745); + else + opacity = Math.Min(255, 255 - (ctScoreFrameAnime.n現在の値 - 5745)); + } + + #endregion + + #region [Display box parameters] + + int difSelectOpacity = (i == (int)Difficulty.Edit && omoteExists) ? (BarAnimeCount < 62 ? 0 : opacity) : (int)(BarAnimeCount * 4.25f); + + if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect || ctDifficultyIn.n現在の値 < 1000) + { + TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = difSelectOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difSelectOpacity; + } + else if (ctDifficultyIn.n現在の値 >= 1000) + { + int difInOpacity = (int)((float)((int)255.0f - (ctDifficultyIn.n現在の値 - 1000)) * ((i == (int)Difficulty.Edit && omoteExists) ? (float)difSelectOpacity / 255f : 1f)); + + TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = difInOpacity; + TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = difInOpacity; + } + + #endregion + + #region [Displayables] + + int displayingDiff = Math.Min(i, (int)Difficulty.Oni); + int positionalOffset = displayingDiff * 122; + + TJAPlayer3.Tx.SongSelect_Frame_Score.t2D下中央基準描画(TJAPlayer3.app.Device, 494 + + positionalOffset - 31, TJAPlayer3.Skin.SongSelect_Overall_Y + 465, new Rectangle(122 * i, 0, 122, 360)); + + if (avaliable) + t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i] < 10 ? 497 + + positionalOffset - 5 : 492 + positionalOffset - 5, TJAPlayer3.Skin.SongSelect_Overall_Y + 277, + TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i].ToString()); + + #endregion - if(BarAnimeCount == 62) - { - if (ctScoreFrameAnime.n現在の値 <= 3000 - 255) - opacity = 0; - else if (ctScoreFrameAnime.n現在の値 <= 3000) - opacity = ctScoreFrameAnime.n現在の値 - (3000 - 255); - else if (ctScoreFrameAnime.n現在の値 <= 6000 - 255) - opacity = 255; - else - opacity = 255 - (ctScoreFrameAnime.n現在の値 - (6000 - 255)); - } - - if (i == 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = BarAnimeCount < 62 ? 0 : opacity; - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - - TJAPlayer3.Tx.SongSelect_Frame_Score.t2D下中央基準描画(TJAPlayer3.app.Device, 494 + (3 * 122) - 31, TJAPlayer3.Skin.SongSelect_Overall_Y + 465, new Rectangle(122 * i, 0, 122, 360)); - } - else if (i != 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)(BarAnimeCount * 4.25f); - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - - TJAPlayer3.Tx.SongSelect_Frame_Score.t2D下中央基準描画(TJAPlayer3.app.Device, 494 + (i * 122) - 31, TJAPlayer3.Skin.SongSelect_Overall_Y + 465, new Rectangle(122 * i, 0, 122, 360)); - } - - if (i == 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = BarAnimeCount < 62 ? 0 : opacity; - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - - t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[4] < 10 ? 497 + (3 * 122) - 5 : 492 + (3 * 122) - 5, TJAPlayer3.Skin.SongSelect_Overall_Y + 277, TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[4].ToString()); - } - else if (i != 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = (int)(BarAnimeCount * 4.25f); - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Level_Number.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - - t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i] < 10 ? 497 + (i * 122) - 5 : 492 + (i * 122) - 5, TJAPlayer3.Skin.SongSelect_Overall_Y + 277, TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i].ToString()); - } - - } - else - { - // レベルが0未満 = 譜面がないとみなす - TJAPlayer3.Tx.SongSelect_Frame_Score.color4 = new Color4(0.5f, 0.5f, 0.5f); - if (i == 4 && TJAPlayer3.stage選曲.n現在選択中の曲の難易度 == 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)(BarAnimeCount * 4.25f); - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - // エディット - TJAPlayer3.Tx.SongSelect_Frame_Score.t2D下中央基準描画(TJAPlayer3.app.Device, 494 + (3 * 122) - 31, TJAPlayer3.Skin.SongSelect_Overall_Y + 465, new Rectangle(122 * i, 0, 122, 360)); - } - else if (i != 4) - { - if (!TJAPlayer3.stage選曲.act難易度選択画面.bIsDifficltSelect) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)(BarAnimeCount * 4.25f); - else if (ctDifficultyIn.n現在の値 >= 1000) - TJAPlayer3.Tx.SongSelect_Frame_Score.Opacity = (int)255.0f - (ctDifficultyIn.n現在の値 - 1000); - - TJAPlayer3.Tx.SongSelect_Frame_Score.t2D下中央基準描画(TJAPlayer3.app.Device, 494 + (i * 122) - 31, TJAPlayer3.Skin.SongSelect_Overall_Y + 465, new Rectangle(122 * i, 0, 122, 360)); - } - } } - } - } - else + } + + #endregion + + } + else { - // To replace (Generate a display bug for tower maps + // To replace (Generate a display bug for tower mapc) if (TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[TJAPlayer3.stage選曲.n現在選択中の曲の難易度] >= 0) { @@ -2081,7 +2085,9 @@ namespace TJAPlayer3 public int nStrジャンルtoNum(string strジャンル) { + // Magic number to change int nGenre = 8; + for (int i = 0; i < TJAPlayer3.Skin.SongSelect_GenreName.Length; i++) { if (TJAPlayer3.Skin.SongSelect_GenreName[i] == strジャンル) @@ -2105,8 +2111,10 @@ namespace TJAPlayer3 } public int nStrジャンルtoNumBox(string strジャンル) - { + { + // Magic number to change int nGenre = 8; + for (int i = 0; i < TJAPlayer3.Skin.SongSelect_GenreName.Length; i++) { if (TJAPlayer3.Skin.SongSelect_GenreName[i] == strジャンル) diff --git a/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs b/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs index 81929067..f1831b08 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs @@ -747,6 +747,10 @@ namespace TJAPlayer3 } } + // Would be good to have a separate class for Don + Puchichara + Nameplate + #region [Donchan & PuchiChara] + + if (this.ctDonchan_Select.b終了値に達してない) { if (TJAPlayer3.ConfigIni.nPlayerCount == 2) @@ -783,9 +787,12 @@ namespace TJAPlayer3 TJAPlayer3.Tx.SongSelect_Donchan_Normal[ctDonchan_Normal.n現在の値].t2D描画(TJAPlayer3.app.Device, 0, 330); this.PuchiChara.On進行描画(0 + 100, 330 + 230, false); } - } - - + } + + + #endregion + + for (int i = 0; i < 10; i++) { tBoardNumberDraw(this.ptBoardNumber[i].X - 10, this.ptBoardNumber[i].Y, i < 7 ? this.act曲リスト.ScoreRankCount[i].ToString() : this.act曲リスト.CrownCount[i - 7].ToString()); diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs index c4c64660..1ee20d4b 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs @@ -96,24 +96,30 @@ namespace TJAPlayer3 public override void OnManagedリソースの作成() { this.b再生済み = false; - this.soundClear = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Clear.ogg"), ESoundGroup.SoundEffect); - this.soundFailed = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Failed.ogg"), ESoundGroup.SoundEffect); - this.soundFullCombo = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Full combo.ogg"), ESoundGroup.SoundEffect); - this.soundDondaFullCombo = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Donda Full Combo.ogg"), ESoundGroup.SoundEffect); - base.OnManagedリソースの作成(); + if (!base.b活性化してない) + { + this.soundClear = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Clear.ogg"), ESoundGroup.SoundEffect); + this.soundFailed = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Failed.ogg"), ESoundGroup.SoundEffect); + this.soundFullCombo = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Full combo.ogg"), ESoundGroup.SoundEffect); + this.soundDondaFullCombo = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Donda Full Combo.ogg"), ESoundGroup.SoundEffect); + base.OnManagedリソースの作成(); + } } public override void OnManagedリソースの解放() { - if (this.soundClear != null) - this.soundClear.t解放する(); - if (this.soundFailed != null) - this.soundFailed.t解放する(); - if (this.soundFullCombo != null) - this.soundFullCombo.t解放する(); - if (this.soundDondaFullCombo != null) - this.soundDondaFullCombo.t解放する(); - base.OnManagedリソースの解放(); + if (!base.b活性化してない) + { + if (this.soundClear != null) + this.soundClear.t解放する(); + if (this.soundFailed != null) + this.soundFailed.t解放する(); + if (this.soundFullCombo != null) + this.soundFullCombo.t解放する(); + if (this.soundDondaFullCombo != null) + this.soundDondaFullCombo.t解放する(); + base.OnManagedリソースの解放(); + } } #region [effects] diff --git a/Test/dll/FDK.dll b/Test/dll/FDK.dll index 016ea303..b88fb97d 100644 Binary files a/Test/dll/FDK.dll and b/Test/dll/FDK.dll differ