Merge branch 'main' of https://github.com/0auBSQ/OpenTaiko
This commit is contained in:
commit
de3febf001
@ -22,14 +22,14 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
private static readonly Dictionary<int, string> dictionnary = new Dictionary<int, string>
|
private static readonly Dictionary<int, string> dictionnary = new Dictionary<int, string>
|
||||||
{
|
{
|
||||||
[0] = "",//"更改系统语言",
|
[0] = "更改系统游玩时和菜单的语言",
|
||||||
[1] = "系统语言",
|
[1] = "系统语言",
|
||||||
[2] = "<< 返回上级菜单",
|
[2] = "<< 返回上级菜单",
|
||||||
[3] = "",//"返回至上级菜单",
|
[3] = "返回至上级菜单",
|
||||||
[4] = "重新载入曲目",
|
[4] = "重新载入曲目",
|
||||||
[5] = "",//"重新扫描曲目文件夹并载入曲目",
|
[5] = "重新扫描曲目文件夹并载入曲目",
|
||||||
[6] = "玩家数量",
|
[6] = "玩家数量",
|
||||||
[7] = "",//"选择玩家数量",
|
[7] = "选择玩家数量,以决定是否由2人游玩",
|
||||||
[8] = "完美模式",
|
[8] = "完美模式",
|
||||||
[9] = "选择多少个“不可”\n" +
|
[9] = "选择多少个“不可”\n" +
|
||||||
"会导致演奏失败\n" +
|
"会导致演奏失败\n" +
|
||||||
@ -56,16 +56,16 @@ namespace TJAPlayer3
|
|||||||
"— 4:左向半圆",
|
"— 4:左向半圆",
|
||||||
[18] = "此选项作用不明,会导致CPU占用增加\n" +
|
[18] = "此选项作用不明,会导致CPU占用增加\n" +
|
||||||
"当曲目播放速度低于0.9x时可能会出现问题",
|
"当曲目播放速度低于0.9x时可能会出现问题",
|
||||||
[19] = "",//"切换全屏/窗口模式",
|
[19] = "切换全屏/窗口模式",
|
||||||
[20] = "从DTXMania移植的无效设置\n" +
|
[20] = "从DTXMania移植的无效设置\n" +
|
||||||
"没有任何作用",
|
"没有任何作用",
|
||||||
[21] = "",//"选择随机选曲时是否采用子文件夹",
|
[21] = "选择随机选曲时是否进入子文件夹",
|
||||||
[22] = "打开后帧率会保持60fps,音符滚动会更加顺畅\n" +
|
[22] = "打开后帧率会保持60fps,音符滚动会更加顺畅\n" +
|
||||||
"但输入延迟会增加\n" +
|
"但输入延迟会增加\n" +
|
||||||
"关闭后帧率不会受到限制,输入延迟会降低但\n" +
|
"关闭后帧率不会受到限制,输入延迟会降低但\n" +
|
||||||
"音符滚动会更加不稳定",
|
"音符滚动会更加不稳定",
|
||||||
[23] = "若此选项开启但文件夹中没有视频,背景会变为全黑",
|
[23] = "若此选项开启但文件夹中没有视频,背景会变为全黑",
|
||||||
[24] = "",//"背景动画开关",
|
[24] = "选择是否播放背景动画",
|
||||||
[25] = "曲目预览等待时间\n" +
|
[25] = "曲目预览等待时间\n" +
|
||||||
"降低该值或将导致预览在滚动曲目列表时就开始播放\n" +
|
"降低该值或将导致预览在滚动曲目列表时就开始播放\n" +
|
||||||
"范围:0—10000ms",
|
"范围:0—10000ms",
|
||||||
@ -76,7 +76,7 @@ namespace TJAPlayer3
|
|||||||
[28] = "背景视频不可见时请调高此选项\n" +
|
[28] = "背景视频不可见时请调高此选项\n" +
|
||||||
"— 0:完全透明,\n" +
|
"— 0:完全透明,\n" +
|
||||||
"— 255:完全不透明",
|
"— 255:完全不透明",
|
||||||
[29] = "",//"音乐播放开关",
|
[29] = "选择是否播放音乐",
|
||||||
[30] = "选择是否在曲目文件夹中自动存储score.ini文件\n" +
|
[30] = "选择是否在曲目文件夹中自动存储score.ini文件\n" +
|
||||||
"曲目偏移量被保存在该文件中,\n" +
|
"曲目偏移量被保存在该文件中,\n" +
|
||||||
"所以关闭敲击音效时请打开此选项",
|
"所以关闭敲击音效时请打开此选项",
|
||||||
@ -128,13 +128,13 @@ namespace TJAPlayer3
|
|||||||
"关闭会确保无声音延迟,但音符滚动会更加不稳定\n" +
|
"关闭会确保无声音延迟,但音符滚动会更加不稳定\n" +
|
||||||
"关闭时DTXMania会使用其原始的计时器\n" +
|
"关闭时DTXMania会使用其原始的计时器\n" +
|
||||||
"此选项只在启用WASAPI或ASIO时生效",
|
"此选项只在启用WASAPI或ASIO时生效",
|
||||||
[47] = "",//"显示角色图片",
|
[47] = "显示角色图片",
|
||||||
[48] = "",//"显示舞者图片",
|
[48] = "显示舞者图片",
|
||||||
[49] = "",//"显示人群图片",
|
[49] = "显示人群图片",
|
||||||
[50] = "",//"显示跑者图片",
|
[50] = "显示跑者图片",
|
||||||
[51] = "",//"显示页脚图片",
|
[51] = "显示页脚图片",
|
||||||
[52] = "选择是否在加载曲目时就开始渲染图片",
|
[52] = "选择是否在加载曲目时就开始渲染图片",
|
||||||
[53] = "",//"显示小角色图片",
|
[53] = "显示小角色图片",
|
||||||
[54] = "从System文件夹中选择皮肤",
|
[54] = "从System文件夹中选择皮肤",
|
||||||
[55] = "二级菜单:设置系统按键",
|
[55] = "二级菜单:设置系统按键",
|
||||||
[56] = "玩家1自动演奏",
|
[56] = "玩家1自动演奏",
|
||||||
@ -172,7 +172,7 @@ namespace TJAPlayer3
|
|||||||
[74] = "锁定音符模式",
|
[74] = "锁定音符模式",
|
||||||
[75] = "切换是否会将空白处的敲击判断为“不可”",
|
[75] = "切换是否会将空白处的敲击判断为“不可”",
|
||||||
[76] = "最小连打显示",
|
[76] = "最小连打显示",
|
||||||
[77] = "选择开始显示连打的数量\n" +
|
[77] = "选择开始显示连击的数量\n" +
|
||||||
"范围:1—99999",
|
"范围:1—99999",
|
||||||
[78] = "判定圆圈调整",
|
[78] = "判定圆圈调整",
|
||||||
[79] = "升高此值会使判定区域右移\n" +
|
[79] = "升高此值会使判定区域右移\n" +
|
||||||
@ -194,7 +194,7 @@ namespace TJAPlayer3
|
|||||||
[87] = "谱面分歧动画",
|
[87] = "谱面分歧动画",
|
||||||
[88] = "— TYPE-A:第二代\n" +
|
[88] = "— TYPE-A:第二代\n" +
|
||||||
"— TYPE-B:第三代",
|
"— TYPE-B:第三代",
|
||||||
[89] = "幸存者模式",
|
[89] = "生存模式",
|
||||||
[90] = "此模式不可用\n" +
|
[90] = "此模式不可用\n" +
|
||||||
"此模式实现了一个类似stepmania的计时器系统,\n" +
|
"此模式实现了一个类似stepmania的计时器系统,\n" +
|
||||||
"但部分代码缺失导致功能受限",
|
"但部分代码缺失导致功能受限",
|
||||||
|
@ -43,7 +43,7 @@ namespace TJAPlayer3
|
|||||||
const string TAIKO = @"6_Taiko\";
|
const string TAIKO = @"6_Taiko\";
|
||||||
const string GAUGE = @"7_Gauge\";
|
const string GAUGE = @"7_Gauge\";
|
||||||
public const string FOOTER = @"8_Footer\";
|
public const string FOOTER = @"8_Footer\";
|
||||||
const string END = @"9_End\";
|
public const string END = @"9_End\";
|
||||||
const string EFFECTS = @"10_Effects\";
|
const string EFFECTS = @"10_Effects\";
|
||||||
const string BALLOON = @"11_Balloon\";
|
const string BALLOON = @"11_Balloon\";
|
||||||
const string LANE = @"12_Lane\";
|
const string LANE = @"12_Lane\";
|
||||||
|
@ -31,11 +31,14 @@ namespace TJAPlayer3
|
|||||||
bSongsPlayed = false;
|
bSongsPlayed = false;
|
||||||
|
|
||||||
this.ct進行メイン = new CCounter(0, 300, 22, TJAPlayer3.Timer);
|
this.ct進行メイン = new CCounter(0, 300, 22, TJAPlayer3.Timer);
|
||||||
|
|
||||||
|
/*
|
||||||
this.ctEnd_ClearFailed = new CCounter(0, 69, 30, TJAPlayer3.Timer);
|
this.ctEnd_ClearFailed = new CCounter(0, 69, 30, TJAPlayer3.Timer);
|
||||||
this.ctEnd_FullCombo = new CCounter(0, 66, 33, TJAPlayer3.Timer);
|
this.ctEnd_FullCombo = new CCounter(0, 66, 33, TJAPlayer3.Timer);
|
||||||
this.ctEnd_FullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer);
|
this.ctEnd_FullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer);
|
||||||
this.ctEnd_DondaFullCombo = new CCounter(0, 61, 33, TJAPlayer3.Timer);
|
this.ctEnd_DondaFullCombo = new CCounter(0, 61, 33, TJAPlayer3.Timer);
|
||||||
this.ctEnd_DondaFullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer);
|
this.ctEnd_DondaFullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer);
|
||||||
|
*/
|
||||||
|
|
||||||
// モードの決定。クリア失敗・フルコンボも事前に作っとく。
|
// モードの決定。クリア失敗・フルコンボも事前に作っとく。
|
||||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
|
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
|
||||||
@ -134,6 +137,20 @@ namespace TJAPlayer3
|
|||||||
this.b再生済み = false;
|
this.b再生済み = false;
|
||||||
if (!base.b活性化してない)
|
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++)
|
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
{
|
{
|
||||||
this.soundClear[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Clear.ogg"), ESoundGroup.SoundEffect);
|
this.soundClear[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Clear.ogg"), ESoundGroup.SoundEffect);
|
||||||
@ -150,6 +167,10 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if (!base.b活性化してない)
|
if (!base.b活性化してない)
|
||||||
{
|
{
|
||||||
|
FailedScript.Dispose();
|
||||||
|
ClearScript.Dispose();
|
||||||
|
FullComboScript.Dispose();
|
||||||
|
DondaFullComboScript.Dispose();
|
||||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||||
{
|
{
|
||||||
this.soundClear[i]?.t解放する();
|
this.soundClear[i]?.t解放する();
|
||||||
@ -166,8 +187,13 @@ namespace TJAPlayer3
|
|||||||
// ------------------------------------
|
// ------------------------------------
|
||||||
private void showEndEffect_Failed(int i)
|
private void showEndEffect_Failed(int i)
|
||||||
{
|
{
|
||||||
|
FailedScript.Update(i);
|
||||||
|
FailedScript.Draw(i);
|
||||||
|
|
||||||
int[] y = new int[] { 0, 176 };
|
int[] y = new int[] { 0, 176 };
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
this.ctEnd_ClearFailed.t進行();
|
this.ctEnd_ClearFailed.t進行();
|
||||||
if (this.ctEnd_ClearFailed.n現在の値 <= 20 || TJAPlayer3.Tx.ClearFailed == null)
|
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);
|
TJAPlayer3.Tx.ClearFailed2?.t2D描画(TJAPlayer3.app.Device, 502, y[i] + 192);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
private void showEndEffect_Clear(int i)
|
private void showEndEffect_Clear(int i)
|
||||||
{
|
{
|
||||||
|
ClearScript.Update(i);
|
||||||
|
ClearScript.Draw(i);
|
||||||
|
|
||||||
|
/*
|
||||||
int[] y = new int[] { 210, 386 };
|
int[] y = new int[] { 210, 386 };
|
||||||
#region[ 文字 ]
|
#region[ 文字 ]
|
||||||
//登場アニメは20フレーム。うち最初の5フレームは半透過状態。
|
//登場アニメは20フレーム。うち最初の5フレームは半透過状態。
|
||||||
@ -355,10 +386,16 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showEndEffect_FullCombo(int i)
|
private void showEndEffect_FullCombo(int i)
|
||||||
{
|
{
|
||||||
|
FullComboScript.Update(i);
|
||||||
|
FullComboScript.Draw(i);
|
||||||
|
|
||||||
|
/*
|
||||||
int[] y = new int[] { 0, 176 };
|
int[] y = new int[] { 0, 176 };
|
||||||
|
|
||||||
this.ctEnd_FullCombo.t進行();
|
this.ctEnd_FullCombo.t進行();
|
||||||
@ -369,10 +406,15 @@ namespace TJAPlayer3
|
|||||||
this.ctEnd_FullComboLoop.t進行Loop();
|
this.ctEnd_FullComboLoop.t進行Loop();
|
||||||
TJAPlayer3.Tx.End_FullComboLoop[this.ctEnd_FullComboLoop.n現在の値]?.t2D描画(TJAPlayer3.app.Device, 330, y[i] + 196);
|
TJAPlayer3.Tx.End_FullComboLoop[this.ctEnd_FullComboLoop.n現在の値]?.t2D描画(TJAPlayer3.app.Device, 330, y[i] + 196);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showEndEffect_DondaFullCombo(int i)
|
private void showEndEffect_DondaFullCombo(int i)
|
||||||
{
|
{
|
||||||
|
DondaFullComboScript.Update(i);
|
||||||
|
DondaFullComboScript.Draw(i);
|
||||||
|
|
||||||
|
/*
|
||||||
int[] y = new int[] { 0, 176 };
|
int[] y = new int[] { 0, 176 };
|
||||||
|
|
||||||
this.ctEnd_DondaFullCombo.t進行();
|
this.ctEnd_DondaFullCombo.t進行();
|
||||||
@ -410,18 +452,22 @@ namespace TJAPlayer3
|
|||||||
switch (this.Mode[i])
|
switch (this.Mode[i])
|
||||||
{
|
{
|
||||||
case EndMode.StageFailed:
|
case EndMode.StageFailed:
|
||||||
|
FailedScript.PlayEndAnime(i);
|
||||||
this.soundFailed[i]?.t再生を開始する();
|
this.soundFailed[i]?.t再生を開始する();
|
||||||
TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
||||||
break;
|
break;
|
||||||
case EndMode.StageCleared:
|
case EndMode.StageCleared:
|
||||||
|
ClearScript.PlayEndAnime(i);
|
||||||
this.soundClear[i]?.t再生を開始する();
|
this.soundClear[i]?.t再生を開始する();
|
||||||
TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
||||||
break;
|
break;
|
||||||
case EndMode.StageFullCombo:
|
case EndMode.StageFullCombo:
|
||||||
|
FullComboScript.PlayEndAnime(i);
|
||||||
this.soundFullCombo[i]?.t再生を開始する();
|
this.soundFullCombo[i]?.t再生を開始する();
|
||||||
TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
||||||
break;
|
break;
|
||||||
case EndMode.StageDondaFullCombo:
|
case EndMode.StageDondaFullCombo:
|
||||||
|
DondaFullComboScript.PlayEndAnime(i);
|
||||||
this.soundDondaFullCombo[i]?.t再生を開始する();
|
this.soundDondaFullCombo[i]?.t再生を開始する();
|
||||||
TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.t再生する();
|
||||||
break;
|
break;
|
||||||
@ -469,16 +515,24 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
#region[ private ]
|
#region[ private ]
|
||||||
//-----------------
|
//-----------------
|
||||||
|
|
||||||
|
private EndAnimeScript FailedScript;
|
||||||
|
private EndAnimeScript ClearScript;
|
||||||
|
private EndAnimeScript FullComboScript;
|
||||||
|
private EndAnimeScript DondaFullComboScript;
|
||||||
|
|
||||||
bool b再生済み;
|
bool b再生済み;
|
||||||
bool bリザルトボイス再生済み;
|
bool bリザルトボイス再生済み;
|
||||||
bool bSongsPlayed = false;
|
bool bSongsPlayed = false;
|
||||||
CCounter ct進行メイン;
|
CCounter ct進行メイン;
|
||||||
|
|
||||||
|
/*
|
||||||
CCounter ctEnd_ClearFailed;
|
CCounter ctEnd_ClearFailed;
|
||||||
CCounter ctEnd_FullCombo;
|
CCounter ctEnd_FullCombo;
|
||||||
CCounter ctEnd_FullComboLoop;
|
CCounter ctEnd_FullComboLoop;
|
||||||
CCounter ctEnd_DondaFullCombo;
|
CCounter ctEnd_DondaFullCombo;
|
||||||
CCounter ctEnd_DondaFullComboLoop;
|
CCounter ctEnd_DondaFullComboLoop;
|
||||||
|
*/
|
||||||
|
|
||||||
CCounter ct進行Loop;
|
CCounter ct進行Loop;
|
||||||
CSound[] soundClear = new CSound[4];
|
CSound[] soundClear = new CSound[4];
|
||||||
|
83
TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs
Normal file
83
TJAPlayer3/Stages/07.Game/Taiko/EndAnimeScript.cs
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -35,6 +35,10 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
Textures[fileName]?.t2D描画(TJAPlayer3.app.Device, (int)x, (int)y);
|
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)
|
public void DrawGraphCenter(double x, double y, string fileName)
|
||||||
{
|
{
|
||||||
Textures[fileName]?.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)x, (int)y);
|
Textures[fileName]?.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, (int)x, (int)y);
|
||||||
@ -71,15 +75,15 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
public Dictionary<string, CTexture> Textures;
|
public Dictionary<string, CTexture> Textures;
|
||||||
|
|
||||||
private Lua LuaScript;
|
protected Lua LuaScript;
|
||||||
|
|
||||||
private LuaFunction LuaSetConstValues;
|
protected LuaFunction LuaSetConstValues;
|
||||||
private LuaFunction LuaUpdateValues;
|
protected LuaFunction LuaUpdateValues;
|
||||||
private LuaFunction LuaClearIn;
|
protected LuaFunction LuaClearIn;
|
||||||
private LuaFunction LuaClearOut;
|
protected LuaFunction LuaClearOut;
|
||||||
private LuaFunction LuaInit;
|
protected LuaFunction LuaInit;
|
||||||
private LuaFunction LuaUpdate;
|
protected LuaFunction LuaUpdate;
|
||||||
private LuaFunction LuaDraw;
|
protected LuaFunction LuaDraw;
|
||||||
|
|
||||||
public ScriptBG(string filePath)
|
public ScriptBG(string filePath)
|
||||||
{
|
{
|
||||||
@ -93,7 +97,8 @@ namespace TJAPlayer3
|
|||||||
LuaScript["func"] = new ScriptBGFunc(Textures, Path.GetDirectoryName(filePath));
|
LuaScript["func"] = new ScriptBGFunc(Textures, Path.GetDirectoryName(filePath));
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
using (var streamAPI = new StreamReader("BGScriptAPI.lua", Encoding.UTF8))
|
using (var streamAPI = new StreamReader("BGScriptAPI.lua", Encoding.UTF8))
|
||||||
{
|
{
|
||||||
using (var stream = new StreamReader(filePath, Encoding.UTF8))
|
using (var stream = new StreamReader(filePath, Encoding.UTF8))
|
||||||
@ -111,6 +116,12 @@ namespace TJAPlayer3
|
|||||||
LuaUpdate = LuaScript.GetFunction("update");
|
LuaUpdate = LuaScript.GetFunction("update");
|
||||||
LuaDraw = LuaScript.GetFunction("draw");
|
LuaDraw = LuaScript.GetFunction("draw");
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LuaScript.Dispose();
|
||||||
|
LuaScript = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
List<CTexture> texs = new List<CTexture>();
|
List<CTexture> texs = new List<CTexture>();
|
||||||
|
@ -153,6 +153,7 @@
|
|||||||
<Compile Include="Songs\C曲リストノードComparers\C曲リストノードComparerSubtitle.cs" />
|
<Compile Include="Songs\C曲リストノードComparers\C曲リストノードComparerSubtitle.cs" />
|
||||||
<Compile Include="Stages\01.StartUp\CCharacter.cs" />
|
<Compile Include="Stages\01.StartUp\CCharacter.cs" />
|
||||||
<Compile Include="Stages\01.StartUp\CPuchichara.cs" />
|
<Compile Include="Stages\01.StartUp\CPuchichara.cs" />
|
||||||
|
<Compile Include="Stages\07.Game\Taiko\EndAnimeScript.cs" />
|
||||||
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />
|
<Compile Include="Stages\07.Game\Taiko\NotesManager.cs" />
|
||||||
<Compile Include="Stages\07.Game\Taiko\ScriptBG.cs" />
|
<Compile Include="Stages\07.Game\Taiko\ScriptBG.cs" />
|
||||||
<Compile Include="Stages\15.OpenEncyclopedia\CEncyclopediaControler.cs" />
|
<Compile Include="Stages\15.OpenEncyclopedia\CEncyclopediaControler.cs" />
|
||||||
|
148
Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua
Normal file
148
Test/System/SimpleStyle/Graphics/5_Game/9_End/Clear/Script.lua
Normal file
@ -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
|
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
@ -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
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user