diff --git a/TJAPlayer3/Common/CConfigIni.cs b/TJAPlayer3/Common/CConfigIni.cs index bbde05e9..8c9c0c27 100644 --- a/TJAPlayer3/Common/CConfigIni.cs +++ b/TJAPlayer3/Common/CConfigIni.cs @@ -1215,6 +1215,8 @@ namespace TJAPlayer3 public bool bJudgeCountDisplay; + public bool ShowExExtraAnime; + public bool bEnableCountdownTimer; // 各画像の表示・非表示設定 @@ -1224,7 +1226,6 @@ namespace TJAPlayer3 public bool ShowFooter; public bool ShowMob; public bool ShowPuchiChara; // リザーブ - // public EScrollMode eScrollMode = EScrollMode.Normal; public bool bスクロールモードを上書き = false; @@ -1924,7 +1925,9 @@ namespace TJAPlayer3 this.bJudgeCountDisplay = false; - ShowChara = true; + ShowExExtraAnime = true; + + ShowChara = true; ShowDancer = true; ShowRunner = true; ShowFooter = true; @@ -2402,7 +2405,7 @@ namespace TJAPlayer3 sw.WriteLine("ShowFooter={0}", ShowFooter ? 1 : 0); sw.WriteLine("; ぷちキャラ画像 (0:OFF, 1:ON)"); sw.WriteLine("ShowPuchiChara={0}", ShowPuchiChara ? 1 : 0); - sw.WriteLine(); + sw.WriteLine(); sw.WriteLine( "; DARKモード(0:OFF, 1:HALF, 2:FULL)" ); sw.WriteLine( "Dark={0}", (int) this.eDark ); sw.WriteLine(); @@ -2551,6 +2554,9 @@ namespace TJAPlayer3 sw.WriteLine( "; 判定数の表示(0:OFF, 1:ON)" ); sw.WriteLine( "JudgeCountDisplay={0}", this.bJudgeCountDisplay ? 1 : 0 ); sw.WriteLine(); + sw.WriteLine("; 裏表移行アニメーションを有効する (0:OFF, 1:ON)"); + sw.WriteLine("ShowExExtraAnime={0}", this.ShowExExtraAnime ? 1 : 0); + sw.WriteLine(); sw.WriteLine( "; プレイ人数" ); sw.WriteLine( "PlayerCount={0}", this.nPlayerCount ); sw.WriteLine(); @@ -3683,8 +3689,12 @@ namespace TJAPlayer3 { this.bJudgeCountDisplay = C変換.bONorOFF( str4[ 0 ] ); } + else if (str3.Equals("ShowExExtraAnime")) + { + this.ShowExExtraAnime = C変換.bONorOFF(str4[0]); + } + - else if ( str3.Equals( "PlayerCount" ) ) { diff --git a/TJAPlayer3/Common/CSkin.cs b/TJAPlayer3/Common/CSkin.cs index 747498e8..047a9d4e 100644 --- a/TJAPlayer3/Common/CSkin.cs +++ b/TJAPlayer3/Common/CSkin.cs @@ -418,12 +418,13 @@ namespace TJAPlayer3 public Cシステムサウンド soundEncyclopediaBGM = null; public Cシステムサウンド soundTowerSelectBGM = null; + public Cシステムサウンド[] soundExToExtra = null; + public Cシステムサウンド[] soundExtraToEx = null; + public Cシステムサウンド[] soundModal = null; public Cシステムサウンド soundCrownIn = null; public Cシステムサウンド soundRankIn = null; - public Cシステムサウンド soundDonClear = null; - public Cシステムサウンド soundDonFailed = null; public Cシステムサウンド soundSelectAnnounce = null; @@ -801,6 +802,9 @@ namespace TJAPlayer3 this.soundEncyclopediaBGM = new Cシステムサウンド(@"Sounds\Encyclopedia\BGM.ogg", true, false, false, ESoundGroup.SongPlayback); this.soundTowerSelectBGM = new Cシステムサウンド(@"Sounds\Tower\BGM.ogg", true, false, false, ESoundGroup.SongPlayback); + soundExToExtra = new Cシステムサウンド[1] { new Cシステムサウンド(@"Sounds\SongSelect\0\ExToExtra.ogg", false, false, false, ESoundGroup.SoundEffect) }; // Placeholder until Komi decides + soundExtraToEx = new Cシステムサウンド[1] { new Cシステムサウンド(@"Sounds\SongSelect\0\ExtraToEx.ogg", false, false, false, ESoundGroup.SoundEffect) }; // what to do with it lol + soundModal = new Cシステムサウンド[6]; for (int i = 0; i < soundModal.Length - 1; i++) { @@ -2721,6 +2725,14 @@ namespace TJAPlayer3 SongSelect_Difficulty_Select_Bar_Move[i] = int.Parse(strSplit[i]); } } + else if (strCommand == "SongSelect_Difficulty_Bar_ExExtra_AnimeDuration") + { + string[] strSplit = strParam.Split(','); + for (int i = 0; i < 2; i++) + { + SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[i] = int.Parse(strSplit[i]); + } + } else if (strCommand == "SongSelect_Preimage") { string[] strSplit = strParam.Split(','); @@ -8290,6 +8302,8 @@ namespace TJAPlayer3 public int[] SongSelect_Difficulty_Select_Bar_AnimeIn = new int[] { 0, 50 }; public int[] SongSelect_Difficulty_Select_Bar_Move = new int[] { 25, 0 }; + public int[] SongSelect_Difficulty_Bar_ExExtra_AnimeDuration = new int[] { -1, -1 }; + public int[] SongSelect_Preimage = new int[] { 120, 110 }; public int[] SongSelect_Preimage_Size = new int[] { 200, 200 }; diff --git a/TJAPlayer3/I18N/CLang_en.cs b/TJAPlayer3/I18N/CLang_en.cs index add306de..140516ad 100644 --- a/TJAPlayer3/I18N/CLang_en.cs +++ b/TJAPlayer3/I18N/CLang_en.cs @@ -274,6 +274,9 @@ namespace TJAPlayer3 [10122] = "Clap5P", [10123] = "Konga key assign:\nTo assign key/pads for Clap5P\n button.", + [10124] = "Use Extreme/Extra Transitions", + [10125] = "Play a skin-defined animation\nwhile switching between\nExtreme & Extra.", + [100] = "Taiko Mode", [101] = "Dan-i Dojo", [102] = "Taiko Towers", diff --git a/TJAPlayer3/I18N/CLang_jp.cs b/TJAPlayer3/I18N/CLang_jp.cs index a882b0f3..0ac6f252 100644 --- a/TJAPlayer3/I18N/CLang_jp.cs +++ b/TJAPlayer3/I18N/CLang_jp.cs @@ -328,6 +328,9 @@ namespace TJAPlayer3 [10122] = "Clap5P", [10123] = "コンガの拍手へのキーの割り当てを設\n定します。", + [10124] = "裏表移行アニメーション", + [10125] = "裏表移行アニメーションを有効する", + [100] = "演奏ゲーム", [101] = "段位道場", [102] = "太鼓タワー", diff --git a/TJAPlayer3/Stages/04.Config/CActConfigList.cs b/TJAPlayer3/Stages/04.Config/CActConfigList.cs index b94337d2..9f37a374 100644 --- a/TJAPlayer3/Stages/04.Config/CActConfigList.cs +++ b/TJAPlayer3/Stages/04.Config/CActConfigList.cs @@ -375,7 +375,11 @@ namespace TJAPlayer3 this.iTaikoJudgeCountDisp = new CItemToggle(CLangManager.LangInstance.GetString(93), TJAPlayer3.ConfigIni.bJudgeCountDisplay, CLangManager.LangInstance.GetString(94)); this.list項目リスト.Add( this.iTaikoJudgeCountDisp ); - + + this.iShowExExtraAnime = new CItemToggle(CLangManager.LangInstance.GetString(10124), TJAPlayer3.ConfigIni.ShowExExtraAnime, + CLangManager.LangInstance.GetString(10125)); + this.list項目リスト.Add(this.iShowExExtraAnime); + this.iDrumsGoToKeyAssign = new CItemBase(CLangManager.LangInstance.GetString(95), CItemBase.Eパネル種別.通常, CLangManager.LangInstance.GetString(96)); this.list項目リスト.Add( this.iDrumsGoToKeyAssign ); @@ -1557,6 +1561,7 @@ namespace TJAPlayer3 CItemToggle ShowMob; CItemToggle ShowFooter; CItemToggle ShowPuchiChara; + CItemToggle iShowExExtraAnime; CItemToggle ShinuchiMode; CItemToggle FastRender; CItemInteger MusicPreTimeMs; @@ -1712,8 +1717,9 @@ namespace TJAPlayer3 TJAPlayer3.ConfigIni.eGameMode = (EGame)this.iTaikoGameMode.n現在選択されている項目番号; //TJAPlayer3.ConfigIni.bJust = this.iTaikoJust.bON; - TJAPlayer3.ConfigIni.bJudgeCountDisplay = this.iTaikoJudgeCountDisp.bON; - TJAPlayer3.ConfigIni.b大音符判定 = this.iTaikoBigNotesJudge.bON; + TJAPlayer3.ConfigIni.bJudgeCountDisplay = this.iTaikoJudgeCountDisp.bON; + TJAPlayer3.ConfigIni.ShowExExtraAnime = this.iShowExExtraAnime.bON; + TJAPlayer3.ConfigIni.b大音符判定 = this.iTaikoBigNotesJudge.bON; } //----------------- #endregion diff --git a/TJAPlayer3/Stages/05.SongSelect/AnimeBG.cs b/TJAPlayer3/Stages/05.SongSelect/AnimeBG.cs new file mode 100644 index 00000000..c2e26ef9 --- /dev/null +++ b/TJAPlayer3/Stages/05.SongSelect/AnimeBG.cs @@ -0,0 +1,38 @@ +using NLua; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TJAPlayer3 +{ + internal class AnimeBG : ScriptBG + { + private LuaFunction LuaPlayAnimation; + public AnimeBG(string filePath) : base(filePath) + { + if (LuaScript != null) + { + LuaPlayAnimation = LuaScript.GetFunction("playAnime"); + } + } + public new void Dispose() + { + base.Dispose(); + LuaPlayAnimation?.Dispose(); + } + + public void PlayAnimation() + { + if (LuaScript == null) return; + try + { + LuaPlayAnimation.Call(); + } + catch (Exception ex) + { + } + } + } +} diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelectExExtraTransAnime.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelectExExtraTransAnime.cs new file mode 100644 index 00000000..5125a7f2 --- /dev/null +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelectExExtraTransAnime.cs @@ -0,0 +1,137 @@ +using FDK; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TJAPlayer3 +{ + internal class CActSelectExExtraTransAnime : CActivity + { + enum AnimeState + { + NotRunning = 0, + ExToExtra = 1, + ExtraToEx = 2, + } + + // Timer & script for each anime + // Activate when swapping between ex/extra + // Do not let player move until timer is complete + // Stop drawing script when timer is finished + public CActSelectExExtraTransAnime() + { + + } + // because i can't read japanese very well : + public override void OnManagedリソースの作成() //On Managed Create Resource + { + base.OnManagedリソースの作成(); + + CurrentState = AnimeState.NotRunning; + + ExToExtraCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[0], TJAPlayer3.Timer); + ExtraToExCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[1], TJAPlayer3.Timer); + + ExToExtraScript = new AnimeBG(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.SONGSELECT}Difficulty_Select\\ExToExtra\\0\\Script.lua")); + ExtraToExScript = new AnimeBG(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.SONGSELECT}Difficulty_Select\\ExtraToEx\\0\\Script.lua")); + + ExToExtraScript.Init(); + ExtraToExScript.Init(); + } + + public override void OnManagedリソースの解放() //On Managed Release Resource + { + base.OnManagedリソースの解放(); + + ExToExtraCounter = null; + ExtraToExCounter = null; + + if (ExToExtraScript != null) + { + ExToExtraScript.Dispose(); + ExToExtraScript = null; + } + if (ExtraToExScript != null) + { + ExtraToExScript.Dispose(); + ExtraToExScript = null; + } + } + + public override void On活性化() //On Activate + { + base.On活性化(); + } + + public override int On進行描画() //On Progress Draw + { + switch (CurrentState) + { + case AnimeState.ExToExtra: + ExToExtraCounter.t進行(); + if (ExToExtraCounter.b終了値に達した) + { + CurrentState = AnimeState.NotRunning; + ExToExtraCounter.t停止(); + return 0; + } + + ExToExtraScript.Update(); + ExToExtraScript.Draw(); + return 1; + + case AnimeState.ExtraToEx: + ExtraToExCounter.t進行(); + if (ExtraToExCounter.b終了値に達した) + { + CurrentState = AnimeState.NotRunning; + ExtraToExCounter.t停止(); + return 0; + } + + ExtraToExScript.Update(); + ExtraToExScript.Draw(); + return 1; + + case AnimeState.NotRunning: + default: + return 0; + } + } + + public override void On非活性化() //On Deactivate + { + base.On非活性化(); + } + + public void BeginAnime(bool toExtra) + { + if (!TJAPlayer3.ConfigIni.ShowExExtraAnime) return; + else if (toExtra && !ExToExtraScript.Exists()) return; + else if (!toExtra && !ExtraToExScript.Exists()) return; + + CurrentState = toExtra ? AnimeState.ExToExtra : AnimeState.ExtraToEx; + if (toExtra) + { + ExToExtraCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[0], TJAPlayer3.Timer); + ExToExtraScript.PlayAnimation(); + TJAPlayer3.Skin.soundExToExtra[0]?.t再生する(); // Placeholder code + } + else + { + ExtraToExCounter = new CCounter(0, 1, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_ExExtra_AnimeDuration[1], TJAPlayer3.Timer); + ExtraToExScript.PlayAnimation(); + TJAPlayer3.Skin.soundExtraToEx[0]?.t再生する(); // Placeholder code + } + } + + #region Private + CCounter ExToExtraCounter, ExtraToExCounter; + AnimeBG ExToExtraScript, ExtraToExScript; + + AnimeState CurrentState; + #endregion + } +} diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs index de3bbd94..b2344433 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelect難易度選択画面.cs @@ -77,10 +77,14 @@ namespace TJAPlayer3 { if (n現在の選択行[i] == 5) { + // Extreme to Extra + TJAPlayer3.stage選曲.actExExtraTransAnime.BeginAnime(true); n現在の選択行[i] = 6; } else if (n現在の選択行[i] == 6) { + //Extra to Extreme + TJAPlayer3.stage選曲.actExExtraTransAnime.BeginAnime(false); n現在の選択行[i] = 5; } } @@ -204,7 +208,7 @@ namespace TJAPlayer3 #region [ キー入力 ] - if (this.ctBarAnimeIn.b終了値に達した) + if (this.ctBarAnimeIn.b終了値に達した && exextraAnimation == 0) // Prevent player actions if animation is active { for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) { @@ -378,7 +382,7 @@ namespace TJAPlayer3 TJAPlayer3.Tx.Difficulty_Back[boxType].t2D中心基準描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Back[0], TJAPlayer3.Skin.SongSelect_Difficulty_Back[1]); - for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) + for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) { if (TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) break; @@ -408,6 +412,7 @@ namespace TJAPlayer3 TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i][3])); //閉じる } + exextraAnimation = TJAPlayer3.stage選曲.actExExtraTransAnime.On進行描画(); for (int i = 0; i <= (int)Difficulty.Edit; i++) { @@ -425,11 +430,14 @@ namespace TJAPlayer3 else TJAPlayer3.Tx.Difficulty_Bar.color4 = new Color4(0.5f, 0.5f, 0.5f, 1.0f); - TJAPlayer3.Tx.Difficulty_Bar.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_X[i + 2], TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Y[i + 2], - new RectangleF(TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][0], - TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][1], - TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][2], - TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][3])); + if (!(i >= (int)Difficulty.Oni && exextraAnimation > 0)) // Hide Oni/Ura during transition + { + TJAPlayer3.Tx.Difficulty_Bar.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Bar_X[i + 2], TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Y[i + 2], + new RectangleF(TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][0], + TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][1], + TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][2], + TJAPlayer3.Skin.SongSelect_Difficulty_Bar_Rect[i + 2][3])); + } if (!avaliable) continue; @@ -471,7 +479,7 @@ namespace TJAPlayer3 */ } - if (level >= 0) + if (level >= 0 && (!(i >= (int)Difficulty.Oni && exextraAnimation > 0))) t小文字表示(TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nレベル[i], TJAPlayer3.Skin.SongSelect_Difficulty_Number_X[i], TJAPlayer3.Skin.SongSelect_Difficulty_Number_Y[i], @@ -479,19 +487,22 @@ namespace TJAPlayer3 TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.nLevelIcon[i] ); - for (int g = 0; g < 10; g++) + if (!(i >= (int)Difficulty.Oni && exextraAnimation > 0)) { - if (level > g + 10) + for (int g = 0; g < 10; g++) { - TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 0.2f, 0.2f, 1.0f); - TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]); - } - else if (level > g) - { - TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 1f, 1f, 1.0f); - TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]); - } - + if (level > g + 10) + { + TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 0.2f, 0.2f, 1.0f); + TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]); + } + else if (level > g) + { + TJAPlayer3.Tx.Difficulty_Star.color4 = new Color4(1f, 1f, 1f, 1.0f); + TJAPlayer3.Tx.Difficulty_Star?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongSelect_Difficulty_Star_X[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[0], TJAPlayer3.Skin.SongSelect_Difficulty_Star_Y[i] + g * TJAPlayer3.Skin.SongSelect_Difficulty_Star_Interval[1]); + } + + } } if (TJAPlayer3.stage選曲.r現在選択中のスコア.譜面情報.b譜面分岐[i]) @@ -587,8 +598,10 @@ namespace TJAPlayer3 private CCounter ctBarAnimeIn; private CCounter[] ctBarAnime = new CCounter[2]; - //0 閉じる 1 演奏オプション 2~ 難易度 - public int[] n現在の選択行; + private int exextraAnimation; + + //0 閉じる 1 演奏オプション 2~ 難易度 + public int[] n現在の選択行; private int nスイッチカウント; private bool b裏譜面; diff --git a/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs b/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs index 2f7ba35d..f1bc1656 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CStage選曲.cs @@ -209,7 +209,7 @@ namespace TJAPlayer3 base.list子Activities.Add(this.actQuickConfig = new CActSelectQuickConfig()); base.list子Activities.Add(this.act難易度選択画面 = new CActSelect難易度選択画面()); base.list子Activities.Add(this.actPlayOption = new CActPlayOption()); - + base.list子Activities.Add(this.actExExtraTransAnime = new CActSelectExExtraTransAnime()); base.list子Activities.Add(this.PuchiChara = new PuchiChara()); @@ -1387,6 +1387,7 @@ namespace TJAPlayer3 private CActSelectShowCurrentPosition actShowCurrentPosition; public CActSelect難易度選択画面 act難易度選択画面; public CActPlayOption actPlayOption; + public CActSelectExExtraTransAnime actExExtraTransAnime; public CActSortSongs actSortSongs; private CActSelectQuickConfig actQuickConfig; diff --git a/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs b/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs index 5e0fe2c9..caf8ea64 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs @@ -126,6 +126,10 @@ namespace TJAPlayer3 LuaScript = null; } } + public bool Exists() + { + return LuaScript != null; + } public void Dispose() { List texs = new List(); diff --git a/TJAPlayer3/TJAPlayer3.csproj b/TJAPlayer3/TJAPlayer3.csproj index 8f48d3e7..b60d245c 100644 --- a/TJAPlayer3/TJAPlayer3.csproj +++ b/TJAPlayer3/TJAPlayer3.csproj @@ -163,6 +163,8 @@ + + diff --git a/Test/Songs/S1 Dan-i Dojo/99b. 例2/uniqueID.json b/Test/Songs/S1 Dan-i Dojo/99b. 例2/uniqueID.json new file mode 100644 index 00000000..8e17788e --- /dev/null +++ b/Test/Songs/S1 Dan-i Dojo/99b. 例2/uniqueID.json @@ -0,0 +1 @@ +{"id":"qCNzKkLs4jIOYogQx3ZZy3ErWvy55EuSomhch1yqK7XIzTUGOaA0PvhJ6FCo5g7D","url":""} \ No newline at end of file diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Diffs.png b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Diffs.png new file mode 100644 index 00000000..522deb82 Binary files /dev/null and b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Diffs.png differ diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Script.lua b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Script.lua new file mode 100644 index 00000000..9c7b2698 --- /dev/null +++ b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Script.lua @@ -0,0 +1,51 @@ +--func:DrawText(x, y, text); +--func:DrawNum(x, y, num); +--func:AddGraph("filename"); +--func:DrawGraph(x, y, filename); +--func:DrawRectGraph(x, y, rect_x, rect_y, rect_width, rect_height, filename); +--func:SetOpacity(opacity, "filename"); +--func:SetScale(xscale, yscale, "filename"); +--func:SetColor(r, g, b, "filename"); + +local xPos = 1292 +local yPos = 405 + +local rectWidth = 197 +local rectHeight = 355 + +local swipeWidth = 10 +local swipeLength = 187 + +local animeDraw = 0 +local swipeDraw = 0 + +local drawSpeed = 0 + +function init() + animeDraw = 0 + swipeDraw = 0 + drawSpeed = 197 / 0.15 + + func:AddGraph("Diffs.png") + func:AddGraph("Swipe.png") +end + +function playAnime() + animeDraw = 0 + swipeDraw = 0 +end + +function update() + animeDraw = animeDraw + (drawSpeed * deltaTime) + swipeDraw = math.min(animeDraw, swipeWidth) - math.min(math.max(animeDraw - swipeLength, 0), swipeWidth) +end + +function draw() + -- Draw Extreme + func:DrawRectGraph(xPos + animeDraw, yPos, 0 + animeDraw, 0, math.max(rectWidth - animeDraw, 0), rectHeight, "Diffs.png") + -- Draw Extra + func:DrawRectGraph(xPos, yPos, rectWidth, 0, math.min(animeDraw, rectWidth), rectHeight, "Diffs.png") + + -- Draw Swipe + func:DrawRectGraph(xPos + animeDraw, yPos, 0, 0, swipeDraw, rectHeight, "Swipe.png") +end diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Swipe.png b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Swipe.png new file mode 100644 index 00000000..28a465dd Binary files /dev/null and b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExToExtra/0/Swipe.png differ diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Diffs.png b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Diffs.png new file mode 100644 index 00000000..522deb82 Binary files /dev/null and b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Diffs.png differ diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Script.lua b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Script.lua new file mode 100644 index 00000000..0502be4a --- /dev/null +++ b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Script.lua @@ -0,0 +1,51 @@ +--func:DrawText(x, y, text); +--func:DrawNum(x, y, num); +--func:AddGraph("filename"); +--func:DrawGraph(x, y, filename); +--func:DrawRectGraph(x, y, rect_x, rect_y, rect_width, rect_height, filename); +--func:SetOpacity(opacity, "filename"); +--func:SetScale(xscale, yscale, "filename"); +--func:SetColor(r, g, b, "filename"); + +local xPos = 1292 +local yPos = 405 + +local rectWidth = 197 +local rectHeight = 355 + +local swipeWidth = 10 +local swipeLength = 187 + +local animeDraw = 0 +local swipeDraw = 0 + +local drawSpeed = 0 + +function init() + animeDraw = 0 + swipeDraw = 0 + drawSpeed = 197 / 0.15 + + func:AddGraph("Diffs.png") + func:AddGraph("Swipe.png") +end + +function playAnime() + animeDraw = 0 + swipeDraw = 0 +end + +function update() + animeDraw = animeDraw + (drawSpeed * deltaTime) + swipeDraw = math.min(animeDraw, swipeWidth) - math.min(math.max(animeDraw - swipeLength, 0), swipeWidth) +end + +function draw() + -- Draw Extra + func:DrawRectGraph(xPos + animeDraw, yPos, rectWidth + animeDraw, 0, math.max(rectWidth - animeDraw, 0), rectHeight, "Diffs.png") + -- Draw Extreme + func:DrawRectGraph(xPos, yPos, 0, 0, math.min(animeDraw, rectWidth), rectHeight, "Diffs.png") + + -- Draw Swipe + func:DrawRectGraph(xPos + animeDraw, yPos, 0, 0, swipeDraw, rectHeight, "Swipe.png") +end diff --git a/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Swipe.png b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Swipe.png new file mode 100644 index 00000000..28a465dd Binary files /dev/null and b/Test/System/SimpleStyle (1080p)/Graphics/3_SongSelect/Difficulty_Select/ExtraToEx/0/Swipe.png differ diff --git a/Test/System/SimpleStyle (1080p)/SongSelectConfig.ini b/Test/System/SimpleStyle (1080p)/SongSelectConfig.ini index c82977bd..b59f23de 100644 --- a/Test/System/SimpleStyle (1080p)/SongSelectConfig.ini +++ b/Test/System/SimpleStyle (1080p)/SongSelectConfig.ini @@ -224,6 +224,8 @@ SongSelect_Difficulty_Number_Y=653,653,653,653,653 SongSelect_Difficulty_Number_Interval=17,0 +; Duration in ms for Extreme->Extra and Extra->Extreme animation +SongSelect_Difficulty_Bar_ExExtra_AnimeDuration=150,150 SongSelect_Difficulty_Crown_1P_X=668,884,1100,1316,1316 SongSelect_Difficulty_Crown_2P_X=779,995,1211,1427,1427