From 12078129472728dbc73d7ec2d0dbaefb7e184520 Mon Sep 17 00:00:00 2001 From: Takkkom <76614532+Takkkom@users.noreply.github.com> Date: Sun, 22 Jan 2023 20:16:22 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Lua=E3=81=A7=E3=82=AF=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E6=BC=94=E5=87=BA=E3=82=92=E3=82=AB=E3=82=B9=E3=82=BF=E3=83=9E?= =?UTF-8?q?=E3=82=A4=E3=82=BA=E5=8F=AF=E8=83=BD=E3=81=AB=20(#350)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TJAPlayer3/Stages/01.StartUp/TextureLoader.cs | 2 +- .../Taiko/CAct演奏Drums演奏終了演出.cs | 64 +++++++- .../Stages/07.Game/Taiko/EndAnimeScript.cs | 83 ++++++++++ TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs | 53 ++++--- TJAPlayer3/TJAPlayer3.csproj | 1 + .../Graphics/5_Game/9_End/Clear/Script.lua | 148 ++++++++++++++++++ .../5_Game/9_End/ClearFailed/Clear_Failed.png | Bin 0 -> 13362 bytes .../9_End/ClearFailed/Clear_Failed1.png | Bin 0 -> 19459 bytes .../9_End/ClearFailed/Clear_Failed2.png | Bin 0 -> 20473 bytes .../5_Game/9_End/ClearFailed/Script.lua | 57 +++++++ .../5_Game/9_End/DondaFullCombo/Script.lua | 47 ++++++ .../5_Game/9_End/FullCombo/Script.lua | 43 +++++ 12 files changed, 471 insertions(+), 27 deletions(-) create mode 100644 TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed.png create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed1.png create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed2.png create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Script.lua create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/DondaFullCombo/Script.lua create mode 100644 Test/System/SimpleStyle/Graphics/5_Game/9_End/FullCombo/Script.lua diff --git a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs index bf62589f..da719d16 100644 --- a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs +++ b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs @@ -43,7 +43,7 @@ namespace TJAPlayer3 const string TAIKO = @"6_Taiko\"; const string GAUGE = @"7_Gauge\"; public const string FOOTER = @"8_Footer\"; - const string END = @"9_End\"; + public const string END = @"9_End\"; const string EFFECTS = @"10_Effects\"; const string BALLOON = @"11_Balloon\"; const string LANE = @"12_Lane\"; diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs index 59359f82..2cb37be9 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs @@ -31,11 +31,14 @@ namespace TJAPlayer3 bSongsPlayed = false; this.ct進行メイン = new CCounter(0, 300, 22, TJAPlayer3.Timer); + + /* this.ctEnd_ClearFailed = new CCounter(0, 69, 30, TJAPlayer3.Timer); this.ctEnd_FullCombo = new CCounter(0, 66, 33, TJAPlayer3.Timer); this.ctEnd_FullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer); this.ctEnd_DondaFullCombo = new CCounter(0, 61, 33, TJAPlayer3.Timer); this.ctEnd_DondaFullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer); + */ // モードの決定。クリア失敗・フルコンボも事前に作っとく。 if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower) @@ -134,6 +137,20 @@ namespace TJAPlayer3 this.b再生済み = false; if (!base.b活性化してない) { + var origindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.END}"); + + FailedScript = new EndAnimeScript($@"{origindir}ClearFailed\Script.lua"); + FailedScript.Init(); + + ClearScript = new EndAnimeScript($@"{origindir}Clear\Script.lua"); + ClearScript.Init(); + + FullComboScript = new EndAnimeScript($@"{origindir}FullCombo\Script.lua"); + FullComboScript.Init(); + + DondaFullComboScript = new EndAnimeScript($@"{origindir}DondaFullCombo\Script.lua"); + DondaFullComboScript.Init(); + for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) { this.soundClear[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Clear.ogg"), ESoundGroup.SoundEffect); @@ -150,6 +167,10 @@ namespace TJAPlayer3 { if (!base.b活性化してない) { + FailedScript.Dispose(); + ClearScript.Dispose(); + FullComboScript.Dispose(); + DondaFullComboScript.Dispose(); for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) { this.soundClear[i]?.t解放する(); @@ -166,8 +187,13 @@ namespace TJAPlayer3 // ------------------------------------ private void showEndEffect_Failed(int i) { + FailedScript.Update(i); + FailedScript.Draw(i); + int[] y = new int[] { 0, 176 }; + /* + this.ctEnd_ClearFailed.t進行(); if (this.ctEnd_ClearFailed.n現在の値 <= 20 || TJAPlayer3.Tx.ClearFailed == null) { @@ -185,9 +211,14 @@ namespace TJAPlayer3 { TJAPlayer3.Tx.ClearFailed2?.t2D描画(TJAPlayer3.app.Device, 502, y[i] + 192); } + */ } private void showEndEffect_Clear(int i) - { + { + ClearScript.Update(i); + ClearScript.Draw(i); + + /* int[] y = new int[] { 210, 386 }; #region[ 文字 ] //登場アニメは20フレーム。うち最初の5フレームは半透過状態。 @@ -355,10 +386,16 @@ namespace TJAPlayer3 } #endregion + + */ } private void showEndEffect_FullCombo(int i) { + FullComboScript.Update(i); + FullComboScript.Draw(i); + + /* int[] y = new int[] { 0, 176 }; this.ctEnd_FullCombo.t進行(); @@ -369,10 +406,15 @@ namespace TJAPlayer3 this.ctEnd_FullComboLoop.t進行Loop(); TJAPlayer3.Tx.End_FullComboLoop[this.ctEnd_FullComboLoop.n現在の値]?.t2D描画(TJAPlayer3.app.Device, 330, y[i] + 196); } + */ } private void showEndEffect_DondaFullCombo(int i) - { + { + DondaFullComboScript.Update(i); + DondaFullComboScript.Draw(i); + + /* int[] y = new int[] { 0, 176 }; this.ctEnd_DondaFullCombo.t進行(); @@ -410,18 +452,22 @@ namespace TJAPlayer3 switch (this.Mode[i]) { case EndMode.StageFailed: + FailedScript.PlayEndAnime(i); this.soundFailed[i]?.t再生を開始する(); TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.t再生する(); break; case EndMode.StageCleared: + ClearScript.PlayEndAnime(i); this.soundClear[i]?.t再生を開始する(); TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.t再生する(); break; case EndMode.StageFullCombo: + FullComboScript.PlayEndAnime(i); this.soundFullCombo[i]?.t再生を開始する(); TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.t再生する(); break; case EndMode.StageDondaFullCombo: + DondaFullComboScript.PlayEndAnime(i); this.soundDondaFullCombo[i]?.t再生を開始する(); TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.t再生する(); break; @@ -465,20 +511,28 @@ namespace TJAPlayer3 } return 0; - } - + } + #region[ private ] - //----------------- + //----------------- + + private EndAnimeScript FailedScript; + private EndAnimeScript ClearScript; + private EndAnimeScript FullComboScript; + private EndAnimeScript DondaFullComboScript; + bool b再生済み; bool bリザルトボイス再生済み; bool bSongsPlayed = false; CCounter ct進行メイン; + /* CCounter ctEnd_ClearFailed; CCounter ctEnd_FullCombo; CCounter ctEnd_FullComboLoop; CCounter ctEnd_DondaFullCombo; CCounter ctEnd_DondaFullComboLoop; + */ CCounter ct進行Loop; CSound[] soundClear = new CSound[4]; diff --git a/TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs b/TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs new file mode 100644 index 00000000..e7fccb24 --- /dev/null +++ b/TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NLua; +using FDK; + +namespace TJAPlayer3 +{ + class EndAnimeScript : ScriptBG + { + private LuaFunction LuaPlayEndAnime; + + public EndAnimeScript(string filePath) : base(filePath) + { + if (LuaScript != null) + { + LuaPlayEndAnime = LuaScript.GetFunction("playEndAnime"); + } + } + + public new void Dispose() + { + base.Dispose(); + LuaPlayEndAnime?.Dispose(); + } + + public void PlayEndAnime(int player) + { + if (LuaScript == null) return; + try + { + LuaPlayEndAnime.Call(player); + } + catch (Exception ex) + { + } + } + + public new void Update(int player) + { + if (LuaScript == null) return; + try + { + float currentFloorPositionMax140 = 0; + + if (TJAPlayer3.stage選曲.r確定された曲.arスコア[5] != null) + { + int maxFloor = TJAPlayer3.stage選曲.r確定された曲.arスコア[5].譜面情報.nTotalFloor; + int nightTime = Math.Max(140, maxFloor / 2); + + currentFloorPositionMax140 = Math.Min(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f); + } + + LuaUpdateValues.Call(TJAPlayer3.FPS.DeltaTime, TJAPlayer3.FPS.n現在のFPS, TJAPlayer3.stage演奏ドラム画面.bIsAlreadyCleared, (double)currentFloorPositionMax140); + /*LuaScript.SetObjectToPath("fps", TJAPlayer3.FPS.n現在のFPS); + LuaScript.SetObjectToPath("deltaTime", TJAPlayer3.FPS.DeltaTime); + LuaScript.SetObjectToPath("isClear", TJAPlayer3.stage演奏ドラム画面.bIsAlreadyCleared); + LuaScript.SetObjectToPath("towerNightOpacity", (double)(255 * currentFloorPositionMax140));*/ + if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) LuaUpdate.Call(player); + } + catch (Exception ex) + { + LuaScript.Dispose(); + LuaScript = null; + } + } + public new void Draw(int player) + { + if (LuaScript == null) return; + try + { + LuaDraw.Call(player); + } + catch (Exception ex) + { + LuaScript.Dispose(); + LuaScript = null; + } + } + } +} diff --git a/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs b/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs index 5ae8ba1f..e2487703 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/ScriptBG.cs @@ -35,6 +35,10 @@ namespace TJAPlayer3 { Textures[fileName]?.t2D描画(TJAPlayer3.app.Device, (int)x, (int)y); } + public void DrawRectGraph(double x, double y, int rect_x, int rect_y, int rect_width, int rect_height, string fileName) + { + Textures[fileName]?.t2D描画(TJAPlayer3.app.Device, (int)x, (int)y, new System.Drawing.RectangleF(rect_x, rect_y, rect_width, rect_height)); + } public void DrawGraphCenter(double x, double y, string fileName) { Textures[fileName]?.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)x, (int)y); @@ -71,15 +75,15 @@ namespace TJAPlayer3 { public Dictionary Textures; - private Lua LuaScript; + protected Lua LuaScript; - private LuaFunction LuaSetConstValues; - private LuaFunction LuaUpdateValues; - private LuaFunction LuaClearIn; - private LuaFunction LuaClearOut; - private LuaFunction LuaInit; - private LuaFunction LuaUpdate; - private LuaFunction LuaDraw; + protected LuaFunction LuaSetConstValues; + protected LuaFunction LuaUpdateValues; + protected LuaFunction LuaClearIn; + protected LuaFunction LuaClearOut; + protected LuaFunction LuaInit; + protected LuaFunction LuaUpdate; + protected LuaFunction LuaDraw; public ScriptBG(string filePath) { @@ -93,23 +97,30 @@ namespace TJAPlayer3 LuaScript["func"] = new ScriptBGFunc(Textures, Path.GetDirectoryName(filePath)); - - using (var streamAPI = new StreamReader("BGScriptAPI.lua", Encoding.UTF8)) + try { - using (var stream = new StreamReader(filePath, Encoding.UTF8)) + using (var streamAPI = new StreamReader("BGScriptAPI.lua", Encoding.UTF8)) { - var text = $"{streamAPI.ReadToEnd()}\n{stream.ReadToEnd()}"; - LuaScript.DoString(text); + using (var stream = new StreamReader(filePath, Encoding.UTF8)) + { + var text = $"{streamAPI.ReadToEnd()}\n{stream.ReadToEnd()}"; + LuaScript.DoString(text); + } } - } - LuaSetConstValues = LuaScript.GetFunction("setConstValues"); - LuaUpdateValues = LuaScript.GetFunction("updateValues"); - LuaClearIn = LuaScript.GetFunction("clearIn"); - LuaClearOut = LuaScript.GetFunction("clearOut"); - LuaInit = LuaScript.GetFunction("init"); - LuaUpdate = LuaScript.GetFunction("update"); - LuaDraw = LuaScript.GetFunction("draw"); + LuaSetConstValues = LuaScript.GetFunction("setConstValues"); + LuaUpdateValues = LuaScript.GetFunction("updateValues"); + LuaClearIn = LuaScript.GetFunction("clearIn"); + LuaClearOut = LuaScript.GetFunction("clearOut"); + LuaInit = LuaScript.GetFunction("init"); + LuaUpdate = LuaScript.GetFunction("update"); + LuaDraw = LuaScript.GetFunction("draw"); + } + catch (Exception ex) + { + LuaScript.Dispose(); + LuaScript = null; + } } public void Dispose() { diff --git a/TJAPlayer3/TJAPlayer3.csproj b/TJAPlayer3/TJAPlayer3.csproj index 23100073..e8537f5e 100644 --- a/TJAPlayer3/TJAPlayer3.csproj +++ b/TJAPlayer3/TJAPlayer3.csproj @@ -153,6 +153,7 @@ + diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua b/Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua new file mode 100644 index 00000000..8b221852 --- /dev/null +++ b/Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua @@ -0,0 +1,148 @@ +--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 y = { 210, 386 } + +local sideTextureCount = 4 + +local animeCounter = { 0, 0 } +local nowFrame = { 0, 0 } + + + +local textScales = { 1.04, 1.11, 1.15, 1.19, 1.23, 1.26, 1.30, 1.31, 1.32, 1.32, 1.32, 1.30, 1.30, 1.26, 1.25, 1.19, 1.15, 1.11, 1.05, 1.0 } +local textOpacitys = { 43, 85, 128, 170, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 } + +local side_ret = { 1.0, 0.99, 0.98, 0.97, 0.96, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0 } + +function clearIn(player) +end + +function clearOut(player) +end + +function playEndAnime(player) + animeCounter = { 0, 0 } +end + +function init() + + func:AddGraph("Clear_Text.png") + func:AddGraph("Clear_Text_Effect.png") + + for i = 0 , sideTextureCount do + func:AddGraph("Clear_L_"..tostring(i)..".png") + func:AddGraph("Clear_R_"..tostring(i)..".png") + end + +end + +function update(player) + + animeCounter[player + 1] = animeCounter[player + 1] + (45.4 * deltaTime) + nowFrame[player + 1] = math.floor(animeCounter[player + 1] + 0.5) + +end + +function draw(player) + + if nowFrame[player + 1] >= 17 then + if nowFrame[player + 1] <= 36 then + func:SetScale(1.0, textScales[nowFrame[player + 1] - 17 + 1], "Clear_Text.png") + func:SetOpacity(textOpacitys[nowFrame[player + 1] - 17 + 1], "Clear_Text.png") + func:DrawRectGraph(634, y[player + 1] - ((90 * textScales[nowFrame[player + 1] - 17 + 1]) - 90), 0, 0, 90, 90, "Clear_Text.png") + else + func:SetScale(1.0, 1.0, "Clear_Text.png") + func:DrawRectGraph(634, y[player + 1], 0, 0, 90, 90, "Clear_Text.png") + end + end + if nowFrame[player + 1] >= 19 then + if nowFrame[player + 1] <= 38 then + func:SetScale(1.0, textScales[nowFrame[player + 1] - 19 + 1], "Clear_Text.png") + func:SetOpacity(textOpacitys[nowFrame[player + 1] - 19 + 1], "Clear_Text.png") + func:DrawRectGraph(692, y[player + 1] - ((90 * textScales[nowFrame[player + 1] - 19 + 1]) - 90), 90, 0, 90, 90, "Clear_Text.png") + else + func:SetScale(1.0, 1.0, "Clear_Text.png") + func:DrawRectGraph(692, y[player + 1], 90, 0, 90, 90, "Clear_Text.png") + end + end + if nowFrame[player + 1] >= 21 then + if nowFrame[player + 1] <= 40 then + func:SetScale(1.0, textScales[nowFrame[player + 1] - 21 + 1], "Clear_Text.png") + func:SetOpacity(textOpacitys[nowFrame[player + 1] - 21 + 1], "Clear_Text.png") + func:DrawRectGraph(750, y[player + 1] - ((90 * textScales[nowFrame[player + 1] - 21 + 1]) - 90), 180, 0, 90, 90, "Clear_Text.png") + else + func:SetScale(1.0, 1.0, "Clear_Text.png") + func:DrawRectGraph(750, y[player + 1], 180, 0, 90, 90, "Clear_Text.png") + end + end + if nowFrame[player + 1] >= 23 then + if nowFrame[player + 1] <= 42 then + func:SetScale(1.0, textScales[nowFrame[player + 1] - 23 + 1], "Clear_Text.png") + func:SetOpacity(textOpacitys[nowFrame[player + 1] - 23 + 1], "Clear_Text.png") + func:DrawRectGraph(819, y[player + 1] - ((90 * textScales[nowFrame[player + 1] - 23 + 1]) - 90), 270, 0, 90, 90, "Clear_Text.png") + else + func:SetScale(1.0, 1.0, "Clear_Text.png") + func:DrawRectGraph(819, y[player + 1], 270, 0, 90, 90, "Clear_Text.png") + end + end + if nowFrame[player + 1] >= 25 then + if nowFrame[player + 1] <= 44 then + func:SetScale(1.0, textScales[nowFrame[player + 1] - 25 + 1], "Clear_Text.png") + func:SetOpacity(textOpacitys[nowFrame[player + 1] - 25 + 1], "Clear_Text.png") + func:DrawRectGraph(890, y[player + 1] + 2 - ((90 * textScales[nowFrame[player + 1] - 25 + 1]) - 90), 360, 0, 90, 90, "Clear_Text.png") + else + func:SetScale(1.0, 1.0, "Clear_Text.png") + func:DrawRectGraph(890, y[player + 1] + 2, 360, 0, 90, 90, "Clear_Text.png") + end + end + + if nowFrame[player + 1] >= 50 and nowFrame[player + 1] < 90 then + if nowFrame[player + 1] < 70 then + func:SetOpacity((nowFrame[player + 1] - 50) * (255 / 20), "Clear_Text_Effect.png") + func:DrawGraph(634, y[player + 1] - 2, "Clear_Text_Effect.png") + else + func:SetOpacity(255 - ((nowFrame[player + 1] - 70) * (255 / 20)), "Clear_Text_Effect.png") + func:DrawGraph(634, y[player + 1] - 2, "Clear_Text_Effect.png") + end + end + + if nowFrame[player + 1] <= 11 then + func:DrawGraph(697, y[player + 1] - 30, "Clear_L_1.png") + func:SetOpacity((11.0 / nowFrame[player + 1]) * 255, "Clear_L_1.png") + + func:DrawGraph(738, y[player + 1] - 30, "Clear_R_1.png") + func:SetOpacity((11.0 / nowFrame[player + 1]) * 255, "Clear_R_1.png") + elseif nowFrame[player + 1] <= 35 then + func:DrawGraph(697 - ((nowFrame[player + 1] - 12) * 10), y[player + 1] - 30, "Clear_L_0.png") + func:DrawGraph(738 + ((nowFrame[player + 1] - 12) * 10), y[player + 1] - 30, "Clear_R_0.png") + elseif nowFrame[player + 1] <= 46 then + + func:DrawGraph(466, y[player + 1] - 30, "Clear_L_0.png") + func:SetScale(side_ret[nowFrame[player + 1] - 36 + 1], 1.0, "Clear_L_0.png") + + func:DrawGraph(1136 - 180 * side_ret[nowFrame[player + 1] - 36 + 1], y[player + 1] - 30, "Clear_R_0.png") + func:SetScale(side_ret[nowFrame[player + 1] - 36 + 1], 1.0, "Clear_R_0.png") + elseif nowFrame[player + 1] <= 49 then + func:DrawGraph(466, y[player + 1] - 30, "Clear_L_1.png") + func:DrawGraph(956, y[player + 1] - 30, "Clear_R_1.png") + elseif nowFrame[player + 1] <= 54 then + func:DrawGraph(466, y[player + 1] - 30, "Clear_L_2.png") + func:DrawGraph(956, y[player + 1] - 30, "Clear_R_2.png") + elseif nowFrame[player + 1] <= 58 then + func:DrawGraph(466, y[player + 1] - 30, "Clear_L_3.png") + func:DrawGraph(956, y[player + 1] - 30, "Clear_R_3.png") + else + func:DrawGraph(466, y[player + 1] - 30, "Clear_L_4.png") + func:DrawGraph(956, y[player + 1] - 30, "Clear_R_4.png") + end + + func:DrawNum(0, 0, nowFrame[player + 1]) +end diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed.png b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed.png new file mode 100644 index 0000000000000000000000000000000000000000..1890e0b6d78d0d44cf47952cd3fed6cfd0e3a65c GIT binary patch literal 13362 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�cg9z*CO!z$l3du=eE2T*c}n|X(vBDpRmNaZXwUG- zVqkMM%MKpI)Wt7D8v1=#$j@I=#wuWN`8*!ErlU0EbK72 zyu21zUj85DDW)jR3`mex`KU!6rm0g0pdg5ed|>rXgHl0}zA##`Qfrc^Od_@QfHYl* zm6JCv#QwvFoKGd8F*W5RUzFJALMMWd>VTc4h*eX@LaCHd3*4 z2LuwU-lg`GM+Y1H;={sb`I(qn+^rJ>_Zde^d+JOp`XqbL=8Pd1ALIX0m=`aiquj;c z?Jp{HpWz^>$}6~&Ll#fx@n~MTypOltl~;^sr~hSw#voZl}0KF9v(a8)UFdVSp& zdttGCL@U5SyQbds<3-S|<=P~2H2gM8I9q4JGeR1@*IMCWgqyUS?1>(XhdZR=mp7WM z+>+jZu6jnKs}gtroHTG~ykAqj8T{eFmlMnH_wyfGP}zQUI6M1RPsj1>il%YI_)?W2 z^@0^OKGLE5a8|^{b$Vn``iC0PTqi7?)$#E$SviGNxa+?FGm53x?{CC7{lZybvpAOBk<@ zqYI{=z`~M}^>Kkf?O`5FmM|N*lQdwvr5(Tow~_`J2&?m{yU4?A;VQmvFdbhFU8t`; zRNM+6D?=pZBY^>Mgn2-id>kE|+$DUZ0l#r2FxS_^AOO>E5f6K5fT6k;lf1JVj7f-B zh?ftj=mYl>0LTzANx4~BOK2-7{Rx4&lLpv&c(_P_K;GWoyxxMm&Tcj!esOVe5T5`@ zKmdr50Jh(9nCVD3;ixQhqe*@@{I6JqJ?=^+gOVCI?rVV|Rmy82)6 zPVRrQfZ+q=191WI^YVcl9YKHBaQ9I3!hrl~(0{4nu8V2AK-w^OXHPdMOwkMGe_2u)tgiK!#x(^ta7UNlS{SnbMbZOq{ZF#~ z#kT92-|qa~5RCd?xc?&k58rYp4aAq6{G>z>q}TUL*Z5uzc2autb_za zA!0y&C?7vi2qFprS_%pY0|og+L|}ZPP^g%g*x#VQPVOEMCn)S13Iomy$KVKB3JD5} z@j-ziFl$So5TCFJ5F#oH0}6@qLq#B>LQru*{=Y$Jy1_9~332$lRo75f7$^}dD{E09 zODmwI5Wg5uNKga{w6qq20>!LE#YKc6)_f4C)o&;(sDzTUnBNYSidmQ79guELJ;^FM3>+I|x4Y)Rn z>00xzX?4tjvVwR(6d)cj3@D#~padVkgn)o9zkr0Gh=i~pH=no!-{0h&t>D&(|DW{r z@nMqsW7AdO?wIuvzlZ)fQ#vr$Kkojxb%6gqOiWC_kA(yT`iBed5HHvt9AmKln1b3u zoNQp2{PAbN{$m{eUj&1w2p^1J6e^C1A^}V=h{J?{;^KT_K&SvrP}Is=7%B{b{$}AX zba!WK4{wMY?2!$IM+{e(0R7Ds(}O>^it}IPy=`IF`+%Vgh>6(0Q3e40=`83vWBkKg zDbWALhtzL@zoi(A-XCL_)P>1}pubY#pL}6#{h$2&xex!7OE5A0XOVx4-~Z6{AG-c6 z2L3JK|3ue+==!%9__u`r6J7spbP@ftnSwcCDj;u6t2Aw4Ux{h6@GaGp6|kRmr?flLPGf3b8R#zlg!KTDz73NBpti!^hy$x1)r0X-enblX$ zGw~#xh1PhU<|Q3#1A)pifR&g9m-HE1>>Wmn9e1A_mYvTCcIY04etIvU!dDrw4B*4% zm2<2+RZ$5fEYSZn#Dr$k*B_s$8!|i7)!*8F)qGs0p>JKT$9)+aNddWjzx2QTLBGL0 zKSqSR9`A?q`v$DvfRbSGq(}1j5d1&yL2>TH7RoW!SC5+8Nne?tiv`$PJ5$epAEN8} zd00jkD?Sx{+=y4%LUBOyX^ds%LMFdC9`TVH)#e$(A7QdPI)(F%JLuOdZnH&`p*rO3 zS=X%N!f}e(@wc=)KyC(|2QO?K4moXNxB$CB|WPZ{##n(9>c|tO9Me#@}H@xR`c>teLk<7qZ?f~^Q zu+y@!>_dw6^!RH&@tgqTk-r= z&UcrSE_+A8SdJP>_SaN%lmopWKsiw*pmeb(Mi1CX9PGK7YL*rm_{i#M%4_=S2QwPZ z+fkpSw=$!jbmf<0pmyGMtle#)z1(jL_l@5!d}pyQ3ydq&OKj2Z)H?KJ*V%RP5!_kQ z8q3$aV$_R8n9b23Ira`UFNgYlaePr(LHl7jh@&d`PoWe7O?xfxnNy-vV&3b^v18#7 zTL`^=`(RFV{pL@ZZo-dcC=!8`h=mg-pg&`^; zcIRG=+JwHOm!g!`mpkK`+JI)DE4os=r40~vqwtg@b^vm}bIqsEzIv%z6u*IusS=Bq zCzH*n39Um-tjBD-HSxfje`z`0U_*|BV!gSaDussbh!mwo{$$J>uU#E1iFJdrm67$; zSH{OT59r~x?oqb{Gp--dq=jXG*c+Zlzch@uI(Wo@Tj#0noyHz7LhS49rM)luP(v@J|vsqEd z`>7K)x0WZ@-+buPA{$wumwa4DnV69lLSHIxe>mU3HM3Q1n3^Dmh4H>G-0iLbq%N|9 z!Bgsysk9}zdGElTsznO~cki}Zz-_S|3CQ?*57(G1?n4V~2cFD;&;Umh_b~MtHI=Q~ z^J_%;w)

Nq&mF?M#*)4s|mUcEA~KP!<)nCq~|s@AZ@Wk5gV8HJ2>)&o3gfL0b2VV!+mxw(7FaO& zq($nlmr}wBtF$p;@nf%p2FB8kzI~xFzxL!{jMI28snsWo-KY~5r@%e*@UV74HnOKr z4Bd<Fmu$9rPz#rhHgiqDm%0n`W86x)!}%a`_OZNb=_D*t%Im0+OZb0l2noOCijw;QdJw3Ah}4h35lwA$QeqolXY+h z4kkDXl}D@TKAQlzftp*1qyrnHHjE2vIMq#&@G}Oe%M?tmIMMGWF?xCDdVh&Ei~9C| zCU!O#STR>_y%ZfHH`26|EJ!?vZT1x=R-{`__igY&8F62qaLAmlU2rZ7JNNxnOPSgT z>Br98)!9>{`~~BB#p&N}-W*bX1&@D$o;LM%5PFalbBB2<^E%zmh6z5tyM%m96tkck zE0zA?@@v0L&?o!s-r0-^0!@nLK7USg`5_8J<%8g-f@a>X)6slzBNjmIxj$D67#p*b zbi{9aI}pYS`p=EUuv|U8l}tb$Q;wl@5U-N(W8G#PKK*Um)|p)i=9*WNjpzve-s6vD z%nF2(fdXTdQ!QbuyRFgj-Y#pTVdfsz^joiqmndbX8!tJY?vur}fCr}STY46kFZH{Q z_@IZ03!Z150BtcJII`~RCx8NB!*%lYn~ODU)xS%ry(;L9&JO-ay+JT|b+KZ)|DE3Z z{P>f5;m8}_j`@O==5YgAGf|G@Dw3YOg1bC(5Gg|!lO2l>*+4l2?cvg{(3ai$;TU7e z>}ktYl`*5MYg1|(2))TJc${1Q$`4_NPVE0KL3o%4DRNitT%)-<2OUPWCy~*b>6urZ zuip>cq{{Jh58QXY>MM;yHZLqjw4bR7zHS1WHQyQc6SbK+?>fGe)QfBwyKp$f9?9B5 zi#Ry)h&Ck+d1@*?L1(Ab%ko~RqrhHHEJ@x&U`LJfh3$*In({O5*$YiUZ+EyDok`NK z1EJ&Ale_EEdu27wDZ=yys_xAxG)~?;vlaSJYlAdDNnsAIlr6`Y@u8D6czbpAR2)*q z*7;;nUErSDdc2jCn&5Yp`L|oiCT9AlBF)jkMw4Ma?J+&9B^ipKikG4R4UrRy{d&1? z$6T`|>-8%t%y%*o?%K`0J&wtCV><;t5m3MTxH@;~v$s6;?k=64T@3D7u3L#>UZa;` zFNqxV4ssNLkM$swPQ#t3y%a@mwZ2*8_ZsG6OpdR?8G63RGL|<8E@N%SqdriJS?F!_LLMlb z!I?&331Br19NJ?QLrPk2PLKRtDaqsIcB1q6V)dx>1BCq0yG}?>JF(|P%Ev-4smK6Z zPoY)n>C*z@)nmQ!th#*BaZsf8b%O8JQZg4pLQ*CS+RpC7o*pp^&BMk59!EOjL427O zI%cCgka8uogrYS;rx)gkw%rl^ozWI-a8hv{=6&R?_(Z-#>mnr%mAzZ3R3?-?Zb{x- zVV{$sV4bN)^76|kz5Xs!jrGch6LR@s{YsiI%IJ-&;2VB)4>%F!Zr>UPHdW-D$Y(=M zN)d5NZ*3maRj@85(trKozn+WY+F=7hHh0C_br_~&?oNE{gCvOJZUp$U_Ufl#ohCr6u(~yPMLcG8;oCQU@1|~2&^kS)c2*y z2Qe8>e}lV;r>CW0xhHxK|JP2xImnBmLm(?6&B5)`L}6%u#8gKtI=Bg17?~XL8m9D$ zPR6$uQ;D3YPI8~+3PoFG#e8R!J7T6Po{{8K6?41G?aMR&ixMrJncrjSgZ25u%9_zB zVI^bFl%d_a!tikIh1vM<=470a?EMokRJ!gu(U1byR@#bMql;`7ZU^h1YpW8UFlAc` zSDLfX;WykIG@5;oTx>U0q=_CV6d_+Tgp- z-XF@CYpPJxv#C6LzBf>DrWUjda?kO>x?||#6Rb!4qKo?e>yt`6X^uWGS90L_OJb^9 zk_Y%|6QeIPl+_lz4l=FGKE@6`9SnGT8*cKBe1sH#KLau%EpT!S&TVYS)sPyLmYv9aXxVWh8zx+qrUo{JHjpX^kppC-q4kf-#x* zbb4@Raak^(Dx!>(1>!FEyv!+$@qt*-x@Siz`rVhnE<8-!oe6H8^msrY9iI(UHPR&r zi%gBzO3fEqynUM$xPNP2+n`@n*fYb}RyTpJy}zG6gOx`I5zS>NtPC+K9Xr%u^zW*4 zJlLaTZM~+HIXH=O7h0B*Gc!b8x^?yXr4AgWzjR}ohX$VoHu#U#pWT@mpt#+IJl;!V&$f^F zSWGt(uDS(JStZ}4{MZ%~5Mbu}Xws~5oFmLb=dj{S9XbepDH{5D~+xFF^{fU z-9uHlg58@g(lF`m4l?edt3U93Z(U*0>_!>05D_tkII7!9rKWgJ&GBVugDCFlN4FMA z(=T}q{V`F zjYJAsvk&&nsO;21)G(KC%yf>Wz3(mj%ue6nRcDX7Fx?+&iV8+_Z{gYa83cm@&(3;M z>ezlJ{s6nbzc4km+vzSvS*_N5k)V5k%4=;Nk1TnSZxg9sW|{9dVWq9Aa=?zRj;e!U zh;>m29_zbNThA3=k-p8&!yk1GCL)}xTzul*?h$=JT1mi z$YI=Zuwh5=aZq_wX<=(6reW&Rmj{sTMNPtnYX@jgzayYSoWu@KzHC0Xo*<{%#Qtbd zDC1X?OHW>^o*WPtvH3c~U6ZlWM)PFyVp=DiDQODR6u2Pfq!h{Yp0wh*R(3{@bMu<4 z=2oPWUfheY)D3k9g@x$S8oyn1t@8@9(>zITr}mO&uK=EHAxN40y-D z%U<6bRTg5AolfN)uYKG|c~gkIbI7ysYgpx>z7Q>KTuRq+xf#72GCQ+uJ8y7t{MKDT zk--^F=29`mlh0N|NjwjPh%kkyT8!_l?;H8P79?zy^HUnIxdnK{Q&kJ6vLA^Na0J{* zBTGsQIGNs1!Ld7T+;>3vNIa|C5iYx6llOD8!Y_b4$A|zq4ccaW0iSnV%@I3&$pd~{ z5*6LA-NRs7$48IzBie(YUT$6@#=}}!TeAr?U$V-S<7TesWqss5qbaipxU_4EzocOz zxQ>Q+T0s-pQn;& z<@yI!ry;iF4^Mg+hm1*k`!2RF6ElH&epm0P{XybSR#c6_AR7pUP2oPekih@*7_F+= zEg}bvzErWL{VJ(quS$(~K{&mbe+4YSy@5F}PN!CO>NZmYyd50ACL*`=$dn|go|^E+ zp03>Ma);rP73bE84jEFZp=jRt`=4=fO}(PBRUJ8K#v3BuIB?IYz?KXB(vuhjR~sce zsyVJ>%dXG_Pq64Ze@tEZy5xSuOOmF~c4MQSqGR+q0E)^zOeWs!Qt;rYFxu}-Tq3#d zGh!?I7u%j=Svx|$j|pch>D7@;l#zWw)BMbqdOBk9#hzE6WF0*H#Q^n#J7K&t1VN>@ z>d|5IoY0`dP5VJ#X@ka-Cb1kTGg>9f1j8Kvb^Gos9`@B~k;fZLQ^s+*No~m@js{$q zdLgdiUC!EIow4(0?N7`3)a8e94NH9-v!_{4GiRwT&;3yKTGNN3A43Z(t1^Sx!wGe= zQ z?hQ=aQ)woi0xH)I0!MH=y7S^I)wpnnmQiZ!5|P=Bg)EDs%UlTx2KvDIue~_;c%Lud zHXMEbWMp!ILQHkfXN*T^cFg9TUav_#;k)hm8`nLr@mKeYH)218DP89f``?`gx2=HK zlFN8|UCDxn-el_*V+H5SQF?K+PiUTNk>YX-_kSIpn#Od;skUK2 z?S#k2QPO8eZc&Q2Y#UZ=IC+s(26KX8OD`i!5u(fhz1E67z9KfCB@zWMO}rFi_f_|q zc5A@F$o-3>z#WeJ!c`MQW#bpL$lF-!?P}h}Pw!U2?N4}|Uk2vA zsP%1>yfh%i*`bF5D8f;OtjSju10S>-xTELKr|w@BrZqKzD7L$A1a9Yc)>ytlW^C5g z#obPX+Nw3RnU5GPY)#2@_iu0n9Vrh{cB)EKpuL4tR1AsAftQMxo~iR{}&FX)C*TYLM0 z2?ZZE5TJX_W1!}V0n4eR={w`6bawjG+vMDbqQwO9OIc~OXBXoTufCG@@d zND}mffvaX2rf4-;kaXVIH|_|@G9|mw`>p!lV!t*B3_U}jSoT+3rp0WYvh*3Ox&Gvz zk;E?|uJe)}?&uyLxzU9`Ilg@H&0A{)hx|I^mp)Y2_cFTayi|R`dB_(zo>V=C%g0}P z@D!kL7CWLP(BGwQUKiH)WyPp&CChv0+2N^%JaP61MZTWUq`oeLTs}pM!d8)?u{Dk; z(FP%+>{c}{>79~pCGId?FV*F>U)D&5IGHIMQni^3PlESf437F(Cf&`sCl_rMePvWWHurI>ck9D}yKD2&ln>X4 zWN}?WNyOmkYQ2Z3TGVo3Pi-&pdhxr1N;rTktaVz=$z<*R>NxTf=y=k=tkUyKi>}8p zKLP1)QkM+F+T-f2mrv!&#EQb2Kr@9-<|sCN1LmUFL1RdGT$u1!p8quK;nNsZOGgKx zkr`y;vvkOD6na|jWx7P8aBKth1%ITl;+>WTS9o5dkHc$|tHy9wy69T=vF7L0!t6p# z9LI}4YO2eofWiscQp(oL={m#yS)@(2Y0SWYo$^Duo73x)!Y{jgS)0bQgl0^J8Z?mW zo3fe0Uyhnu%&=$ht(i8I>~D3frT4UK?*76PJllOz?s`o8*%P{x2yH<^+sAh$K6~Om zUXpggp6apuwTPZN6K33{HFI-t4%k3TnE8)m)nlH$@I;#~K+4a|;s>Pg#29_9-+Ekk z7g{ozF0n{j^vsFyR#q9mPfykKS(W*^&-8*PE*5?AkjZT9!Pl$6@8$3l*I9Jq@f9O& zXbSyz6ysT499r636blQm9!J&BLR(?q^@FY3%egzSY$2=>=fO)9p&td4rqPXA%%e?$ z_AZqBCUxuLx2@H06`rkeZqxtU?=t@T*Vj4;5?T}xq4v>^y#@y>YABS;S%mx__(fL3 literal 0 HcmV?d00001 diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed1.png b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed1.png new file mode 100644 index 0000000000000000000000000000000000000000..1d56179e9b8af9d4579c2468db36828a01c0cb81 GIT binary patch literal 19459 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 Zz literal 0 HcmV?d00001 diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed2.png b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed2.png new file mode 100644 index 0000000000000000000000000000000000000000..b8cb034bf1a8cf2d1e2f14cc53b9ea891a1e2972 GIT binary patch literal 20473 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 r+7{qj}Bd!EZFrQ zfPO^&Jraj1u}7;{IDm~ZByb<>tbuSNF;Twj1atL>A{}$ba3(DN#BYYxjCCC#a~1Lz zb=wHq&<9aMsZP{&;t~+_0UMSTsrV@@*7h)$$(SJ|UTfdpPh2TZL?oz|#%tDQjeKn`E-qg7@!pORm#>^3+qxqZ zIbF$w7?gd!#Sx*O!FyaTtleIA6XcW)VyWhBdZ=SS1DNu@18bSEsr zUB_uj3rhaO8*bbvSc^Jb@a1yyJJ{CyNNZQ_Pdz3chjFi1YkFaZ2aTAxc=gjcSq3L> za4b;%C$#obfF)9+>gE2v_!r|0ttueI0A>{(QobTJ4zA-^+udpeN85qS?iXQzk5c$Z zDj>3So&oNBK>oob^I_Dq%6h4O*=IJuX1+qF@n%kI%*9u<$;cOeeWwEKTs+QHRV^O` zN6-P(XeZUV{9lQh5o&aUvX!xYwZhkGwg}K;B!g6xg0#|KmlnLvpJH? z74bsGeNDSsK=r%o4Nb^sOtNT9l6vc|dh3OH0@rRw685+GTJyd;NQCxVQzJcMK(3Bi z8s`(Yygyb7-OLcQEzP+6^ieR`I9If;WB2Jv) zgy5gn*;Ww}ql>C^`%=|eN>7aB$CppF+v<(?n-Lddwm$C?bv=rkXvF}L;FxuOd~Wmb zD)W`MqV-bBYPqrcq}}U&Bb14aEx6MA#8N}e4*vn&ch?1d-R!{$IS&(&kZh75C+8$p zqjo?2@NEQ6>P>$8F}C?6NF*ua#$gz926)3l`XK^I>mcc|pExo#6jMa801Bw^q0hTd z(W!wwG3D%K; zn;9*frq@x}ceb)Z4n-yC?m-h+9=A`H@e$>UnulCi+hsXZ3b@_o(hQwr6z~z=&Md$1M17?~TeWJ9G_k z9_7WGv8T3a_g*b6n#^dCW*GBMI{Sz%8K;88g!+ggEv*rgdKShM)X)d-*xX?fsKm)t z3tGm$5#kS+X7Z*zZD!i?Anc{{PRV5`U;K&d7nwTbwHICEQn!~l=UIC|T|E!s=eDeb=-Tahyu_$Vv5+cnP`SOP(gjlr^oMJf>hz zX%75;GOI@yA+jeYlA>thY^wc%)D! zhOJI}le^1S$30o_(|6f@FMW4}=rfiF8ytmpgqeI7JYd;=fMB8CT5BExv*1gisE*6b zQMJ*4-Tk@2@k&d>iq{Wsq_WY=!1O-vtP`k zz9$2@!>h?j%O&KEQGQCFNM%!Cx>%Q{roMCeJw9)%9bQfg_Y0A%l~{xpeglRC?757f zO(F}iLWP^4=WM_g!C}@Bi;N{ET|?pD3FF`R!y41kSC1j*?5EOleBC zI{wY~d82g;R-Hw z6ai?Vk0UC@E^S5{FSSekUBf{Mvt4J?&PTso94f+Q%s(j@!{W44O_A!tf7}}+XD=H( zEUZ0Bas0(RAsXAlsWfnroU3$yxk_j;1VZMDN#HFe!5OheqCGL2Ibt3Vnhj5DzV3WS zOTI7F@Ar=H()sMd!z=xJ@@tFi>p z+G>#*85K20vph$!SYKcN%}Ldj%2#~eZ?=(|N%uG`{_x?$=N_b3(&%b+iC(FWigcU_ z6bAWs?sy2#AzQx$^@CS}+&8@_(whM5RIX*>B+GLuqDA=3B#J48)`&VZbX1Bt4CP&U zQ!0wdHV+S2NU!5zY}DUr&Pei)`#>n3mkgi zQ+nr;@PIeauLGvazJA^S>{Be%SWvR8@6eu@A5r_dYm{Czi-><6q#V)`g7znAmFxJe7iRh zom-7jLyda#qPaTtBduI=1u>~H+>>|1;ou5WaGKAb4K&{m4J$5M4C(V7fO{Q4 zgT75@=frV$R!{Asb}?rhWivuqG^*+f%cV&qzh*qqTeEOSxlp=^>1y zHG3e7SZKA6sPo*dFL$Es&iF_AGE>gV$A`7od*ahfv;HSmWd=WcbW?IE|V5Y?_)atzTR4V zXq_F<;5u-_Z|NbXB>Ayw?d8A%igsSSm;j=v$6I`Vu`u+kohgt%5??}p$gmv-q z$FJ{`^XBjEy}Z0M30yX1ODa^Hdz)8=hKAa83Y^R|a6gUAJV_ZlnYEPiu+K`(FHDI7 z>#khpbzC>z3M8hrXQ82?_PfcZhGQvg>eYrYAt51%1ZwGD?&ccWu>%7G#W>YySj2@a zjT!{(HTIW>7^`!xnVuFb=W;cF=JJXPP*YAJL$Z1ocV`)3!rlnKJmG+^cbp zdddceG!F!C^mCf!EA%>M z+Wo`Hqf1pk3JI26)2DZZ#ZeIpY(w7NUoP`vHI0~YCI-F{oz)4C*6|gKWe!V|qprB% zDJ(E`&;pTr;sOm%zk%~rAJ3jHF6@_mUtjoqb%~%(5D)V_bcAJZ8R)NaX74bh;=OFc zayZiKacJQR)l5hRgFgQdqOsuaow3eYfMCgLctZT>Nsz~EiFMDk`U^c+n7C)t(q zwVm5$sUAfL9@@a^g7r*0AE3IZdhLV0-uGTlr0eA9Ds1-;ZK=zM1y{^HpaO6{aY$<8 zK;$<+@q`q3sQxV_pj)DHl3;#>p=0^WfXce8*m%;+g}?#SbL+>?um%+5 zRQ3blQdhxAbd;yAM^Mgp>b>&$svB+mQb`t5CKX9`j6`c_eKkSeS;bt+nvU|I9W>wj z9=A@(!k?tOhFXyIpj_Ubr^vGtfsi(oN_pCY8_Q30$$_G8zPWwnTt(Dn`%9yG9!6>` z<|kPvrd#ihqI6upJ4iR#8$Y4&^0IYiB3gpg)Nxm6KUYBGdxiG+0%Uzkzf4F!mT^uf z9+zW@u}||h0s4F|5-x`^V8q=HW5D4VA~-RX5g*9J%nZ3yPXf`pe902boEv1kVjyt8 z9@xey!$rBjQ(zn9Ypm_9=Nbl1w`*4t7|J5!PYMaQ7+H{7wvEG~;wRPfu+Jf*i%Nsi z8c`$`N=_EJVW%U}@QX8n>)4|QQ0b1BbcnumxS z*OYaDzGJLDaM$TnF-x>U8m&+7h=P=3R8H~-HVvpw&u&h`l-gA>hY;4HB%2K6kq;ye z`urip?RL>LLc6O>W&>acp+8+90}fghrSNY8_FH2l^|a~%OJ8F0S-xg-g~B zr3waesB}aF80AB3C%oL{8Z(iM$U+B9q5kfh^{&7+_^8&Z$Ud#+xBwO?gNO4TvqMmJOkLW_$Fjqh5X;fZ~ZlhEqXqzRa-Ek1La!RM(f zXmEg+FEXlu8#|d!AhhUI^|npoLR#9{G0rN8%@31lx&Jy?P#E9Kn@tO|s`c_Z+}JZ% zbwRo!GM{@Mn!6vWnX6;mT=?K(joiduVo}VA1B;IY8W8KNR&W5uS-%W`IspJ2h_|x< zc;u8Aj^+xcU3DjB(G8<5G9wa%0^HKq(|-D6j+y5FpqZ%b54bLx8-9cHCH zB_+zLR(vK>8&4)DCmT=9Jcxu1!Uo-^kC&TRIH>K}XDmZJ3kwPuxwycK1_7VX1B;>U z8k5lTxH?0Q<|N?JKpp($n$4;Dr^Q=NqRZo&30MHML7X-{%MPaM5_?cs(9WNiC%Jv! z0yfLJUV~%s7cafxvZ{!UAnrS%(0+A+tC&HMNPt%2!3kk_{mz30go!t$I2j z>!^AHdhzh`h3D=Jb#v|rnLUx&Bj>McmMdD5NrWBA*`pcl9vC+Kt%@%IQs@L{)aiPe zB-!O5Vi(G>C~z*dvCcU;fkAIow-rIZNI+ph_ru|L>R2O|ym85;diz!Py|H_d7{&gL z6&C~D7wu3-$0L)-b{zv(XILbH0V{svar)+73_8*7ax+1c3v^*=H{)D{wv zj@Flt7$4Rx3e0w^y*j@ij&^{F|D?_=)JiTM>UI)fXUlzTsYOZ{JWuO$8$yQTPl}Vs z#~o;mFW%Fo_)6KrnLGgD1yJBOY)R|$f%{P=!ioerSEliu2t%;(G*tlQ7V)Ed&q**)gYpGVQ4uQ?qRdyWL z2DvhQnqO}xt8kE}I?k>OMA0qLpQwq{g@5ur=jfrwF+D`UezYmE4tEQqsNvxEZYEFa6F6|V5=YdN-UW$B0A?4kyVAfQoCvzo? zDkiM;^o{YJ=7>xGV)&A=a-yV=i0ifehpMdKb?6_nDG)vJiuiRXm z&)S76s)LkvgXrfY64!#btqT}*A09uVh-ls{>xqAe&c4i3kP!6EVID)(vUS~F27OJG z3Li$k%)^|-E$B=AV_j%#uv&29bfGoPG(>F_;}WZwUmO%xnlrMn5*s2|Y+NqU@|~F> zTXB<4;6{3rQ&tWA$zS#~vG}Ak<32S#po=j%70bJZxTQH^^ljxD7jvs8Ka)A*>75G9 zu-G)d zf|5je*s!+J!|wE-^sW>1+c6eDszS0OeaUde*YxvN=L6ohs003YAeC|-aHb4gR-sLE z$+LUJh^OPzdM)>@y#xIDvzUIs-$BwG3*PuR!228ba=a=C;)A2jkDHyZMlW!xAod!9Z(J&H8$0HrJq zjBPigCzUXWOiF^<(7(>_iVgg*Cvl|Xcc2gbY>vUHPK}{a8&x8_+~(=3*YoGi4Jp%U z!Fh{te*Kc)nECV;ie6uTsyOPO{su1KL`Fv&zC7NXKNBkgND)LOsTEEc)Jmo<7KX{v z*rU#E|FljTv`U|93?=*csJXN${S=pIeXUi{zHJ7^2p4I0nlWz@yTGOT_!ShcbdfFd z?7$=`Zme$U`U%Srg$6Q`kBBFcl8+ZzKg>fv(AlK&0F!i-BRvW=pG;Sig z`D~*a|2X(EeO#p^M9z5VR{WgzlkbJMIE^;RdB8-zmz4oolt#PW+!(!bvDIZxHcnm& z+QdyQ)HB}hD*pRba57FAU+l&8hoRJ@)PRZHM*+0ku3J9HBvTt-bk z)IFlRZE-IF)a78+7##)CSmPiKexm+X(X!={k=3l-y*r>K*1tSbRlXFKxzwp|nS0Io z$MMBbZ*DXkxtnfcJ;XgMiFg!pslv?O*yDyXa9RLYu>0o9wLJg$=M1lj&UV}=)1MSL zEw;KlTD)w2j@y?kt97oL%AWLU3RLuM(&@AIO!h7*nR6XlIogljfwt#f;$0a8(%c3Ov?k)!hc)s;H`2Zgveb}kmyPpWUrt%h^k6Q%GY7Xy7G>JuwTC~s>Fv! zfz589dgC`cKAT*Yk(M1kj|zk~4{?p?h!RP+I$U_1(X{Q9lN9ujbQ2Wy#&4Zqt%dPP zi6)~(gQxE-4poW)>J&$%OJ}64k0#*LZwoE1XW`roo{soEkt+*r#=|s#J*b6mMf*j% zxcysn@MQoGle0#wk{J#f!|c__H}OoOq-4EnpQV|Gsq)o$)W=L5yLi-PCMM!?!W=wp z?z?o?;Y10nJU(L)bDqcb^N=ikzJ}H>gSfo zbW@`X>tszXQG8a7b*r5l?;a}xpyE)S2S2c?rW0}M3MPlrw2Tr1E4-oXin;~iY89WZ zZPkQxD}BH{(84@)6uvSiKjz`7uF3f-(9Gd1p#RHw08r}f zfJicrYvIAeI3|3feMEcg(gks0E!Xzm&uh za>53(-<3(fcH>yJCPqP2KMuETe1(d{_hdWko^U1}t|(LlWX8#AwW(HPhmVGArmSDL z<^GVJcD(-4zOMrxYW$Kr8FqE>PlXFy|6%0kkNzYc{T4g+PRj{+=Zp`%!mfV-M7ubj z{@kNBp`(NGE75$Up!L{ditolccIgO6|C@+|nVYa#`r0C=k%;Vh2UXh&uoMq@vX|R! z3mc7&V|9*>W9Ivymv{DS>yHTeO~J0E7&A<^UkO@ViXej$F3Yrg!R}{iZ1Thx#BBC) z9e%h{xD6barNZ)rOxdh&eOhbXt)D*}=J`4jp5~pP;IZrXgrKnSD|9nT?@T9iIdg~7 zx0or+Td^y3%OW+y5xN2NUJli21e~>j276bvGN;MhXzaGDkvwOuEaYTIZ$&*ZI#NnX zN+z(n)zwV+oOXb3yqANKw+hT3`oFz9-(uGB_!ZQqFOL7OC%DyGJAs;>Hye8eUSGfS zr(mMhHct*0u!a6Qm2xCd%iYN*h$#yXnvr(7@bW)EnW-Ex^J-?|aAED!Uklw(aiOEAhKQ{rP*D{#SZ!OexL%caxU^3)Pk$lWUXsLHsFT zpJgw1^-{s|G0Ey73GBMhUE38MY&C_TeJ-GZmoR|+!14nVDH+r3V|XZ8D0K%Rs z8C9j5zhtvJE#|v_e+`TW!S#^CjYy%EkmJq927W!t+WcKql-5j@IX;^2C_iN=3#2U9 z2nW~5&^_-?#}MfN=N=B4HJ?}@cpE(hETUAOdALI-s(-AxSg}#{;D6sxuL9B%Zg9T) zx-6f}CHK!h=bwKMKGMs5as5aT>iM_cc?vZ~Ar+%RpF=@8a$kJdzm5+IhRovWB4NKJW zso-pp&z^Zk5B2&|Q2!**@yF5aCgG+nM4Tt+C&=Pm#aa`b;a)}nkeRHF@j5qq5zcy@ za+qFh7&YVzd&n>tuJ92l5k&S3@i16oH?iFj+0y{T1*SfI$pn)^rx)GKVlA8SR#)E;BW8OgT`nSwN zvq3(lQ%sem8-EBa?Mt)tLzU$;mTk9PRnB<*fHS>KOZ*H>1RSg}g}SN|s%up-cN>K? zTfD=kV5aICIxLHaWTYEQk0np63TtgaY|=P)ghUkj!dp4seZ}5Dax&-wuW-s2ifv^U z>?wBP<(Lm&DD0xwFsyG4pD~ghs&Mq%DZn{nam0g!Nau|foS5AWv-BcD33biV{R1ys4v;|h4)Goljl^Agq9ln36d-nGAnf`U@7 zF_Fm@-fO0}X}u78zR`PiUPGN5<5-JC^WGO;SRmPc1RoKuHzh8H-;Wj-mS@7+}8BJUmVemO<_IH;Q z0_HYBeq%`!CfV=VV+HNqAdn81I+rcI%8+n@sHsVsi1L;UF10uF(PAH|6i?vAXGo=_ zU6FF>2->Z3^Pn_@x7>d$g`Y2^9h)Eap=@)SJDtY~%P@rH_|?f1q2C?gKIM0NpVSg6 z9$@t%+I3X5g}Py9I`a=}$t;bSn3#iXx^DY*J_9znyQ}j6eaEwd*H!9TFSy220=2`n z=5Jsody3!5ak)S0#qDVRag+WdF$O}jVBPo&A{~(KXt*h&+mlM_l?K)45Z$84QdtyJ zMk*OMohE4f46}dTU!*ErD1rtLJ>JAg1tn#l=byCrO!}1$zzUGita>=$GNA{%&fsS~ zO~2v`eXb&1)49pJhX%o$!bLa_br0#c@v)XCyeQUH3j-Q3uj_dt-RrFdcl5OO%I|YB z?}JjRRyiK5OB*lMiZzC`FkXDbzUVmgQ{KV!?D830x2Z#Ft9Qn)>-2bKNDD3XDbS!g z)XX3fU`J`Fn7o`Vng`Ssyhr(N=D|64Zl85(phxRxZXmg%E9!e#RfHjdb)em_-||y_ z(R}_(sF-CPE&&}l10HrL@t*c~{u2-&Oy#o8-Q=83_@(l^{sq;K2Lpwbk*9(OKnG=) zd%$_qr2yzaUGIV<@y7ORF{N516uwvw>wMliZ8_sN;JF-Sndp5hXM)e0Z)_OQY1Jcx z6ZXa0%{gApvQT9FkCWdvqj^sEN4g%D_xMBQyf)w6hu3|oX^&DIHtV$d!uRlP*le&&Guum!WtUque^h#x!FNs2U9njGtQoCrwWlbw9DMy z;%FLP9Dc9CMKo@6*h!Ffc>l*592w@n`aJ8iP{Vh{qJLdZ2do+Ya5en5^!@map@E;V zLP>iC!ylc7cE+ALFN9N|vtykie_NSegLZ&Cc%T3rT$(3T>dLILX_4RVqMHW=f0drz z^uUVmj^(>X;L4yrd3!(h?mbEz@0gs#crOd48UI|fy5*X12b)C6s|{^}tpclSJNDjZ zDUi47=h0>S!RoRwb#;I3*L<%S+bawIo@JO9bbF`7OqK$}MU6_g&RVwpW1H#I?K|5n z5jg%Du{BE+G`MBm$v4t+vE-&t2Zm6{_YhY&3bAK}F>!Uq88SHvB;&onJ`nGyXLrjhg>xb10`x`{0F3x&f zyOsaIZh@T@k>AfbKFRv~S;;;=j{8BO0YvK)(Z$yVvg{SF`Q6t(JF(!hshVBGiky!7 zj%(t$5{@g`Oj{^4{XcVewF586#R5SEvGdm2?0l0gbfB(;e=i@?4wlU4d1kKnwG9uf zYRq`@()PtXV-H~GQn6)%= 20 and nowFrame[player + 1] <= 67 then + func:DrawGraph(x[player + 1] - 3, y[player + 1] + 47, "Clear_Failed.png") + elseif nowFrame[player + 1] == 68 then + func:DrawGraph(x[player + 1] - 3, y[player + 1] + 47, "Clear_Failed1.png") + elseif nowFrame[player + 1] >= 69 then + func:DrawGraph(x[player + 1] - 3, y[player + 1] + 47, "Clear_Failed2.png") + end +end \ No newline at end of file diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/DondaFullCombo/Script.lua b/Test/System/SimpleStyle/Graphics/5_Game/9_End/DondaFullCombo/Script.lua new file mode 100644 index 00000000..3aead881 --- /dev/null +++ b/Test/System/SimpleStyle/Graphics/5_Game/9_End/DondaFullCombo/Script.lua @@ -0,0 +1,47 @@ +--func:DrawText(x, y, text); +--func:DrawNum(x, y, num); +--func:AddGraph("filename"); +--func:DrawGraph(x, y, filename); +--func:SetOpacity(opacity, "filename"); +--func:SetScale(xscale, yscale, "filename"); +--func:SetColor(r, g, b, "filename"); + +local x = { 332, 332 } +local y = { 192, 368 } + +local animeCounter = { 0, 0 } +local nowFrame = { 0, 0 } + +local textureCount = 61 + +function clearIn(player) +end + +function clearOut(player) +end + +function playEndAnime(player) + animeCounter = { 0, 0 } + nowFrame = { 0, 0 } +end + +function init() + func:AddGraph("bg.png") + for i = 0 , textureCount do + func:AddGraph(tostring(i)..".png") + end +end + +function update(player) + animeCounter[player + 1] = animeCounter[player + 1] + (30.3 * deltaTime) + nowFrame[player + 1] = math.floor(animeCounter[player + 1] + 0.5) +end + +function draw(player) + if nowFrame[player + 1] >= 34 then + func:DrawGraph(x[player + 1], y[player + 1], "bg.png") + end + if nowFrame[player + 1] <= 20 or not(useExtraAnime) then + func:DrawGraph(x[player + 1] - 2, y[player + 1] - 142, tostring(math.min(nowFrame[player + 1], textureCount))..".png") + end +end \ No newline at end of file diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/FullCombo/Script.lua b/Test/System/SimpleStyle/Graphics/5_Game/9_End/FullCombo/Script.lua new file mode 100644 index 00000000..754fa6e9 --- /dev/null +++ b/Test/System/SimpleStyle/Graphics/5_Game/9_End/FullCombo/Script.lua @@ -0,0 +1,43 @@ +--func:DrawText(x, y, text); +--func:DrawNum(x, y, num); +--func:AddGraph("filename"); +--func:DrawGraph(x, y, filename); +--func:SetOpacity(opacity, "filename"); +--func:SetScale(xscale, yscale, "filename"); +--func:SetColor(r, g, b, "filename"); + +local x = { 330, 330 } +local y = { 50, 226 } + +local animeCounter = { 0, 0 } +local nowFrame = { 0, 0 } + +local textureCount = 66 + +function clearIn(player) +end + +function clearOut(player) +end + +function playEndAnime(player) + animeCounter = { 0, 0 } + nowFrame = { 0, 0 } +end + +function init() + for i = 0 , textureCount do + func:AddGraph(tostring(i)..".png") + end +end + +function update(player) + animeCounter[player + 1] = animeCounter[player + 1] + (30.3 * deltaTime) + nowFrame[player + 1] = math.floor(animeCounter[player + 1] + 0.5) +end + +function draw(player) + if nowFrame[player + 1] <= 20 or not(useExtraAnime) then + func:DrawGraph(x[player + 1], y[player + 1], tostring(math.min(nowFrame[player + 1], textureCount))..".png") + end +end \ No newline at end of file From b70d3f3cae842de970bcee32bf0dc2887e08c0a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Exp=C3=A9dic=20Habbet?= <51284728+ExpedicHabbet@users.noreply.github.com> Date: Sun, 22 Jan 2023 19:16:53 +0800 Subject: [PATCH 2/2] Update CLang_zh.cs (#351) Checked and filled descriptions reserved in comments. --- TJAPlayer3/I18N/CLang_zh.cs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/TJAPlayer3/I18N/CLang_zh.cs b/TJAPlayer3/I18N/CLang_zh.cs index 93b947e4..2fb5b0e5 100644 --- a/TJAPlayer3/I18N/CLang_zh.cs +++ b/TJAPlayer3/I18N/CLang_zh.cs @@ -22,14 +22,14 @@ namespace TJAPlayer3 private static readonly Dictionary dictionnary = new Dictionary { - [0] = "",//"更改系统语言", + [0] = "更改系统游玩时和菜单的语言", [1] = "系统语言", [2] = "<< 返回上级菜单", - [3] = "",//"返回至上级菜单", + [3] = "返回至上级菜单", [4] = "重新载入曲目", - [5] = "",//"重新扫描曲目文件夹并载入曲目", + [5] = "重新扫描曲目文件夹并载入曲目", [6] = "玩家数量", - [7] = "",//"选择玩家数量", + [7] = "选择玩家数量,以决定是否由2人游玩", [8] = "完美模式", [9] = "选择多少个“不可”\n" + "会导致演奏失败\n" + @@ -56,16 +56,16 @@ namespace TJAPlayer3 "— 4:左向半圆", [18] = "此选项作用不明,会导致CPU占用增加\n" + "当曲目播放速度低于0.9x时可能会出现问题", - [19] = "",//"切换全屏/窗口模式", + [19] = "切换全屏/窗口模式", [20] = "从DTXMania移植的无效设置\n" + "没有任何作用", - [21] = "",//"选择随机选曲时是否采用子文件夹", + [21] = "选择随机选曲时是否进入子文件夹", [22] = "打开后帧率会保持60fps,音符滚动会更加顺畅\n" + "但输入延迟会增加\n" + "关闭后帧率不会受到限制,输入延迟会降低但\n" + "音符滚动会更加不稳定", [23] = "若此选项开启但文件夹中没有视频,背景会变为全黑", - [24] = "",//"背景动画开关", + [24] = "选择是否播放背景动画", [25] = "曲目预览等待时间\n" + "降低该值或将导致预览在滚动曲目列表时就开始播放\n" + "范围:0—10000ms", @@ -76,7 +76,7 @@ namespace TJAPlayer3 [28] = "背景视频不可见时请调高此选项\n" + "— 0:完全透明,\n" + "— 255:完全不透明", - [29] = "",//"音乐播放开关", + [29] = "选择是否播放音乐", [30] = "选择是否在曲目文件夹中自动存储score.ini文件\n" + "曲目偏移量被保存在该文件中,\n" + "所以关闭敲击音效时请打开此选项", @@ -128,13 +128,13 @@ namespace TJAPlayer3 "关闭会确保无声音延迟,但音符滚动会更加不稳定\n" + "关闭时DTXMania会使用其原始的计时器\n" + "此选项只在启用WASAPI或ASIO时生效", - [47] = "",//"显示角色图片", - [48] = "",//"显示舞者图片", - [49] = "",//"显示人群图片", - [50] = "",//"显示跑者图片", - [51] = "",//"显示页脚图片", + [47] = "显示角色图片", + [48] = "显示舞者图片", + [49] = "显示人群图片", + [50] = "显示跑者图片", + [51] = "显示页脚图片", [52] = "选择是否在加载曲目时就开始渲染图片", - [53] = "",//"显示小角色图片", + [53] = "显示小角色图片", [54] = "从System文件夹中选择皮肤", [55] = "二级菜单:设置系统按键", [56] = "玩家1自动演奏", @@ -172,7 +172,7 @@ namespace TJAPlayer3 [74] = "锁定音符模式", [75] = "切换是否会将空白处的敲击判断为“不可”", [76] = "最小连打显示", - [77] = "选择开始显示连打的数量\n" + + [77] = "选择开始显示连击的数量\n" + "范围:1—99999", [78] = "判定圆圈调整", [79] = "升高此值会使判定区域右移\n" + @@ -194,7 +194,7 @@ namespace TJAPlayer3 [87] = "谱面分歧动画", [88] = "— TYPE-A:第二代\n" + "— TYPE-B:第三代", - [89] = "幸存者模式", + [89] = "生存模式", [90] = "此模式不可用\n" + "此模式实现了一个类似stepmania的计时器系统,\n" + "但部分代码缺失导致功能受限",