1
0
mirror of synced 2025-03-02 16:33:31 +01:00

Improve Tower animations (#521)

* Improve Tower Char animations

* oragnizing

* Update tower texture loading
This commit is contained in:
DragonRatTiger / リュウコ 2023-11-12 01:18:08 -05:00 committed by GitHub
parent a546a9b9c1
commit 27c85fd891
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 94 additions and 89 deletions

View File

@ -8507,17 +8507,6 @@ namespace TJAPlayer3
Characters_Motion_SoulIn,
Characters_Motion_SoulOut,
Characters_Motion_Return;
/*
Characters_Motion_Tower_Standing,
Characters_Motion_Tower_Climbing,
Characters_Motion_Tower_Running,
Characters_Motion_Tower_Clear,
Characters_Motion_Tower_Fail,
Characters_Motion_Tower_Standing_Tired,
Characters_Motion_Tower_Climbing_Tired,
Characters_Motion_Tower_Running_Tired,
Characters_Motion_Tower_Clear_Tired;
*/
public float[] Characters_Beat_Normal,
Characters_Beat_10Combo,
Characters_Beat_10Combo_Clear,
@ -8538,14 +8527,13 @@ namespace TJAPlayer3
Characters_Beat_SoulOut,
Characters_Beat_Return,
Characters_Beat_Tower_Standing,
Characters_Beat_Tower_Climbing,
Characters_Beat_Tower_Running,
Characters_Beat_Tower_Clear,
Characters_Beat_Tower_Fail,
Characters_Beat_Tower_Standing_Tired,
Characters_Beat_Tower_Climbing_Tired,
Characters_Beat_Tower_Running_Tired,
Characters_Beat_Tower_Fail,
Characters_Beat_Tower_Clear,
Characters_Beat_Tower_Clear_Tired;
public bool[] Characters_Tower_Clear_IsLooping,
Characters_Tower_Clear_Tired_IsLooping,
Characters_Tower_Fail_IsLooping;
public int[] Characters_Balloon_Timer;
public int[] Characters_Balloon_Delay;
public int[] Characters_Balloon_FadeOut;
@ -9148,6 +9136,7 @@ namespace TJAPlayer3
public int[] Game_Tower_Ptn_Deco,
Game_Tower_Ptn_Base;
public string[] Game_Tower_Names;
public int Game_Tower_Ptn_Result;
public int Game_Tower_Ptn_Don;

View File

@ -1109,7 +1109,7 @@ namespace TJAPlayer3
// Tower lifes
public int LIFE;
public int TOWERTYPE;
public string TOWERTYPE;
public int DANTICK = 0;
public Color DANTICKCOLOR = Color.White;
@ -7365,8 +7365,7 @@ namespace TJAPlayer3
}
else if (strCommandName.Equals("TOWERTYPE"))
{
var tt = (int)Convert.ToDouble(strCommandParam);
this.TOWERTYPE = tt;
this.TOWERTYPE = strCommandParam;
}
else if (strCommandName.Equals("DANTICK"))
{

View File

@ -102,7 +102,7 @@ namespace TJAPlayer3
// Tower lifes
public int nLife;
public int nTotalFloor;
public int nTowerType;
public string nTowerType;
public int nDanTick;
public Color cDanTickColor;

View File

@ -83,7 +83,7 @@ namespace TJAPlayer3
// Tower Lives
public int nLife = 5;
public int nTotalFloor = 140;
public int nTowerType = 0;
public string nTowerType;
// Unique id
public CSongUniqueID uniqueId;

View File

@ -911,7 +911,11 @@ namespace TJAPlayer3
Tower_Miss = TxC(GAME + TOWER + @$"Miss.png");
// Tower elements
TJAPlayer3.Skin.Game_Tower_Ptn = System.IO.Directory.GetDirectories(CSkin.Path(BASE + GAME + TOWER + TOWERFLOOR)).Length;
string[] towerDirectories = System.IO.Directory.GetDirectories(CSkin.Path(BASE + GAME + TOWER + TOWERFLOOR));
TJAPlayer3.Skin.Game_Tower_Ptn = towerDirectories.Length;
TJAPlayer3.Skin.Game_Tower_Names = new string[TJAPlayer3.Skin.Game_Tower_Ptn];
for (int i = 0; i < TJAPlayer3.Skin.Game_Tower_Ptn; i++)
TJAPlayer3.Skin.Game_Tower_Names[i] = new DirectoryInfo(towerDirectories[i]).Name;
Tower_Top = new CTexture[TJAPlayer3.Skin.Game_Tower_Ptn];
Tower_Base = new CTexture[TJAPlayer3.Skin.Game_Tower_Ptn][];
Tower_Deco = new CTexture[TJAPlayer3.Skin.Game_Tower_Ptn][];
@ -921,22 +925,22 @@ namespace TJAPlayer3
for (int i = 0; i < TJAPlayer3.Skin.Game_Tower_Ptn; i++)
{
TJAPlayer3.Skin.Game_Tower_Ptn_Base[i] = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + TOWER + TOWERFLOOR + i.ToString() + @$"{Path.DirectorySeparatorChar}Base{Path.DirectorySeparatorChar}"), "Base");
TJAPlayer3.Skin.Game_Tower_Ptn_Deco[i] = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + TOWER + TOWERFLOOR + i.ToString() + @$"{Path.DirectorySeparatorChar}Deco{Path.DirectorySeparatorChar}"), "Deco");
TJAPlayer3.Skin.Game_Tower_Ptn_Base[i] = TJAPlayer3.t連番画像の枚数を数える((towerDirectories[i] + @$"{Path.DirectorySeparatorChar}Base{Path.DirectorySeparatorChar}"), "Base");
TJAPlayer3.Skin.Game_Tower_Ptn_Deco[i] = TJAPlayer3.t連番画像の枚数を数える((towerDirectories[i] + @$"{Path.DirectorySeparatorChar}Deco{Path.DirectorySeparatorChar}"), "Deco");
Tower_Top[i] = TxC(GAME + TOWER + TOWERFLOOR + i.ToString() + @$"{Path.DirectorySeparatorChar}Top.png");
Tower_Top[i] = TxC(GAME + TOWER + TOWERFLOOR + TJAPlayer3.Skin.Game_Tower_Names[i] + @$"{Path.DirectorySeparatorChar}Top.png");
Tower_Base[i] = new CTexture[TJAPlayer3.Skin.Game_Tower_Ptn_Base[i]];
Tower_Deco[i] = new CTexture[TJAPlayer3.Skin.Game_Tower_Ptn_Deco[i]];
for (int j = 0; j < TJAPlayer3.Skin.Game_Tower_Ptn_Base[i]; j++)
{
Tower_Base[i][j] = TxC(GAME + TOWER + TOWERFLOOR + i.ToString() + @$"{Path.DirectorySeparatorChar}Base{Path.DirectorySeparatorChar}Base" + j.ToString() + ".png");
Tower_Base[i][j] = TxC(GAME + TOWER + TOWERFLOOR + TJAPlayer3.Skin.Game_Tower_Names[i] + @$"{Path.DirectorySeparatorChar}Base{Path.DirectorySeparatorChar}Base" + j.ToString() + ".png");
}
for (int j = 0; j < TJAPlayer3.Skin.Game_Tower_Ptn_Deco[i]; j++)
{
Tower_Deco[i][j] = TxC(GAME + TOWER + TOWERFLOOR + i.ToString() + @$"{Path.DirectorySeparatorChar}Deco{Path.DirectorySeparatorChar}Deco" + j.ToString() + ".png");
Tower_Deco[i][j] = TxC(GAME + TOWER + TOWERFLOOR + TJAPlayer3.Skin.Game_Tower_Names[i] + @$"{Path.DirectorySeparatorChar}Deco{Path.DirectorySeparatorChar}Deco" + j.ToString() + ".png");
}
}
@ -1274,6 +1278,9 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Tower_Climbing_Tired_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Tower_Running_Tired_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Tower_Clear_IsLooping = new bool[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Tower_Clear_Tired_IsLooping = new bool[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Tower_Fail_IsLooping = new bool[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Resolution = new int[TJAPlayer3.Skin.Characters_Ptn][];
TJAPlayer3.Skin.Characters_Heya_Render_Offset = new int[TJAPlayer3.Skin.Characters_Ptn][];
@ -1338,13 +1345,9 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Beat_SoulOut = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Return = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Standing = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Running = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Clear = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Fail = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing_Tired = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Running_Tired = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Tower_Clear_Tired = new float[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Timer = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Delay = new int[TJAPlayer3.Skin.Characters_Ptn];
@ -1920,13 +1923,9 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Beat_SoulOut[i] = 1.5f;
TJAPlayer3.Skin.Characters_Beat_Return[i] = 1.5f;
TJAPlayer3.Skin.Characters_Beat_Tower_Standing[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Running[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Clear[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Fail[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing_Tired[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Running_Tired[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Tower_Clear_Tired[i] = 1;
TJAPlayer3.Skin.Characters_Balloon_Timer[i] = 28;
TJAPlayer3.Skin.Characters_Balloon_Delay[i] = 500;
@ -2311,19 +2310,9 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Beat_Tower_Standing[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Climbing":
case "Game_Chara_Beat_Tower_Standing_Tired":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Running":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Running[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Clear":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Clear[i] = float.Parse(strParam);
TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Fail":
@ -2331,19 +2320,9 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Beat_Tower_Fail[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Standing_Tired":
case "Game_Chara_Beat_Tower_Clear":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Climbing_Tired":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Climbing_Tired[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Running_Tired":
{
TJAPlayer3.Skin.Characters_Beat_Tower_Running_Tired[i] = float.Parse(strParam);
TJAPlayer3.Skin.Characters_Beat_Tower_Clear[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Beat_Tower_Clear_Tired":
@ -2351,6 +2330,21 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Beat_Tower_Clear_Tired[i] = float.Parse(strParam);
break;
}
case "Game_Chara_Tower_Clear_IsLooping":
{
TJAPlayer3.Skin.Characters_Tower_Clear_IsLooping[i] = int.Parse(strParam) != 0;
break;
}
case "Game_Chara_Tower_Clear_Tired_IsLooping":
{
TJAPlayer3.Skin.Characters_Tower_Clear_Tired_IsLooping[i] = int.Parse(strParam) != 0;
break;
}
case "Game_Chara_Tower_Fail_IsLooping":
{
TJAPlayer3.Skin.Characters_Tower_Fail_IsLooping[i] = int.Parse(strParam) != 0;
break;
}
case "Chara_Entry_AnimationDuration":
{
TJAPlayer3.Skin.Characters_Title_Entry_AnimationDuration[i] = int.Parse(strParam);

View File

@ -384,12 +384,12 @@ namespace TJAPlayer3
int xFactor = 0;
float yFactor = 1f;
int currentTowerType = TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType;
int currentTowerType = Array.IndexOf(TJAPlayer3.Skin.Game_Tower_Names, TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType);
if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn_Result)
if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn)
currentTowerType = 0;
if (TJAPlayer3.Tx.TowerResult_Background != null && TJAPlayer3.Tx.TowerResult_Tower[currentTowerType] != null)
if (TJAPlayer3.Tx.TowerResult_Background != null && currentTowerType < TJAPlayer3.Tx.TowerResult_Tower.Length && TJAPlayer3.Tx.TowerResult_Tower[currentTowerType] != null)
{
xFactor = (TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Width - TJAPlayer3.Tx.TowerResult_Tower[currentTowerType].szテクスチャサイズ.Width) / 2;
yFactor = TJAPlayer3.Tx.TowerResult_Tower[currentTowerType].szテクスチャサイズ.Height / (float)TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Height;
@ -399,7 +399,9 @@ namespace TJAPlayer3
((ct待機.CurrentValue <= 1200 ? ct待機.CurrentValue / 10f : 120) / 120f * (TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Height - TJAPlayer3.Skin.Resolution[1]));
TJAPlayer3.Tx.TowerResult_Background?.t2D描画(0, -1 * pos);
TJAPlayer3.Tx.TowerResult_Tower[currentTowerType]?.t2D描画(xFactor, -1 * yFactor * pos);
if (currentTowerType < TJAPlayer3.Tx.TowerResult_Tower.Length)
TJAPlayer3.Tx.TowerResult_Tower[currentTowerType]?.t2D描画(xFactor, -1 * yFactor * pos);
}
#endregion

View File

@ -237,7 +237,7 @@ namespace TJAPlayer3
this.ctSlideAnimation = new CCounter();
this.ctClimbDuration = new CCounter();
this.ctStandingAnimation = new CCounter(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Standing[currentCharacter]) / ((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.n演奏速度 / 20), TJAPlayer3.Timer);
this.ctStandingAnimation = new CCounter(0, 1000, (60000f / (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.n演奏速度 / 20)) * TJAPlayer3.Skin.Characters_Beat_Tower_Standing[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter], TJAPlayer3.Timer);
this.ctClimbingAnimation = new CCounter();
this.ctRunningAnimation = new CCounter();
this.ctClearAnimation = new CCounter();
@ -247,6 +247,8 @@ namespace TJAPlayer3
this.ctRunTiredAnimation = new CCounter();
this.ctClearTiredAnimation = new CCounter();
TowerFinished = false;
base.Activate();
}
@ -414,7 +416,7 @@ namespace TJAPlayer3
int nightTime = Math.Max(140, maxFloor / 2);
int currentTowerType = TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType;
int currentTowerType = Array.IndexOf(TJAPlayer3.Skin.Game_Tower_Names, TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType);
if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn)
currentTowerType = 0;
@ -432,11 +434,14 @@ namespace TJAPlayer3
#region [Skybox]
int skyboxYPosition = (int)((TJAPlayer3.Tx.Tower_Sky_Gradient.szテクスチャサイズ.Height - TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[1]) * (1f - (currentFloorPositionMax140 + progressFactor)));
TJAPlayer3.Tx.Tower_Sky_Gradient?.t2D描画(TJAPlayer3.Skin.Game_Tower_Sky_Gradient[0], TJAPlayer3.Skin.Game_Tower_Sky_Gradient[1],
new Rectangle(0, skyboxYPosition, TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[0], TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[1]));
//int skyboxYPosition = (int)((TJAPlayer3.Tx.Tower_Sky_Gradient.szテクスチャサイズ.Height - TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[1]) * (1f - (currentFloorPositionMax140 + progressFactor)));
//TJAPlayer3.Tx.Tower_Sky_Gradient?.t2D描画(TJAPlayer3.Skin.Game_Tower_Sky_Gradient[0], TJAPlayer3.Skin.Game_Tower_Sky_Gradient[1],
//new Rectangle(0, skyboxYPosition, TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[0], TJAPlayer3.Skin.Game_Tower_Sky_Gradient_Size[1]));
if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DownScript.Update();
DownScript.Draw();
#endregion
@ -506,23 +511,32 @@ namespace TJAPlayer3
bool ctIsTired = !((CFloorManagement.CurrentNumberOfLives / (float)CFloorManagement.MaxNumberOfLives) >= 0.2f && !(CFloorManagement.CurrentNumberOfLives == 1 && CFloorManagement.MaxNumberOfLives != 1));
bool stageEnded = TJAPlayer3.stage演奏ドラム画面.eフェーズID == CStage.Eフェーズ._演奏終了演出 || TJAPlayer3.stage演奏ドラム画面.eフェーズID == CStage.Eフェーズ._STAGE_CLEAR_フェードアウト;
bool stageEnded = TJAPlayer3.stage演奏ドラム画面.eフェーズID == CStage.Eフェーズ._演奏終了演出 || TJAPlayer3.stage演奏ドラム画面.eフェーズID == CStage.Eフェーズ._STAGE_CLEAR_フェードアウト || CFloorManagement.CurrentNumberOfLives == 0;
if (bFloorChanged == true)
{
float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.n演奏速度 / 20);
ctClimbDuration.Start(0, 1500, 120f / floorBPM, TJAPlayer3.Timer);
ctStandingAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Standing[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctClimbingAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Climbing[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctRunningAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Running[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctClearAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Clear[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctFailAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Fail[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctStandTiredAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctClimbTiredAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Climbing_Tired[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctRunTiredAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Running_Tired[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctClearTiredAnimation.Start(0, 1000, (12000f * TJAPlayer3.Skin.Characters_Beat_Tower_Clear_Tired[currentCharacter]) / floorBPM, TJAPlayer3.Timer);
ctStandingAnimation.Start(0, 1000, (60000f / floorBPM) * TJAPlayer3.Skin.Characters_Beat_Tower_Standing[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter], TJAPlayer3.Timer);
ctClimbingAnimation.Start(0, 1000, (120000f / floorBPM) / TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter], TJAPlayer3.Timer);
ctRunningAnimation.Start(0, 1000, (60000f / floorBPM) / TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter], TJAPlayer3.Timer);
ctStandTiredAnimation.Start(0, 1000, (60000f / floorBPM) * TJAPlayer3.Skin.Characters_Beat_Tower_Standing_Tired[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Standing_Tired_Ptn[currentCharacter], TJAPlayer3.Timer);
ctClimbTiredAnimation.Start(0, 1000, (120000f / floorBPM) / TJAPlayer3.Skin.Characters_Tower_Climbing_Tired_Ptn[currentCharacter], TJAPlayer3.Timer);
ctRunTiredAnimation.Start(0, 1000, (60000f / floorBPM) / TJAPlayer3.Skin.Characters_Tower_Running_Tired_Ptn[currentCharacter], TJAPlayer3.Timer);
}
if (ctClimbDuration.CurrentValue > 0 && ctClimbDuration.CurrentValue < 1500)
bool isClimbing = ctClimbDuration.CurrentValue > 0 && ctClimbDuration.CurrentValue < 1500;
if (stageEnded && !TowerFinished && !isClimbing)
{
float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.n演奏速度 / 20);
ctClearAnimation.Start(0, 20000, (60000f / floorBPM) * TJAPlayer3.Skin.Characters_Beat_Tower_Clear[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Clear_Ptn[currentCharacter], TJAPlayer3.Timer);
ctClearTiredAnimation.Start(0, 20000, (60000f / floorBPM) * TJAPlayer3.Skin.Characters_Beat_Tower_Clear_Tired[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn[currentCharacter], TJAPlayer3.Timer);
ctFailAnimation.Start(0, 20000, (60000f / floorBPM) * TJAPlayer3.Skin.Characters_Beat_Tower_Fail[currentCharacter] / TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter], TJAPlayer3.Timer);
TowerFinished = true;
}
if (isClimbing)
{
// Tired Climb
if (ctIsTired && (ctClimbDuration.CurrentValue <= 1000) && TJAPlayer3.Skin.Characters_Tower_Climbing_Tired_Ptn[currentCharacter] > 0)
@ -562,26 +576,32 @@ namespace TJAPlayer3
// Fail
if (TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter] > 0 && CFloorManagement.CurrentNumberOfLives == 0)
{
int animChar = ctFailAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter];
int animChar = TJAPlayer3.Skin.Characters_Tower_Fail_IsLooping[currentCharacter] ?
ctFailAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter] :
Math.Min(ctFailAnimation.CurrentValue, TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter] - 1);
TJAPlayer3.Tx.Characters_Tower_Fail[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]);
}
// Tired Clear
else if (ctIsTired && stageEnded && TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn[currentCharacter] > 0 && CFloorManagement.CurrentNumberOfLives > 0)
{
int animChar = ctClearTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn[currentCharacter];
int animChar = TJAPlayer3.Skin.Characters_Tower_Clear_Tired_IsLooping[currentCharacter] ?
ctClearTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn[currentCharacter] :
Math.Min(ctClearTiredAnimation.CurrentValue, TJAPlayer3.Skin.Characters_Tower_Clear_Tired_Ptn[currentCharacter] - 1);
TJAPlayer3.Tx.Characters_Tower_Clear_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]);
}
// Clear
else if (stageEnded && TJAPlayer3.Skin.Characters_Tower_Clear_Ptn[currentCharacter] > 0 && CFloorManagement.CurrentNumberOfLives > 0)
{
int animChar = ctClearAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Clear_Ptn[currentCharacter];
int animChar = TJAPlayer3.Skin.Characters_Tower_Clear_IsLooping[currentCharacter] ?
ctClearAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Clear_Ptn[currentCharacter] :
Math.Min(ctClearAnimation.CurrentValue, TJAPlayer3.Skin.Characters_Tower_Clear_Ptn[currentCharacter] - 1);
TJAPlayer3.Tx.Characters_Tower_Clear[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]);
}
// Tired Stand
else if (ctIsTired && TJAPlayer3.Skin.Characters_Tower_Standing_Tired_Ptn[currentCharacter] > 0)
{
int animChar = ctStandTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter];
int animChar = ctStandTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Standing_Tired_Ptn[currentCharacter];
TJAPlayer3.Tx.Characters_Tower_Standing_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]); // Center X - 50
}
// Stand
@ -610,12 +630,12 @@ namespace TJAPlayer3
ctStandingAnimation?.TickLoop();
ctClimbingAnimation?.TickLoop();
ctRunningAnimation?.TickLoop();
ctClearAnimation?.TickLoop();
ctFailAnimation?.TickLoop();
ctStandTiredAnimation?.TickLoop();
ctClimbTiredAnimation?.TickLoop();
ctRunTiredAnimation?.TickLoop();
ctClearTiredAnimation?.TickLoop();
ctClearAnimation?.Tick();
ctClearTiredAnimation?.Tick();
ctFailAnimation?.Tick();
#endregion
}
@ -687,6 +707,7 @@ namespace TJAPlayer3
private CCounter ctRunTiredAnimation;
private CCounter ctClearTiredAnimation;
private CCounter ctClimbDuration;
private bool TowerFinished;
private CCounter ct炎;

View File

@ -1434,7 +1434,7 @@ namespace TJAPlayer3
int xFactor = 0;
float yFactor = 1f;
int currentTowerType = TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType;
int currentTowerType = Array.IndexOf(TJAPlayer3.Skin.Game_Tower_Names, TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTowerType);
if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn_Result)
currentTowerType = 0;