1
0
mirror of synced 2025-01-18 17:14:07 +01:00

キャラクターのミスアニメーションに対応 (#213)

* ミスと復帰のアニメーションに対応

* 続けてミスのアニメーションに対応
This commit is contained in:
Takkkom 2022-05-31 18:20:22 +09:00 committed by GitHub
parent 4967545d37
commit f326ff7c9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 284 additions and 49 deletions

View File

@ -2673,6 +2673,8 @@ namespace TJAPlayer3
public int Characters_Ptn;
public int[] Characters_Normal_Ptn,
Characters_Normal_Missed_Ptn,
Characters_Normal_MissedDown_Ptn,
Characters_Normal_Cleared_Ptn,
Characters_Normal_Maxed_Ptn,
Characters_GoGoTime_Ptn,
@ -2683,6 +2685,7 @@ namespace TJAPlayer3
Characters_GoGoStart_Maxed_Ptn,
Characters_Become_Cleared_Ptn,
Characters_Become_Maxed_Ptn,
Characters_Return_Ptn,
Characters_Balloon_Breaking_Ptn,
Characters_Balloon_Broke_Ptn,
Characters_Balloon_Miss_Ptn,
@ -2714,9 +2717,13 @@ namespace TJAPlayer3
public int[][] Characters_Balloon_X;
public int[][] Characters_Balloon_Y;
public string[] Characters_Motion_Normal,
Characters_Motion_Miss,
Characters_Motion_MissDown,
Characters_Motion_Clear,
Characters_Motion_GoGo;
public int[] Characters_Beat_Normal;
public int[] Characters_Beat_Miss;
public int[] Characters_Beat_MissDown;
public int[] Characters_Beat_Clear;
public int[] Characters_Beat_GoGo;
public int[] Characters_Balloon_Timer;

View File

@ -963,6 +963,8 @@ namespace TJAPlayer3
Characters_Heya_Preview = new CTexture[TJAPlayer3.Skin.Characters_Ptn];
Characters_Normal = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Normal_Missed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Normal_MissedDown = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Normal_Cleared = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Normal_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_GoGoTime = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
@ -973,6 +975,7 @@ namespace TJAPlayer3
Characters_GoGoStart_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Become_Cleared = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Become_Maxed = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Return = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Balloon_Breaking = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Balloon_Broke = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
Characters_Balloon_Miss = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
@ -987,6 +990,8 @@ namespace TJAPlayer3
Characters_Menu_Select = new CTexture[TJAPlayer3.Skin.Characters_Ptn][];
TJAPlayer3.Skin.Characters_Normal_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Normal_Missed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_GoGoTime_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
@ -997,6 +1002,7 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Become_Cleared_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Become_Maxed_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Return_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn = new int[TJAPlayer3.Skin.Characters_Ptn];
@ -1023,9 +1029,13 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Balloon_X = new int[TJAPlayer3.Skin.Characters_Ptn][];
TJAPlayer3.Skin.Characters_Balloon_Y = new int[TJAPlayer3.Skin.Characters_Ptn][];
TJAPlayer3.Skin.Characters_Motion_Normal = new string[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Motion_Miss = new string[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Motion_MissDown = new string[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Motion_Clear = new string[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Motion_GoGo = new string[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Normal = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Miss = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_MissDown = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_Clear = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Beat_GoGo = new int[TJAPlayer3.Skin.Characters_Ptn];
TJAPlayer3.Skin.Characters_Balloon_Timer = new int[TJAPlayer3.Skin.Characters_Ptn];
@ -1119,6 +1129,12 @@ namespace TJAPlayer3
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Ptn[i]; j++)
Characters_Normal[i][j]?.Dispose();
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i]; j++)
Characters_Normal_Missed[i][j]?.Dispose();
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i]; j++)
Characters_Normal_MissedDown[i][j]?.Dispose();
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i]; j++)
Characters_Normal_Cleared[i][j]?.Dispose();
@ -1149,6 +1165,9 @@ namespace TJAPlayer3
for (int j = 0; j < TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]; j++)
Characters_Become_Maxed[i][j]?.Dispose();
for (int j = 0; j < TJAPlayer3.Skin.Characters_Return_Ptn[i]; j++)
Characters_Return[i][j]?.Dispose();
for (int j = 0; j < TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i]; j++)
Characters_Balloon_Breaking[i][j]?.Dispose();
@ -1172,6 +1191,8 @@ namespace TJAPlayer3
string charaPath = TJAPlayer3.strEXEのあるフォルダ + GLOBAL + CHARACTERS + i.ToString();
TJAPlayer3.Skin.Characters_Normal_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Normal\");
TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Miss\");
TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\MissDown\");
TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Clear\");
TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Clear_Max\");
TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\GoGo\");
@ -1182,6 +1203,7 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\GoGoStart_Max\");
TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Clearin\");
TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Soulin\");
TJAPlayer3.Skin.Characters_Return_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Return\");
TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Balloon_Breaking\");
TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Balloon_Broke\");
TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Balloon_Miss\");
@ -1196,6 +1218,8 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Result_Normal_Ptn[i] = TJAPlayer3.t連番画像の枚数を数える(charaPath + @"\Result_Normal\");
Characters_Normal[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Ptn[i]];
Characters_Normal_Missed[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i]];
Characters_Normal_MissedDown[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i]];
Characters_Normal_Cleared[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i]];
Characters_Normal_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[i]];
Characters_GoGoTime[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoTime_Ptn[i]];
@ -1206,6 +1230,7 @@ namespace TJAPlayer3
Characters_GoGoStart_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[i]];
Characters_Become_Cleared[i] = new CTexture[TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[i]];
Characters_Become_Maxed[i] = new CTexture[TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]];
Characters_Return[i] = new CTexture[TJAPlayer3.Skin.Characters_Return_Ptn[i]];
Characters_Balloon_Breaking[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i]];
Characters_Balloon_Broke[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[i]];
Characters_Balloon_Miss[i] = new CTexture[TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[i]];
@ -1253,6 +1278,12 @@ namespace TJAPlayer3
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Ptn[i]; j++)
Characters_Normal[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Normal\" + j.ToString() + @".png");
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[i]; j++)
Characters_Normal_Missed[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Miss\" + j.ToString() + @".png");
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[i]; j++)
Characters_Normal_MissedDown[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\MissDown\" + j.ToString() + @".png");
for (int j = 0; j < TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[i]; j++)
Characters_Normal_Cleared[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Clear\" + j.ToString() + @".png");
@ -1283,6 +1314,9 @@ namespace TJAPlayer3
for (int j = 0; j < TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[i]; j++)
Characters_Become_Maxed[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Soulin\" + j.ToString() + @".png");
for (int j = 0; j < TJAPlayer3.Skin.Characters_Return_Ptn[i]; j++)
Characters_Return[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Return\" + j.ToString() + @".png");
for (int j = 0; j < TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[i]; j++)
Characters_Balloon_Breaking[i][j] = TxCGlobal(CHARACTERS + i.ToString() + @"\Balloon_Breaking\" + j.ToString() + @".png");
@ -1312,9 +1346,13 @@ namespace TJAPlayer3
TJAPlayer3.Skin.Characters_Balloon_X[i] = new int[] { 240, 240, 0, 0 };
TJAPlayer3.Skin.Characters_Balloon_Y[i] = new int[] { 0, 297, 0, 0 };
TJAPlayer3.Skin.Characters_Motion_Normal[i] = "0";
TJAPlayer3.Skin.Characters_Motion_Miss[i] = "0";
TJAPlayer3.Skin.Characters_Motion_MissDown[i] = "0";
TJAPlayer3.Skin.Characters_Motion_Clear[i] = "0";
TJAPlayer3.Skin.Characters_Motion_GoGo[i] = "0";
TJAPlayer3.Skin.Characters_Beat_Normal[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Miss[i] = 1;
TJAPlayer3.Skin.Characters_Beat_MissDown[i] = 1;
TJAPlayer3.Skin.Characters_Beat_Clear[i] = 2;
TJAPlayer3.Skin.Characters_Beat_GoGo[i] = 2;
TJAPlayer3.Skin.Characters_Balloon_Timer[i] = 28;
@ -1450,6 +1488,14 @@ namespace TJAPlayer3
{
TJAPlayer3.Skin.Characters_Motion_Normal[i] = strParam;
}
else if (strCommand == "Game_Chara_Motion_Miss")
{
TJAPlayer3.Skin.Characters_Motion_Miss[i] = strParam;
}
else if (strCommand == "Game_Chara_Motion_MissDown")
{
TJAPlayer3.Skin.Characters_Motion_MissDown[i] = strParam;
}
else if (strCommand == "Game_Chara_Motion_Clear")
{
TJAPlayer3.Skin.Characters_Motion_Clear[i] = strParam;
@ -1462,6 +1508,14 @@ namespace TJAPlayer3
{
TJAPlayer3.Skin.Characters_Beat_Normal[i] = int.Parse(strParam);
}
else if (strCommand == "Game_Chara_Beat_Miss")
{
TJAPlayer3.Skin.Characters_Beat_Miss[i] = int.Parse(strParam);
}
else if (strCommand == "Game_Chara_Beat_MissDown")
{
TJAPlayer3.Skin.Characters_Beat_MissDown[i] = int.Parse(strParam);
}
else if (strCommand == "Game_Chara_Beat_Clear")
{
TJAPlayer3.Skin.Characters_Beat_Clear[i] = int.Parse(strParam);
@ -1930,6 +1984,8 @@ namespace TJAPlayer3
#region [11_Characters]
public CTexture[][] Characters_Normal,
Characters_Normal_Missed,
Characters_Normal_MissedDown,
Characters_Normal_Cleared,
Characters_Normal_Maxed,
Characters_GoGoTime,
@ -1940,6 +1996,7 @@ namespace TJAPlayer3
Characters_GoGoStart_Maxed,
Characters_Become_Cleared,
Characters_Become_Maxed,
Characters_Return,
Characters_Balloon_Breaking,
Characters_Balloon_Broke,
Characters_Balloon_Miss,

View File

@ -256,7 +256,8 @@ namespace TJAPlayer3
this.tステータスパネルの選択();
this.tパネル文字列の設定();
//this.演奏判定ライン座標();
this.bIsGOGOTIME = new bool[]{ false, false, false, false };
this.bIsGOGOTIME = new bool[] { false, false, false, false };
this.bIsMiss = new bool[] { false, false, false, false };
this.bUseBranch = new bool[]{ false, false, false, false };
this.n現在のコース = new CDTX.ECourse[4];
this.n次回のコース = new CDTX.ECourse[4];
@ -287,6 +288,7 @@ namespace TJAPlayer3
this.n現在の連打数 = new int[]{ 0, 0, 0, 0 };
this.n合計連打数 = new int[]{ 0, 0, 0, 0 };
this.n分岐した回数 = new int[ 4 ];
this.Chara_MissCount = new int[4];
for (int i = 0; i < 2; i++)
{
ShownLyric[i] = 0;
@ -652,6 +654,7 @@ namespace TJAPlayer3
public CBRANCHSCORE[] CChartScore = new CBRANCHSCORE[2];
public bool[] bIsGOGOTIME = new bool[4];
public bool[] bIsMiss = new bool[4];
public bool[] bUseBranch = new bool[ 4 ];
public CDTX.ECourse[] n現在のコース = new CDTX.ECourse[4]; //0:普通譜面 1:玄人譜面 2:達人譜面
public CDTX.ECourse[] n次回のコース = new CDTX.ECourse[4];
@ -669,6 +672,7 @@ namespace TJAPlayer3
private int[] n合計連打数 = new int[ 4 ];
protected int[] n風船残り = new int[ 4 ];
protected int[] n現在の連打数 = new int[ 4 ];
public int[] Chara_MissCount;
protected E連打State eRollState;
protected int nタイマ番号;
@ -1544,6 +1548,29 @@ namespace TJAPlayer3
}
cInvisibleChip.ShowChipTemporally( pChip.e楽器パート );
}
void returnChara()
{
int Character = this.actChara.iCurrentCharacter[nPlayer];
double dbUnit = (((60.0 / (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM))));
dbUnit = (((60.0 / pChip.dbBPM)));
if (TJAPlayer3.Skin.Characters_Return_Ptn[Character] != 0 && !bIsGOGOTIME[nPlayer] && actChara.CharaAction_Balloon_Delay[nPlayer].b終了値に達した)
{
{
// 魂ゲージMAXではない
// ジャンプ_ーマル
this.actChara.(nPlayer);
this.actChara.ctキャラクターアクション_Return[nPlayer] = new CCounter(0, TJAPlayer3.Skin.Characters_Return_Ptn[Character] - 1, (dbUnit / TJAPlayer3.Skin.Characters_Return_Ptn[Character]) * 2, CSound管理.rc演奏用タイマ);
this.actChara.ctキャラクターアクション_Return[nPlayer].t進行db();
this.actChara.ctキャラクターアクション_Return[nPlayer].n現在の値 = 0;
this.actChara.bマイどんアクション中[nPlayer] = true;
//this.actChara.マイどん_アクション_10コンボ();
}
}
}
switch ( pChip.e楽器パート )
{
case E楽器パート.DRUMS:
@ -1565,6 +1592,7 @@ namespace TJAPlayer3
this.CBranchScore[nPlayer].nGreat++;
this.CChartScore[nPlayer].nGreat++;
this.Chara_MissCount[nPlayer] = 0;
if ( nPlayer == 0 ) this.nヒット数_Auto含まない.Drums.Perfect++;
this.actCombo.n現在のコンボ数[nPlayer]++;
@ -1580,6 +1608,13 @@ namespace TJAPlayer3
{
this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 0;
}
if (this.bIsMiss[nPlayer])
{
returnChara();
}
this.bIsMiss[nPlayer] = false;
}
break;
case E判定.Great:
@ -1587,6 +1622,7 @@ namespace TJAPlayer3
{
this.CBranchScore[nPlayer].nGood++;
this.CChartScore[nPlayer].nGood++;
this.Chara_MissCount[nPlayer] = 0;
if ( nPlayer == 0 ) this.nヒット数_Auto含まない.Drums.Great++;
this.actCombo.n現在のコンボ数[ nPlayer ]++;
@ -1603,6 +1639,12 @@ namespace TJAPlayer3
this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 0;
}
if (this.bIsMiss[nPlayer])
{
returnChara();
}
this.bIsMiss[nPlayer] = false;
}
break;
case E判定.Poor:
@ -1620,10 +1662,13 @@ namespace TJAPlayer3
this.CBranchScore[nPlayer].nMiss++;
this.CChartScore[nPlayer].nMiss++;
this.Chara_MissCount[nPlayer]++;
if ( nPlayer == 0 ) this.nヒット数_Auto含まない.Drums.Miss++;
this.actCombo.n現在のコンボ数[ nPlayer ] = 0;
this.actComboVoice.tReset(nPlayer);
this.bIsMiss[nPlayer] = true;
}
break;
default:
@ -1647,6 +1692,7 @@ namespace TJAPlayer3
this.CBranchScore[nPlayer].nGreat++;
this.CChartScore[nPlayer].nGreat++;
this.Chara_MissCount[nPlayer] = 0;
if ( nPlayer == 0 ) this.nヒット数_Auto含む.Drums.Perfect++;
this.actCombo.n現在のコンボ数[ nPlayer ]++;
@ -1659,6 +1705,13 @@ namespace TJAPlayer3
{
this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 0;
}
if (this.bIsMiss[nPlayer])
{
returnChara();
}
this.bIsMiss[nPlayer] = false;
}
}
break;
@ -1673,6 +1726,7 @@ namespace TJAPlayer3
this.CBranchScore[nPlayer].nGood++;
this.CChartScore[nPlayer].nGood++;
this.Chara_MissCount[nPlayer] = 0;
if (nPlayer == 0) this.nヒット数_Auto含む.Drums.Great++;
this.actCombo.n現在のコンボ数[nPlayer]++;
@ -1685,6 +1739,13 @@ namespace TJAPlayer3
{
this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 0;
}
if (this.bIsMiss[nPlayer])
{
returnChara();
}
this.bIsMiss[nPlayer] = false;
}
}
break;
@ -1703,10 +1764,13 @@ namespace TJAPlayer3
this.CBranchScore[nPlayer].nMiss++;
this.CChartScore[nPlayer].nMiss++;
this.Chara_MissCount[nPlayer]++;
this.actCombo.n現在のコンボ数[ nPlayer ] = 0;
this.actComboVoice.tReset(nPlayer);
this.bIsMiss[nPlayer] = true;
}
}
break;
@ -3124,6 +3188,26 @@ namespace TJAPlayer3
this.actChara.ctChara_Normal[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[chara] != 0)
{
double dbPtn_Miss = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Miss[chara] / this.actChara.arMissモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
this.actChara.ctChara_Miss[nPlayer] = new CCounter(0, this.actChara.arMissモーション番号[nPlayer].Length - 1, dbPtn_Miss, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_Miss[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[chara] != 0)
{
double dbPtn_MissDown = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_MissDown[chara] / this.actChara.arMissDownモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
this.actChara.ctChara_MissDown[nPlayer] = new CCounter(0, this.actChara.arMissDownモーション番号[nPlayer].Length - 1, dbPtn_MissDown, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_MissDown[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[chara] != 0)
{
double dbPtn_Clear = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Clear[chara] / this.actChara.arクリアモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
@ -3328,6 +3412,24 @@ namespace TJAPlayer3
{
this.actChara.ctChara_Normal[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[chara] != 0)
{
double dbPtn_Miss = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Miss[chara] / this.actChara.arMissモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
this.actChara.ctChara_Miss[nPlayer] = new CCounter(0, this.actChara.arMissモーション番号[nPlayer].Length - 1, dbPtn_Miss, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_Miss[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[chara] != 0)
{
double dbPtn_MissDown = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_MissDown[chara] / this.actChara.arMissDownモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
this.actChara.ctChara_MissDown[nPlayer] = new CCounter(0, this.actChara.arMissDownモーション番号[nPlayer].Length - 1, dbPtn_MissDown, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_MissDown[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[chara] != 0)
{
double dbPtn_Clear = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Clear[chara] / this.actChara.arクリアモーション番号[nPlayer].Length / (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0);
@ -4084,6 +4186,7 @@ namespace TJAPlayer3
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{
this.bIsGOGOTIME[ i ] = false;
this.bIsMiss[i] = false;
this.bLEVELHOLD[ i ] = false;
this.b強制的に分岐させた[ i ] = false;
this.b譜面分岐中[ i ] = false;

View File

@ -30,6 +30,8 @@ namespace TJAPlayer3
for(int i = 0; i < 2; i++)
{
ctChara_Normal[i] = new CCounter();
ctChara_Miss[i] = new CCounter();
ctChara_MissDown[i] = new CCounter();
ctChara_GoGo[i] = new CCounter();
ctChara_Clear[i] = new CCounter();
@ -39,6 +41,7 @@ namespace TJAPlayer3
this.ctキャラクターアクション_ゴーゴースタートMAX[i] = new CCounter();
this.ctキャラクターアクション_ルマ[i] = new CCounter();
this.ctキャラクターアクション_魂MAX[i] = new CCounter();
this.ctキャラクターアクション_Return[i] = new CCounter();
CharaAction_Balloon_Breaking[i] = new CCounter();
CharaAction_Balloon_Broke[i] = new CCounter();
@ -81,6 +84,8 @@ namespace TJAPlayer3
for (int i = 0; i < 2; i++)
{
ctChara_Normal[i] = null;
ctChara_Miss[i] = null;
ctChara_MissDown[i] = null;
ctChara_GoGo[i] = null;
ctChara_Clear[i] = null;
this.ctキャラクターアクション_10コンボ[i] = null;
@ -89,6 +94,7 @@ namespace TJAPlayer3
this.ctキャラクターアクション_ゴーゴースタートMAX[i] = null;
this.ctキャラクターアクション_ルマ[i] = null;
this.ctキャラクターアクション_魂MAX[i] = null;
this.ctキャラクターアクション_Return[i] = null;
CharaAction_Balloon_Breaking[i] = null;
CharaAction_Balloon_Broke[i] = null;
@ -106,14 +112,20 @@ namespace TJAPlayer3
for (int i = 0; i < 2; i++)
{
this.arモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す(TJAPlayer3.Skin.Characters_Motion_Normal[this.iCurrentCharacter[i]]);
this.arMissモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す(TJAPlayer3.Skin.Characters_Motion_Miss[this.iCurrentCharacter[i]]);
this.arMissDownモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す(TJAPlayer3.Skin.Characters_Motion_MissDown[this.iCurrentCharacter[i]]);
this.arゴーゴーモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す(TJAPlayer3.Skin.Characters_Motion_GoGo[this.iCurrentCharacter[i]]);
this.arクリアモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す(TJAPlayer3.Skin.Characters_Motion_Clear[this.iCurrentCharacter[i]]);
if (arモーション番号[i] == null) this.arモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す("0,0");
if (arMissモーション番号[i] == null) this.arMissモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す("0,0");
if (arMissDownモーション番号[i] == null) this.arMissDownモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す("0,0");
if (arゴーゴーモーション番号[i] == null) this.arゴーゴーモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す("0,0");
if (arクリアモーション番号[i] == null) this.arクリアモーション番号[i] = C変換.ar配列形式のstringをint配列に変換して返す("0,0");
ctChara_Normal[i] = new CCounter(0, arモーション番号[i].Length - 1, 10, CSound管理.rc演奏用タイマ);
ctChara_Miss[i] = new CCounter(0, arMissモーション番号[i].Length - 1, 10, CSound管理.rc演奏用タイマ);
ctChara_MissDown[i] = new CCounter(0, arMissDownモーション番号[i].Length - 1, 10, CSound管理.rc演奏用タイマ);
ctChara_GoGo[i] = new CCounter(0, arゴーゴーモーション番号[i].Length - 1, 10, CSound管理.rc演奏用タイマ);
ctChara_Clear[i] = new CCounter(0, arクリアモーション番号[i].Length - 1, 10, CSound管理.rc演奏用タイマ);
if (CharaAction_Balloon_Delay[i] != null) CharaAction_Balloon_Delay[i].n現在の値 = (int)CharaAction_Balloon_Delay[i].n終了値;
@ -136,6 +148,8 @@ namespace TJAPlayer3
break;
if (ctChara_Normal != null || TJAPlayer3.Skin.Characters_Normal_Ptn[Character] != 0) ctChara_Normal[i].t進行LoopDb();
if (ctChara_Miss != null || TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[Character] != 0) ctChara_Miss[i].t進行LoopDb();
if (ctChara_MissDown != null || TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[Character] != 0) ctChara_MissDown[i].t進行LoopDb();
if (ctChara_GoGo != null || TJAPlayer3.Skin.Characters_GoGoTime_Ptn[Character] != 0) ctChara_GoGo[i].t進行LoopDb();
if (ctChara_Clear != null || TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[Character] != 0) ctChara_Clear[i].t進行LoopDb();
@ -145,6 +159,7 @@ namespace TJAPlayer3
if (this.ctキャラクターアクション_ゴーゴースタートMAX != null || TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0) this.ctキャラクターアクション_ゴーゴースタートMAX[i].t進行db();
if (this.ctキャラクターアクション_ルマ != null || TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[Character] != 0) this.ctキャラクターアクション_ルマ[i].t進行db();
if (this.ctキャラクターアクション_魂MAX != null || TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[Character] != 0) this.ctキャラクターアクション_魂MAX[i].t進行db();
if (this.ctキャラクターアクション_Return != null || TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0) this.ctキャラクターアクション_Return[i].t進行db();
// Blinking animation during invincibility frames
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
@ -156,6 +171,8 @@ namespace TJAPlayer3
if (this.b風船連打中[i] != true && this.bマイどんアクション中[i] != true && CharaAction_Balloon_Delay[i].b終了値に達した)
{
if (!TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i])
{
if (!TJAPlayer3.stage演奏ドラム画面.bIsMiss[i] || TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[Character] == 0)
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 100.0 && TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[Character] != 0)
{
@ -180,6 +197,18 @@ namespace TJAPlayer3
}
}
else
{
if (TJAPlayer3.stage演奏ドラム画面.Chara_MissCount[i] < 6 || TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[Character] == 0)
{
TJAPlayer3.Tx.Characters_Normal_Missed[Character][this.arMissモーション番号[i][(int)this.ctChara_Miss[i].n現在の値]].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Characters_X[Character][i], TJAPlayer3.Skin.Characters_Y[Character][i]);
}
else
{
TJAPlayer3.Tx.Characters_Normal_MissedDown[Character][this.arMissDownモーション番号[i][(int)this.ctChara_MissDown[i].n現在の値]].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Characters_X[Character][i], TJAPlayer3.Skin.Characters_Y[Character][i]);
}
}
}
else
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 100.0 && TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[Character] != 0)
{
@ -283,6 +312,20 @@ namespace TJAPlayer3
this.ctキャラクターアクション_魂MAX[i].n現在の値 = 0;
}
}
if (this.ctキャラクターアクション_Return[i].b進行中)
{
if (TJAPlayer3.Tx.Characters_Return[Character] != null && TJAPlayer3.Skin.Characters_Return_Ptn[Character] != 0)
{
TJAPlayer3.Tx.Characters_Return[Character][(int)this.ctキャラクターアクション_Return[i].n現在の値].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Characters_X[Character][i], TJAPlayer3.Skin.Characters_Y[Character][i]);
}
if (this.ctキャラクターアクション_Return[i].b終了値に達した)
{
this.bマイどんアクション中[i] = false;
this.ctキャラクターアクション_Return[i].t停止();
this.ctキャラクターアクション_Return[i].n現在の値 = 0;
}
}
}
if (this.b風船連打中[i] != true && CharaAction_Balloon_Delay[i].b終了値に達した)
{
@ -374,12 +417,14 @@ namespace TJAPlayer3
ctキャラクターアクション_ゴーゴースタートMAX[player].t停止();
ctキャラクターアクション_ルマ[player].t停止();
ctキャラクターアクション_魂MAX[player].t停止();
ctキャラクターアクション_Return[player].t停止();
ctキャラクターアクション_10コンボ[player].n現在の値 = 0;
ctキャラクターアクション_10コンボMAX[player].n現在の値 = 0;
ctキャラクターアクション_ゴーゴースタート[player].n現在の値 = 0;
ctキャラクターアクション_ゴーゴースタートMAX[player].n現在の値 = 0;
ctキャラクターアクション_ルマ[player].n現在の値 = 0;
ctキャラクターアクション_魂MAX[player].n現在の値 = 0;
ctキャラクターアクション_Return[player].n現在の値 = 0;
CharaAction_Balloon_Breaking[player]?.t停止();
CharaAction_Balloon_Broke[player]?.t停止();
CharaAction_Balloon_Miss[player]?.t停止();
@ -391,6 +436,8 @@ namespace TJAPlayer3
}
public int[][] arモーション番号 = new int[2][];
public int[][] arMissモーション番号 = new int[2][];
public int[][] arMissDownモーション番号 = new int[2][];
public int[][] arゴーゴーモーション番号 = new int[2][];
public int[][] arクリアモーション番号 = new int[2][];
@ -400,12 +447,15 @@ namespace TJAPlayer3
public CCounter[] ctキャラクターアクション_ゴーゴースタートMAX = new CCounter[2];
public CCounter[] ctキャラクターアクション_ルマ = new CCounter[2];
public CCounter[] ctキャラクターアクション_魂MAX = new CCounter[2];
public CCounter[] ctキャラクターアクション_Return = new CCounter[2];
public CCounter[] CharaAction_Balloon_Breaking = new CCounter[2];
public CCounter[] CharaAction_Balloon_Broke = new CCounter[2];
public CCounter[] CharaAction_Balloon_Miss = new CCounter[2];
public CCounter[] CharaAction_Balloon_Delay = new CCounter[2];
public CCounter[] ctChara_Normal = new CCounter[2];
public CCounter[] ctChara_Miss = new CCounter[2];
public CCounter[] ctChara_MissDown = new CCounter[2];
public CCounter[] ctChara_GoGo = new CCounter[2];
public CCounter[] ctChara_Clear = new CCounter[2];

View File

@ -246,6 +246,24 @@ namespace TJAPlayer3
{
this.actChara.ctChara_Normal[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[chara] != 0)
{
double dbPtn_Miss = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Miss[chara] / this.actChara.arMissモーション番号[nPlayer].Length;
this.actChara.ctChara_Miss[nPlayer] = new CCounter(0, this.actChara.arMissモーション番号[nPlayer].Length - 1, dbPtn_Miss, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_Miss[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[chara] != 0)
{
double dbPtn_MissDown = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_MissDown[chara] / this.actChara.arMissDownモーション番号[nPlayer].Length;
this.actChara.ctChara_MissDown[nPlayer] = new CCounter(0, this.actChara.arMissDownモーション番号[nPlayer].Length - 1, dbPtn_MissDown, CSound管理.rc演奏用タイマ);
}
else
{
this.actChara.ctChara_MissDown[nPlayer] = new CCounter();
}
if (TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[chara] != 0)
{
double dbPtn_Clear = (60.0 / TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM) * TJAPlayer3.Skin.Characters_Beat_Clear[chara] / this.actChara.arクリアモーション番号[nPlayer].Length;