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" + "但部分代码缺失导致功能受限", 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 00000000..1890e0b6 Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed.png differ 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 00000000..1d56179e Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed1.png differ 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 00000000..b8cb034b Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Clear_Failed2.png differ diff --git a/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Script.lua b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Script.lua new file mode 100644 index 00000000..948bfbd1 --- /dev/null +++ b/Test/System/SimpleStyle/Graphics/5_Game/9_End/ClearFailed/Script.lua @@ -0,0 +1,57 @@ +--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 = { 505, 505 } +local y = { 145, 321 } + +local animeCounter = { 0, 0 } +local nowFrame = { 0, 0 } + +local textureCount = 25 + +local useExtraAnime = true + +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 + + if useExtraAnime then + func:AddGraph("Clear_Failed.png") + func:AddGraph("Clear_Failed1.png") + func:AddGraph("Clear_Failed2.png") + end +end + +function update(player) + animeCounter[player + 1] = animeCounter[player + 1] + (33.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") + elseif nowFrame[player + 1] >= 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