diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs
index 67786c5c..968fe305 100644
--- a/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs
+++ b/OpenTaiko/src/Stages/07.Game/CAct演奏Combo共通.cs
@@ -318,9 +318,6 @@ namespace TJAPlayer3
// メソッド
- protected virtual void tコンボ表示_ドラム(int nCombo値, int nジャンプインデックス)
- {
- }
private void showComboEffect(int cat, int i, int rightX, int y, int nPlayer)
{
@@ -601,25 +598,6 @@ namespace TJAPlayer3
#endregion
}
- protected virtual void tコンボ表示_ギター(int nCombo値, int nジャンプインデックス)
- {
- }
- protected virtual void tコンボ表示_ベース(int nCombo値, int nジャンプインデックス)
- {
- }
- protected void tコンボ表示_ギター(int nCombo値, int n表示中央X, int n表示中央Y, int nジャンプインデックス)
- {
-
- }
- protected void tコンボ表示_ベース(int nCombo値, int n表示中央X, int n表示中央Y, int nジャンプインデックス)
- {
-
- }
- protected void tコンボ表示_ギターベース(int nCombo値, int n表示中央X, int n表示中央Y, int nジャンプインデックス)
- {
- }
-
-
// CActivity 実装
public override void Activate()
diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏Danger共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏Danger共通.cs
deleted file mode 100644
index 971c1147..00000000
--- a/OpenTaiko/src/Stages/07.Game/CAct演奏Danger共通.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal abstract class CAct演奏Danger共通 : CActivity
- {
- // コンストラクタ
-
- public CAct演奏Danger共通()
- {
- base.IsDeActivated = true;
- }
-
-
- // CActivity 実装
-
- public override void Activate()
- {
- for ( int i = 0; i < 3; i++ )
- {
- this.bDanger中[i] = false;
- }
-// this.ct移動用 = new CCounter();
-// this.ct透明度用 = new CCounter();
- this.ct移動用 = null;
- this.ct透明度用 = null;
-
- base.Activate();
- }
- public override void DeActivate()
- {
- this.ct移動用 = null;
- this.ct透明度用 = null;
- base.DeActivate();
- }
-
- ///
- /// DANGER描画
- ///
- /// DrumsがDangerならtrue
- /// GuitarがDangerならtrue
- /// BassがDangerならtrue
- ///
- public abstract int t進行描画( bool bIsDangerDrums, bool bIsDamgerGuitar, bool bIsDangerBass );
-
-
-
- // その他
-
- #region [ private ]
- //-----------------
- protected bool[] bDanger中 = { false, false, false};
- protected CCounter ct移動用;
- protected CCounter ct透明度用;
- //-----------------
- #endregion
-
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/CAct演奏ステータスパネル共通.cs b/OpenTaiko/src/Stages/07.Game/CAct演奏ステータスパネル共通.cs
deleted file mode 100644
index 78b40a80..00000000
--- a/OpenTaiko/src/Stages/07.Game/CAct演奏ステータスパネル共通.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Drawing;
-using System.Diagnostics;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏ステータスパネル共通 : CActivity
- {
- // コンストラクタ
- public CAct演奏ステータスパネル共通()
- {
- this.stパネルマップ = new STATUSPANEL[ 12 ]; // yyagi: 以下、手抜きの初期化でスマン
- // { "DTXMANIA", 0 }, { "EXTREME", 1 }, ... みたいに書きたいが___
- string[] labels = new string[ 12 ] {
- "DTXMANIA", "EXTREME", "ADVANCED", "ADVANCE", "BASIC", "RAW",
- "REAL", "EASY", "EX-REAL", "ExREAL", "ExpertReal", "NORMAL"
- };
- int[] status = new int[ 12 ] {
- 0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 7, 8
- };
-
- for ( int i = 0; i < 12; i++ )
- {
- this.stパネルマップ[ i ] = new STATUSPANEL();
- this.stパネルマップ[ i ].status = status[ i ];
- this.stパネルマップ[ i ].label = labels[ i ];
- }
-
- #region [ 旧初期化処理(注釈化) ]
- //STATUSPANEL[] statuspanelArray = new STATUSPANEL[ 12 ];
- //STATUSPANEL statuspanel = new STATUSPANEL();
- //statuspanel.status = 0;
- //statuspanel.label = "DTXMANIA";
- //statuspanelArray[ 0 ] = statuspanel;
- //STATUSPANEL statuspanel2 = new STATUSPANEL();
- //statuspanel2.status = 1;
- //statuspanel2.label = "EXTREME";
- //statuspanelArray[ 1 ] = statuspanel2;
- //STATUSPANEL statuspanel3 = new STATUSPANEL();
- //statuspanel3.status = 2;
- //statuspanel3.label = "ADVANCED";
- //statuspanelArray[ 2 ] = statuspanel3;
- //STATUSPANEL statuspanel4 = new STATUSPANEL();
- //statuspanel4.status = 2;
- //statuspanel4.label = "ADVANCE";
- //statuspanelArray[ 3 ] = statuspanel4;
- //STATUSPANEL statuspanel5 = new STATUSPANEL();
- //statuspanel5.status = 3;
- //statuspanel5.label = "BASIC";
- //statuspanelArray[ 4 ] = statuspanel5;
- //STATUSPANEL statuspanel6 = new STATUSPANEL();
- //statuspanel6.status = 4;
- //statuspanel6.label = "RAW";
- //statuspanelArray[ 5 ] = statuspanel6;
- //STATUSPANEL statuspanel7 = new STATUSPANEL();
- //statuspanel7.status = 5;
- //statuspanel7.label = "REAL";
- //statuspanelArray[ 6 ] = statuspanel7;
- //STATUSPANEL statuspanel8 = new STATUSPANEL();
- //statuspanel8.status = 6;
- //statuspanel8.label = "EASY";
- //statuspanelArray[ 7 ] = statuspanel8;
- //STATUSPANEL statuspanel9 = new STATUSPANEL();
- //statuspanel9.status = 7;
- //statuspanel9.label = "EX-REAL";
- //statuspanelArray[ 8 ] = statuspanel9;
- //STATUSPANEL statuspanel10 = new STATUSPANEL();
- //statuspanel10.status = 7;
- //statuspanel10.label = "ExREAL";
- //statuspanelArray[ 9 ] = statuspanel10;
- //STATUSPANEL statuspanel11 = new STATUSPANEL();
- //statuspanel11.status = 7;
- //statuspanel11.label = "ExpertReal";
- //statuspanelArray[ 10 ] = statuspanel11;
- //STATUSPANEL statuspanel12 = new STATUSPANEL();
- //statuspanel12.status = 8;
- //statuspanel12.label = "NORMAL";
- //statuspanelArray[ 11 ] = statuspanel12;
- //this.stパネルマップ = statuspanelArray;
- #endregion
- base.IsDeActivated = true;
- }
-
-
- // メソッド
-
- public void tラベル名からステータスパネルを決定する( string strラベル名 )
- {
- if ( string.IsNullOrEmpty( strラベル名 ) )
- {
- this.nStatus = 0;
- }
- else
- {
- foreach ( STATUSPANEL statuspanel in this.stパネルマップ )
- {
- if ( strラベル名.Equals( statuspanel.label, StringComparison.CurrentCultureIgnoreCase ) ) // #24482 2011.2.17 yyagi ignore case
- {
- this.nStatus = statuspanel.status;
- return;
- }
- }
- this.nStatus = 0;
- }
- }
-
- // CActivity 実装
-
- public override void Activate()
- {
- this.nStatus = 0;
- base.Activate();
- }
-
-
- #region [ protected ]
- //-----------------
- [StructLayout( LayoutKind.Sequential )]
- protected struct STATUSPANEL
- {
- public string label;
- public int status;
- }
-
- protected int nStatus;
- protected STATUSPANEL[] stパネルマップ = null;
- //-----------------
- #endregion
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs
index 4dc01d67..624782f9 100644
--- a/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs
+++ b/OpenTaiko/src/Stages/07.Game/CStage演奏画面共通.cs
@@ -356,7 +356,6 @@ namespace TJAPlayer3
cInvisibleChip.Reset();
base.Activate();
- this.tステータスパネルの選択();
this.tパネル文字列の設定();
//this.演奏判定ライン座標();
this.bIsGOGOTIME = new bool[] { false, false, false, false, false };
@@ -774,36 +773,34 @@ namespace TJAPlayer3
public CAct演奏AVI actAVI;
public Rainbow Rainbow;
public CAct演奏Combo共通 actCombo;
- protected CAct演奏Danger共通 actDANGER;
//protected CActFIFOBlack actFI;
public CActFIFOStart actFI;
protected CActFIFOBlack actFO;
protected CActFIFOResult actFOClear;
public CAct演奏ゲージ共通 actGauge;
- public CAct演奏DrumsDancer actDancer;
- protected CAct演奏Drums判定文字列 actJudgeString;
+ public CActImplDancer actDancer;
+ protected CActImplJudgeText actJudgeString;
public TaikoLaneFlash actTaikoLaneFlash;
public CAct演奏パネル文字列 actPanel;
public CAct演奏演奏情報 actPlayInfo;
public CAct演奏スコア共通 actScore;
public CAct演奏ステージ失敗 actStageFailed;
- protected CAct演奏ステータスパネル共通 actStatusPanels;
protected CAct演奏スクロール速度 act譜面スクロール速度;
- protected CAct演奏Drums連打 actRoll;
- protected CAct演奏Drums風船 actBalloon;
- public CAct演奏Drumsキャラクター actChara;
- protected CAct演奏Drums連打キャラ actRollChara;
- protected CAct演奏Drumsコンボ吹き出し actComboBalloon;
+ protected CActImplRoll actRoll;
+ protected CActImplBalloon actBalloon;
+ public CActImplCharacter actChara;
+ protected CActImplRollEffect actRollChara;
+ protected CActImplComboBalloon actComboBalloon;
protected CAct演奏Combo音声 actComboVoice;
protected CAct演奏PauseMenu actPauseMenu;
- public CAct演奏Drumsチップエフェクト actChipEffects;
- public CAct演奏DrumsFooter actFooter;
- public CAct演奏DrumsRunner actRunner;
- public CAct演奏DrumsMob actMob;
+ public CActImplChipEffects actChipEffects;
+ public CActImplFooter actFooter;
+ public CActImplRunner actRunner;
+ public CActImplMob actMob;
public Dan_Cert actDan;
public AIBattle actAIBattle;
- public CAct演奏DrumsTrainingMode actTokkun;
+ public CActImplTrainingMode actTokkun;
public bool bPAUSE;
public bool[] bIsAlreadyCleared;
public bool[] bIsAlreadyMaxed;
@@ -1328,18 +1325,6 @@ namespace TJAPlayer3
this.nHand[ nPlayer ] = 0;
}
- protected void tステータスパネルの選択()
- {
- if ( TJAPlayer3.bコンパクトモード )
- {
- this.actStatusPanels.tラベル名からステータスパネルを決定する( null );
- }
- else if ( TJAPlayer3.stageSongSelect.rChoosenSong != null )
- {
- this.actStatusPanels.tラベル名からステータスパネルを決定する( TJAPlayer3.stageSongSelect.rChoosenSong.ar難易度ラベル[ TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0]] );
- }
- }
-
protected bool tRollProcess( CDTX.CChip pChip, double dbProcess_time, int num, int sort, int Input, int nPlayer )
{
if (dbProcess_time >= pChip.n発声時刻ms && dbProcess_time < pChip.nノーツ終了時刻ms)
@@ -1513,7 +1498,7 @@ namespace TJAPlayer3
{
if (nCurrentKusudamaCount > 0)
{
- actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Kusudama_Breaking, true);
+ actChara.ChangeAnime(player, CActImplCharacter.Anime.Kusudama_Breaking, true);
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
this.b連打中[i] = true;
@@ -1534,7 +1519,7 @@ namespace TJAPlayer3
else
{
this.b連打中[player] = true;
- actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Breaking, true);
+ actChara.ChangeAnime(player, CActImplCharacter.Anime.Balloon_Breaking, true);
if (this.actBalloon.ct風船アニメ[player].IsUnEnded)
@@ -1629,7 +1614,7 @@ namespace TJAPlayer3
actBalloon.KusuBroke();
for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{
- actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Kusudama_Broke, true);
+ actChara.ChangeAnime(i, CActImplCharacter.Anime.Kusudama_Broke, true);
if (actChara.CharaAction_Balloon_Delay[i] != null) actChara.CharaAction_Balloon_Delay[i] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[i]] - 1, 1, TJAPlayer3.Timer);
}
}
@@ -1648,7 +1633,7 @@ namespace TJAPlayer3
//this.actChara.b風船連打中 = false;
pChip.b可視 = false;
{
- actChara.ChangeAnime(player, CAct演奏Drumsキャラクター.Anime.Balloon_Broke, true);
+ actChara.ChangeAnime(player, CActImplCharacter.Anime.Balloon_Broke, true);
if (actChara.CharaAction_Balloon_Delay[player] != null) actChara.CharaAction_Balloon_Delay[player] = new CCounter(0, TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[player]] - 1, 1, TJAPlayer3.Timer);
}
}
@@ -1977,7 +1962,7 @@ namespace TJAPlayer3
{
if(TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Become_Maxed, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Become_Maxed, true);
}
this.bIsAlreadyMaxed[nPlayer] = true;
}
@@ -1985,7 +1970,7 @@ namespace TJAPlayer3
{
if(TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Become_Cleared, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Become_Cleared, true);
}
this.bIsAlreadyCleared[nPlayer] = true;
TJAPlayer3.stage演奏ドラム画面.actBackground.ClearIn(nPlayer);
@@ -2003,7 +1988,7 @@ namespace TJAPlayer3
this.bIsAlreadyMaxed[nPlayer] = false;
if(TJAPlayer3.Skin.Characters_SoulOut_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.SoulOut, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.SoulOut, true);
}
}
else if (!bIsGOGOTIME[nPlayer])
@@ -2012,14 +1997,14 @@ namespace TJAPlayer3
{
if(TJAPlayer3.Skin.Characters_MissIn_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.MissIn, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.MissIn, true);
}
}
else if (Chara_MissCount[nPlayer] == 6 - 1)
{
if(TJAPlayer3.Skin.Characters_MissDownIn_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.MissDownIn, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.MissDownIn, true);
}
}
}
@@ -2028,7 +2013,7 @@ namespace TJAPlayer3
this.bIsAlreadyCleared[nPlayer] = false;
if (TJAPlayer3.Skin.Characters_ClearOut_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.ClearOut, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.ClearOut, true);
}
TJAPlayer3.stage演奏ドラム画面.actBackground.ClearOut(nPlayer);
@@ -2072,7 +2057,7 @@ namespace TJAPlayer3
{
// 魂ゲージMAXではない
// ジャンプ_ノーマル
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Return, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Return, true);
//this.actChara.キャラクター_アクション_10コンボ();
}
}
@@ -2375,22 +2360,22 @@ namespace TJAPlayer3
// Edit character values here
if (!pChip.bGOGOTIME) //2018.03.11 kairera0467 チップに埋め込んだフラグから読み取る
{
- if (TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CAct演奏Drumsキャラクター.Anime.Combo10 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
+ if (TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAXではない
// ジャンプ_ノーマル
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Combo10, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10, true);
}
}
- if (TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CAct演奏Drumsキャラクター.Anime.Combo10_Max && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
+ if (TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0 && this.actChara.eNowAnime[nPlayer] != CActImplCharacter.Anime.Combo10_Max && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
{
if (HGaugeMethods.UNSAFE_IsRainbow(nPlayer))
{
// 魂ゲージMAX
// ジャンプ_MAX
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Combo10_Max, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Combo10_Max, true);
}
}
}
@@ -3342,8 +3327,6 @@ namespace TJAPlayer3
this.actAVI.t進行描画( x, y );
}
}
- protected abstract void t進行描画_DANGER();
-
protected void t進行描画_STAGEFAILED()
{
// Transition for failed games
@@ -3684,7 +3667,7 @@ namespace TJAPlayer3
for (int p = 0; p < TJAPlayer3.ConfigIni.nPlayerCount; p++)
{
{
- this.actChara.ChangeAnime(p, CAct演奏Drumsキャラクター.Anime.Kusudama_Miss, true);
+ this.actChara.ChangeAnime(p, CActImplCharacter.Anime.Kusudama_Miss, true);
if (actChara.CharaAction_Balloon_Delay[p] != null) actChara.CharaAction_Balloon_Delay[p] = new CCounter(0,
TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[p]] - 1,
@@ -3704,7 +3687,7 @@ namespace TJAPlayer3
&& chip現在処理中の連打チップ[nPlayer].nRollCount > 0)
{
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.Balloon_Miss, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.Balloon_Miss, true);
if (actChara.CharaAction_Balloon_Delay[nPlayer] != null) actChara.CharaAction_Balloon_Delay[nPlayer] = new CCounter(0,
TJAPlayer3.Skin.Characters_Balloon_Delay[actChara.iCurrentCharacter[nPlayer]] - 1,
@@ -4047,7 +4030,7 @@ namespace TJAPlayer3
{
// 魂ゲージMAXではない
// ゴーゴースタート_ノーマル
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.GoGoStart, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.GoGoStart, true);
//this.actChara.キャラクター_アクション_10コンボ();
}
}
@@ -4055,7 +4038,7 @@ namespace TJAPlayer3
{
if (!HGaugeMethods.UNSAFE_IsRainbow(nPlayer) && HGaugeMethods.UNSAFE_FastNormaCheck(nPlayer))
{
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.GoGoStart_Clear, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.GoGoStart_Clear, true);
}
}
if (TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0 && actChara.CharaAction_Balloon_Delay[nPlayer].IsEnded)
@@ -4064,7 +4047,7 @@ namespace TJAPlayer3
{
// 魂ゲージMAX
// ゴーゴースタート_MAX
- this.actChara.ChangeAnime(nPlayer, CAct演奏Drumsキャラクター.Anime.GoGoStart_Max, true);
+ this.actChara.ChangeAnime(nPlayer, CActImplCharacter.Anime.GoGoStart_Max, true);
}
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums背景.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBackground.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums背景.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplBackground.cs
index e1c436df..671d6534 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums背景.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBackground.cs
@@ -1,670 +1,670 @@
-using System;
-using FDK;
-using System.Drawing;
-using static TJAPlayer3.CActSelect曲リスト;
-
-using Color = System.Drawing.Color;
-using Rectangle = System.Drawing.Rectangle;
-using System.Collections.Generic;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drums背景 : CActivity
- {
- // 本家っぽい背景を表示させるメソッド。
- //
- // 拡張性とかないんで。はい、ヨロシクゥ!
- //
- public CAct演奏Drums背景()
- {
- base.IsDeActivated = true;
- }
-
- public void tFadeIn(int player)
- {
- //this.ct上背景クリアインタイマー[player] = new CCounter(0, 100, 2, TJAPlayer3.Timer);
- this.eFadeMode = EFIFOモード.フェードイン;
- }
-
- //public void tFadeOut(int player)
- //{
- // this.ct上背景フェードタイマー[player] = new CCounter( 0, 100, 6, CDTXMania.Timer );
- // this.eFadeMode = EFIFOモード.フェードアウト;
- //}
-
- public void ClearIn(int player)
- {
- /*this.ct上背景クリアインタイマー[player] = new CCounter(0, 100, 2, TJAPlayer3.Timer);
- this.ct上背景クリアインタイマー[player].n現在の値 = 0;
- this.ct上背景FIFOタイマー = new CCounter(0, 100, 2, TJAPlayer3.Timer);
- this.ct上背景FIFOタイマー.n現在の値 = 0;*/
- UpScript?.ClearIn(player);
- DownScript?.ClearIn(player);
- }
-
- public void ClearOut(int player)
- {
- UpScript?.ClearOut(player);
- DownScript?.ClearOut(player);
- }
-
- public override void Activate()
- {
- if (!this.IsDeActivated)
- return;
-
- var bgOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.BACKGROUND}");
- var preset = HScenePreset.GetBGPreset();
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- bgOrigindir += "Tower";
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- {
- bgOrigindir += "Dan";
- }
- else if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- bgOrigindir += "AI";
- }
- else
- {
- bgOrigindir += "Normal";
- }
-
- Random random = new Random();
-
- if (System.IO.Directory.Exists($@"{bgOrigindir}{Path.DirectorySeparatorChar}Up"))
- {
- var upDirs = System.IO.Directory.GetDirectories($@"{bgOrigindir}{Path.DirectorySeparatorChar}Up");
-
- // If there is a preset upper background and this preset exists on the skin use it, else random upper background
- var _presetPath = (preset != null && preset.UpperBackground != null) ? $@"{bgOrigindir}{Path.DirectorySeparatorChar}Up{Path.DirectorySeparatorChar}" + preset.UpperBackground[random.Next(0, preset.UpperBackground.Length)] : "";
- var upPath = (preset != null && System.IO.Directory.Exists(_presetPath))
- ? _presetPath
- : upDirs[random.Next(0, upDirs.Length)];
-
- UpScript = new ScriptBG($@"{upPath}{Path.DirectorySeparatorChar}Script.lua");
- UpScript.Init();
-
- IsUpNotFound = false;
- }
- else
- {
- IsUpNotFound = true;
- }
-
- if (System.IO.Directory.Exists($@"{bgOrigindir}{Path.DirectorySeparatorChar}Down"))
- {
- var downDirs = System.IO.Directory.GetDirectories($@"{bgOrigindir}{Path.DirectorySeparatorChar}Down");
-
- // If there is a preset lower background and this preset exists on the skin use it, else random upper background
- var _presetPath = (preset != null && preset.LowerBackground != null) ? $@"{bgOrigindir}{Path.DirectorySeparatorChar}Down{Path.DirectorySeparatorChar}" + preset.LowerBackground[random.Next(0, preset.LowerBackground.Length)] : "";
- var downPath = (preset != null && System.IO.Directory.Exists(_presetPath))
- ? _presetPath
- : downDirs[random.Next(0, downDirs.Length)];
-
- DownScript = new ScriptBG($@"{downPath}{Path.DirectorySeparatorChar}Script.lua");
- DownScript?.Init();
-
- if (DownScript.Exists()) IsDownNotFound = false;
- }
- else
- {
- IsDownNotFound = true;
- }
-
- this.pfTowerText = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.Game_Tower_Font_TowerText);
-
- /*
- if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
- {
- this.pfTowerText = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.Game_Tower_Font_TowerText);
- }
- else
- {
- this.pfTowerText = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.Game_Tower_Font_TowerText);
- }
- */
-
- this.ttkTouTatsuKaiSuu = new TitleTextureKey(CLangManager.LangInstance.GetString(1000), pfTowerText, Color.White, Color.Black, 700);
- this.ttkKai = new TitleTextureKey(CLangManager.LangInstance.GetString(1001), pfTowerText, Color.White, Color.Black, 700);
-
- this.ct炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer);
-
- this.currentCharacter = Math.Max(0, Math.Min(TJAPlayer3.SaveFileInstances[0].data.Character, TJAPlayer3.Skin.Characters_Ptn - 1));
-
- float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[currentCharacter][0];
- float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[currentCharacter][1];
-
- // Scale tower chara
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Standing[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Climbing[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Running[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Clear[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Fail[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Standing_Tired[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Climbing_Tired[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Running_Tired[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
- foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Clear_Tired[currentCharacter])
- {
- texture.vcScaleRatio.X = resolutionScaleX;
- texture.vcScaleRatio.Y = resolutionScaleY;
- }
-
- this.ctSlideAnimation = new CCounter();
- this.ctClimbDuration = new CCounter();
- this.ctStandingAnimation = new CCounter(0, 1000, (60000f / (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed)) * 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();
- this.ctFailAnimation = new CCounter();
- this.ctStandTiredAnimation = new CCounter();
- this.ctClimbTiredAnimation = new CCounter();
- this.ctRunTiredAnimation = new CCounter();
- this.ctClearTiredAnimation = new CCounter();
-
- TowerFinished = false;
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- if (this.IsDeActivated)
- return;
-
- TJAPlayer3.tDisposeSafely(ref UpScript);
- TJAPlayer3.tDisposeSafely(ref DownScript);
-
- TJAPlayer3.tDisposeSafely(ref pfTowerText);
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- if (base.IsDeActivated)
- return 0;
-
-
- //this.ct上背景FIFOタイマー?.t進行();
-
-
- #region [Tower specific variables declaration]
-
- float currentFloorPositionMax140 = 0;
-
- #endregion
-
- // fNow_Measure_s (/ m)
-
- #region [Upper background]
-
- if (!IsUpNotFound)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) UpScript?.Update();
- UpScript?.Draw();
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- #region [Tower animations variables]
-
- this.bFloorChanged = CFloorManagement.LastRegisteredFloor > 0 && (CFloorManagement.LastRegisteredFloor < TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1);
-
- int maxFloor = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
- int nightTime = Math.Max(140, maxFloor / 2);
-
- currentFloorPositionMax140 = Math.Min(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f);
-
- #endregion
-
- #region [Tower background informations]
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(ttkTouTatsuKaiSuu).t2D描画(TJAPlayer3.Skin.Game_Tower_Font_TouTatsuKaiSuu[0], TJAPlayer3.Skin.Game_Tower_Font_TouTatsuKaiSuu[1]);
- TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(ttkKai).t2D描画(TJAPlayer3.Skin.Game_Tower_Font_Kai[0], TJAPlayer3.Skin.Game_Tower_Font_Kai[1]);
-
- this.ct炎.TickLoop();
- CFloorManagement.loopFrames();
-
- #region [Floor number]
-
- if (CFloorManagement.CurrentNumberOfLives > 0)
- CFloorManagement.LastRegisteredFloor = TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1;
-
- string floorStr = CFloorManagement.LastRegisteredFloor.ToString();
-
- int len = floorStr.Length;
-
- int digitLength = TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Width / 10;
-
- TJAPlayer3.Tx.Taiko_Combo[0].color4 = new Color4(1f, 0.6f, 0.2f, 1f);
- TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.X = 1.4f;
- TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.Y = 1.4f;
-
- for (int idx = len - 1; idx >= 0; idx--)
- {
- int currentNum = int.Parse(floorStr[idx].ToString());
-
- TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.Skin.Game_Tower_Floor_Number[0] - ((digitLength - 8) * (len - idx) * 1.4f),
- TJAPlayer3.Skin.Game_Tower_Floor_Number[1],
- new Rectangle(digitLength * currentNum, 0,
- digitLength, TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Height));
- }
-
- #endregion
-
- #region [Life Tamashii icon]
-
- int soulfire_width = TJAPlayer3.Tx.Gauge_Soul_Fire.szTextureSize.Width / 8;
- int soulfire_height = TJAPlayer3.Tx.Gauge_Soul_Fire.szTextureSize.Height;
-
- int soul_height = TJAPlayer3.Tx.Gauge_Soul.szTextureSize.Height / 2;
-
- TJAPlayer3.Tx.Gauge_Soul_Fire?.t2D描画(TJAPlayer3.Skin.Gauge_Soul_Fire_X_Tower, TJAPlayer3.Skin.Gauge_Soul_Fire_Y_Tower, new Rectangle(soulfire_width * (this.ct炎.CurrentValue), 0, soulfire_width, soulfire_height));
- TJAPlayer3.Tx.Gauge_Soul?.t2D描画(TJAPlayer3.Skin.Gauge_Soul_X_Tower, TJAPlayer3.Skin.Gauge_Soul_Y_Tower, new Rectangle(0, soul_height, TJAPlayer3.Tx.Gauge_Soul.szTextureSize.Width, soul_height));
-
- #endregion
-
- #region [Life number]
-
- if (CFloorManagement.MaxNumberOfLives <= 0)
- {
- CFloorManagement.MaxNumberOfLives = 5;
- CFloorManagement.CurrentNumberOfLives = 5;
- }
-
- string lifeStr = CFloorManagement.CurrentNumberOfLives.ToString();
-
- len = lifeStr.Length;
-
- bool lifeSpecialCase = CFloorManagement.CurrentNumberOfLives == 1 && CFloorManagement.MaxNumberOfLives != 1;
- float lifeRatio = CFloorManagement.CurrentNumberOfLives / (float)CFloorManagement.MaxNumberOfLives;
-
- Color4 lifeColor = (lifeRatio > 0.5f && !lifeSpecialCase) ? new Color4(0.2f, 1f, 0.2f, 1f)
- : ((lifeRatio >= 0.2f && !lifeSpecialCase) ? new Color4(1f, 1f, 0.2f, 1f)
- : new Color4(1f, 0.2f, 0.2f, 1f));
-
- TJAPlayer3.Tx.Taiko_Combo[0].color4 = lifeColor;
- TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.X = 1.1f;
- TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.Y = 1.1f;
-
- for (int idx = 0; idx < len; idx++)
- {
- int currentNum = int.Parse(lifeStr[len - idx - 1].ToString());
-
- TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.Skin.Game_Tower_Life_Number[0] + ((digitLength - 8) * (len - idx) * 1.1f),
- TJAPlayer3.Skin.Game_Tower_Life_Number[1],
- new Rectangle(digitLength * currentNum, 0,
- digitLength, TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Height));
- }
-
- TJAPlayer3.Tx.Taiko_Combo[0].color4 = new Color4(1f, 1f, 1f, 1f);
-
- #endregion
-
- }
-
- #endregion
- }
- }
-
- #endregion
-
- #region [Lower background]
-
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- int maxFloor = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
-
- TJAPlayer3.actTextConsole.tPrint(0, 0, CTextConsole.EFontType.White, maxFloor.ToString());
-
- int nightTime = Math.Max(140, maxFloor / 2);
-
- int currentTowerType = Array.IndexOf(TJAPlayer3.Skin.Game_Tower_Names, TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTowerType);
-
- if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn)
- currentTowerType = 0;
-
- #region [Tower lower background]
-
- float nextPositionMax140 = Math.Min((TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) / (float)nightTime, 1f);
-
- if (bFloorChanged == true)
- ctSlideAnimation.Start(0, 1000, 120f / ((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed), TJAPlayer3.Timer);
-
- float progressFactor = (nextPositionMax140 - currentFloorPositionMax140) * (ctSlideAnimation.CurrentValue / 1000f);
-
-
-
- #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]));
-
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DownScript.Update();
- DownScript.Draw();
-
- #endregion
-
-
- #region [Tower body]
-
- progressFactor = ctSlideAnimation.CurrentValue / 1000f;
-
- int currentTower = currentTowerType;
-
- // Will implement the roof later, need the beforehand total floor count calculation before
- int nextTowerBase = ((TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) / 10) % TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower];
- int towerBase = (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / 10) % TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower];
-
- int currentDeco = TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] % TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower];
- int nextDeco = (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) % TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower];
-
- // Microfix for the first floor suddenly changing texture
- if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] == 0 && TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower] > 1)
- currentDeco++;
- if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] == 0 && TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower] > 1)
- towerBase++;
-
- int widthChange = (int)(progressFactor * TJAPlayer3.Skin.Game_Tower_Floors_Move[0]);
- int heightChange = (int)(progressFactor * TJAPlayer3.Skin.Game_Tower_Floors_Move[1]);
-
- // Current trunk
- if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] < maxFloor)
- TJAPlayer3.Tx.Tower_Base[currentTower][towerBase]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Body[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Body[1] + heightChange); // 316 + 360
- else
- TJAPlayer3.Tx.Tower_Top[currentTower]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Body[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Body[1] + heightChange);
-
- // Current deco
- TJAPlayer3.Tx.Tower_Deco[currentTower][currentDeco]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Deco[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Deco[1] + heightChange);
-
- int originY = TJAPlayer3.Skin.Game_Tower_Floors_Move[1] - heightChange;
-
- // Next trunk
- if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 < maxFloor)
- TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Body[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Body[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange,
- new Rectangle(0, originY, TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase].szTextureSize.Width, TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase].szTextureSize.Height - originY));
- else if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 == maxFloor)
- {
- TJAPlayer3.Tx.Tower_Top[currentTower]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Body[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Body[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange,
- new Rectangle(0, originY, TJAPlayer3.Tx.Tower_Top[currentTower].szTextureSize.Width, TJAPlayer3.Tx.Tower_Top[currentTower].szTextureSize.Height - originY));
- }
-
- // Next deco
- if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 <= maxFloor)
- TJAPlayer3.Tx.Tower_Deco[currentTower][nextDeco]?.t2D下中央基準描画(
- TJAPlayer3.Skin.Game_Tower_Floors_Deco[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
- TJAPlayer3.Skin.Game_Tower_Floors_Deco[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange);
-
-
- #endregion
-
- #region [Climbing don]
-
- bool ctIsTired = !((CFloorManagement.CurrentNumberOfLives / (float)CFloorManagement.MaxNumberOfLives) >= 0.2f && !(CFloorManagement.CurrentNumberOfLives == 1 && CFloorManagement.MaxNumberOfLives != 1));
-
- bool stageEnded = TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_EndStage || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_CLEAR_FadeOut || CFloorManagement.CurrentNumberOfLives == 0;
-
- if (bFloorChanged == true)
- {
- float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
- ctClimbDuration.Start(0, 1500, 120f / 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);
- }
-
- bool isClimbing = ctClimbDuration.CurrentValue > 0 && ctClimbDuration.CurrentValue < 1500;
-
- if (stageEnded && !TowerFinished && !isClimbing)
- {
- float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
- 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)
- {
- int animChar = ctClimbTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter];
- int distDonX = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 1000f));
- int distDonY = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 1000f));
- TJAPlayer3.Tx.Characters_Tower_Climbing_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
- }
- // Tired Run
- else if (ctIsTired && (ctClimbDuration.CurrentValue > 1000 && ctClimbDuration.CurrentValue < 1500) && TJAPlayer3.Skin.Characters_Tower_Running_Tired_Ptn[currentCharacter] > 0)
- {
- int animChar = ctRunTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter];
- int distDonX = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 500f));
- int distDonY = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 500f));
- TJAPlayer3.Tx.Characters_Tower_Running_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
- }
- // Climb
- else if ((ctClimbDuration.CurrentValue <= 1000) && TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter] > 0)
- {
- int animChar = ctClimbingAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter];
- int distDonX = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 1000f));
- int distDonY = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 1000f));
- TJAPlayer3.Tx.Characters_Tower_Climbing[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
- }
- // Run
- else if ((ctClimbDuration.CurrentValue > 1000 && ctClimbDuration.CurrentValue < 1500) && TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter] > 0)
- {
- int animChar = ctRunningAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter];
- int distDonX = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 500f));
- int distDonY = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 500f));
- TJAPlayer3.Tx.Characters_Tower_Running[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
- }
- }
- else
- {
- // Fail
- if (TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter] > 0 && CFloorManagement.CurrentNumberOfLives == 0)
- {
- 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 = 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 = 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_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
- else if (TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter] > 0)
- {
- int animChar = ctStandingAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter];
- TJAPlayer3.Tx.Characters_Tower_Standing[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]); // Center X - 50
- }
- }
-
- #endregion
-
- #region [Miss icon]
-
- if (CFloorManagement.InvincibilityFrames != null && CFloorManagement.InvincibilityFrames.CurrentValue < CFloorManagement.InvincibilityDurationSpeedDependent)
- {
- if (TJAPlayer3.Tx.Tower_Miss != null)
- TJAPlayer3.Tx.Tower_Miss.Opacity = Math.Min(255, 1000 - CFloorManagement.InvincibilityFrames.CurrentValue);
- TJAPlayer3.Tx.Tower_Miss?.t2D下中央基準描画(TJAPlayer3.Skin.Game_Tower_Miss[0], TJAPlayer3.Skin.Game_Tower_Miss[1]);
- }
-
- #endregion
-
- ctSlideAnimation?.Tick();
- ctClimbDuration?.Tick();
- ctStandingAnimation?.TickLoop();
- ctClimbingAnimation?.TickLoop();
- ctRunningAnimation?.TickLoop();
- ctStandTiredAnimation?.TickLoop();
- ctClimbTiredAnimation?.TickLoop();
- ctRunTiredAnimation?.TickLoop();
- ctClearAnimation?.Tick();
- ctClearTiredAnimation?.Tick();
- ctFailAnimation?.Tick();
-
- #endregion
- }
- else if (!TJAPlayer3.stage演奏ドラム画面.bDoublePlay && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
- {
- if (!IsDownNotFound)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DownScript?.Update();
- DownScript?.Draw();
- }
- }
-
-
- #endregion
-
- return base.Draw();
- }
-
- #region[ private ]
- //-----------------
-
- #region 背景
- /*private CTexture Background,
- Background_Down,
- Background_Down_Clear,
- Background_Down_Scroll;
- private CTexture[] Background_Up_1st,
- Background_Up_2nd,
- Background_Up_3rd,
- Background_Up_Dan = new CTexture[6],
- Background_Up_Tower = new CTexture[8];*/
- #endregion
-
- /*private CCounter[] ct上背景スクロール用タイマー1st; //上背景のX方向スクロール用
- private CCounter[] ct上背景スクロール用タイマー2nd; //上背景のY方向スクロール用
- private CCounter[] ct上背景スクロール用タイマー3rd; //上背景のY方向スクロール用
- private CCounter ct下背景スクロール用タイマー1; //下背景パーツ1のX方向スクロール用
- private CCounter ct上背景FIFOタイマー;
- private CCounter[] ct上背景クリアインタイマー;
- private CCounter[] ct上背景スクロール用タイマー1stDan; //上背景のX方向スクロール用
- private CCounter ct上背景スクロール用タイマー2stDan; //上背景のY方向スクロール用
-
- private CCounter[] ct上背景スクロール用タイマー1stTower; //上背景のX方向スクロール用
- private CCounter ct上背景スクロール用タイマー2stTower; //上背景のX方向スクロール用
- */
- //private CTexture tx上背景メイン;
- //private CTexture tx上背景クリアメイン;
- //private CTexture tx下背景メイン;
- //private CTexture tx下背景クリアメイン;
- //private CTexture tx下背景クリアサブ1;
-
- private ScriptBG UpScript;
- private ScriptBG DownScript;
-
- private TitleTextureKey ttkTouTatsuKaiSuu;
- private TitleTextureKey ttkKai;
- private CCachedFontRenderer pfTowerText;
-
- private bool bFloorChanged = false;
- private int currentCharacter;
- private CCounter ctSlideAnimation;
- private CCounter ctStandingAnimation;
- private CCounter ctClimbingAnimation;
- private CCounter ctRunningAnimation;
- private CCounter ctClearAnimation;
- private CCounter ctFailAnimation;
- private CCounter ctStandTiredAnimation;
- private CCounter ctClimbTiredAnimation;
- private CCounter ctRunTiredAnimation;
- private CCounter ctClearTiredAnimation;
- private CCounter ctClimbDuration;
- private bool TowerFinished;
-
- private CCounter ct炎;
-
- private bool IsUpNotFound;
- private bool IsDownNotFound;
-
- private EFIFOモード eFadeMode;
- //-----------------
- #endregion
- }
-}
+using System;
+using FDK;
+using System.Drawing;
+using static TJAPlayer3.CActSelect曲リスト;
+
+using Color = System.Drawing.Color;
+using Rectangle = System.Drawing.Rectangle;
+using System.Collections.Generic;
+
+namespace TJAPlayer3
+{
+ internal class CActImplBackground : CActivity
+ {
+ // 本家っぽい背景を表示させるメソッド。
+ //
+ // 拡張性とかないんで。はい、ヨロシクゥ!
+ //
+ public CActImplBackground()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public void tFadeIn(int player)
+ {
+ //this.ct上背景クリアインタイマー[player] = new CCounter(0, 100, 2, TJAPlayer3.Timer);
+ this.eFadeMode = EFIFOモード.フェードイン;
+ }
+
+ //public void tFadeOut(int player)
+ //{
+ // this.ct上背景フェードタイマー[player] = new CCounter( 0, 100, 6, CDTXMania.Timer );
+ // this.eFadeMode = EFIFOモード.フェードアウト;
+ //}
+
+ public void ClearIn(int player)
+ {
+ /*this.ct上背景クリアインタイマー[player] = new CCounter(0, 100, 2, TJAPlayer3.Timer);
+ this.ct上背景クリアインタイマー[player].n現在の値 = 0;
+ this.ct上背景FIFOタイマー = new CCounter(0, 100, 2, TJAPlayer3.Timer);
+ this.ct上背景FIFOタイマー.n現在の値 = 0;*/
+ UpScript?.ClearIn(player);
+ DownScript?.ClearIn(player);
+ }
+
+ public void ClearOut(int player)
+ {
+ UpScript?.ClearOut(player);
+ DownScript?.ClearOut(player);
+ }
+
+ public override void Activate()
+ {
+ if (!this.IsDeActivated)
+ return;
+
+ var bgOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.BACKGROUND}");
+ var preset = HScenePreset.GetBGPreset();
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ bgOrigindir += "Tower";
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ {
+ bgOrigindir += "Dan";
+ }
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ bgOrigindir += "AI";
+ }
+ else
+ {
+ bgOrigindir += "Normal";
+ }
+
+ Random random = new Random();
+
+ if (System.IO.Directory.Exists($@"{bgOrigindir}{Path.DirectorySeparatorChar}Up"))
+ {
+ var upDirs = System.IO.Directory.GetDirectories($@"{bgOrigindir}{Path.DirectorySeparatorChar}Up");
+
+ // If there is a preset upper background and this preset exists on the skin use it, else random upper background
+ var _presetPath = (preset != null && preset.UpperBackground != null) ? $@"{bgOrigindir}{Path.DirectorySeparatorChar}Up{Path.DirectorySeparatorChar}" + preset.UpperBackground[random.Next(0, preset.UpperBackground.Length)] : "";
+ var upPath = (preset != null && System.IO.Directory.Exists(_presetPath))
+ ? _presetPath
+ : upDirs[random.Next(0, upDirs.Length)];
+
+ UpScript = new ScriptBG($@"{upPath}{Path.DirectorySeparatorChar}Script.lua");
+ UpScript.Init();
+
+ IsUpNotFound = false;
+ }
+ else
+ {
+ IsUpNotFound = true;
+ }
+
+ if (System.IO.Directory.Exists($@"{bgOrigindir}{Path.DirectorySeparatorChar}Down"))
+ {
+ var downDirs = System.IO.Directory.GetDirectories($@"{bgOrigindir}{Path.DirectorySeparatorChar}Down");
+
+ // If there is a preset lower background and this preset exists on the skin use it, else random upper background
+ var _presetPath = (preset != null && preset.LowerBackground != null) ? $@"{bgOrigindir}{Path.DirectorySeparatorChar}Down{Path.DirectorySeparatorChar}" + preset.LowerBackground[random.Next(0, preset.LowerBackground.Length)] : "";
+ var downPath = (preset != null && System.IO.Directory.Exists(_presetPath))
+ ? _presetPath
+ : downDirs[random.Next(0, downDirs.Length)];
+
+ DownScript = new ScriptBG($@"{downPath}{Path.DirectorySeparatorChar}Script.lua");
+ DownScript?.Init();
+
+ if (DownScript.Exists()) IsDownNotFound = false;
+ }
+ else
+ {
+ IsDownNotFound = true;
+ }
+
+ this.pfTowerText = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.Game_Tower_Font_TowerText);
+
+ /*
+ if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
+ {
+ this.pfTowerText = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.Game_Tower_Font_TowerText);
+ }
+ else
+ {
+ this.pfTowerText = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.Game_Tower_Font_TowerText);
+ }
+ */
+
+ this.ttkTouTatsuKaiSuu = new TitleTextureKey(CLangManager.LangInstance.GetString(1000), pfTowerText, Color.White, Color.Black, 700);
+ this.ttkKai = new TitleTextureKey(CLangManager.LangInstance.GetString(1001), pfTowerText, Color.White, Color.Black, 700);
+
+ this.ct炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer);
+
+ this.currentCharacter = Math.Max(0, Math.Min(TJAPlayer3.SaveFileInstances[0].data.Character, TJAPlayer3.Skin.Characters_Ptn - 1));
+
+ float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[currentCharacter][0];
+ float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[currentCharacter][1];
+
+ // Scale tower chara
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Standing[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Climbing[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Running[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Clear[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Fail[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Standing_Tired[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Climbing_Tired[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Running_Tired[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+ foreach (CTexture texture in TJAPlayer3.Tx.Characters_Tower_Clear_Tired[currentCharacter])
+ {
+ texture.vcScaleRatio.X = resolutionScaleX;
+ texture.vcScaleRatio.Y = resolutionScaleY;
+ }
+
+ this.ctSlideAnimation = new CCounter();
+ this.ctClimbDuration = new CCounter();
+ this.ctStandingAnimation = new CCounter(0, 1000, (60000f / (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed)) * 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();
+ this.ctFailAnimation = new CCounter();
+ this.ctStandTiredAnimation = new CCounter();
+ this.ctClimbTiredAnimation = new CCounter();
+ this.ctRunTiredAnimation = new CCounter();
+ this.ctClearTiredAnimation = new CCounter();
+
+ TowerFinished = false;
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ if (this.IsDeActivated)
+ return;
+
+ TJAPlayer3.tDisposeSafely(ref UpScript);
+ TJAPlayer3.tDisposeSafely(ref DownScript);
+
+ TJAPlayer3.tDisposeSafely(ref pfTowerText);
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ if (base.IsDeActivated)
+ return 0;
+
+
+ //this.ct上背景FIFOタイマー?.t進行();
+
+
+ #region [Tower specific variables declaration]
+
+ float currentFloorPositionMax140 = 0;
+
+ #endregion
+
+ // fNow_Measure_s (/ m)
+
+ #region [Upper background]
+
+ if (!IsUpNotFound)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) UpScript?.Update();
+ UpScript?.Draw();
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ #region [Tower animations variables]
+
+ this.bFloorChanged = CFloorManagement.LastRegisteredFloor > 0 && (CFloorManagement.LastRegisteredFloor < TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1);
+
+ int maxFloor = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
+ int nightTime = Math.Max(140, maxFloor / 2);
+
+ currentFloorPositionMax140 = Math.Min(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / (float)nightTime, 1f);
+
+ #endregion
+
+ #region [Tower background informations]
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(ttkTouTatsuKaiSuu).t2D描画(TJAPlayer3.Skin.Game_Tower_Font_TouTatsuKaiSuu[0], TJAPlayer3.Skin.Game_Tower_Font_TouTatsuKaiSuu[1]);
+ TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(ttkKai).t2D描画(TJAPlayer3.Skin.Game_Tower_Font_Kai[0], TJAPlayer3.Skin.Game_Tower_Font_Kai[1]);
+
+ this.ct炎.TickLoop();
+ CFloorManagement.loopFrames();
+
+ #region [Floor number]
+
+ if (CFloorManagement.CurrentNumberOfLives > 0)
+ CFloorManagement.LastRegisteredFloor = TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1;
+
+ string floorStr = CFloorManagement.LastRegisteredFloor.ToString();
+
+ int len = floorStr.Length;
+
+ int digitLength = TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Width / 10;
+
+ TJAPlayer3.Tx.Taiko_Combo[0].color4 = new Color4(1f, 0.6f, 0.2f, 1f);
+ TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.X = 1.4f;
+ TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.Y = 1.4f;
+
+ for (int idx = len - 1; idx >= 0; idx--)
+ {
+ int currentNum = int.Parse(floorStr[idx].ToString());
+
+ TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.Skin.Game_Tower_Floor_Number[0] - ((digitLength - 8) * (len - idx) * 1.4f),
+ TJAPlayer3.Skin.Game_Tower_Floor_Number[1],
+ new Rectangle(digitLength * currentNum, 0,
+ digitLength, TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Height));
+ }
+
+ #endregion
+
+ #region [Life Tamashii icon]
+
+ int soulfire_width = TJAPlayer3.Tx.Gauge_Soul_Fire.szTextureSize.Width / 8;
+ int soulfire_height = TJAPlayer3.Tx.Gauge_Soul_Fire.szTextureSize.Height;
+
+ int soul_height = TJAPlayer3.Tx.Gauge_Soul.szTextureSize.Height / 2;
+
+ TJAPlayer3.Tx.Gauge_Soul_Fire?.t2D描画(TJAPlayer3.Skin.Gauge_Soul_Fire_X_Tower, TJAPlayer3.Skin.Gauge_Soul_Fire_Y_Tower, new Rectangle(soulfire_width * (this.ct炎.CurrentValue), 0, soulfire_width, soulfire_height));
+ TJAPlayer3.Tx.Gauge_Soul?.t2D描画(TJAPlayer3.Skin.Gauge_Soul_X_Tower, TJAPlayer3.Skin.Gauge_Soul_Y_Tower, new Rectangle(0, soul_height, TJAPlayer3.Tx.Gauge_Soul.szTextureSize.Width, soul_height));
+
+ #endregion
+
+ #region [Life number]
+
+ if (CFloorManagement.MaxNumberOfLives <= 0)
+ {
+ CFloorManagement.MaxNumberOfLives = 5;
+ CFloorManagement.CurrentNumberOfLives = 5;
+ }
+
+ string lifeStr = CFloorManagement.CurrentNumberOfLives.ToString();
+
+ len = lifeStr.Length;
+
+ bool lifeSpecialCase = CFloorManagement.CurrentNumberOfLives == 1 && CFloorManagement.MaxNumberOfLives != 1;
+ float lifeRatio = CFloorManagement.CurrentNumberOfLives / (float)CFloorManagement.MaxNumberOfLives;
+
+ Color4 lifeColor = (lifeRatio > 0.5f && !lifeSpecialCase) ? new Color4(0.2f, 1f, 0.2f, 1f)
+ : ((lifeRatio >= 0.2f && !lifeSpecialCase) ? new Color4(1f, 1f, 0.2f, 1f)
+ : new Color4(1f, 0.2f, 0.2f, 1f));
+
+ TJAPlayer3.Tx.Taiko_Combo[0].color4 = lifeColor;
+ TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.X = 1.1f;
+ TJAPlayer3.Tx.Taiko_Combo[0].vcScaleRatio.Y = 1.1f;
+
+ for (int idx = 0; idx < len; idx++)
+ {
+ int currentNum = int.Parse(lifeStr[len - idx - 1].ToString());
+
+ TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.Skin.Game_Tower_Life_Number[0] + ((digitLength - 8) * (len - idx) * 1.1f),
+ TJAPlayer3.Skin.Game_Tower_Life_Number[1],
+ new Rectangle(digitLength * currentNum, 0,
+ digitLength, TJAPlayer3.Tx.Taiko_Combo[0].szTextureSize.Height));
+ }
+
+ TJAPlayer3.Tx.Taiko_Combo[0].color4 = new Color4(1f, 1f, 1f, 1f);
+
+ #endregion
+
+ }
+
+ #endregion
+ }
+ }
+
+ #endregion
+
+ #region [Lower background]
+
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ int maxFloor = TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor;
+
+ TJAPlayer3.actTextConsole.tPrint(0, 0, CTextConsole.EFontType.White, maxFloor.ToString());
+
+ int nightTime = Math.Max(140, maxFloor / 2);
+
+ int currentTowerType = Array.IndexOf(TJAPlayer3.Skin.Game_Tower_Names, TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTowerType);
+
+ if (currentTowerType < 0 || currentTowerType >= TJAPlayer3.Skin.Game_Tower_Ptn)
+ currentTowerType = 0;
+
+ #region [Tower lower background]
+
+ float nextPositionMax140 = Math.Min((TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) / (float)nightTime, 1f);
+
+ if (bFloorChanged == true)
+ ctSlideAnimation.Start(0, 1000, 120f / ((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed), TJAPlayer3.Timer);
+
+ float progressFactor = (nextPositionMax140 - currentFloorPositionMax140) * (ctSlideAnimation.CurrentValue / 1000f);
+
+
+
+ #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]));
+
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DownScript.Update();
+ DownScript.Draw();
+
+ #endregion
+
+
+ #region [Tower body]
+
+ progressFactor = ctSlideAnimation.CurrentValue / 1000f;
+
+ int currentTower = currentTowerType;
+
+ // Will implement the roof later, need the beforehand total floor count calculation before
+ int nextTowerBase = ((TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) / 10) % TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower];
+ int towerBase = (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] / 10) % TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower];
+
+ int currentDeco = TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] % TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower];
+ int nextDeco = (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1) % TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower];
+
+ // Microfix for the first floor suddenly changing texture
+ if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] == 0 && TJAPlayer3.Skin.Game_Tower_Ptn_Deco[currentTower] > 1)
+ currentDeco++;
+ if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] == 0 && TJAPlayer3.Skin.Game_Tower_Ptn_Base[currentTower] > 1)
+ towerBase++;
+
+ int widthChange = (int)(progressFactor * TJAPlayer3.Skin.Game_Tower_Floors_Move[0]);
+ int heightChange = (int)(progressFactor * TJAPlayer3.Skin.Game_Tower_Floors_Move[1]);
+
+ // Current trunk
+ if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] < maxFloor)
+ TJAPlayer3.Tx.Tower_Base[currentTower][towerBase]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[1] + heightChange); // 316 + 360
+ else
+ TJAPlayer3.Tx.Tower_Top[currentTower]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[1] + heightChange);
+
+ // Current deco
+ TJAPlayer3.Tx.Tower_Deco[currentTower][currentDeco]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Deco[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Deco[1] + heightChange);
+
+ int originY = TJAPlayer3.Skin.Game_Tower_Floors_Move[1] - heightChange;
+
+ // Next trunk
+ if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 < maxFloor)
+ TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange,
+ new Rectangle(0, originY, TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase].szTextureSize.Width, TJAPlayer3.Tx.Tower_Base[currentTower][nextTowerBase].szTextureSize.Height - originY));
+ else if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 == maxFloor)
+ {
+ TJAPlayer3.Tx.Tower_Top[currentTower]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Body[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange,
+ new Rectangle(0, originY, TJAPlayer3.Tx.Tower_Top[currentTower].szTextureSize.Width, TJAPlayer3.Tx.Tower_Top[currentTower].szTextureSize.Height - originY));
+ }
+
+ // Next deco
+ if (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.NowMeasure[0] + 1 <= maxFloor)
+ TJAPlayer3.Tx.Tower_Deco[currentTower][nextDeco]?.t2D下中央基準描画(
+ TJAPlayer3.Skin.Game_Tower_Floors_Deco[0] - TJAPlayer3.Skin.Game_Tower_Floors_Move[0] + widthChange,
+ TJAPlayer3.Skin.Game_Tower_Floors_Deco[1] - TJAPlayer3.Skin.Game_Tower_Floors_Move[1] + heightChange);
+
+
+ #endregion
+
+ #region [Climbing don]
+
+ bool ctIsTired = !((CFloorManagement.CurrentNumberOfLives / (float)CFloorManagement.MaxNumberOfLives) >= 0.2f && !(CFloorManagement.CurrentNumberOfLives == 1 && CFloorManagement.MaxNumberOfLives != 1));
+
+ bool stageEnded = TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_EndStage || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_CLEAR_FadeOut || CFloorManagement.CurrentNumberOfLives == 0;
+
+ if (bFloorChanged == true)
+ {
+ float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
+ ctClimbDuration.Start(0, 1500, 120f / 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);
+ }
+
+ bool isClimbing = ctClimbDuration.CurrentValue > 0 && ctClimbDuration.CurrentValue < 1500;
+
+ if (stageEnded && !TowerFinished && !isClimbing)
+ {
+ float floorBPM = (float)(TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
+ 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)
+ {
+ int animChar = ctClimbTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter];
+ int distDonX = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 1000f));
+ int distDonY = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 1000f));
+ TJAPlayer3.Tx.Characters_Tower_Climbing_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
+ }
+ // Tired Run
+ else if (ctIsTired && (ctClimbDuration.CurrentValue > 1000 && ctClimbDuration.CurrentValue < 1500) && TJAPlayer3.Skin.Characters_Tower_Running_Tired_Ptn[currentCharacter] > 0)
+ {
+ int animChar = ctRunTiredAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter];
+ int distDonX = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 500f));
+ int distDonY = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 500f));
+ TJAPlayer3.Tx.Characters_Tower_Running_Tired[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
+ }
+ // Climb
+ else if ((ctClimbDuration.CurrentValue <= 1000) && TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter] > 0)
+ {
+ int animChar = ctClimbingAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Climbing_Ptn[currentCharacter];
+ int distDonX = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 1000f));
+ int distDonY = (int)(ctClimbDuration.CurrentValue * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 1000f));
+ TJAPlayer3.Tx.Characters_Tower_Climbing[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
+ }
+ // Run
+ else if ((ctClimbDuration.CurrentValue > 1000 && ctClimbDuration.CurrentValue < 1500) && TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter] > 0)
+ {
+ int animChar = ctRunningAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Running_Ptn[currentCharacter];
+ int distDonX = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[0] / 500f));
+ int distDonY = (int)((1500 - ctClimbDuration.CurrentValue) * (TJAPlayer3.Skin.Game_Tower_Don_Move[1] / 500f));
+ TJAPlayer3.Tx.Characters_Tower_Running[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0] + distDonX, TJAPlayer3.Skin.Game_Tower_Don[1] + distDonY);
+ }
+ }
+ else
+ {
+ // Fail
+ if (TJAPlayer3.Skin.Characters_Tower_Fail_Ptn[currentCharacter] > 0 && CFloorManagement.CurrentNumberOfLives == 0)
+ {
+ 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 = 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 = 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_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
+ else if (TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter] > 0)
+ {
+ int animChar = ctStandingAnimation.CurrentValue % TJAPlayer3.Skin.Characters_Tower_Standing_Ptn[currentCharacter];
+ TJAPlayer3.Tx.Characters_Tower_Standing[currentCharacter][animChar]?.t2D拡大率考慮下中心基準描画(TJAPlayer3.Skin.Game_Tower_Don[0], TJAPlayer3.Skin.Game_Tower_Don[1]); // Center X - 50
+ }
+ }
+
+ #endregion
+
+ #region [Miss icon]
+
+ if (CFloorManagement.InvincibilityFrames != null && CFloorManagement.InvincibilityFrames.CurrentValue < CFloorManagement.InvincibilityDurationSpeedDependent)
+ {
+ if (TJAPlayer3.Tx.Tower_Miss != null)
+ TJAPlayer3.Tx.Tower_Miss.Opacity = Math.Min(255, 1000 - CFloorManagement.InvincibilityFrames.CurrentValue);
+ TJAPlayer3.Tx.Tower_Miss?.t2D下中央基準描画(TJAPlayer3.Skin.Game_Tower_Miss[0], TJAPlayer3.Skin.Game_Tower_Miss[1]);
+ }
+
+ #endregion
+
+ ctSlideAnimation?.Tick();
+ ctClimbDuration?.Tick();
+ ctStandingAnimation?.TickLoop();
+ ctClimbingAnimation?.TickLoop();
+ ctRunningAnimation?.TickLoop();
+ ctStandTiredAnimation?.TickLoop();
+ ctClimbTiredAnimation?.TickLoop();
+ ctRunTiredAnimation?.TickLoop();
+ ctClearAnimation?.Tick();
+ ctClearTiredAnimation?.Tick();
+ ctFailAnimation?.Tick();
+
+ #endregion
+ }
+ else if (!TJAPlayer3.stage演奏ドラム画面.bDoublePlay && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
+ {
+ if (!IsDownNotFound)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DownScript?.Update();
+ DownScript?.Draw();
+ }
+ }
+
+
+ #endregion
+
+ return base.Draw();
+ }
+
+ #region[ private ]
+ //-----------------
+
+ #region 背景
+ /*private CTexture Background,
+ Background_Down,
+ Background_Down_Clear,
+ Background_Down_Scroll;
+ private CTexture[] Background_Up_1st,
+ Background_Up_2nd,
+ Background_Up_3rd,
+ Background_Up_Dan = new CTexture[6],
+ Background_Up_Tower = new CTexture[8];*/
+ #endregion
+
+ /*private CCounter[] ct上背景スクロール用タイマー1st; //上背景のX方向スクロール用
+ private CCounter[] ct上背景スクロール用タイマー2nd; //上背景のY方向スクロール用
+ private CCounter[] ct上背景スクロール用タイマー3rd; //上背景のY方向スクロール用
+ private CCounter ct下背景スクロール用タイマー1; //下背景パーツ1のX方向スクロール用
+ private CCounter ct上背景FIFOタイマー;
+ private CCounter[] ct上背景クリアインタイマー;
+ private CCounter[] ct上背景スクロール用タイマー1stDan; //上背景のX方向スクロール用
+ private CCounter ct上背景スクロール用タイマー2stDan; //上背景のY方向スクロール用
+
+ private CCounter[] ct上背景スクロール用タイマー1stTower; //上背景のX方向スクロール用
+ private CCounter ct上背景スクロール用タイマー2stTower; //上背景のX方向スクロール用
+ */
+ //private CTexture tx上背景メイン;
+ //private CTexture tx上背景クリアメイン;
+ //private CTexture tx下背景メイン;
+ //private CTexture tx下背景クリアメイン;
+ //private CTexture tx下背景クリアサブ1;
+
+ private ScriptBG UpScript;
+ private ScriptBG DownScript;
+
+ private TitleTextureKey ttkTouTatsuKaiSuu;
+ private TitleTextureKey ttkKai;
+ private CCachedFontRenderer pfTowerText;
+
+ private bool bFloorChanged = false;
+ private int currentCharacter;
+ private CCounter ctSlideAnimation;
+ private CCounter ctStandingAnimation;
+ private CCounter ctClimbingAnimation;
+ private CCounter ctRunningAnimation;
+ private CCounter ctClearAnimation;
+ private CCounter ctFailAnimation;
+ private CCounter ctStandTiredAnimation;
+ private CCounter ctClimbTiredAnimation;
+ private CCounter ctRunTiredAnimation;
+ private CCounter ctClearTiredAnimation;
+ private CCounter ctClimbDuration;
+ private bool TowerFinished;
+
+ private CCounter ct炎;
+
+ private bool IsUpNotFound;
+ private bool IsDownNotFound;
+
+ private EFIFOモード eFadeMode;
+ //-----------------
+ #endregion
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums風船.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs
similarity index 79%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums風船.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs
index f471539a..84b8b8a5 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums風船.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplBalloon.cs
@@ -1,350 +1,297 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drums風船 : CActivity
- {
-
-
- public CAct演奏Drums風船()
- {
- ST文字位置[] st文字位置Array = new ST文字位置[11];
-
- ST文字位置 st文字位置 = new ST文字位置();
- st文字位置.ch = '0';
- st文字位置.pt = new Point(0, 0);
- st文字位置Array[0] = st文字位置;
- ST文字位置 st文字位置2 = new ST文字位置();
- st文字位置2.ch = '1';
- st文字位置2.pt = new Point(62, 0);
- st文字位置Array[1] = st文字位置2;
- ST文字位置 st文字位置3 = new ST文字位置();
- st文字位置3.ch = '2';
- st文字位置3.pt = new Point(124, 0);
- st文字位置Array[2] = st文字位置3;
- ST文字位置 st文字位置4 = new ST文字位置();
- st文字位置4.ch = '3';
- st文字位置4.pt = new Point(186, 0);
- st文字位置Array[3] = st文字位置4;
- ST文字位置 st文字位置5 = new ST文字位置();
- st文字位置5.ch = '4';
- st文字位置5.pt = new Point(248, 0);
- st文字位置Array[4] = st文字位置5;
- ST文字位置 st文字位置6 = new ST文字位置();
- st文字位置6.ch = '5';
- st文字位置6.pt = new Point(310, 0);
- st文字位置Array[5] = st文字位置6;
- ST文字位置 st文字位置7 = new ST文字位置();
- st文字位置7.ch = '6';
- st文字位置7.pt = new Point(372, 0);
- st文字位置Array[6] = st文字位置7;
- ST文字位置 st文字位置8 = new ST文字位置();
- st文字位置8.ch = '7';
- st文字位置8.pt = new Point(434, 0);
- st文字位置Array[7] = st文字位置8;
- ST文字位置 st文字位置9 = new ST文字位置();
- st文字位置9.ch = '8';
- st文字位置9.pt = new Point(496, 0);
- st文字位置Array[8] = st文字位置9;
- ST文字位置 st文字位置10 = new ST文字位置();
- st文字位置10.ch = '9';
- st文字位置10.pt = new Point(558, 0);
- st文字位置Array[9] = st文字位置10;
-
- this.st文字位置 = st文字位置Array;
-
- base.IsDeActivated = true;
-
- }
-
- public override void Activate()
- {
- this.ct風船終了 = new CCounter();
- this.ct風船ふきだしアニメ = new CCounter();
- this.ct風船アニメ = new CCounter[5];
- for (int i = 0; i < 5; i++)
- {
- this.ct風船アニメ[i] = new CCounter();
- }
-
- this.ct風船ふきだしアニメ = new CCounter(0, 1, 100, TJAPlayer3.Timer);
-
- KusudamaScript = new (CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.BALLOON}{TextureLoader.KUSUDAMA}Script.lua"));
- KusudamaScript.Init();
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- KusudamaScript.Dispose();
-
- this.ct風船終了 = null;
- this.ct風船ふきだしアニメ = null;
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- return base.Draw();
- }
-
- public void KusuIn() => KusudamaScript.KusuIn();
- public void KusuBroke() => KusudamaScript.KusuBroke();
- public void KusuMiss() => KusudamaScript.KusuMiss();
-
- public enum EBalloonType
- {
- BALLOON,
- KUSUDAMA,
- FUSEROLL
- }
-
- public void tDrawKusudama()
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
- {
- KusudamaScript.Update();
- }
- KusudamaScript.Draw();
- }
-
- public int On進行描画(int n連打ノルマ, int n連打数, int player, EBalloonType btype)
- {
- this.ct風船ふきだしアニメ.TickLoop();
- this.ct風船アニメ[player].Tick();
-
- //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.赤, this.ct風船終了.n現在の値.ToString() );
- int[] n残り打数 = new int[] { 0, 0, 0, 0, 0 };
- #region[ ]
- if (n連打ノルマ > 0)
- {
- if (n連打ノルマ < 5)
- {
- n残り打数 = new int[] { 4, 3, 2, 1, 0 };
- }
- else
- {
- n残り打数[0] = (n連打ノルマ / 5) * 4;
- n残り打数[1] = (n連打ノルマ / 5) * 3;
- n残り打数[2] = (n連打ノルマ / 5) * 2;
- n残り打数[3] = (n連打ノルマ / 5) * 1;
- }
- }
- #endregion
-
- if (n連打数 != 0)
- {
- int x;
- int y;
- int frame_x;
- int frame_y;
- int num_x;
- int num_y;
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- x = TJAPlayer3.Skin.Game_Balloon_Balloon_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
- y = TJAPlayer3.Skin.Game_Balloon_Balloon_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
- frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
- frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
- num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
- num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- x = TJAPlayer3.Skin.Game_Balloon_Balloon_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
- y = TJAPlayer3.Skin.Game_Balloon_Balloon_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
- frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
- frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
- num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
- num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
- }
- else
- {
- x = TJAPlayer3.Skin.Game_Balloon_Balloon_X[player];
- y = TJAPlayer3.Skin.Game_Balloon_Balloon_Y[player];
- frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_X[player];
- frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_Y[player];
- num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_X[player];
- num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Y[player];
- }
- //1P:0 2P:245
- //if (CDTXMania.Tx.Chara_Balloon_Breaking != null && CDTXMania.ConfigIni.ShowChara)
- // CDTXMania.Tx.Chara_Balloon_Breaking.t2D描画(CDTXMania.app.Device, CDTXMania.Skin.Game_Chara_Balloon_X[player], CDTXMania.Skin.Game_Chara_Balloon_Y[player]);
- for (int j = 0; j < 5; j++)
- {
-
- if (n残り打数[j] < n連打数 && btype == EBalloonType.BALLOON)
- {
- if (TJAPlayer3.Tx.Balloon_Breaking[j] != null)
- TJAPlayer3.Tx.Balloon_Breaking[j].t2D描画(x + (this.ct風船ふきだしアニメ.CurrentValue == 1 ? 3 : 0), y);
- break;
- }
- }
- //1P:31 2P:329
-
- if (btype == EBalloonType.BALLOON)
- {
- if (TJAPlayer3.Tx.Balloon_Balloon != null)
- TJAPlayer3.Tx.Balloon_Balloon.t2D描画(frame_x, frame_y);
- this.t文字表示(num_x, num_y, n連打数, player);
- }
- else if (btype == EBalloonType.FUSEROLL)
- {
- if (TJAPlayer3.Tx.Fuse_Balloon != null)
- TJAPlayer3.Tx.Fuse_Balloon.t2D描画(frame_x, frame_y);
- this.tFuseNumber(num_x, num_y, n連打数, player);
- }
- else if (btype == EBalloonType.KUSUDAMA && player == 0)
- {
- /*
- if (TJAPlayer3.Tx.Kusudama_Back != null)
- TJAPlayer3.Tx.Kusudama_Back.t2D描画(0, 0);
- if (TJAPlayer3.Tx.Kusudama != null)
- TJAPlayer3.Tx.Kusudama.t2D描画(0, 0);
- */
- this.tKusudamaNumber(n連打数);
- }
-
- //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
- }
- if (btype == EBalloonType.KUSUDAMA)
- {
- /*
- for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[i] = false;
- TJAPlayer3.stage演奏ドラム画面.b連打中[i] = false;
- }
- */
- }
- else
- {
- if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
- {
- TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player] = false;
- TJAPlayer3.stage演奏ドラム画面.b連打中[player] = false;
- }
- }
-
-
-
-
-
- return base.Draw();
- }
-
- private KusudamaScript KusudamaScript;
-
- //private CTexture tx連打枠;
- //private CTexture tx連打数字;
- private readonly ST文字位置[] st文字位置;
-
- //private CTexture txキャラクター;
- //private CTexture txキャラクター_風船終了;
-
- //private CTexture[] tx風船枠 = new CTexture[6];
-
- private CCounter ct風船終了;
- private CCounter ct風船ふきだしアニメ;
-
- public CCounter[] ct風船アニメ;
- private float[] RollScale = new float[]
- {
- 0.000f,
- 0.123f, // リピート
- 0.164f,
- 0.164f,
- 0.164f,
- 0.137f,
- 0.110f,
- 0.082f,
- 0.055f,
- 0.000f
- };
-
- [StructLayout(LayoutKind.Sequential)]
- private struct ST文字位置
- {
- public char ch;
- public Point pt;
- }
-
- private void _nbDisplay(CTexture tx, int num, int x, int y)
- {
- int[] nums = CConversion.SeparateDigits(num);
- for (int j = 0; j < nums.Length; j++)
- {
- float offset = j - (nums.Length / 2.0f);
- float _x = x - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[0] * offset);
- float _y = y - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[1] * offset);
-
- float width = tx.sz画像サイズ.Width / 10.0f;
- float height = tx.sz画像サイズ.Height;
-
- tx.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
- }
- }
-
- private void tKusudamaNumber(int num)
- {
- if (TJAPlayer3.Tx.Kusudama_Number == null) return;
- TJAPlayer3.Tx.Kusudama_Number.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
- TJAPlayer3.Tx.Kusudama_Number.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
- int x = TJAPlayer3.Skin.Game_Kusudama_Number_X;
- int y = TJAPlayer3.Skin.Game_Kusudama_Number_Y;
-
- int[] nums = CConversion.SeparateDigits(num);
- for (int j = 0; j < nums.Length; j++)
- {
- float offset = j - ((nums.Length - 2) / 2.0f);
- float width = TJAPlayer3.Tx.Kusudama_Number.sz画像サイズ.Width / 10.0f;
- float height = TJAPlayer3.Tx.Kusudama_Number.sz画像サイズ.Height;
- float _x = x - (width * offset);
- float _y = y;
-
- TJAPlayer3.Tx.Kusudama_Number.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
- }
- }
-
- private void tFuseNumber(int x, int y, int num, int nPlayer)
- {
- if (TJAPlayer3.Tx.Fuse_Number == null) return;
- TJAPlayer3.Tx.Fuse_Number.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
- TJAPlayer3.Tx.Fuse_Number.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].CurrentValue];
-
- _nbDisplay(TJAPlayer3.Tx.Fuse_Number, num, x, y);
- }
-
- private void t文字表示(int x, int y, int num, int nPlayer)
- {
- if (TJAPlayer3.Tx.Balloon_Number_Roll == null) return;
- TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
- TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].CurrentValue];
-
- _nbDisplay(TJAPlayer3.Tx.Balloon_Number_Roll, num, x, y);
- }
-
- public void tEnd()
- {
- this.ct風船終了 = new CCounter(0, 80, 10, SoundManager.PlayTimer);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using FDK;
+
+namespace TJAPlayer3
+{
+ internal class CActImplBalloon : CActivity
+ {
+
+
+ public CActImplBalloon()
+ {
+ base.IsDeActivated = true;
+
+ }
+
+ public override void Activate()
+ {
+ this.ct風船終了 = new CCounter();
+ this.ct風船ふきだしアニメ = new CCounter();
+ this.ct風船アニメ = new CCounter[5];
+ for (int i = 0; i < 5; i++)
+ {
+ this.ct風船アニメ[i] = new CCounter();
+ }
+
+ this.ct風船ふきだしアニメ = new CCounter(0, 1, 100, TJAPlayer3.Timer);
+
+ KusudamaScript = new (CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.BALLOON}{TextureLoader.KUSUDAMA}Script.lua"));
+ KusudamaScript.Init();
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ KusudamaScript.Dispose();
+
+ this.ct風船終了 = null;
+ this.ct風船ふきだしアニメ = null;
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ return base.Draw();
+ }
+
+ public void KusuIn() => KusudamaScript.KusuIn();
+ public void KusuBroke() => KusudamaScript.KusuBroke();
+ public void KusuMiss() => KusudamaScript.KusuMiss();
+
+ public enum EBalloonType
+ {
+ BALLOON,
+ KUSUDAMA,
+ FUSEROLL
+ }
+
+ public void tDrawKusudama()
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
+ {
+ KusudamaScript.Update();
+ }
+ KusudamaScript.Draw();
+ }
+
+ public int On進行描画(int n連打ノルマ, int n連打数, int player, EBalloonType btype)
+ {
+ this.ct風船ふきだしアニメ.TickLoop();
+ this.ct風船アニメ[player].Tick();
+
+ //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.赤, this.ct風船終了.n現在の値.ToString() );
+ int[] n残り打数 = new int[] { 0, 0, 0, 0, 0 };
+ #region[ ]
+ if (n連打ノルマ > 0)
+ {
+ if (n連打ノルマ < 5)
+ {
+ n残り打数 = new int[] { 4, 3, 2, 1, 0 };
+ }
+ else
+ {
+ n残り打数[0] = (n連打ノルマ / 5) * 4;
+ n残り打数[1] = (n連打ノルマ / 5) * 3;
+ n残り打数[2] = (n連打ノルマ / 5) * 2;
+ n残り打数[3] = (n連打ノルマ / 5) * 1;
+ }
+ }
+ #endregion
+
+ if (n連打数 != 0)
+ {
+ int x;
+ int y;
+ int frame_x;
+ int frame_y;
+ int num_x;
+ int num_y;
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ x = TJAPlayer3.Skin.Game_Balloon_Balloon_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
+ y = TJAPlayer3.Skin.Game_Balloon_Balloon_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
+ frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
+ frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
+ num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
+ num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ x = TJAPlayer3.Skin.Game_Balloon_Balloon_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
+ y = TJAPlayer3.Skin.Game_Balloon_Balloon_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
+ frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
+ frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
+ num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
+ num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
+ }
+ else
+ {
+ x = TJAPlayer3.Skin.Game_Balloon_Balloon_X[player];
+ y = TJAPlayer3.Skin.Game_Balloon_Balloon_Y[player];
+ frame_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_X[player];
+ frame_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Frame_Y[player];
+ num_x = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_X[player];
+ num_y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Y[player];
+ }
+ //1P:0 2P:245
+ //if (CDTXMania.Tx.Chara_Balloon_Breaking != null && CDTXMania.ConfigIni.ShowChara)
+ // CDTXMania.Tx.Chara_Balloon_Breaking.t2D描画(CDTXMania.app.Device, CDTXMania.Skin.Game_Chara_Balloon_X[player], CDTXMania.Skin.Game_Chara_Balloon_Y[player]);
+ for (int j = 0; j < 5; j++)
+ {
+
+ if (n残り打数[j] < n連打数 && btype == EBalloonType.BALLOON)
+ {
+ if (TJAPlayer3.Tx.Balloon_Breaking[j] != null)
+ TJAPlayer3.Tx.Balloon_Breaking[j].t2D描画(x + (this.ct風船ふきだしアニメ.CurrentValue == 1 ? 3 : 0), y);
+ break;
+ }
+ }
+ //1P:31 2P:329
+
+ if (btype == EBalloonType.BALLOON)
+ {
+ if (TJAPlayer3.Tx.Balloon_Balloon != null)
+ TJAPlayer3.Tx.Balloon_Balloon.t2D描画(frame_x, frame_y);
+ this.t文字表示(num_x, num_y, n連打数, player);
+ }
+ else if (btype == EBalloonType.FUSEROLL)
+ {
+ if (TJAPlayer3.Tx.Fuse_Balloon != null)
+ TJAPlayer3.Tx.Fuse_Balloon.t2D描画(frame_x, frame_y);
+ this.tFuseNumber(num_x, num_y, n連打数, player);
+ }
+ else if (btype == EBalloonType.KUSUDAMA && player == 0)
+ {
+ /*
+ if (TJAPlayer3.Tx.Kusudama_Back != null)
+ TJAPlayer3.Tx.Kusudama_Back.t2D描画(0, 0);
+ if (TJAPlayer3.Tx.Kusudama != null)
+ TJAPlayer3.Tx.Kusudama.t2D描画(0, 0);
+ */
+ this.tKusudamaNumber(n連打数);
+ }
+
+ //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
+ }
+ if (btype == EBalloonType.KUSUDAMA)
+ {
+ /*
+ for(int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[i] = false;
+ TJAPlayer3.stage演奏ドラム画面.b連打中[i] = false;
+ }
+ */
+ }
+ else
+ {
+ if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
+ {
+ TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player] = false;
+ TJAPlayer3.stage演奏ドラム画面.b連打中[player] = false;
+ }
+ }
+
+
+
+
+
+ return base.Draw();
+ }
+
+ private KusudamaScript KusudamaScript;
+
+
+ private CCounter ct風船終了;
+ private CCounter ct風船ふきだしアニメ;
+
+ public CCounter[] ct風船アニメ;
+ private float[] RollScale = new float[]
+ {
+ 0.000f,
+ 0.123f, // リピート
+ 0.164f,
+ 0.164f,
+ 0.164f,
+ 0.137f,
+ 0.110f,
+ 0.082f,
+ 0.055f,
+ 0.000f
+ };
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct ST文字位置
+ {
+ public char ch;
+ public Point pt;
+ }
+
+ private void _nbDisplay(CTexture tx, int num, int x, int y)
+ {
+ int[] nums = CConversion.SeparateDigits(num);
+ for (int j = 0; j < nums.Length; j++)
+ {
+ float offset = j - (nums.Length / 2.0f);
+ float _x = x - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[0] * offset);
+ float _y = y - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[1] * offset);
+
+ float width = tx.sz画像サイズ.Width / 10.0f;
+ float height = tx.sz画像サイズ.Height;
+
+ tx.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
+ }
+ }
+
+ private void tKusudamaNumber(int num)
+ {
+ if (TJAPlayer3.Tx.Kusudama_Number == null) return;
+ TJAPlayer3.Tx.Kusudama_Number.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
+ TJAPlayer3.Tx.Kusudama_Number.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
+ int x = TJAPlayer3.Skin.Game_Kusudama_Number_X;
+ int y = TJAPlayer3.Skin.Game_Kusudama_Number_Y;
+
+ int[] nums = CConversion.SeparateDigits(num);
+ for (int j = 0; j < nums.Length; j++)
+ {
+ float offset = j - ((nums.Length - 2) / 2.0f);
+ float width = TJAPlayer3.Tx.Kusudama_Number.sz画像サイズ.Width / 10.0f;
+ float height = TJAPlayer3.Tx.Kusudama_Number.sz画像サイズ.Height;
+ float _x = x - (width * offset);
+ float _y = y;
+
+ TJAPlayer3.Tx.Kusudama_Number.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
+ }
+ }
+
+ private void tFuseNumber(int x, int y, int num, int nPlayer)
+ {
+ if (TJAPlayer3.Tx.Fuse_Number == null) return;
+ TJAPlayer3.Tx.Fuse_Number.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
+ TJAPlayer3.Tx.Fuse_Number.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].CurrentValue];
+
+ _nbDisplay(TJAPlayer3.Tx.Fuse_Number, num, x, y);
+ }
+
+ private void t文字表示(int x, int y, int num, int nPlayer)
+ {
+ if (TJAPlayer3.Tx.Balloon_Number_Roll == null) return;
+ TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
+ TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].CurrentValue];
+
+ _nbDisplay(TJAPlayer3.Tx.Balloon_Number_Roll, num, x, y);
+ }
+
+ public void tEnd()
+ {
+ this.ct風船終了 = new CCounter(0, 80, 10, SoundManager.PlayTimer);
+ }
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplCharacter.cs
similarity index 98%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplCharacter.cs
index 4e5d6f05..83b6147c 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsキャラクター.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplCharacter.cs
@@ -1,1077 +1,1077 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Drawing;
-using System.Diagnostics;
-using FDK;
-
-
-namespace TJAPlayer3
-{
- //クラスの設置位置は必ず演奏画面共通に置くこと。
- //そうしなければBPM変化に対応できません。
-
- //完成している部分は以下のとおり。(画像完成+動作確認完了で完成とする)
- //_通常モーション
- //_ゴーゴータイムモーション
- //_クリア時モーション
- //
- internal class CAct演奏Drumsキャラクター : CActivity
- {
- public CAct演奏Drumsキャラクター()
- {
-
- }
-
- public override void Activate()
- {
- for(int i = 0; i < 5; 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();
-
- this.ctキャラクターアクション_10コンボ[i] = new CCounter();
- this.ctキャラクターアクション_10コンボMAX[i] = new CCounter();
- this.ctキャラクターアクション_ゴーゴースタート[i] = new CCounter();
- 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();
- //CharaAction_Balloon_Miss[i] = new CCounter();
- CharaAction_Balloon_Delay[i] = new CCounter();
- ctKusuIn[i] = new();
-
- // Currently used character
- int p = TJAPlayer3.GetActualPlayer(i);
-
- this.iCurrentCharacter[i] = Math.Max(0, Math.Min(TJAPlayer3.SaveFileInstances[p].data.Character, TJAPlayer3.Skin.Characters_Ptn - 1));
-
- if (TJAPlayer3.Skin.Characters_Normal_Ptn[this.iCurrentCharacter[i]] != 0) ChangeAnime(i, Anime.Normal, true);
- else ChangeAnime(i, Anime.None, true);
-
- this.b風船連打中[i] = false;
- this.b演奏中[i] = false;
-
- // CharaAction_Balloon_FadeOut[i] = new Animations.FadeOut(TJAPlayer3.Skin.Game_Chara_Balloon_FadeOut);
- CharaAction_Balloon_FadeOut[i] = new Animations.FadeOut(TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]]);
-
- var tick = TJAPlayer3.Skin.Characters_Balloon_Timer[this.iCurrentCharacter[i]];
-
- var balloonBrokePtn = TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]];
- var balloonMissPtn = TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]];
-
- CharaAction_Balloon_FadeOut_StartMs[i] = new int[2];
-
- CharaAction_Balloon_FadeOut_StartMs[i][0] = (balloonBrokePtn * tick) - TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]];
- CharaAction_Balloon_FadeOut_StartMs[i][1] = (balloonMissPtn * tick) - TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]];
-
- if (balloonBrokePtn > 1) CharaAction_Balloon_FadeOut_StartMs[i][0] /= balloonBrokePtn - 1;
- if (balloonMissPtn > 1) CharaAction_Balloon_FadeOut_StartMs[i][1] /= balloonMissPtn - 1; // - 1はタイマー用
-
- if (CharaAction_Balloon_Delay[i] != null) CharaAction_Balloon_Delay[i].CurrentValue = (int)CharaAction_Balloon_Delay[i].EndValue;
- }
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- for (int i = 0; i < 5; 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;
- this.ctキャラクターアクション_10コンボMAX[i] = null;
- this.ctキャラクターアクション_ゴーゴースタート[i] = null;
- 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;
- //CharaAction_Balloon_Miss[i] = null;
- CharaAction_Balloon_Delay[i] = null;
-
- CharaAction_Balloon_FadeOut[i] = null;
- }
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- for (int i = 0; i < 5; 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");
- }
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- int Character = this.iCurrentCharacter[i];
-
- if (TJAPlayer3.Skin.Characters_Ptn == 0)
- break;
-
- // Blinking animation during invincibility frames
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- if (CFloorManagement.isBlinking() == true)
- break;
- }
-
- CTexture nowChara = null;
-
- void updateNormal()
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
- {
- nNowCharaCounter[i] += ((Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]) / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime) / nCharaBeat[i];
- }
- }
- void updateBalloon()
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
- {
- nNowCharaCounter[i] += (float)TJAPlayer3.FPS.DeltaTime / nCharaBeat[i];
- }
- }
-
- ctKusuIn[i].Tick();
-
- bool endAnime = nNowCharaCounter[i] >= 1;
- nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * (nCharaFrameCount[i] + 1));
- nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
-
- if (eNowAnime[i] != Anime.None)
- {
- switch (eNowAnime[i])
- {
- case Anime.None:
- {
- ReturnDefaultAnime(i, false);
- }
- break;
- case Anime.Normal:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_Normal[Character][TJAPlayer3.Skin.Characters_Motion_Normal[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.Miss:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_Normal_Missed[Character][TJAPlayer3.Skin.Characters_Motion_Miss[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.MissDown:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_Normal_MissedDown[Character][TJAPlayer3.Skin.Characters_Motion_MissDown[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.Cleared:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_Normal_Cleared[Character][TJAPlayer3.Skin.Characters_Motion_Clear[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.Maxed:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_Normal_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_ClearMax[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.MissIn:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_MissIn[Character] != null && TJAPlayer3.Skin.Characters_MissIn_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_MissIn[Character][TJAPlayer3.Skin.Characters_Motion_MissIn[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.MissDownIn:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_MissDownIn[Character] != null && TJAPlayer3.Skin.Characters_MissDownIn_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_MissDownIn[Character][TJAPlayer3.Skin.Characters_Motion_MissDownIn[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.GoGoTime:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_GoGoTime[Character][TJAPlayer3.Skin.Characters_Motion_GoGo[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.GoGoTime_Maxed:
- {
- updateNormal();
- ReturnDefaultAnime(i, false);
- nowChara = TJAPlayer3.Tx.Characters_GoGoTime_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_GoGoMax[Character][nNowCharaFrame[i]]];
- if (endAnime)
- {
- nNowCharaCounter[i] = 0;
- nNowCharaFrame[i] = 0;
- }
- }
- break;
- case Anime.Combo10:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_10Combo[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_10Combo[Character][TJAPlayer3.Skin.Characters_Motion_10Combo[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Combo10_Clear:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_10Combo_Clear[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_10Combo_Clear[Character][TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Combo10_Max:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_10Combo_Maxed[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_10Combo_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_10ComboMax[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.GoGoStart:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_GoGoStart[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_GoGoStart[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStart[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.GoGoStart_Clear:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.GoGoStart_Max:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_GoGoStart_Maxed[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_GoGoStart_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Become_Cleared:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_Become_Cleared[Character] != null && TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_Become_Cleared[Character][TJAPlayer3.Skin.Characters_Motion_ClearIn[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Become_Maxed:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_Become_Maxed[Character] != null && TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_Become_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_SoulIn[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.SoulOut:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_SoulOut[Character] != null && TJAPlayer3.Skin.Characters_SoulOut_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_SoulOut[Character][TJAPlayer3.Skin.Characters_Motion_SoulOut[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.ClearOut:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_ClearOut[Character] != null && TJAPlayer3.Skin.Characters_ClearOut_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_ClearOut[Character][TJAPlayer3.Skin.Characters_Motion_ClearOut[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Return:
- {
- updateNormal();
- if (TJAPlayer3.Tx.Characters_Return[Character] != null && TJAPlayer3.Skin.Characters_Return_Ptn[Character] != 0)
- {
- nowChara = TJAPlayer3.Tx.Characters_Return[Character][TJAPlayer3.Skin.Characters_Motion_Return[Character][nNowCharaFrame[i]]];
- }
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- break;
- case Anime.Balloon_Breaking:
- case Anime.Balloon_Broke:
- case Anime.Balloon_Miss:
- case Anime.Kusudama_Idle:
- case Anime.Kusudama_Breaking:
- case Anime.Kusudama_Broke:
- {
- updateBalloon();
- }
- break;
- case Anime.Kusudama_Miss:
- {
- nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * 2 * (nCharaFrameCount[i] + 1));
- nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
- updateBalloon();
- }
- break;
- }
- }
-
- float chara_x;
- float chara_y;
-
- float charaScale = 1.0f;
-
- if (nowChara != null)
- {
- bool flipX = TJAPlayer3.ConfigIni.bAIBattleMode ? (i == 1) : false;
-
- float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[Character][0];
- float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[Character][1];
-
- if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- chara_x = (TJAPlayer3.Skin.Characters_X_AI[Character][i] * resolutionScaleX);
- chara_y = (TJAPlayer3.Skin.Characters_Y_AI[Character][i] * resolutionScaleY);
-
- if (nowChara != null)
- {
- charaScale = 0.58f;
- }
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- {
- chara_x = (TJAPlayer3.Skin.Characters_X[Character][i] * resolutionScaleX);
- chara_y = (TJAPlayer3.Skin.Characters_Y[Character][i] * resolutionScaleY);
-
- if (nowChara != null)
- {
- charaScale = 1.0f;
- }
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- chara_x = (TJAPlayer3.Skin.Characters_5P[Character][0] * resolutionScaleX) + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- chara_y = (TJAPlayer3.Skin.Characters_5P[Character][1] * resolutionScaleY) + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
-
- if (nowChara != null)
- {
- charaScale = 0.58f;
- }
- }
- else
- {
- chara_x = (TJAPlayer3.Skin.Characters_4P[Character][0] * resolutionScaleX) + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- chara_y = (TJAPlayer3.Skin.Characters_4P[Character][1] * resolutionScaleY) + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
-
- if (nowChara != null)
- {
- charaScale = 0.58f;
- }
- }
-
- charaScale *= resolutionScaleY;
- //chara_x *= resolutionScaleX;
- //chara_y *= resolutionScaleY;
-
- if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- chara_x += TJAPlayer3.Skin.Game_AIBattle_CharaMove * TJAPlayer3.stage演奏ドラム画面.AIBattleState;
- chara_y -= nowChara.szTextureSize.Height * charaScale; // Center down
- }
-
- nowChara.vcScaleRatio.X = charaScale;
- nowChara.vcScaleRatio.Y = charaScale;
-
- if (flipX)
- {
- nowChara.t2D左右反転描画(chara_x, chara_y);
- }
- else
- {
- nowChara.t2D描画(chara_x, chara_y);
- }
-
- nowChara.vcScaleRatio.X = 1.0f;
- nowChara.vcScaleRatio.Y = 1.0f;
- }
-
- if ((this.b風船連打中[i] != true && CharaAction_Balloon_Delay[i].IsEnded) || TJAPlayer3.ConfigIni.nPlayerCount > 2)
- {
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_X[i], TJAPlayer3.Skin.Game_PuchiChara_Y[i], TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i), TJAPlayer3.Skin.Game_PuchiChara_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i), TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i, scale: 0.5f);
- }
- else
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i), TJAPlayer3.Skin.Game_PuchiChara_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i), TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i, scale: 0.5f);
- }
- }
- }
- return base.Draw();
- }
-
- public void OnDraw_Balloon()
- {
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- //if (TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Breaking[i]?.t進行();
- //if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Broke[i]?.t進行();
- CharaAction_Balloon_Delay[i]?.Tick();
- //if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Miss[i]?.t進行();
- //CharaAction_Balloon_FadeOut[i].Tick();
-
- {
- bool endAnime = nNowCharaCounter[i] >= 1;
- var nowOpacity = 255;
-
- float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][0];
- float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][1];
-
- float chara_x = 0;
- float chara_y = 0;
- float kusu_chara_x = TJAPlayer3.Skin.Characters_Kusudama_X[this.iCurrentCharacter[i]][i] * resolutionScaleX;
- float kusu_chara_y = TJAPlayer3.Skin.Characters_Kusudama_Y[this.iCurrentCharacter[i]][i] * resolutionScaleY;
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- {
- chara_x = TJAPlayer3.Skin.Characters_Balloon_X[this.iCurrentCharacter[i]][i];
- chara_y = TJAPlayer3.Skin.Characters_Balloon_Y[this.iCurrentCharacter[i]][i];
- }
- else
- {
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- chara_x = TJAPlayer3.Skin.Characters_Balloon_5P[this.iCurrentCharacter[i]][0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- chara_y = TJAPlayer3.Skin.Characters_Balloon_5P[this.iCurrentCharacter[i]][1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
- }
- else
- {
- chara_x = TJAPlayer3.Skin.Characters_Balloon_4P[this.iCurrentCharacter[i]][0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- chara_y = TJAPlayer3.Skin.Characters_Balloon_4P[this.iCurrentCharacter[i]][1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
- }
- }
-
- chara_x *= resolutionScaleX;
- chara_y *= resolutionScaleY;
-
- float charaScale = resolutionScaleY;
-
-
- if (eNowAnime[i] == Anime.Balloon_Broke)
- {
- if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
- {
- CharaAction_Balloon_FadeOut[i].Start();
- }
-
- if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
- TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
- }
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
-
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- else if (eNowAnime[i] == Anime.Balloon_Miss)
- {
- if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
- {
- CharaAction_Balloon_FadeOut[i].Start();
- }
-
- if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
- TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
- }
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
-
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- else if (eNowAnime[i] == Anime.Balloon_Breaking)
- {
- if (TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
- }
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
- TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, 255, true, player : i);
- }
- else if (eNowAnime[i] == Anime.Kusudama_Broke)
- {
- if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
- {
- CharaAction_Balloon_FadeOut[i].Start();
- }
- float kusuOutX = ((1.0f - MathF.Cos(nNowCharaCounter[i] * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
- float kusuOutY = (MathF.Sin(nNowCharaCounter[i] * MathF.PI / 2) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
-
- if (TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
- TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- if (i % 2 == 0)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuOutX, kusu_chara_y - kusuOutY);
- }
- else
- {
- TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuOutX, kusu_chara_y - kusuOutY);
- }
- }
- if (i % 2 == 0)
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuOutX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
- }
- else
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuOutX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
- }
-
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- else if (eNowAnime[i] == Anime.Kusudama_Miss)
- {
- if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
- {
- CharaAction_Balloon_FadeOut[i].Start();
- }
-
- float kusuOutY = (Math.Max(nNowCharaCounter[i] - 0.5f, 0) * TJAPlayer3.Skin.Resolution[1] * 2) * resolutionScaleY;
-
- if (TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
- TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
-
-
- if (i % 2 == 0)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x, kusu_chara_y + kusuOutY);
- }
- else
- {
- TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x, kusu_chara_y + kusuOutY);
- }
- }
-
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i],
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuOutY, false, nowOpacity, true, player : i);
-
- if (endAnime)
- {
- ReturnDefaultAnime(i, true);
- }
- }
- else if (eNowAnime[i] == Anime.Kusudama_Breaking)
- {
- float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
- float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
-
-
- if (TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- if (i % 2 == 0)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
- }
- else
- {
- TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
- }
- }
-
- if (i % 2 == 0)
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
- }
- else
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
- }
-
- if (endAnime)
- {
- ChangeAnime(i, Anime.Kusudama_Idle, true);
- }
- }
- else if (eNowAnime[i] == Anime.Kusudama_Idle)
- {
- float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
- float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
-
- if (TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
- TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
- if (i % 2 == 0)
- {
- TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
- }
- else
- {
- TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
- }
- }
-
- if (i % 2 == 0)
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
- }
- else
- {
- TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
- TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
- }
-
- if (endAnime)
- {
- ChangeAnime(i, Anime.Kusudama_Idle, true);
- }
- }
- }
- }
- }
-
-
- public void ReturnDefaultAnime(int player, bool resetCounter)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[player] && TJAPlayer3.Skin.Characters_GoGoTime_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[player] && TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- ChangeAnime(player, Anime.GoGoTime_Maxed, resetCounter);
- }
- else
- {
- ChangeAnime(player, Anime.GoGoTime, resetCounter);
- }
- }
- else
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsMiss[player] && TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.Chara_MissCount[player] >= 6 && TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- ChangeAnime(player, Anime.MissDown, resetCounter);
- }
- else
- {
- ChangeAnime(player, Anime.Miss, resetCounter);
- }
- }
- else
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[player] && TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- ChangeAnime(player, Anime.Maxed, resetCounter);
- }
- else if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyCleared[player] && TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- ChangeAnime(player, Anime.Cleared, resetCounter);
- }
- else if (TJAPlayer3.Skin.Characters_Normal_Ptn[this.iCurrentCharacter[player]] != 0)
- {
- ChangeAnime(player, Anime.Normal, resetCounter);
- }
- else
- {
- ChangeAnime(player, Anime.None, resetCounter);
- }
- }
- }
- }
-
- public int[][] arモーション番号 = new int[5][];
- public int[][] arMissモーション番号 = new int[5][];
- public int[][] arMissDownモーション番号 = new int[5][];
- public int[][] arゴーゴーモーション番号 = new int[5][];
- public int[][] arクリアモーション番号 = new int[5][];
-
- private float[] nNowCharaCounter = new float[5];
- private int[] nNowCharaFrame = new int[5];
- private int[] nCharaFrameCount = new int[5];
- private float[] nCharaBeat = new float[5];
-
- public enum Anime
- {
- None,
- Normal,
- Miss,
- MissDown,
- Cleared,
- Maxed,
- MissIn,
- MissDownIn,
- GoGoTime,
- GoGoTime_Maxed,
- Combo10,
- Combo10_Clear,
- Combo10_Max,
- GoGoStart,
- GoGoStart_Clear,
- GoGoStart_Max,
- Become_Cleared,
- Become_Maxed,
- SoulOut,
- ClearOut,
- Return,
- Balloon_Breaking,
- Balloon_Broke,
- Balloon_Miss,
- Kusudama_Idle,
- Kusudama_Breaking,
- Kusudama_Broke,
- Kusudama_Miss
- }
-
-
- public Anime[] eNowAnime = new Anime[5];
-
- public CCounter[] ctKusuIn = new CCounter[5];
-
- public void KusuIn()
- {
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- ChangeAnime(i, Anime.Kusudama_Idle, true);
- ctKusuIn[i] = new CCounter(0, 1000, 0.4f, TJAPlayer3.Timer);
- }
- }
-
- public void ChangeAnime(int player, Anime anime, bool resetCounter)
- {
- eNowAnime[player] = anime;
-
- if (resetCounter)
- {
- nNowCharaCounter[player] = 0;
- nNowCharaFrame[player] = 0;
- }
-
- switch (anime)
- {
- case Anime.None:
- break;
- case Anime.Normal:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Normal[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Normal[iCurrentCharacter[player]];
- break;
- case Anime.Miss:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Miss[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Miss[iCurrentCharacter[player]];
- break;
- case Anime.MissDown:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDown[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDown[iCurrentCharacter[player]];
- break;
- case Anime.Cleared:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Clear[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Clear[iCurrentCharacter[player]];
- break;
- case Anime.Maxed:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearMax[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearMax[iCurrentCharacter[player]];
- break;
- case Anime.MissIn:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissIn[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissIn[iCurrentCharacter[player]];
- break;
- case Anime.MissDownIn:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDownIn[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDownIn[iCurrentCharacter[player]];
- break;
- case Anime.GoGoTime:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGo[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGo[iCurrentCharacter[player]];
- break;
- case Anime.GoGoTime_Maxed:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoMax[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoMax[iCurrentCharacter[player]];
- break;
- case Anime.Combo10:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo[iCurrentCharacter[player]];
- break;
- case Anime.Combo10_Clear:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo_Clear[iCurrentCharacter[player]];
- break;
- case Anime.Combo10_Max:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10ComboMax[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10ComboMax[iCurrentCharacter[player]];
- break;
- case Anime.GoGoStart:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart[iCurrentCharacter[player]];
- break;
- case Anime.GoGoStart_Clear:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear[iCurrentCharacter[player]];
- break;
- case Anime.GoGoStart_Max:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStartMax[iCurrentCharacter[player]];
- break;
- case Anime.Become_Cleared:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearIn[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearIn[iCurrentCharacter[player]];
- break;
- case Anime.Become_Maxed:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulIn[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulIn[iCurrentCharacter[player]];
- break;
- case Anime.SoulOut:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulOut[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulOut[iCurrentCharacter[player]];
- break;
- case Anime.ClearOut:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearOut[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearOut[iCurrentCharacter[player]];
- break;
- case Anime.Return:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Return[iCurrentCharacter[player]].Length - 1;
- nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Return[iCurrentCharacter[player]];
- break;
- case Anime.Balloon_Breaking:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.2f;
- break;
- case Anime.Balloon_Broke:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.2f;
- break;
- case Anime.Balloon_Miss:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.2f;
- break;
- case Anime.Kusudama_Idle:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.4f;
- break;
- case Anime.Kusudama_Breaking:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.2f;
- break;
- case Anime.Kusudama_Broke:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 1f;
- break;
- case Anime.Kusudama_Miss:
- nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[iCurrentCharacter[player]] - 1;
- nCharaBeat[player] = 0.5f;
- break;
- }
- }
-
- public CCounter[] CharaAction_Balloon_Delay = new CCounter[5];
-
- public Animations.FadeOut[] CharaAction_Balloon_FadeOut = new Animations.FadeOut[5];
- //private readonly int[] CharaAction_Balloon_FadeOut_StartMs = new int[5];
- private readonly int[][] CharaAction_Balloon_FadeOut_StartMs = new int[5][];
-
- //public bool[] bキャラクターアクション中 = new bool[5];
-
- public bool[] b風船連打中 = new bool[5];
- public bool[] b演奏中 = new bool[5];
-
- public int[] iCurrentCharacter = new int[5] { 0, 0, 0, 0, 0 };
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Globalization;
+using System.Runtime.InteropServices;
+using System.Drawing;
+using System.Diagnostics;
+using FDK;
+
+
+namespace TJAPlayer3
+{
+ //クラスの設置位置は必ず演奏画面共通に置くこと。
+ //そうしなければBPM変化に対応できません。
+
+ //完成している部分は以下のとおり。(画像完成+動作確認完了で完成とする)
+ //_通常モーション
+ //_ゴーゴータイムモーション
+ //_クリア時モーション
+ //
+ internal class CActImplCharacter : CActivity
+ {
+ public CActImplCharacter()
+ {
+
+ }
+
+ public override void Activate()
+ {
+ for(int i = 0; i < 5; 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();
+
+ this.ctキャラクターアクション_10コンボ[i] = new CCounter();
+ this.ctキャラクターアクション_10コンボMAX[i] = new CCounter();
+ this.ctキャラクターアクション_ゴーゴースタート[i] = new CCounter();
+ 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();
+ //CharaAction_Balloon_Miss[i] = new CCounter();
+ CharaAction_Balloon_Delay[i] = new CCounter();
+ ctKusuIn[i] = new();
+
+ // Currently used character
+ int p = TJAPlayer3.GetActualPlayer(i);
+
+ this.iCurrentCharacter[i] = Math.Max(0, Math.Min(TJAPlayer3.SaveFileInstances[p].data.Character, TJAPlayer3.Skin.Characters_Ptn - 1));
+
+ if (TJAPlayer3.Skin.Characters_Normal_Ptn[this.iCurrentCharacter[i]] != 0) ChangeAnime(i, Anime.Normal, true);
+ else ChangeAnime(i, Anime.None, true);
+
+ this.b風船連打中[i] = false;
+ this.b演奏中[i] = false;
+
+ // CharaAction_Balloon_FadeOut[i] = new Animations.FadeOut(TJAPlayer3.Skin.Game_Chara_Balloon_FadeOut);
+ CharaAction_Balloon_FadeOut[i] = new Animations.FadeOut(TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]]);
+
+ var tick = TJAPlayer3.Skin.Characters_Balloon_Timer[this.iCurrentCharacter[i]];
+
+ var balloonBrokePtn = TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]];
+ var balloonMissPtn = TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]];
+
+ CharaAction_Balloon_FadeOut_StartMs[i] = new int[2];
+
+ CharaAction_Balloon_FadeOut_StartMs[i][0] = (balloonBrokePtn * tick) - TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]];
+ CharaAction_Balloon_FadeOut_StartMs[i][1] = (balloonMissPtn * tick) - TJAPlayer3.Skin.Characters_Balloon_FadeOut[this.iCurrentCharacter[i]];
+
+ if (balloonBrokePtn > 1) CharaAction_Balloon_FadeOut_StartMs[i][0] /= balloonBrokePtn - 1;
+ if (balloonMissPtn > 1) CharaAction_Balloon_FadeOut_StartMs[i][1] /= balloonMissPtn - 1; // - 1はタイマー用
+
+ if (CharaAction_Balloon_Delay[i] != null) CharaAction_Balloon_Delay[i].CurrentValue = (int)CharaAction_Balloon_Delay[i].EndValue;
+ }
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ for (int i = 0; i < 5; 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;
+ this.ctキャラクターアクション_10コンボMAX[i] = null;
+ this.ctキャラクターアクション_ゴーゴースタート[i] = null;
+ 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;
+ //CharaAction_Balloon_Miss[i] = null;
+ CharaAction_Balloon_Delay[i] = null;
+
+ CharaAction_Balloon_FadeOut[i] = null;
+ }
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ for (int i = 0; i < 5; 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");
+ }
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ int Character = this.iCurrentCharacter[i];
+
+ if (TJAPlayer3.Skin.Characters_Ptn == 0)
+ break;
+
+ // Blinking animation during invincibility frames
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ if (CFloorManagement.isBlinking() == true)
+ break;
+ }
+
+ CTexture nowChara = null;
+
+ void updateNormal()
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
+ {
+ nNowCharaCounter[i] += ((Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]) / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime) / nCharaBeat[i];
+ }
+ }
+ void updateBalloon()
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE)
+ {
+ nNowCharaCounter[i] += (float)TJAPlayer3.FPS.DeltaTime / nCharaBeat[i];
+ }
+ }
+
+ ctKusuIn[i].Tick();
+
+ bool endAnime = nNowCharaCounter[i] >= 1;
+ nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * (nCharaFrameCount[i] + 1));
+ nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
+
+ if (eNowAnime[i] != Anime.None)
+ {
+ switch (eNowAnime[i])
+ {
+ case Anime.None:
+ {
+ ReturnDefaultAnime(i, false);
+ }
+ break;
+ case Anime.Normal:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_Normal[Character][TJAPlayer3.Skin.Characters_Motion_Normal[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.Miss:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_Normal_Missed[Character][TJAPlayer3.Skin.Characters_Motion_Miss[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.MissDown:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_Normal_MissedDown[Character][TJAPlayer3.Skin.Characters_Motion_MissDown[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.Cleared:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_Normal_Cleared[Character][TJAPlayer3.Skin.Characters_Motion_Clear[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.Maxed:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_Normal_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_ClearMax[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.MissIn:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_MissIn[Character] != null && TJAPlayer3.Skin.Characters_MissIn_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_MissIn[Character][TJAPlayer3.Skin.Characters_Motion_MissIn[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.MissDownIn:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_MissDownIn[Character] != null && TJAPlayer3.Skin.Characters_MissDownIn_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_MissDownIn[Character][TJAPlayer3.Skin.Characters_Motion_MissDownIn[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.GoGoTime:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_GoGoTime[Character][TJAPlayer3.Skin.Characters_Motion_GoGo[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.GoGoTime_Maxed:
+ {
+ updateNormal();
+ ReturnDefaultAnime(i, false);
+ nowChara = TJAPlayer3.Tx.Characters_GoGoTime_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_GoGoMax[Character][nNowCharaFrame[i]]];
+ if (endAnime)
+ {
+ nNowCharaCounter[i] = 0;
+ nNowCharaFrame[i] = 0;
+ }
+ }
+ break;
+ case Anime.Combo10:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_10Combo[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_10Combo[Character][TJAPlayer3.Skin.Characters_Motion_10Combo[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Combo10_Clear:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_10Combo_Clear[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Clear_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_10Combo_Clear[Character][TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Combo10_Max:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_10Combo_Maxed[Character] != null && TJAPlayer3.Skin.Characters_10Combo_Maxed_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_10Combo_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_10ComboMax[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.GoGoStart:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_GoGoStart[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_GoGoStart[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStart[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.GoGoStart_Clear:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Clear_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_GoGoStart_Clear[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.GoGoStart_Max:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_GoGoStart_Maxed[Character] != null && TJAPlayer3.Skin.Characters_GoGoStart_Maxed_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_GoGoStart_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Become_Cleared:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_Become_Cleared[Character] != null && TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_Become_Cleared[Character][TJAPlayer3.Skin.Characters_Motion_ClearIn[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Become_Maxed:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_Become_Maxed[Character] != null && TJAPlayer3.Skin.Characters_Become_Maxed_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_Become_Maxed[Character][TJAPlayer3.Skin.Characters_Motion_SoulIn[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.SoulOut:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_SoulOut[Character] != null && TJAPlayer3.Skin.Characters_SoulOut_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_SoulOut[Character][TJAPlayer3.Skin.Characters_Motion_SoulOut[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.ClearOut:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_ClearOut[Character] != null && TJAPlayer3.Skin.Characters_ClearOut_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_ClearOut[Character][TJAPlayer3.Skin.Characters_Motion_ClearOut[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Return:
+ {
+ updateNormal();
+ if (TJAPlayer3.Tx.Characters_Return[Character] != null && TJAPlayer3.Skin.Characters_Return_Ptn[Character] != 0)
+ {
+ nowChara = TJAPlayer3.Tx.Characters_Return[Character][TJAPlayer3.Skin.Characters_Motion_Return[Character][nNowCharaFrame[i]]];
+ }
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ break;
+ case Anime.Balloon_Breaking:
+ case Anime.Balloon_Broke:
+ case Anime.Balloon_Miss:
+ case Anime.Kusudama_Idle:
+ case Anime.Kusudama_Breaking:
+ case Anime.Kusudama_Broke:
+ {
+ updateBalloon();
+ }
+ break;
+ case Anime.Kusudama_Miss:
+ {
+ nNowCharaFrame[i] = (int)(nNowCharaCounter[i] * 2 * (nCharaFrameCount[i] + 1));
+ nNowCharaFrame[i] = Math.Min(nNowCharaFrame[i], nCharaFrameCount[i]);
+ updateBalloon();
+ }
+ break;
+ }
+ }
+
+ float chara_x;
+ float chara_y;
+
+ float charaScale = 1.0f;
+
+ if (nowChara != null)
+ {
+ bool flipX = TJAPlayer3.ConfigIni.bAIBattleMode ? (i == 1) : false;
+
+ float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[Character][0];
+ float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[Character][1];
+
+ if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ chara_x = (TJAPlayer3.Skin.Characters_X_AI[Character][i] * resolutionScaleX);
+ chara_y = (TJAPlayer3.Skin.Characters_Y_AI[Character][i] * resolutionScaleY);
+
+ if (nowChara != null)
+ {
+ charaScale = 0.58f;
+ }
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ {
+ chara_x = (TJAPlayer3.Skin.Characters_X[Character][i] * resolutionScaleX);
+ chara_y = (TJAPlayer3.Skin.Characters_Y[Character][i] * resolutionScaleY);
+
+ if (nowChara != null)
+ {
+ charaScale = 1.0f;
+ }
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ chara_x = (TJAPlayer3.Skin.Characters_5P[Character][0] * resolutionScaleX) + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ chara_y = (TJAPlayer3.Skin.Characters_5P[Character][1] * resolutionScaleY) + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+
+ if (nowChara != null)
+ {
+ charaScale = 0.58f;
+ }
+ }
+ else
+ {
+ chara_x = (TJAPlayer3.Skin.Characters_4P[Character][0] * resolutionScaleX) + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ chara_y = (TJAPlayer3.Skin.Characters_4P[Character][1] * resolutionScaleY) + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+
+ if (nowChara != null)
+ {
+ charaScale = 0.58f;
+ }
+ }
+
+ charaScale *= resolutionScaleY;
+ //chara_x *= resolutionScaleX;
+ //chara_y *= resolutionScaleY;
+
+ if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ chara_x += TJAPlayer3.Skin.Game_AIBattle_CharaMove * TJAPlayer3.stage演奏ドラム画面.AIBattleState;
+ chara_y -= nowChara.szTextureSize.Height * charaScale; // Center down
+ }
+
+ nowChara.vcScaleRatio.X = charaScale;
+ nowChara.vcScaleRatio.Y = charaScale;
+
+ if (flipX)
+ {
+ nowChara.t2D左右反転描画(chara_x, chara_y);
+ }
+ else
+ {
+ nowChara.t2D描画(chara_x, chara_y);
+ }
+
+ nowChara.vcScaleRatio.X = 1.0f;
+ nowChara.vcScaleRatio.Y = 1.0f;
+ }
+
+ if ((this.b風船連打中[i] != true && CharaAction_Balloon_Delay[i].IsEnded) || TJAPlayer3.ConfigIni.nPlayerCount > 2)
+ {
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_X[i], TJAPlayer3.Skin.Game_PuchiChara_Y[i], TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i), TJAPlayer3.Skin.Game_PuchiChara_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i), TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i, scale: 0.5f);
+ }
+ else
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(TJAPlayer3.Skin.Game_PuchiChara_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i), TJAPlayer3.Skin.Game_PuchiChara_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i), TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[i], player: i, scale: 0.5f);
+ }
+ }
+ }
+ return base.Draw();
+ }
+
+ public void OnDraw_Balloon()
+ {
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ //if (TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Breaking[i]?.t進行();
+ //if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Broke[i]?.t進行();
+ CharaAction_Balloon_Delay[i]?.Tick();
+ //if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[i]] != 0) CharaAction_Balloon_Miss[i]?.t進行();
+ //CharaAction_Balloon_FadeOut[i].Tick();
+
+ {
+ bool endAnime = nNowCharaCounter[i] >= 1;
+ var nowOpacity = 255;
+
+ float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][0];
+ float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / (float)TJAPlayer3.Skin.Characters_Resolution[this.iCurrentCharacter[i]][1];
+
+ float chara_x = 0;
+ float chara_y = 0;
+ float kusu_chara_x = TJAPlayer3.Skin.Characters_Kusudama_X[this.iCurrentCharacter[i]][i] * resolutionScaleX;
+ float kusu_chara_y = TJAPlayer3.Skin.Characters_Kusudama_Y[this.iCurrentCharacter[i]][i] * resolutionScaleY;
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ {
+ chara_x = TJAPlayer3.Skin.Characters_Balloon_X[this.iCurrentCharacter[i]][i];
+ chara_y = TJAPlayer3.Skin.Characters_Balloon_Y[this.iCurrentCharacter[i]][i];
+ }
+ else
+ {
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ chara_x = TJAPlayer3.Skin.Characters_Balloon_5P[this.iCurrentCharacter[i]][0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ chara_y = TJAPlayer3.Skin.Characters_Balloon_5P[this.iCurrentCharacter[i]][1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+ }
+ else
+ {
+ chara_x = TJAPlayer3.Skin.Characters_Balloon_4P[this.iCurrentCharacter[i]][0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ chara_y = TJAPlayer3.Skin.Characters_Balloon_4P[this.iCurrentCharacter[i]][1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+ }
+ }
+
+ chara_x *= resolutionScaleX;
+ chara_y *= resolutionScaleY;
+
+ float charaScale = resolutionScaleY;
+
+
+ if (eNowAnime[i] == Anime.Balloon_Broke)
+ {
+ if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
+ {
+ CharaAction_Balloon_FadeOut[i].Start();
+ }
+
+ if (TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
+ TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
+ }
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
+
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ else if (eNowAnime[i] == Anime.Balloon_Miss)
+ {
+ if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
+ {
+ CharaAction_Balloon_FadeOut[i].Start();
+ }
+
+ if (TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
+ TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
+ }
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
+
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ else if (eNowAnime[i] == Anime.Balloon_Breaking)
+ {
+ if (TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
+ }
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[i],
+ TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, 255, true, player : i);
+ }
+ else if (eNowAnime[i] == Anime.Kusudama_Broke)
+ {
+ if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][0])
+ {
+ CharaAction_Balloon_FadeOut[i].Start();
+ }
+ float kusuOutX = ((1.0f - MathF.Cos(nNowCharaCounter[i] * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
+ float kusuOutY = (MathF.Sin(nNowCharaCounter[i] * MathF.PI / 2) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
+
+ if (TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
+ TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuOutX, kusu_chara_y - kusuOutY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuOutX, kusu_chara_y - kusuOutY);
+ }
+ }
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuOutX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
+ }
+ else
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuOutX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] - (int)kusuOutY, false, nowOpacity, true, player : i);
+ }
+
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ else if (eNowAnime[i] == Anime.Kusudama_Miss)
+ {
+ if (CharaAction_Balloon_FadeOut[i].Counter.IsStoped && nNowCharaFrame[i] > CharaAction_Balloon_FadeOut_StartMs[i][1])
+ {
+ CharaAction_Balloon_FadeOut[i].Start();
+ }
+
+ float kusuOutY = (Math.Max(nNowCharaCounter[i] - 0.5f, 0) * TJAPlayer3.Skin.Resolution[1] * 2) * resolutionScaleY;
+
+ if (TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].Opacity = nowOpacity;
+ TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+
+
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x, kusu_chara_y + kusuOutY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x, kusu_chara_y + kusuOutY);
+ }
+ }
+
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i],
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuOutY, false, nowOpacity, true, player : i);
+
+ if (endAnime)
+ {
+ ReturnDefaultAnime(i, true);
+ }
+ }
+ else if (eNowAnime[i] == Anime.Kusudama_Breaking)
+ {
+ float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
+ float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
+
+
+ if (TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
+ }
+ }
+
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
+ }
+ else
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
+ }
+
+ if (endAnime)
+ {
+ ChangeAnime(i, Anime.Kusudama_Idle, true);
+ }
+ }
+ else if (eNowAnime[i] == Anime.Kusudama_Idle)
+ {
+ float kusuInX = ((1.0f - MathF.Sin(ctKusuIn[i].CurrentValue / 2000.0f * MathF.PI)) * TJAPlayer3.Skin.Resolution[0] / 2.0f) * resolutionScaleX;
+ float kusuInY = -((MathF.Cos(ctKusuIn[i].CurrentValue / 1000.0f * MathF.PI / 2)) * TJAPlayer3.Skin.Resolution[1] / 2.0f) * resolutionScaleY;
+
+ if (TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[this.iCurrentCharacter[i]] != 0 && TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]] != null)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.X = charaScale;
+ TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vcScaleRatio.Y = charaScale;
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(kusu_chara_x - kusuInX, kusu_chara_y + kusuInY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Characters_Kusudama_Idle[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D左右反転描画(kusu_chara_x + kusuInX, kusu_chara_y + kusuInY);
+ }
+ }
+
+ if (i % 2 == 0)
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] - (int)kusuInX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
+ }
+ else
+ {
+ TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaX[i] + (int)kusuInX,
+ TJAPlayer3.Skin.Game_PuchiChara_KusudamaY[i] + (int)kusuInY, false, 255, true, player : i);
+ }
+
+ if (endAnime)
+ {
+ ChangeAnime(i, Anime.Kusudama_Idle, true);
+ }
+ }
+ }
+ }
+ }
+
+
+ public void ReturnDefaultAnime(int player, bool resetCounter)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[player] && TJAPlayer3.Skin.Characters_GoGoTime_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[player] && TJAPlayer3.Skin.Characters_GoGoTime_Maxed_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ ChangeAnime(player, Anime.GoGoTime_Maxed, resetCounter);
+ }
+ else
+ {
+ ChangeAnime(player, Anime.GoGoTime, resetCounter);
+ }
+ }
+ else
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsMiss[player] && TJAPlayer3.Skin.Characters_Normal_Missed_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.Chara_MissCount[player] >= 6 && TJAPlayer3.Skin.Characters_Normal_MissedDown_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ ChangeAnime(player, Anime.MissDown, resetCounter);
+ }
+ else
+ {
+ ChangeAnime(player, Anime.Miss, resetCounter);
+ }
+ }
+ else
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyMaxed[player] && TJAPlayer3.Skin.Characters_Normal_Maxed_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ ChangeAnime(player, Anime.Maxed, resetCounter);
+ }
+ else if (TJAPlayer3.stage演奏ドラム画面.bIsAlreadyCleared[player] && TJAPlayer3.Skin.Characters_Normal_Cleared_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ ChangeAnime(player, Anime.Cleared, resetCounter);
+ }
+ else if (TJAPlayer3.Skin.Characters_Normal_Ptn[this.iCurrentCharacter[player]] != 0)
+ {
+ ChangeAnime(player, Anime.Normal, resetCounter);
+ }
+ else
+ {
+ ChangeAnime(player, Anime.None, resetCounter);
+ }
+ }
+ }
+ }
+
+ public int[][] arモーション番号 = new int[5][];
+ public int[][] arMissモーション番号 = new int[5][];
+ public int[][] arMissDownモーション番号 = new int[5][];
+ public int[][] arゴーゴーモーション番号 = new int[5][];
+ public int[][] arクリアモーション番号 = new int[5][];
+
+ private float[] nNowCharaCounter = new float[5];
+ private int[] nNowCharaFrame = new int[5];
+ private int[] nCharaFrameCount = new int[5];
+ private float[] nCharaBeat = new float[5];
+
+ public enum Anime
+ {
+ None,
+ Normal,
+ Miss,
+ MissDown,
+ Cleared,
+ Maxed,
+ MissIn,
+ MissDownIn,
+ GoGoTime,
+ GoGoTime_Maxed,
+ Combo10,
+ Combo10_Clear,
+ Combo10_Max,
+ GoGoStart,
+ GoGoStart_Clear,
+ GoGoStart_Max,
+ Become_Cleared,
+ Become_Maxed,
+ SoulOut,
+ ClearOut,
+ Return,
+ Balloon_Breaking,
+ Balloon_Broke,
+ Balloon_Miss,
+ Kusudama_Idle,
+ Kusudama_Breaking,
+ Kusudama_Broke,
+ Kusudama_Miss
+ }
+
+
+ public Anime[] eNowAnime = new Anime[5];
+
+ public CCounter[] ctKusuIn = new CCounter[5];
+
+ public void KusuIn()
+ {
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ ChangeAnime(i, Anime.Kusudama_Idle, true);
+ ctKusuIn[i] = new CCounter(0, 1000, 0.4f, TJAPlayer3.Timer);
+ }
+ }
+
+ public void ChangeAnime(int player, Anime anime, bool resetCounter)
+ {
+ eNowAnime[player] = anime;
+
+ if (resetCounter)
+ {
+ nNowCharaCounter[player] = 0;
+ nNowCharaFrame[player] = 0;
+ }
+
+ switch (anime)
+ {
+ case Anime.None:
+ break;
+ case Anime.Normal:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Normal[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Normal[iCurrentCharacter[player]];
+ break;
+ case Anime.Miss:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Miss[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Miss[iCurrentCharacter[player]];
+ break;
+ case Anime.MissDown:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDown[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDown[iCurrentCharacter[player]];
+ break;
+ case Anime.Cleared:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Clear[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Clear[iCurrentCharacter[player]];
+ break;
+ case Anime.Maxed:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearMax[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearMax[iCurrentCharacter[player]];
+ break;
+ case Anime.MissIn:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissIn[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissIn[iCurrentCharacter[player]];
+ break;
+ case Anime.MissDownIn:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_MissDownIn[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_MissDownIn[iCurrentCharacter[player]];
+ break;
+ case Anime.GoGoTime:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGo[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGo[iCurrentCharacter[player]];
+ break;
+ case Anime.GoGoTime_Maxed:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoMax[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoMax[iCurrentCharacter[player]];
+ break;
+ case Anime.Combo10:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo[iCurrentCharacter[player]];
+ break;
+ case Anime.Combo10_Clear:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10Combo_Clear[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10Combo_Clear[iCurrentCharacter[player]];
+ break;
+ case Anime.Combo10_Max:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_10ComboMax[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_10ComboMax[iCurrentCharacter[player]];
+ break;
+ case Anime.GoGoStart:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart[iCurrentCharacter[player]];
+ break;
+ case Anime.GoGoStart_Clear:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStart_Clear[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStart_Clear[iCurrentCharacter[player]];
+ break;
+ case Anime.GoGoStart_Max:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_GoGoStartMax[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_GoGoStartMax[iCurrentCharacter[player]];
+ break;
+ case Anime.Become_Cleared:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearIn[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearIn[iCurrentCharacter[player]];
+ break;
+ case Anime.Become_Maxed:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulIn[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulIn[iCurrentCharacter[player]];
+ break;
+ case Anime.SoulOut:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_SoulOut[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_SoulOut[iCurrentCharacter[player]];
+ break;
+ case Anime.ClearOut:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_ClearOut[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_ClearOut[iCurrentCharacter[player]];
+ break;
+ case Anime.Return:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Motion_Return[iCurrentCharacter[player]].Length - 1;
+ nCharaBeat[player] = TJAPlayer3.Skin.Characters_Beat_Return[iCurrentCharacter[player]];
+ break;
+ case Anime.Balloon_Breaking:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Breaking_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.2f;
+ break;
+ case Anime.Balloon_Broke:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Broke_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.2f;
+ break;
+ case Anime.Balloon_Miss:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Balloon_Miss_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.2f;
+ break;
+ case Anime.Kusudama_Idle:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Idle_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.4f;
+ break;
+ case Anime.Kusudama_Breaking:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Breaking_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.2f;
+ break;
+ case Anime.Kusudama_Broke:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Broke_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 1f;
+ break;
+ case Anime.Kusudama_Miss:
+ nCharaFrameCount[player] = TJAPlayer3.Skin.Characters_Kusudama_Miss_Ptn[iCurrentCharacter[player]] - 1;
+ nCharaBeat[player] = 0.5f;
+ break;
+ }
+ }
+
+ public CCounter[] CharaAction_Balloon_Delay = new CCounter[5];
+
+ public Animations.FadeOut[] CharaAction_Balloon_FadeOut = new Animations.FadeOut[5];
+ //private readonly int[] CharaAction_Balloon_FadeOut_StartMs = new int[5];
+ private readonly int[][] CharaAction_Balloon_FadeOut_StartMs = new int[5][];
+
+ //public bool[] bキャラクターアクション中 = new bool[5];
+
+ public bool[] b風船連打中 = new bool[5];
+ public bool[] b演奏中 = new bool[5];
+
+ public int[] iCurrentCharacter = new int[5] { 0, 0, 0, 0, 0 };
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsチップエフェクト.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplChipEffects.cs
similarity index 98%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsチップエフェクト.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplChipEffects.cs
index 53bd2881..a8691282 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsチップエフェクト.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplChipEffects.cs
@@ -9,11 +9,11 @@ using Rectangle = System.Drawing.Rectangle;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsチップエフェクト : CActivity
+ internal class CActImplChipEffects : CActivity
{
// コンストラクタ
- public CAct演奏Drumsチップエフェクト()
+ public CActImplChipEffects()
{
//base.b活性化してない = true;
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplClearAnimation.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplClearAnimation.cs
index c82ce52b..f6711f2e 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplClearAnimation.cs
@@ -1,912 +1,912 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Drawing;
-using FDK;
-
-using Rectangle = System.Drawing.Rectangle;
-using Point = System.Drawing.Point;
-using Color = System.Drawing.Color;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drums演奏終了演出 : CActivity
- {
- ///
- /// 課題
- /// _クリア失敗 →素材不足(確保はできる。切り出しと加工をしてないだけ。)
- /// _
- ///
- public CAct演奏Drums演奏終了演出()
- {
- base.IsDeActivated = true;
- }
-
- public void Start()
- {
- // this.ct進行メイン = new CCounter(0, 500, 1000 / 60, TJAPlayer3.Timer);
-
- 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.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- if (CFloorManagement.CurrentNumberOfLives > 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
- this.Mode[0] = EndMode.Tower_TopReached_Perfect;
- else
- this.Mode[0] = EndMode.Tower_TopReached_FullCombo;
- }
- else
- this.Mode[0] = EndMode.Tower_TopReached_Pass;
- }
- else
- this.Mode[0] = EndMode.Tower_Dropout;
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- {
- // 段位認定モード。
- if (!TJAPlayer3.stage演奏ドラム画面.actDan.GetFailedAllChallenges())
- {
- // 段位認定モード、クリア成功
- // this.Mode[0] = EndMode.StageCleared;
-
- bool bgold = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C) == Exam.Status.Better_Success;
-
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
- this.Mode[0] = bgold ? EndMode.Dan_Gold_Perfect : EndMode.Dan_Red_Perfect;
- else
- this.Mode[0] = bgold ? EndMode.Dan_Gold_FullCombo : EndMode.Dan_Red_FullCombo;
- }
- else
- this.Mode[0] = bgold ? EndMode.Dan_Gold_Pass : EndMode.Dan_Red_Pass;
-
-
- }
- else
- {
- // 段位認定モード、クリア失敗
- this.Mode[0] = EndMode.Dan_Fail;
- }
- }
- else if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsAIBattleWin)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
- this.Mode[0] = EndMode.AI_Win_Perfect;
- else
- this.Mode[0] = EndMode.AI_Win_FullCombo;
- }
- else
- this.Mode[0] = EndMode.AI_Win;
- }
- else
- {
- this.Mode[0] = EndMode.AI_Lose;
- }
- }
- else
- {
- // 通常のモード。
- // ここでフルコンボフラグをチェックするが現時点ではない。
- // 今の段階では魂ゲージ80%以上でチェック。
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (HGaugeMethods.UNSAFE_FastNormaCheck(i))
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMine == 0)
- //if (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss == 0)
- {
- if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nGood == 0)
- //if (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great == 0)
- {
- this.Mode[i] = EndMode.StageDondaFullCombo;
- }
- else
- {
- this.Mode[i] = EndMode.StageFullCombo;
- }
- }
- else
- {
- this.Mode[i] = EndMode.StageCleared;
- }
- }
- else
- {
- this.Mode[i] = EndMode.StageFailed;
- }
- }
- }
- }
-
- public override void Activate()
- {
- this.bリザルトボイス再生済み = false;
- this.Mode = new EndMode[5];
-
- var origindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.END}");
-
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- Tower_DropoutScript = new EndAnimeScript($@"{origindir}Tower_Dropout{Path.DirectorySeparatorChar}Script.lua");
- Tower_DropoutScript.Init();
-
- Tower_TopReached_PassScript = new EndAnimeScript($@"{origindir}Tower_TopReached_Pass{Path.DirectorySeparatorChar}Script.lua");
- Tower_TopReached_PassScript.Init();
-
- Tower_TopReached_FullComboScript = new EndAnimeScript($@"{origindir}Tower_TopReached_FullCombo{Path.DirectorySeparatorChar}Script.lua");
- Tower_TopReached_FullComboScript.Init();
-
- Tower_TopReached_PerfectScript = new EndAnimeScript($@"{origindir}Tower_TopReached_Perfect{Path.DirectorySeparatorChar}Script.lua");
- Tower_TopReached_PerfectScript.Init();
-
- this.soundTowerDropout = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_Dropout.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopPass = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Perfect.ogg"), ESoundGroup.SoundEffect);
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- {
- Dan_FailScript = new EndAnimeScript($@"{origindir}Dan_Fail{Path.DirectorySeparatorChar}Script.lua");
- Dan_FailScript.Init();
-
- Dan_Red_PassScript = new EndAnimeScript($@"{origindir}Dan_Red_Pass{Path.DirectorySeparatorChar}Script.lua");
- Dan_Red_PassScript.Init();
-
- Dan_Red_FullComboScript = new EndAnimeScript($@"{origindir}Dan_Red_FullCombo{Path.DirectorySeparatorChar}Script.lua");
- Dan_Red_FullComboScript.Init();
-
- Dan_Red_PerfectScript = new EndAnimeScript($@"{origindir}Dan_Red_Perfect{Path.DirectorySeparatorChar}Script.lua");
- Dan_Red_PerfectScript.Init();
-
- Dan_Gold_PassScript = new EndAnimeScript($@"{origindir}Dan_Gold_Pass{Path.DirectorySeparatorChar}Script.lua");
- Dan_Gold_PassScript.Init();
-
- Dan_Gold_FullComboScript = new EndAnimeScript($@"{origindir}Dan_Gold_FullCombo{Path.DirectorySeparatorChar}Script.lua");
- Dan_Gold_FullComboScript.Init();
-
- Dan_Gold_PerfectScript = new EndAnimeScript($@"{origindir}Dan_Gold_Perfect{Path.DirectorySeparatorChar}Script.lua");
- Dan_Gold_PerfectScript.Init();
-
- this.soundDanFailed = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Fail.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Perfect.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Perfect.ogg"), ESoundGroup.SoundEffect);
-
- }
- else if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- AILoseScript = new EndAnimeScript($@"{origindir}AI_Lose{Path.DirectorySeparatorChar}Script.lua");
- AILoseScript.Init();
-
- AIWinScript = new EndAnimeScript($@"{origindir}AI_Win{Path.DirectorySeparatorChar}Script.lua");
- AIWinScript.Init();
-
- AIWin_FullComboScript = new EndAnimeScript($@"{origindir}AI_Win_FullCombo{Path.DirectorySeparatorChar}Script.lua");
- AIWin_FullComboScript.Init();
-
- AIWin_PerfectScript = new EndAnimeScript($@"{origindir}AI_Win_Perfect{Path.DirectorySeparatorChar}Script.lua");
- AIWin_PerfectScript.Init();
-
- this.soundAILose = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Lose.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWin = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWinFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWinDondaFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_AllPerfect.ogg"), ESoundGroup.SoundEffect);
- }
- else
- {
- FailedScript = new EndAnimeScript($@"{origindir}ClearFailed{Path.DirectorySeparatorChar}Script.lua");//ClearFailed
- FailedScript.Init();
-
- ClearScript = new EndAnimeScript($@"{origindir}Clear{Path.DirectorySeparatorChar}Script.lua");
- ClearScript.Init();
-
- FullComboScript = new EndAnimeScript($@"{origindir}FullCombo{Path.DirectorySeparatorChar}Script.lua");
- FullComboScript.Init();
-
- DondaFullComboScript = new EndAnimeScript($@"{origindir}DondaFullCombo{Path.DirectorySeparatorChar}Script.lua");
- DondaFullComboScript.Init();
- }
-
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- this.ct進行メイン = null;
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- Tower_DropoutScript.Dispose();
- Tower_TopReached_PassScript.Dispose();
- Tower_TopReached_FullComboScript.Dispose();
- Tower_TopReached_PerfectScript.Dispose();
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- {
- Dan_FailScript.Dispose();
- Dan_Red_PassScript.Dispose();
- Dan_Red_FullComboScript.Dispose();
- Dan_Red_PerfectScript.Dispose();
- Dan_Gold_PassScript.Dispose();
- Dan_Gold_FullComboScript.Dispose();
- Dan_Gold_PerfectScript.Dispose();
- }
- else if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- AILoseScript.Dispose();
- AIWinScript.Dispose();
- AIWin_FullComboScript.Dispose();
- AIWin_PerfectScript.Dispose();
- }
- else
- {
- FailedScript.Dispose();
- ClearScript.Dispose();
- FullComboScript.Dispose();
- DondaFullComboScript.Dispose();
- }
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- this.b再生済み = false;
-
- this.soundTowerDropout = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_Dropout.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopPass = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundTowerTopPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Perfect.ogg"), ESoundGroup.SoundEffect);
-
- this.soundDanFailed = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Fail.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundDanRedPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Perfect.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Pass.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundDanGoldPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Perfect.ogg"), ESoundGroup.SoundEffect);
-
- this.soundAILose = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Lose.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWin = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWinFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundAIWinDondaFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_AllPerfect.ogg"), ESoundGroup.SoundEffect);
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- this.soundClear[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Clear.ogg"), ESoundGroup.SoundEffect);
- this.soundFailed[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Failed.ogg"), ESoundGroup.SoundEffect);
- this.soundFullCombo[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}FullCombo.ogg"), ESoundGroup.SoundEffect);
- this.soundDondaFullCombo[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AllPerfect.ogg"), ESoundGroup.SoundEffect);
- }
-
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- this.soundTowerDropout?.tDispose();
- this.soundTowerTopPass?.tDispose();
- this.soundTowerTopFC?.tDispose();
- this.soundTowerTopPerfect?.tDispose();
-
- this.soundDanFailed?.tDispose();
- this.soundDanRedClear?.tDispose();
- this.soundDanRedFC?.tDispose();
- this.soundDanRedPerfect?.tDispose();
- this.soundDanGoldClear?.tDispose();
- this.soundDanGoldFC?.tDispose();
- this.soundDanGoldPerfect?.tDispose();
-
- this.soundAILose?.tDispose();
- this.soundAIWin?.tDispose();
- this.soundAIWinFullCombo?.tDispose();
- this.soundAIWinDondaFullCombo?.tDispose();
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- this.soundClear[i]?.tDispose();
- this.soundFailed[i]?.tDispose();
- this.soundFullCombo[i]?.tDispose();
- this.soundDondaFullCombo[i]?.tDispose();
- }
-
- base.ReleaseManagedResource();
- }
-
- #region [effects]
- // ------------------------------------
- private void showEndEffect_Failed(int i)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) 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)
- {
- TJAPlayer3.Tx.End_ClearFailed[Math.Min(this.ctEnd_ClearFailed.n現在の値, TJAPlayer3.Tx.End_ClearFailed.Length - 1)]?.t2D描画(505, y[i] + 145);
- }
- else if (this.ctEnd_ClearFailed.n現在の値 >= 20 && this.ctEnd_ClearFailed.n現在の値 <= 67)
- {
- TJAPlayer3.Tx.ClearFailed?.t2D描画(502, y[i] + 192);
- }
- else if (this.ctEnd_ClearFailed.n現在の値 == 68)
- {
- TJAPlayer3.Tx.ClearFailed1?.t2D描画(502, y[i] + 192);
- }
- else if (this.ctEnd_ClearFailed.n現在の値 >= 69)
- {
- TJAPlayer3.Tx.ClearFailed2?.t2D描画(502, y[i] + 192);
- }
- */
- }
- private void showEndEffect_Clear(int i)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) ClearScript.Update(i);
- ClearScript.Draw(i);
-
- /*
- int[] y = new int[] { 210, 386 };
- #region[ 文字 ]
- //登場アニメは20フレーム。うち最初の5フレームは半透過状態。
- float[] f文字拡大率 = new float[] { 1.04f, 1.11f, 1.15f, 1.19f, 1.23f, 1.26f, 1.30f, 1.31f, 1.32f, 1.32f, 1.32f, 1.30f, 1.30f, 1.26f, 1.25f, 1.19f, 1.15f, 1.11f, 1.05f, 1.0f };
- int[] n透明度 = new int[] { 43, 85, 128, 170, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 };
-
- if (TJAPlayer3.Tx.End_Clear_Text_ != null)
- {
- if (this.ct進行メイン.n現在の値 >= 17)
- {
- if (this.ct進行メイン.n現在の値 <= 36)
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 17];
- TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 17];
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(634, (int)(y[i] - ((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 17]) - 90)), new Rectangle(0, 0, 90, 90));
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(634, y[i], new Rectangle(0, 0, 90, 90));
- }
- }
- if (this.ct進行メイン.n現在の値 >= 19)
- {
- if (this.ct進行メイン.n現在の値 <= 38)
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 19];
- TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 19];
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(692, (int)(y[i] - ((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 19]) - 90)), new Rectangle(90, 0, 90, 90));
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(692, y[i], new Rectangle(90, 0, 90, 90));
- }
- }
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- if (this.ct進行メイン.n現在の値 >= 21)
- {
- if (this.ct進行メイン.n現在の値 <= 40)
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 21];
- TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 21];
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(750, y[i] - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 21]) - 90), new Rectangle(180, 0, 90, 90));
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(750, y[i], new Rectangle(180, 0, 90, 90));
- }
- }
- if (this.ct進行メイン.n現在の値 >= 23)
- {
- if (this.ct進行メイン.n現在の値 <= 42)
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 23];
- TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 23];
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(819, y[i] - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 23]) - 90), new Rectangle(270, 0, 90, 90));
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(819, y[i], new Rectangle(270, 0, 90, 90));
- }
- }
- if (this.ct進行メイン.n現在の値 >= 25)
- {
- if (this.ct進行メイン.n現在の値 <= 44)
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 25];
- TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 25];
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(890, (y[i] + 2) - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 25]) - 90), new Rectangle(360, 0, 90, 90));
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
- TJAPlayer3.Tx.End_Clear_Text_.t2D描画(890, y[i] + 2, new Rectangle(360, 0, 90, 90));
- }
- }
- if (this.ct進行メイン.n現在の値 >= 50 && this.ct進行メイン.n現在の値 < 90)
- {
- if (TJAPlayer3.Tx.End_Clear_Text_Effect != null)
- {
- if (this.ct進行メイン.n現在の値 < 70)
- {
- TJAPlayer3.Tx.End_Clear_Text_Effect.Opacity = (this.ct進行メイン.n現在の値 - 50) * (255 / 20);
- TJAPlayer3.Tx.End_Clear_Text_Effect.t2D描画(634, y[i] - 2);
- }
- else
- {
- TJAPlayer3.Tx.End_Clear_Text_Effect.Opacity = 255 - ((this.ct進行メイン.n現在の値 - 70) * (255 / 20));
- TJAPlayer3.Tx.End_Clear_Text_Effect.t2D描画(634, y[i] - 2);
- }
- }
-
- }
- }
-
-
-
- #endregion
-
- #region[ バチお ]
-
- if (this.ct進行メイン.n現在の値 <= 11)
- {
- if (TJAPlayer3.Tx.End_Clear_L[1] != null)
- {
- TJAPlayer3.Tx.End_Clear_L[1].t2D描画(697, y[i] - 30);
- TJAPlayer3.Tx.End_Clear_L[1].Opacity = (int)(11.0 / this.ct進行メイン.n現在の値) * 255;
- }
- if (TJAPlayer3.Tx.End_Clear_R[1] != null)
- {
- TJAPlayer3.Tx.End_Clear_R[1].t2D描画(738, y[i] - 30);
- TJAPlayer3.Tx.End_Clear_R[1].Opacity = (int)(11.0 / this.ct進行メイン.n現在の値) * 255;
- }
- }
- else if (this.ct進行メイン.n現在の値 <= 35)
- {
- if (TJAPlayer3.Tx.End_Clear_L[0] != null)
- TJAPlayer3.Tx.End_Clear_L[0].t2D描画(697 - (int)((this.ct進行メイン.n現在の値 - 12) * 10), y[i] - 30);
- if (TJAPlayer3.Tx.End_Clear_R[0] != null)
- TJAPlayer3.Tx.End_Clear_R[0].t2D描画(738 + (int)((this.ct進行メイン.n現在の値 - 12) * 10), y[i] - 30);
- }
- else if (this.ct進行メイン.n現在の値 <= 46)
- {
- if (TJAPlayer3.Tx.End_Clear_L[0] != null)
- {
- //2016.07.16 kairera0467 またも原始的...
- float[] fRet = new float[] { 1.0f, 0.99f, 0.98f, 0.97f, 0.96f, 0.95f, 0.96f, 0.97f, 0.98f, 0.99f, 1.0f };
- TJAPlayer3.Tx.End_Clear_L[0].t2D描画(466, y[i] - 30);
- TJAPlayer3.Tx.End_Clear_L[0].vc拡大縮小倍率 = new Vector3(fRet[this.ct進行メイン.n現在の値 - 36], 1.0f, 1.0f);
- //CDTXMania.Tx.End_Clear_R[ 0 ].t2D描画( CDTXMania.app.Device, 956 + (( this.ct進行メイン.n現在の値 - 36 ) / 2), 180 );
- TJAPlayer3.Tx.End_Clear_R[0].t2D描画(1136 - 180 * fRet[this.ct進行メイン.n現在の値 - 36], y[i] - 30);
- TJAPlayer3.Tx.End_Clear_R[0].vc拡大縮小倍率 = new Vector3(fRet[this.ct進行メイン.n現在の値 - 36], 1.0f, 1.0f);
- }
- }
- else if (this.ct進行メイン.n現在の値 <= 49)
- {
- if (TJAPlayer3.Tx.End_Clear_L[1] != null)
- TJAPlayer3.Tx.End_Clear_L[1].t2D描画(466, y[i] - 30);
- if (TJAPlayer3.Tx.End_Clear_R[1] != null)
- TJAPlayer3.Tx.End_Clear_R[1].t2D描画(956, y[i] - 30);
- }
- else if (this.ct進行メイン.n現在の値 <= 54)
- {
- if (TJAPlayer3.Tx.End_Clear_L[2] != null)
- TJAPlayer3.Tx.End_Clear_L[2].t2D描画(466, y[i] - 30);
- if (TJAPlayer3.Tx.End_Clear_R[2] != null)
- TJAPlayer3.Tx.End_Clear_R[2].t2D描画(956, y[i] - 30);
- }
- else if (this.ct進行メイン.n現在の値 <= 58)
- {
- if (TJAPlayer3.Tx.End_Clear_L[3] != null)
- TJAPlayer3.Tx.End_Clear_L[3].t2D描画(466, y[i] - 30);
- if (TJAPlayer3.Tx.End_Clear_R[3] != null)
- TJAPlayer3.Tx.End_Clear_R[3].t2D描画(956, y[i] - 30);
- }
- else
- {
- if (TJAPlayer3.Tx.End_Clear_L[4] != null)
- TJAPlayer3.Tx.End_Clear_L[4].t2D描画(466, y[i] - 30);
- if (TJAPlayer3.Tx.End_Clear_R[4] != null)
- TJAPlayer3.Tx.End_Clear_R[4].t2D描画(956, y[i] - 30);
- }
-
- #endregion
-
- */
- }
-
- private void showEndEffect_FullCombo(int i)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) FullComboScript.Update(i);
- FullComboScript.Draw(i);
-
- /*
- int[] y = new int[] { 0, 176 };
-
- this.ctEnd_FullCombo.t進行();
- TJAPlayer3.Tx.End_FullCombo[this.ctEnd_FullCombo.n現在の値]?.t2D描画(330, y[i] + 50);
-
- if (this.ctEnd_FullCombo.b終了値に達した && TJAPlayer3.Tx.End_FullComboLoop[0] != null)
- {
- this.ctEnd_FullComboLoop.t進行Loop();
- TJAPlayer3.Tx.End_FullComboLoop[this.ctEnd_FullComboLoop.n現在の値]?.t2D描画(330, y[i] + 196);
- }
- */
- }
-
- private void showEndEffect_DondaFullCombo(int i)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DondaFullComboScript.Update(i);
- DondaFullComboScript.Draw(i);
-
- /*
- int[] y = new int[] { 0, 176 };
-
- this.ctEnd_DondaFullCombo.t進行();
- if (this.ctEnd_DondaFullCombo.n現在の値 >= 34) TJAPlayer3.Tx.End_DondaFullComboBg?.t2D描画(332, y[i] + 192);
- TJAPlayer3.Tx.End_DondaFullCombo[this.ctEnd_DondaFullCombo.n現在の値]?.t2D描画(330, y[i] + 50);
-
- /*
- if (this.ctEnd_DondaFullCombo.b終了値に達した)
- {
- this.ctEnd_DondaFullComboLoop.t進行Loop();
- TJAPlayer3.Tx.End_DondaFullComboLoop[this.ctEnd_DondaFullComboLoop.n現在の値].t2D描画(330, 196);
- }
- */
- }
- // ------------------------------------
- #endregion
-
- public override int Draw()
- {
- if (base.IsFirstDraw)
- {
- base.IsFirstDraw = false;
- }
- if (this.ct進行メイン != null && (TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_EndStage || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_FAILED || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_CLEAR_FadeOut))
- {
- this.ct進行メイン.Tick();
-
- //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct進行メイン.n現在の値.ToString() );
- //仮置き
-
- if (!bSongsPlayed)
- {
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode) break;
-
- switch (this.Mode[i])
- {
- case EndMode.StageFailed:
- FailedScript.PlayEndAnime(i);
- this.soundFailed[i]?.PlayStart();
- TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.StageCleared:
- ClearScript.PlayEndAnime(i);
- this.soundClear[i]?.PlayStart();
- TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.StageFullCombo:
- FullComboScript.PlayEndAnime(i);
- this.soundFullCombo[i]?.PlayStart();
- TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.StageDondaFullCombo:
- DondaFullComboScript.PlayEndAnime(i);
- this.soundDondaFullCombo[i]?.PlayStart();
- TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
-
- case EndMode.AI_Lose:
- AILoseScript.PlayEndAnime(i);
- this.soundAILose?.PlayStart();
- TJAPlayer3.Skin.voiceAILose[TJAPlayer3.GetActualPlayer(1)]?.tPlay();
- break;
- case EndMode.AI_Win:
- AIWinScript.PlayEndAnime(i);
- this.soundAIWin?.PlayStart();
- TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.AI_Win_FullCombo:
- AIWin_FullComboScript.PlayEndAnime(i);
- this.soundAIWinFullCombo?.PlayStart();
- TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.AI_Win_Perfect:
- AIWin_PerfectScript.PlayEndAnime(i);
- this.soundAIWinDondaFullCombo?.PlayStart();
- TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
-
- case EndMode.Tower_Dropout:
- Tower_DropoutScript.PlayEndAnime(i);
- this.soundTowerDropout?.PlayStart();
- TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Tower_TopReached_Pass:
- Tower_TopReached_PassScript.PlayEndAnime(i);
- this.soundTowerTopPass?.PlayStart();
- TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Tower_TopReached_FullCombo:
- Tower_TopReached_FullComboScript.PlayEndAnime(i);
- this.soundTowerTopFC?.PlayStart();
- TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Tower_TopReached_Perfect:
- Tower_TopReached_PerfectScript.PlayEndAnime(i);
- this.soundTowerTopPerfect?.PlayStart();
- TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
-
- case EndMode.Dan_Fail:
- Dan_FailScript.PlayEndAnime(i);
- this.soundDanFailed?.PlayStart();
- TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Red_Pass:
- Dan_Red_PassScript.PlayEndAnime(i);
- this.soundDanRedClear?.PlayStart();
- TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Red_FullCombo:
- Dan_Red_FullComboScript.PlayEndAnime(i);
- this.soundDanRedFC?.PlayStart();
- TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Red_Perfect:
- Dan_Red_PerfectScript.PlayEndAnime(i);
- this.soundDanRedPerfect?.PlayStart();
- TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Gold_Pass:
- Dan_Gold_PassScript.PlayEndAnime(i);
- this.soundDanGoldClear?.PlayStart();
- TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Gold_FullCombo:
- Dan_Gold_FullComboScript.PlayEndAnime(i);
- this.soundDanGoldFC?.PlayStart();
- TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
- case EndMode.Dan_Gold_Perfect:
- Dan_Gold_PerfectScript.PlayEndAnime(i);
- this.soundDanGoldPerfect?.PlayStart();
- TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
- break;
-
- default:
- break;
- }
- }
-
- bSongsPlayed = true;
- }
-
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode) break;
-
- switch (this.Mode[i])
- {
- case EndMode.StageFailed:
- this.showEndEffect_Failed(i);
- break;
- case EndMode.StageCleared:
- this.showEndEffect_Clear(i);
- break;
- case EndMode.StageFullCombo:
- this.showEndEffect_FullCombo(i);
- break;
- case EndMode.StageDondaFullCombo:
- this.showEndEffect_DondaFullCombo(i);
- break;
-
- case EndMode.AI_Win:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWinScript.Update(i);
- AIWinScript.Draw(i);
- break;
- case EndMode.AI_Lose:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AILoseScript.Update(i);
- AILoseScript.Draw(i);
- break;
- case EndMode.AI_Win_FullCombo:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWin_FullComboScript.Update(i);
- AIWin_FullComboScript.Draw(i);
- break;
- case EndMode.AI_Win_Perfect:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWin_PerfectScript.Update(i);
- AIWin_PerfectScript.Draw(i);
- break;
-
- case EndMode.Tower_Dropout:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_DropoutScript.Update(i);
- Tower_DropoutScript.Draw(i);
- break;
- case EndMode.Tower_TopReached_Pass:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_PassScript.Update(i);
- Tower_TopReached_PassScript.Draw(i);
- break;
- case EndMode.Tower_TopReached_FullCombo:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_FullComboScript.Update(i);
- Tower_TopReached_FullComboScript.Draw(i);
- break;
- case EndMode.Tower_TopReached_Perfect:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_PerfectScript.Update(i);
- Tower_TopReached_PerfectScript.Draw(i);
- break;
-
- case EndMode.Dan_Fail:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_FailScript.Update(i);
- Dan_FailScript.Draw(i);
- break;
- case EndMode.Dan_Red_Pass:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_PassScript.Update(i);
- Dan_Red_PassScript.Draw(i);
- break;
- case EndMode.Dan_Red_FullCombo:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_FullComboScript.Update(i);
- Dan_Red_FullComboScript.Draw(i);
- break;
- case EndMode.Dan_Red_Perfect:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_PerfectScript.Update(i);
- Dan_Red_PerfectScript.Draw(i);
- break;
- case EndMode.Dan_Gold_Pass:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_PassScript.Update(i);
- Dan_Gold_PassScript.Draw(i);
- break;
- case EndMode.Dan_Gold_FullCombo:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_FullComboScript.Update(i);
- Dan_Gold_FullComboScript.Draw(i);
- break;
- case EndMode.Dan_Gold_Perfect:
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_PerfectScript.Update(i);
- Dan_Gold_PerfectScript.Draw(i);
- break;
- default:
- break;
- }
-
- }
-
-
-
- if (this.ct進行メイン.IsEnded)
- {
- return 1;
- }
- }
-
- return 0;
- }
-
- #region[ private ]
- //-----------------
-
- private EndAnimeScript FailedScript;
- private EndAnimeScript ClearScript;
- private EndAnimeScript FullComboScript;
- private EndAnimeScript DondaFullComboScript;
-
- private EndAnimeScript AILoseScript;
- private EndAnimeScript AIWinScript;
- private EndAnimeScript AIWin_FullComboScript;
- private EndAnimeScript AIWin_PerfectScript;
-
- private EndAnimeScript Tower_DropoutScript;
- private EndAnimeScript Tower_TopReached_PassScript;
- private EndAnimeScript Tower_TopReached_FullComboScript;
- private EndAnimeScript Tower_TopReached_PerfectScript;
-
- private EndAnimeScript Dan_FailScript;
- private EndAnimeScript Dan_Red_PassScript;
- private EndAnimeScript Dan_Red_FullComboScript;
- private EndAnimeScript Dan_Red_PerfectScript;
-
- private EndAnimeScript Dan_Gold_PassScript;
- private EndAnimeScript Dan_Gold_FullComboScript;
- private EndAnimeScript Dan_Gold_PerfectScript;
-
-
-
- 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[5];
- CSound[] soundFailed = new CSound[5];
- CSound[] soundFullCombo = new CSound[5];
- CSound[] soundDondaFullCombo = new CSound[5];
-
- CSound soundDanFailed;
- CSound soundDanRedClear;
- CSound soundDanRedFC;
- CSound soundDanRedPerfect;
- CSound soundDanGoldClear;
- CSound soundDanGoldFC;
- CSound soundDanGoldPerfect;
- CSound soundTowerDropout;
- CSound soundTowerTopPass;
- CSound soundTowerTopFC;
- CSound soundTowerTopPerfect;
-
- CSound soundAILose;
- CSound soundAIWin;
- CSound soundAIWinFullCombo;
- CSound soundAIWinDondaFullCombo;
-
- EndMode[] Mode;
- enum EndMode
- {
- StageFailed,
- StageCleared,
- StageFullCombo,
- StageDondaFullCombo,
-
- AI_Lose,
- AI_Win,
- AI_Win_FullCombo,
- AI_Win_Perfect,
-
- Tower_Dropout,
- Tower_TopReached_Pass,
- Tower_TopReached_FullCombo,
- Tower_TopReached_Perfect,
-
- Dan_Fail,
- Dan_Red_Pass,
- Dan_Red_FullCombo,
- Dan_Red_Perfect,
- Dan_Gold_Pass,
- Dan_Gold_FullCombo,
- Dan_Gold_Perfect
- }
-
- //-----------------
- #endregion
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Drawing;
+using FDK;
+
+using Rectangle = System.Drawing.Rectangle;
+using Point = System.Drawing.Point;
+using Color = System.Drawing.Color;
+
+namespace TJAPlayer3
+{
+ internal class CActImplClearAnimation : CActivity
+ {
+ ///
+ /// 課題
+ /// _クリア失敗 →素材不足(確保はできる。切り出しと加工をしてないだけ。)
+ /// _
+ ///
+ public CActImplClearAnimation()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public void Start()
+ {
+ // this.ct進行メイン = new CCounter(0, 500, 1000 / 60, TJAPlayer3.Timer);
+
+ 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.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ if (CFloorManagement.CurrentNumberOfLives > 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
+ this.Mode[0] = EndMode.Tower_TopReached_Perfect;
+ else
+ this.Mode[0] = EndMode.Tower_TopReached_FullCombo;
+ }
+ else
+ this.Mode[0] = EndMode.Tower_TopReached_Pass;
+ }
+ else
+ this.Mode[0] = EndMode.Tower_Dropout;
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ {
+ // 段位認定モード。
+ if (!TJAPlayer3.stage演奏ドラム画面.actDan.GetFailedAllChallenges())
+ {
+ // 段位認定モード、クリア成功
+ // this.Mode[0] = EndMode.StageCleared;
+
+ bool bgold = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C) == Exam.Status.Better_Success;
+
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
+ this.Mode[0] = bgold ? EndMode.Dan_Gold_Perfect : EndMode.Dan_Red_Perfect;
+ else
+ this.Mode[0] = bgold ? EndMode.Dan_Gold_FullCombo : EndMode.Dan_Red_FullCombo;
+ }
+ else
+ this.Mode[0] = bgold ? EndMode.Dan_Gold_Pass : EndMode.Dan_Red_Pass;
+
+
+ }
+ else
+ {
+ // 段位認定モード、クリア失敗
+ this.Mode[0] = EndMode.Dan_Fail;
+ }
+ }
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsAIBattleWin)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0)
+ this.Mode[0] = EndMode.AI_Win_Perfect;
+ else
+ this.Mode[0] = EndMode.AI_Win_FullCombo;
+ }
+ else
+ this.Mode[0] = EndMode.AI_Win;
+ }
+ else
+ {
+ this.Mode[0] = EndMode.AI_Lose;
+ }
+ }
+ else
+ {
+ // 通常のモード。
+ // ここでフルコンボフラグをチェックするが現時点ではない。
+ // 今の段階では魂ゲージ80%以上でチェック。
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (HGaugeMethods.UNSAFE_FastNormaCheck(i))
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nMine == 0)
+ //if (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss == 0)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.CChartScore[i].nGood == 0)
+ //if (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great == 0)
+ {
+ this.Mode[i] = EndMode.StageDondaFullCombo;
+ }
+ else
+ {
+ this.Mode[i] = EndMode.StageFullCombo;
+ }
+ }
+ else
+ {
+ this.Mode[i] = EndMode.StageCleared;
+ }
+ }
+ else
+ {
+ this.Mode[i] = EndMode.StageFailed;
+ }
+ }
+ }
+ }
+
+ public override void Activate()
+ {
+ this.bリザルトボイス再生済み = false;
+ this.Mode = new EndMode[5];
+
+ var origindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.END}");
+
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ Tower_DropoutScript = new EndAnimeScript($@"{origindir}Tower_Dropout{Path.DirectorySeparatorChar}Script.lua");
+ Tower_DropoutScript.Init();
+
+ Tower_TopReached_PassScript = new EndAnimeScript($@"{origindir}Tower_TopReached_Pass{Path.DirectorySeparatorChar}Script.lua");
+ Tower_TopReached_PassScript.Init();
+
+ Tower_TopReached_FullComboScript = new EndAnimeScript($@"{origindir}Tower_TopReached_FullCombo{Path.DirectorySeparatorChar}Script.lua");
+ Tower_TopReached_FullComboScript.Init();
+
+ Tower_TopReached_PerfectScript = new EndAnimeScript($@"{origindir}Tower_TopReached_Perfect{Path.DirectorySeparatorChar}Script.lua");
+ Tower_TopReached_PerfectScript.Init();
+
+ this.soundTowerDropout = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_Dropout.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopPass = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Perfect.ogg"), ESoundGroup.SoundEffect);
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ {
+ Dan_FailScript = new EndAnimeScript($@"{origindir}Dan_Fail{Path.DirectorySeparatorChar}Script.lua");
+ Dan_FailScript.Init();
+
+ Dan_Red_PassScript = new EndAnimeScript($@"{origindir}Dan_Red_Pass{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Red_PassScript.Init();
+
+ Dan_Red_FullComboScript = new EndAnimeScript($@"{origindir}Dan_Red_FullCombo{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Red_FullComboScript.Init();
+
+ Dan_Red_PerfectScript = new EndAnimeScript($@"{origindir}Dan_Red_Perfect{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Red_PerfectScript.Init();
+
+ Dan_Gold_PassScript = new EndAnimeScript($@"{origindir}Dan_Gold_Pass{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Gold_PassScript.Init();
+
+ Dan_Gold_FullComboScript = new EndAnimeScript($@"{origindir}Dan_Gold_FullCombo{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Gold_FullComboScript.Init();
+
+ Dan_Gold_PerfectScript = new EndAnimeScript($@"{origindir}Dan_Gold_Perfect{Path.DirectorySeparatorChar}Script.lua");
+ Dan_Gold_PerfectScript.Init();
+
+ this.soundDanFailed = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Fail.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Perfect.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Perfect.ogg"), ESoundGroup.SoundEffect);
+
+ }
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ AILoseScript = new EndAnimeScript($@"{origindir}AI_Lose{Path.DirectorySeparatorChar}Script.lua");
+ AILoseScript.Init();
+
+ AIWinScript = new EndAnimeScript($@"{origindir}AI_Win{Path.DirectorySeparatorChar}Script.lua");
+ AIWinScript.Init();
+
+ AIWin_FullComboScript = new EndAnimeScript($@"{origindir}AI_Win_FullCombo{Path.DirectorySeparatorChar}Script.lua");
+ AIWin_FullComboScript.Init();
+
+ AIWin_PerfectScript = new EndAnimeScript($@"{origindir}AI_Win_Perfect{Path.DirectorySeparatorChar}Script.lua");
+ AIWin_PerfectScript.Init();
+
+ this.soundAILose = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Lose.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWin = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWinFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWinDondaFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_AllPerfect.ogg"), ESoundGroup.SoundEffect);
+ }
+ else
+ {
+ FailedScript = new EndAnimeScript($@"{origindir}ClearFailed{Path.DirectorySeparatorChar}Script.lua");//ClearFailed
+ FailedScript.Init();
+
+ ClearScript = new EndAnimeScript($@"{origindir}Clear{Path.DirectorySeparatorChar}Script.lua");
+ ClearScript.Init();
+
+ FullComboScript = new EndAnimeScript($@"{origindir}FullCombo{Path.DirectorySeparatorChar}Script.lua");
+ FullComboScript.Init();
+
+ DondaFullComboScript = new EndAnimeScript($@"{origindir}DondaFullCombo{Path.DirectorySeparatorChar}Script.lua");
+ DondaFullComboScript.Init();
+ }
+
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ this.ct進行メイン = null;
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ Tower_DropoutScript.Dispose();
+ Tower_TopReached_PassScript.Dispose();
+ Tower_TopReached_FullComboScript.Dispose();
+ Tower_TopReached_PerfectScript.Dispose();
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ {
+ Dan_FailScript.Dispose();
+ Dan_Red_PassScript.Dispose();
+ Dan_Red_FullComboScript.Dispose();
+ Dan_Red_PerfectScript.Dispose();
+ Dan_Gold_PassScript.Dispose();
+ Dan_Gold_FullComboScript.Dispose();
+ Dan_Gold_PerfectScript.Dispose();
+ }
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ AILoseScript.Dispose();
+ AIWinScript.Dispose();
+ AIWin_FullComboScript.Dispose();
+ AIWin_PerfectScript.Dispose();
+ }
+ else
+ {
+ FailedScript.Dispose();
+ ClearScript.Dispose();
+ FullComboScript.Dispose();
+ DondaFullComboScript.Dispose();
+ }
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ this.b再生済み = false;
+
+ this.soundTowerDropout = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_Dropout.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopPass = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundTowerTopPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Tower{Path.DirectorySeparatorChar}Tower_TopReached_Perfect.ogg"), ESoundGroup.SoundEffect);
+
+ this.soundDanFailed = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Fail.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanRedPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Red_Perfect.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldClear = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Pass.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldFC = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundDanGoldPerfect = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Dan{Path.DirectorySeparatorChar}Dan_Gold_Perfect.ogg"), ESoundGroup.SoundEffect);
+
+ this.soundAILose = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Lose.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWin = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWinFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundAIWinDondaFullCombo = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AIBattle_Win_AllPerfect.ogg"), ESoundGroup.SoundEffect);
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ this.soundClear[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Clear.ogg"), ESoundGroup.SoundEffect);
+ this.soundFailed[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}Failed.ogg"), ESoundGroup.SoundEffect);
+ this.soundFullCombo[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}FullCombo.ogg"), ESoundGroup.SoundEffect);
+ this.soundDondaFullCombo[i] = TJAPlayer3.SoundManager.tCreateSound(CSkin.Path(@$"Sounds{Path.DirectorySeparatorChar}AllPerfect.ogg"), ESoundGroup.SoundEffect);
+ }
+
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ this.soundTowerDropout?.tDispose();
+ this.soundTowerTopPass?.tDispose();
+ this.soundTowerTopFC?.tDispose();
+ this.soundTowerTopPerfect?.tDispose();
+
+ this.soundDanFailed?.tDispose();
+ this.soundDanRedClear?.tDispose();
+ this.soundDanRedFC?.tDispose();
+ this.soundDanRedPerfect?.tDispose();
+ this.soundDanGoldClear?.tDispose();
+ this.soundDanGoldFC?.tDispose();
+ this.soundDanGoldPerfect?.tDispose();
+
+ this.soundAILose?.tDispose();
+ this.soundAIWin?.tDispose();
+ this.soundAIWinFullCombo?.tDispose();
+ this.soundAIWinDondaFullCombo?.tDispose();
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ this.soundClear[i]?.tDispose();
+ this.soundFailed[i]?.tDispose();
+ this.soundFullCombo[i]?.tDispose();
+ this.soundDondaFullCombo[i]?.tDispose();
+ }
+
+ base.ReleaseManagedResource();
+ }
+
+ #region [effects]
+ // ------------------------------------
+ private void showEndEffect_Failed(int i)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) 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)
+ {
+ TJAPlayer3.Tx.End_ClearFailed[Math.Min(this.ctEnd_ClearFailed.n現在の値, TJAPlayer3.Tx.End_ClearFailed.Length - 1)]?.t2D描画(505, y[i] + 145);
+ }
+ else if (this.ctEnd_ClearFailed.n現在の値 >= 20 && this.ctEnd_ClearFailed.n現在の値 <= 67)
+ {
+ TJAPlayer3.Tx.ClearFailed?.t2D描画(502, y[i] + 192);
+ }
+ else if (this.ctEnd_ClearFailed.n現在の値 == 68)
+ {
+ TJAPlayer3.Tx.ClearFailed1?.t2D描画(502, y[i] + 192);
+ }
+ else if (this.ctEnd_ClearFailed.n現在の値 >= 69)
+ {
+ TJAPlayer3.Tx.ClearFailed2?.t2D描画(502, y[i] + 192);
+ }
+ */
+ }
+ private void showEndEffect_Clear(int i)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) ClearScript.Update(i);
+ ClearScript.Draw(i);
+
+ /*
+ int[] y = new int[] { 210, 386 };
+ #region[ 文字 ]
+ //登場アニメは20フレーム。うち最初の5フレームは半透過状態。
+ float[] f文字拡大率 = new float[] { 1.04f, 1.11f, 1.15f, 1.19f, 1.23f, 1.26f, 1.30f, 1.31f, 1.32f, 1.32f, 1.32f, 1.30f, 1.30f, 1.26f, 1.25f, 1.19f, 1.15f, 1.11f, 1.05f, 1.0f };
+ int[] n透明度 = new int[] { 43, 85, 128, 170, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 };
+
+ if (TJAPlayer3.Tx.End_Clear_Text_ != null)
+ {
+ if (this.ct進行メイン.n現在の値 >= 17)
+ {
+ if (this.ct進行メイン.n現在の値 <= 36)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 17];
+ TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 17];
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(634, (int)(y[i] - ((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 17]) - 90)), new Rectangle(0, 0, 90, 90));
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(634, y[i], new Rectangle(0, 0, 90, 90));
+ }
+ }
+ if (this.ct進行メイン.n現在の値 >= 19)
+ {
+ if (this.ct進行メイン.n現在の値 <= 38)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 19];
+ TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 19];
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(692, (int)(y[i] - ((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 19]) - 90)), new Rectangle(90, 0, 90, 90));
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(692, y[i], new Rectangle(90, 0, 90, 90));
+ }
+ }
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ if (this.ct進行メイン.n現在の値 >= 21)
+ {
+ if (this.ct進行メイン.n現在の値 <= 40)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 21];
+ TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 21];
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(750, y[i] - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 21]) - 90), new Rectangle(180, 0, 90, 90));
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(750, y[i], new Rectangle(180, 0, 90, 90));
+ }
+ }
+ if (this.ct進行メイン.n現在の値 >= 23)
+ {
+ if (this.ct進行メイン.n現在の値 <= 42)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 23];
+ TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 23];
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(819, y[i] - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 23]) - 90), new Rectangle(270, 0, 90, 90));
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(819, y[i], new Rectangle(270, 0, 90, 90));
+ }
+ }
+ if (this.ct進行メイン.n現在の値 >= 25)
+ {
+ if (this.ct進行メイン.n現在の値 <= 44)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = f文字拡大率[this.ct進行メイン.n現在の値 - 25];
+ TJAPlayer3.Tx.End_Clear_Text_.Opacity = n透明度[this.ct進行メイン.n現在の値 - 25];
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(890, (y[i] + 2) - (int)((90 * f文字拡大率[this.ct進行メイン.n現在の値 - 25]) - 90), new Rectangle(360, 0, 90, 90));
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_.vc拡大縮小倍率.Y = 1.0f;
+ TJAPlayer3.Tx.End_Clear_Text_.t2D描画(890, y[i] + 2, new Rectangle(360, 0, 90, 90));
+ }
+ }
+ if (this.ct進行メイン.n現在の値 >= 50 && this.ct進行メイン.n現在の値 < 90)
+ {
+ if (TJAPlayer3.Tx.End_Clear_Text_Effect != null)
+ {
+ if (this.ct進行メイン.n現在の値 < 70)
+ {
+ TJAPlayer3.Tx.End_Clear_Text_Effect.Opacity = (this.ct進行メイン.n現在の値 - 50) * (255 / 20);
+ TJAPlayer3.Tx.End_Clear_Text_Effect.t2D描画(634, y[i] - 2);
+ }
+ else
+ {
+ TJAPlayer3.Tx.End_Clear_Text_Effect.Opacity = 255 - ((this.ct進行メイン.n現在の値 - 70) * (255 / 20));
+ TJAPlayer3.Tx.End_Clear_Text_Effect.t2D描画(634, y[i] - 2);
+ }
+ }
+
+ }
+ }
+
+
+
+ #endregion
+
+ #region[ バチお ]
+
+ if (this.ct進行メイン.n現在の値 <= 11)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[1] != null)
+ {
+ TJAPlayer3.Tx.End_Clear_L[1].t2D描画(697, y[i] - 30);
+ TJAPlayer3.Tx.End_Clear_L[1].Opacity = (int)(11.0 / this.ct進行メイン.n現在の値) * 255;
+ }
+ if (TJAPlayer3.Tx.End_Clear_R[1] != null)
+ {
+ TJAPlayer3.Tx.End_Clear_R[1].t2D描画(738, y[i] - 30);
+ TJAPlayer3.Tx.End_Clear_R[1].Opacity = (int)(11.0 / this.ct進行メイン.n現在の値) * 255;
+ }
+ }
+ else if (this.ct進行メイン.n現在の値 <= 35)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[0] != null)
+ TJAPlayer3.Tx.End_Clear_L[0].t2D描画(697 - (int)((this.ct進行メイン.n現在の値 - 12) * 10), y[i] - 30);
+ if (TJAPlayer3.Tx.End_Clear_R[0] != null)
+ TJAPlayer3.Tx.End_Clear_R[0].t2D描画(738 + (int)((this.ct進行メイン.n現在の値 - 12) * 10), y[i] - 30);
+ }
+ else if (this.ct進行メイン.n現在の値 <= 46)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[0] != null)
+ {
+ //2016.07.16 kairera0467 またも原始的...
+ float[] fRet = new float[] { 1.0f, 0.99f, 0.98f, 0.97f, 0.96f, 0.95f, 0.96f, 0.97f, 0.98f, 0.99f, 1.0f };
+ TJAPlayer3.Tx.End_Clear_L[0].t2D描画(466, y[i] - 30);
+ TJAPlayer3.Tx.End_Clear_L[0].vc拡大縮小倍率 = new Vector3(fRet[this.ct進行メイン.n現在の値 - 36], 1.0f, 1.0f);
+ //CDTXMania.Tx.End_Clear_R[ 0 ].t2D描画( CDTXMania.app.Device, 956 + (( this.ct進行メイン.n現在の値 - 36 ) / 2), 180 );
+ TJAPlayer3.Tx.End_Clear_R[0].t2D描画(1136 - 180 * fRet[this.ct進行メイン.n現在の値 - 36], y[i] - 30);
+ TJAPlayer3.Tx.End_Clear_R[0].vc拡大縮小倍率 = new Vector3(fRet[this.ct進行メイン.n現在の値 - 36], 1.0f, 1.0f);
+ }
+ }
+ else if (this.ct進行メイン.n現在の値 <= 49)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[1] != null)
+ TJAPlayer3.Tx.End_Clear_L[1].t2D描画(466, y[i] - 30);
+ if (TJAPlayer3.Tx.End_Clear_R[1] != null)
+ TJAPlayer3.Tx.End_Clear_R[1].t2D描画(956, y[i] - 30);
+ }
+ else if (this.ct進行メイン.n現在の値 <= 54)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[2] != null)
+ TJAPlayer3.Tx.End_Clear_L[2].t2D描画(466, y[i] - 30);
+ if (TJAPlayer3.Tx.End_Clear_R[2] != null)
+ TJAPlayer3.Tx.End_Clear_R[2].t2D描画(956, y[i] - 30);
+ }
+ else if (this.ct進行メイン.n現在の値 <= 58)
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[3] != null)
+ TJAPlayer3.Tx.End_Clear_L[3].t2D描画(466, y[i] - 30);
+ if (TJAPlayer3.Tx.End_Clear_R[3] != null)
+ TJAPlayer3.Tx.End_Clear_R[3].t2D描画(956, y[i] - 30);
+ }
+ else
+ {
+ if (TJAPlayer3.Tx.End_Clear_L[4] != null)
+ TJAPlayer3.Tx.End_Clear_L[4].t2D描画(466, y[i] - 30);
+ if (TJAPlayer3.Tx.End_Clear_R[4] != null)
+ TJAPlayer3.Tx.End_Clear_R[4].t2D描画(956, y[i] - 30);
+ }
+
+ #endregion
+
+ */
+ }
+
+ private void showEndEffect_FullCombo(int i)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) FullComboScript.Update(i);
+ FullComboScript.Draw(i);
+
+ /*
+ int[] y = new int[] { 0, 176 };
+
+ this.ctEnd_FullCombo.t進行();
+ TJAPlayer3.Tx.End_FullCombo[this.ctEnd_FullCombo.n現在の値]?.t2D描画(330, y[i] + 50);
+
+ if (this.ctEnd_FullCombo.b終了値に達した && TJAPlayer3.Tx.End_FullComboLoop[0] != null)
+ {
+ this.ctEnd_FullComboLoop.t進行Loop();
+ TJAPlayer3.Tx.End_FullComboLoop[this.ctEnd_FullComboLoop.n現在の値]?.t2D描画(330, y[i] + 196);
+ }
+ */
+ }
+
+ private void showEndEffect_DondaFullCombo(int i)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) DondaFullComboScript.Update(i);
+ DondaFullComboScript.Draw(i);
+
+ /*
+ int[] y = new int[] { 0, 176 };
+
+ this.ctEnd_DondaFullCombo.t進行();
+ if (this.ctEnd_DondaFullCombo.n現在の値 >= 34) TJAPlayer3.Tx.End_DondaFullComboBg?.t2D描画(332, y[i] + 192);
+ TJAPlayer3.Tx.End_DondaFullCombo[this.ctEnd_DondaFullCombo.n現在の値]?.t2D描画(330, y[i] + 50);
+
+ /*
+ if (this.ctEnd_DondaFullCombo.b終了値に達した)
+ {
+ this.ctEnd_DondaFullComboLoop.t進行Loop();
+ TJAPlayer3.Tx.End_DondaFullComboLoop[this.ctEnd_DondaFullComboLoop.n現在の値].t2D描画(330, 196);
+ }
+ */
+ }
+ // ------------------------------------
+ #endregion
+
+ public override int Draw()
+ {
+ if (base.IsFirstDraw)
+ {
+ base.IsFirstDraw = false;
+ }
+ if (this.ct進行メイン != null && (TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_EndStage || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_FAILED || TJAPlayer3.stage演奏ドラム画面.ePhaseID == CStage.EPhase.Game_STAGE_CLEAR_FadeOut))
+ {
+ this.ct進行メイン.Tick();
+
+ //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct進行メイン.n現在の値.ToString() );
+ //仮置き
+
+ if (!bSongsPlayed)
+ {
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode) break;
+
+ switch (this.Mode[i])
+ {
+ case EndMode.StageFailed:
+ FailedScript.PlayEndAnime(i);
+ this.soundFailed[i]?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.StageCleared:
+ ClearScript.PlayEndAnime(i);
+ this.soundClear[i]?.PlayStart();
+ TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.StageFullCombo:
+ FullComboScript.PlayEndAnime(i);
+ this.soundFullCombo[i]?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.StageDondaFullCombo:
+ DondaFullComboScript.PlayEndAnime(i);
+ this.soundDondaFullCombo[i]?.PlayStart();
+ TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+
+ case EndMode.AI_Lose:
+ AILoseScript.PlayEndAnime(i);
+ this.soundAILose?.PlayStart();
+ TJAPlayer3.Skin.voiceAILose[TJAPlayer3.GetActualPlayer(1)]?.tPlay();
+ break;
+ case EndMode.AI_Win:
+ AIWinScript.PlayEndAnime(i);
+ this.soundAIWin?.PlayStart();
+ TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.AI_Win_FullCombo:
+ AIWin_FullComboScript.PlayEndAnime(i);
+ this.soundAIWinFullCombo?.PlayStart();
+ TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.AI_Win_Perfect:
+ AIWin_PerfectScript.PlayEndAnime(i);
+ this.soundAIWinDondaFullCombo?.PlayStart();
+ TJAPlayer3.Skin.voiceAIWin[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+
+ case EndMode.Tower_Dropout:
+ Tower_DropoutScript.PlayEndAnime(i);
+ this.soundTowerDropout?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Tower_TopReached_Pass:
+ Tower_TopReached_PassScript.PlayEndAnime(i);
+ this.soundTowerTopPass?.PlayStart();
+ TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Tower_TopReached_FullCombo:
+ Tower_TopReached_FullComboScript.PlayEndAnime(i);
+ this.soundTowerTopFC?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Tower_TopReached_Perfect:
+ Tower_TopReached_PerfectScript.PlayEndAnime(i);
+ this.soundTowerTopPerfect?.PlayStart();
+ TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+
+ case EndMode.Dan_Fail:
+ Dan_FailScript.PlayEndAnime(i);
+ this.soundDanFailed?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFailed[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Red_Pass:
+ Dan_Red_PassScript.PlayEndAnime(i);
+ this.soundDanRedClear?.PlayStart();
+ TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Red_FullCombo:
+ Dan_Red_FullComboScript.PlayEndAnime(i);
+ this.soundDanRedFC?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Red_Perfect:
+ Dan_Red_PerfectScript.PlayEndAnime(i);
+ this.soundDanRedPerfect?.PlayStart();
+ TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Gold_Pass:
+ Dan_Gold_PassScript.PlayEndAnime(i);
+ this.soundDanGoldClear?.PlayStart();
+ TJAPlayer3.Skin.voiceClearClear[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Gold_FullCombo:
+ Dan_Gold_FullComboScript.PlayEndAnime(i);
+ this.soundDanGoldFC?.PlayStart();
+ TJAPlayer3.Skin.voiceClearFullCombo[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+ case EndMode.Dan_Gold_Perfect:
+ Dan_Gold_PerfectScript.PlayEndAnime(i);
+ this.soundDanGoldPerfect?.PlayStart();
+ TJAPlayer3.Skin.voiceClearAllPerfect[TJAPlayer3.GetActualPlayer(i)]?.tPlay();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ bSongsPlayed = true;
+ }
+
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode) break;
+
+ switch (this.Mode[i])
+ {
+ case EndMode.StageFailed:
+ this.showEndEffect_Failed(i);
+ break;
+ case EndMode.StageCleared:
+ this.showEndEffect_Clear(i);
+ break;
+ case EndMode.StageFullCombo:
+ this.showEndEffect_FullCombo(i);
+ break;
+ case EndMode.StageDondaFullCombo:
+ this.showEndEffect_DondaFullCombo(i);
+ break;
+
+ case EndMode.AI_Win:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWinScript.Update(i);
+ AIWinScript.Draw(i);
+ break;
+ case EndMode.AI_Lose:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AILoseScript.Update(i);
+ AILoseScript.Draw(i);
+ break;
+ case EndMode.AI_Win_FullCombo:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWin_FullComboScript.Update(i);
+ AIWin_FullComboScript.Draw(i);
+ break;
+ case EndMode.AI_Win_Perfect:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) AIWin_PerfectScript.Update(i);
+ AIWin_PerfectScript.Draw(i);
+ break;
+
+ case EndMode.Tower_Dropout:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_DropoutScript.Update(i);
+ Tower_DropoutScript.Draw(i);
+ break;
+ case EndMode.Tower_TopReached_Pass:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_PassScript.Update(i);
+ Tower_TopReached_PassScript.Draw(i);
+ break;
+ case EndMode.Tower_TopReached_FullCombo:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_FullComboScript.Update(i);
+ Tower_TopReached_FullComboScript.Draw(i);
+ break;
+ case EndMode.Tower_TopReached_Perfect:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Tower_TopReached_PerfectScript.Update(i);
+ Tower_TopReached_PerfectScript.Draw(i);
+ break;
+
+ case EndMode.Dan_Fail:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_FailScript.Update(i);
+ Dan_FailScript.Draw(i);
+ break;
+ case EndMode.Dan_Red_Pass:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_PassScript.Update(i);
+ Dan_Red_PassScript.Draw(i);
+ break;
+ case EndMode.Dan_Red_FullCombo:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_FullComboScript.Update(i);
+ Dan_Red_FullComboScript.Draw(i);
+ break;
+ case EndMode.Dan_Red_Perfect:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Red_PerfectScript.Update(i);
+ Dan_Red_PerfectScript.Draw(i);
+ break;
+ case EndMode.Dan_Gold_Pass:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_PassScript.Update(i);
+ Dan_Gold_PassScript.Draw(i);
+ break;
+ case EndMode.Dan_Gold_FullCombo:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_FullComboScript.Update(i);
+ Dan_Gold_FullComboScript.Draw(i);
+ break;
+ case EndMode.Dan_Gold_Perfect:
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) Dan_Gold_PerfectScript.Update(i);
+ Dan_Gold_PerfectScript.Draw(i);
+ break;
+ default:
+ break;
+ }
+
+ }
+
+
+
+ if (this.ct進行メイン.IsEnded)
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+ }
+
+ #region[ private ]
+ //-----------------
+
+ private EndAnimeScript FailedScript;
+ private EndAnimeScript ClearScript;
+ private EndAnimeScript FullComboScript;
+ private EndAnimeScript DondaFullComboScript;
+
+ private EndAnimeScript AILoseScript;
+ private EndAnimeScript AIWinScript;
+ private EndAnimeScript AIWin_FullComboScript;
+ private EndAnimeScript AIWin_PerfectScript;
+
+ private EndAnimeScript Tower_DropoutScript;
+ private EndAnimeScript Tower_TopReached_PassScript;
+ private EndAnimeScript Tower_TopReached_FullComboScript;
+ private EndAnimeScript Tower_TopReached_PerfectScript;
+
+ private EndAnimeScript Dan_FailScript;
+ private EndAnimeScript Dan_Red_PassScript;
+ private EndAnimeScript Dan_Red_FullComboScript;
+ private EndAnimeScript Dan_Red_PerfectScript;
+
+ private EndAnimeScript Dan_Gold_PassScript;
+ private EndAnimeScript Dan_Gold_FullComboScript;
+ private EndAnimeScript Dan_Gold_PerfectScript;
+
+
+
+ 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[5];
+ CSound[] soundFailed = new CSound[5];
+ CSound[] soundFullCombo = new CSound[5];
+ CSound[] soundDondaFullCombo = new CSound[5];
+
+ CSound soundDanFailed;
+ CSound soundDanRedClear;
+ CSound soundDanRedFC;
+ CSound soundDanRedPerfect;
+ CSound soundDanGoldClear;
+ CSound soundDanGoldFC;
+ CSound soundDanGoldPerfect;
+ CSound soundTowerDropout;
+ CSound soundTowerTopPass;
+ CSound soundTowerTopFC;
+ CSound soundTowerTopPerfect;
+
+ CSound soundAILose;
+ CSound soundAIWin;
+ CSound soundAIWinFullCombo;
+ CSound soundAIWinDondaFullCombo;
+
+ EndMode[] Mode;
+ enum EndMode
+ {
+ StageFailed,
+ StageCleared,
+ StageFullCombo,
+ StageDondaFullCombo,
+
+ AI_Lose,
+ AI_Win,
+ AI_Win_FullCombo,
+ AI_Win_Perfect,
+
+ Tower_Dropout,
+ Tower_TopReached_Pass,
+ Tower_TopReached_FullCombo,
+ Tower_TopReached_Perfect,
+
+ Dan_Fail,
+ Dan_Red_Pass,
+ Dan_Red_FullCombo,
+ Dan_Red_Perfect,
+ Dan_Gold_Pass,
+ Dan_Gold_FullCombo,
+ Dan_Gold_Perfect
+ }
+
+ //-----------------
+ #endregion
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CActImplCombo.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplCombo.cs
new file mode 100644
index 00000000..1596b141
--- /dev/null
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplCombo.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace TJAPlayer3
+{
+ internal class CActImplCombo : CAct演奏Combo共通
+ {
+ // CAct演奏Combo共通 実装
+
+ protected override void tコンボ表示_太鼓(int nCombo値, int nジャンプインデックス, int nPlayer)
+ {
+ base.tコンボ表示_太鼓( nCombo値, nジャンプインデックス, nPlayer );
+ }
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsコンボ吹き出し.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplComboBalloon.cs
similarity index 98%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsコンボ吹き出し.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplComboBalloon.cs
index b68d593f..c965a786 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsコンボ吹き出し.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplComboBalloon.cs
@@ -7,7 +7,7 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsコンボ吹き出し : CActivity
+ internal class CActImplComboBalloon : CActivity
{
// コンストラクタ
@@ -15,7 +15,7 @@ namespace TJAPlayer3
/// 100コンボごとに出る吹き出し。
/// 本当は「10000点」のところも動かしたいけど、技術不足だし保留。
///
- public CAct演奏Drumsコンボ吹き出し()
+ public CActImplComboBalloon()
{
for (int i = 0; i < 10; i++)
{
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDancer.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplDancer.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDancer.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplDancer.cs
index 2a36ddb5..94b2aab5 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDancer.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplDancer.cs
@@ -1,373 +1,373 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using FDK;
-using System.Diagnostics;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsDancer : CActivity
- {
- ///
- /// 踊り子
- ///
- public CAct演奏DrumsDancer()
- {
- base.IsDeActivated = true;
- }
-
- public override void Activate()
- {
- //this.ct踊り子モーション = new CCounter();
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower || TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- return;
-
- var preset = HScenePreset.GetBGPreset();
-
- Random random = new Random();
-
- Dancer_In = new CTexture[5][];
- Dancer_Out = new CTexture[5][];
- Dancer = new CTexture[5][];
- DancerStates = new int[5];
- nNowDancerInCounter = new float[5];
- nNowDancerOutCounter = new float[5];
-
-
-
- var dancerOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.DANCER}");
- if (System.IO.Directory.Exists($@"{dancerOrigindir}"))
- {
- var dirs = System.IO.Directory.GetDirectories($@"{dancerOrigindir}");
- if (dirs.Length > 0)
- {
- var _presetPath = (preset != null && preset.DancerSet != null) ? $@"{dancerOrigindir}" + preset.DancerSet[random.Next(0, preset.DancerSet.Length)] : "";
- var path = (preset != null && System.IO.Directory.Exists(_presetPath))
- ? _presetPath
- : dirs[random.Next(0, dirs.Length)];
-
- LoadDancerConifg(path);
-
- Dancer_In = new CTexture[nDancerCount][];
- Dancer_Out = new CTexture[nDancerCount][];
- Dancer = new CTexture[nDancerCount][];
- DancerStates = new int[nDancerCount];
- nNowDancerInCounter = new float[nDancerCount];
- nNowDancerOutCounter = new float[nDancerCount];
-
- nDancerInPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1_In{Path.DirectorySeparatorChar}");
- if (nDancerInPtn != 0)
- {
- for (int i = 0; i < nDancerCount; i++)
- {
- Dancer_In[i] = new CTexture[nDancerInPtn];
- for (int p = 0; p < nDancerInPtn; p++)
- {
- Dancer_In[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}_In{Path.DirectorySeparatorChar}{p}.png");
- }
- }
- }
-
- nDancerOutPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1_Out{Path.DirectorySeparatorChar}");
- if (nDancerOutPtn != 0)
- {
- for (int i = 0; i < nDancerCount; i++)
- {
- Dancer_Out[i] = new CTexture[nDancerOutPtn];
- for (int p = 0; p < nDancerOutPtn; p++)
- {
- Dancer_Out[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}_Out{Path.DirectorySeparatorChar}{p}.png");
- }
- }
- }
-
- nDancerPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1{Path.DirectorySeparatorChar}");
- if (nDancerPtn != 0)
- {
- for (int i = 0; i < nDancerCount; i++)
- {
- Dancer[i] = new CTexture[nDancerPtn];
- for (int p = 0; p < nDancerPtn; p++)
- {
- Dancer[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}{Path.DirectorySeparatorChar}{p}.png");
- }
- }
- }
- }
- }
-
- arMotionArray_In = CConversion.StringToIntArray(Game_Dancer_In_Motion);
- if(this.arMotionArray_In == null) arMotionArray_In = CConversion.StringToIntArray("0,0");
-
- arMotionArray_Out = CConversion.StringToIntArray(Game_Dancer_Out_Motion);
- if(this.arMotionArray_Out == null) arMotionArray_Out = CConversion.StringToIntArray("0,0");
-
- this.ar踊り子モーション番号 = CConversion.StringToIntArray(TJAPlayer3.Skin.Game_Dancer_Motion);
- if(this.ar踊り子モーション番号 == null) ar踊り子モーション番号 = CConversion.StringToIntArray("0,0");
-
- nNowDancerCounter = 0;
- nNowDancerFrame = 0;
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower || TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
- return;
-
- //this.ct踊り子モーション = null;
-
- for (int i = 0; i < nDancerCount; i++)
- {
- TJAPlayer3.t安全にDisposeする(ref Dancer_In[i]);
- TJAPlayer3.t安全にDisposeする(ref Dancer_Out[i]);
- TJAPlayer3.t安全にDisposeする(ref Dancer[i]);
- }
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- if( this.IsFirstDraw )
- {
- this.IsFirstDraw = true;
- }
-
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Tower && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
- {
- if (TJAPlayer3.ConfigIni.ShowDancer && (this.ar踊り子モーション番号.Length - 1) != 0)
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerCounter += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime / nDancerBeat;
- if (nNowDancerCounter >= 1)
- {
- nNowDancerCounter = 0;
- }
- nNowDancerFrame = (int)(nNowDancerCounter * (this.ar踊り子モーション番号.Length - 1));
-
- for (int i = 0; i < nDancerCount; i++)
- {
- if ((int)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[0] >= TJAPlayer3.Skin.Game_Dancer_Gauge[i])
- {
- if (DancerStates[i] == 0)
- {
- DancerStates[i] = 1;
- nNowDancerInCounter[i] = 0;
- }
- }
- else
- {
- if (DancerStates[i] == 3)
- {
- DancerStates[i] = 2;
- nNowDancerOutCounter[i] = 0;
- }
- }
-
- switch(DancerStates[i])
- {
- case 0:
- break;
- case 1:
- {
- if (nDancerInInterval == 0)
- {
- DancerStates[i] = 3;
- }
- else
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerInCounter[i] += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / nDancerInInterval) * (float)TJAPlayer3.FPS.DeltaTime;
-
- if (nNowDancerInCounter[i] >= 1)
- {
- nNowDancerInCounter[i] = 1;
- DancerStates[i] = 3;
- }
-
- int frame = (int)(nNowDancerInCounter[i] * (this.arMotionArray_In.Length - 1));
- if (this.Dancer_In[i] != null && this.Dancer_In[i].Length > 0 && this.Dancer_In[i][this.arMotionArray_In[frame]] != null)
- {
- this.Dancer_In[i][this.arMotionArray_In[frame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
- }
- }
-
- }
- break;
- case 2:
- {
- if (nDancerOutInterval == 0)
- {
- DancerStates[i] = 0;
- }
- else
- {
- if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerOutCounter[i] += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / nDancerOutInterval) * (float)TJAPlayer3.FPS.DeltaTime;
-
- if (nNowDancerOutCounter[i] >= 1)
- {
- nNowDancerOutCounter[i] = 1;
- DancerStates[i] = 0;
- }
-
- int frame = (int)(nNowDancerOutCounter[i] * (this.arMotionArray_Out.Length - 1));
- if (this.Dancer_Out[i] != null && this.Dancer_Out[i].Length > 0 && this.Dancer_Out[i][this.arMotionArray_Out[frame]] != null)
- {
- this.Dancer_Out[i][this.arMotionArray_Out[frame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
- }
- }
- }
- break;
- case 3:
- if (this.Dancer[i] != null && this.Dancer[i].Length > 0 && this.Dancer[i][this.ar踊り子モーション番号[nNowDancerFrame]] != null)
- {
- this.Dancer[i][this.ar踊り子モーション番号[nNowDancerFrame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
- }
- break;
- }
- }
- }
- }
-
- return base.Draw();
- }
-
- #region[ private ]
- //-----------------
- private int nDancerCount;
- private float[] nNowDancerInCounter;
- private float[] nNowDancerOutCounter;
- private float nNowDancerCounter;
- private int nNowDancerFrame;
- private int nDancerInPtn;
- private int nDancerOutPtn;
- private int nDancerPtn;
- private float nDancerBeat;
- private float nDancerInInterval;
- private float nDancerOutInterval;
- private int[] arMotionArray_In;
- private int[] arMotionArray_Out;
- private int[] ar踊り子モーション番号;
- //public CCounter ct踊り子モーション;
- private CTexture[][] Dancer_In;
- private CTexture[][] Dancer_Out;
- private CTexture[][] Dancer;
- private int[] DancerStates;
- private string Game_Dancer_In_Motion;
- private string Game_Dancer_Out_Motion;
-
- private void LoadDancerConifg(string dancerPath)
- {
- var _str = "";
- TJAPlayer3.Skin.LoadSkinConfigFromFile(dancerPath + @$"{Path.DirectorySeparatorChar}DancerConfig.txt", ref _str);
-
- string[] delimiter = { "\n" };
- string[] strSingleLine = _str.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
-
- TJAPlayer3.Skin.Game_Dancer_X = new int[] { 640, 430, 856, 215, 1070 };
- TJAPlayer3.Skin.Game_Dancer_Y = new int[] { 500, 500, 500, 500, 500 };
- nDancerCount = 5;
- nDancerInInterval = 0;
- nDancerOutInterval = 0;
-
- foreach (string s in strSingleLine)
- {
- string str = s.Replace('\t', ' ').TrimStart(new char[] { '\t', ' ' });
- if ((str.Length != 0) && (str[0] != ';'))
- {
- try
- {
- string strCommand;
- string strParam;
- string[] strArray = str.Split(new char[] { '=' });
-
- if (strArray.Length == 2)
- {
- strCommand = strArray[0].Trim();
- strParam = strArray[1].Trim();
-
- if (strCommand == "Game_Dancer_Count")
- {
- nDancerCount = int.Parse(strParam);
- TJAPlayer3.Skin.Game_Dancer_X = new int[nDancerCount];
- TJAPlayer3.Skin.Game_Dancer_Y = new int[nDancerCount];
- }
- else if (strCommand == "Game_Dancer_X")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < nDancerCount; i++)
- {
- TJAPlayer3.Skin.Game_Dancer_X[i] = int.Parse(strSplit[i]);
- }
- }
- else if (strCommand == "Game_Dancer_Y")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < nDancerCount; i++)
- {
- TJAPlayer3.Skin.Game_Dancer_Y[i] = int.Parse(strSplit[i]);
- }
- }
- else if (strCommand == "Game_Dancer_Motion")
- {
- TJAPlayer3.Skin.Game_Dancer_Motion = strParam;
- }
- else if (strCommand == "Game_Dancer_In_Motion")
- {
- Game_Dancer_In_Motion = strParam;
- }
- else if (strCommand == "Game_Dancer_Out_Motion")
- {
- Game_Dancer_Out_Motion = strParam;
- }
- else if (strCommand == "Game_Dancer_Beat")
- {
- nDancerBeat = int.Parse(strParam);
- }
- else if (strCommand == "Game_Dancer_In_Interval")
- {
- nDancerInInterval = int.Parse(strParam);
- }
- else if (strCommand == "Game_Dancer_Out_Interval")
- {
- nDancerOutInterval = int.Parse(strParam);
- }
- else if (strCommand == "Game_Dancer_Gauge")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < nDancerCount; i++)
- {
- TJAPlayer3.Skin.Game_Dancer_Gauge[i] = int.Parse(strSplit[i]);
- }
- }
-
- }
- continue;
- }
- catch (Exception exception)
- {
- Trace.TraceError(exception.ToString());
- Trace.TraceError("例外が発生しましたが処理を継続します。 (6a32cc37-1527-412e-968a-512c1f0135cd)");
- continue;
- }
- }
- }
-
- }
- //-----------------
- #endregion
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using FDK;
+using System.Diagnostics;
+
+namespace TJAPlayer3
+{
+ internal class CActImplDancer : CActivity
+ {
+ ///
+ /// 踊り子
+ ///
+ public CActImplDancer()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public override void Activate()
+ {
+ //this.ct踊り子モーション = new CCounter();
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower || TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ return;
+
+ var preset = HScenePreset.GetBGPreset();
+
+ Random random = new Random();
+
+ Dancer_In = new CTexture[5][];
+ Dancer_Out = new CTexture[5][];
+ Dancer = new CTexture[5][];
+ DancerStates = new int[5];
+ nNowDancerInCounter = new float[5];
+ nNowDancerOutCounter = new float[5];
+
+
+
+ var dancerOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.DANCER}");
+ if (System.IO.Directory.Exists($@"{dancerOrigindir}"))
+ {
+ var dirs = System.IO.Directory.GetDirectories($@"{dancerOrigindir}");
+ if (dirs.Length > 0)
+ {
+ var _presetPath = (preset != null && preset.DancerSet != null) ? $@"{dancerOrigindir}" + preset.DancerSet[random.Next(0, preset.DancerSet.Length)] : "";
+ var path = (preset != null && System.IO.Directory.Exists(_presetPath))
+ ? _presetPath
+ : dirs[random.Next(0, dirs.Length)];
+
+ LoadDancerConifg(path);
+
+ Dancer_In = new CTexture[nDancerCount][];
+ Dancer_Out = new CTexture[nDancerCount][];
+ Dancer = new CTexture[nDancerCount][];
+ DancerStates = new int[nDancerCount];
+ nNowDancerInCounter = new float[nDancerCount];
+ nNowDancerOutCounter = new float[nDancerCount];
+
+ nDancerInPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1_In{Path.DirectorySeparatorChar}");
+ if (nDancerInPtn != 0)
+ {
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ Dancer_In[i] = new CTexture[nDancerInPtn];
+ for (int p = 0; p < nDancerInPtn; p++)
+ {
+ Dancer_In[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}_In{Path.DirectorySeparatorChar}{p}.png");
+ }
+ }
+ }
+
+ nDancerOutPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1_Out{Path.DirectorySeparatorChar}");
+ if (nDancerOutPtn != 0)
+ {
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ Dancer_Out[i] = new CTexture[nDancerOutPtn];
+ for (int p = 0; p < nDancerOutPtn; p++)
+ {
+ Dancer_Out[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}_Out{Path.DirectorySeparatorChar}{p}.png");
+ }
+ }
+ }
+
+ nDancerPtn = TJAPlayer3.t連番画像の枚数を数える($@"{path}{Path.DirectorySeparatorChar}1{Path.DirectorySeparatorChar}");
+ if (nDancerPtn != 0)
+ {
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ Dancer[i] = new CTexture[nDancerPtn];
+ for (int p = 0; p < nDancerPtn; p++)
+ {
+ Dancer[i][p] = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}{(i + 1)}{Path.DirectorySeparatorChar}{p}.png");
+ }
+ }
+ }
+ }
+ }
+
+ arMotionArray_In = CConversion.StringToIntArray(Game_Dancer_In_Motion);
+ if(this.arMotionArray_In == null) arMotionArray_In = CConversion.StringToIntArray("0,0");
+
+ arMotionArray_Out = CConversion.StringToIntArray(Game_Dancer_Out_Motion);
+ if(this.arMotionArray_Out == null) arMotionArray_Out = CConversion.StringToIntArray("0,0");
+
+ this.ar踊り子モーション番号 = CConversion.StringToIntArray(TJAPlayer3.Skin.Game_Dancer_Motion);
+ if(this.ar踊り子モーション番号 == null) ar踊り子モーション番号 = CConversion.StringToIntArray("0,0");
+
+ nNowDancerCounter = 0;
+ nNowDancerFrame = 0;
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower || TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
+ return;
+
+ //this.ct踊り子モーション = null;
+
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ TJAPlayer3.t安全にDisposeする(ref Dancer_In[i]);
+ TJAPlayer3.t安全にDisposeする(ref Dancer_Out[i]);
+ TJAPlayer3.t安全にDisposeする(ref Dancer[i]);
+ }
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ if( this.IsFirstDraw )
+ {
+ this.IsFirstDraw = true;
+ }
+
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Tower && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
+ {
+ if (TJAPlayer3.ConfigIni.ShowDancer && (this.ar踊り子モーション番号.Length - 1) != 0)
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerCounter += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / 60.0f) * (float)TJAPlayer3.FPS.DeltaTime / nDancerBeat;
+ if (nNowDancerCounter >= 1)
+ {
+ nNowDancerCounter = 0;
+ }
+ nNowDancerFrame = (int)(nNowDancerCounter * (this.ar踊り子モーション番号.Length - 1));
+
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ if ((int)TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[0] >= TJAPlayer3.Skin.Game_Dancer_Gauge[i])
+ {
+ if (DancerStates[i] == 0)
+ {
+ DancerStates[i] = 1;
+ nNowDancerInCounter[i] = 0;
+ }
+ }
+ else
+ {
+ if (DancerStates[i] == 3)
+ {
+ DancerStates[i] = 2;
+ nNowDancerOutCounter[i] = 0;
+ }
+ }
+
+ switch(DancerStates[i])
+ {
+ case 0:
+ break;
+ case 1:
+ {
+ if (nDancerInInterval == 0)
+ {
+ DancerStates[i] = 3;
+ }
+ else
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerInCounter[i] += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / nDancerInInterval) * (float)TJAPlayer3.FPS.DeltaTime;
+
+ if (nNowDancerInCounter[i] >= 1)
+ {
+ nNowDancerInCounter[i] = 1;
+ DancerStates[i] = 3;
+ }
+
+ int frame = (int)(nNowDancerInCounter[i] * (this.arMotionArray_In.Length - 1));
+ if (this.Dancer_In[i] != null && this.Dancer_In[i].Length > 0 && this.Dancer_In[i][this.arMotionArray_In[frame]] != null)
+ {
+ this.Dancer_In[i][this.arMotionArray_In[frame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ if (nDancerOutInterval == 0)
+ {
+ DancerStates[i] = 0;
+ }
+ else
+ {
+ if (!TJAPlayer3.stage演奏ドラム画面.bPAUSE) nNowDancerOutCounter[i] += Math.Abs((float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[0] / nDancerOutInterval) * (float)TJAPlayer3.FPS.DeltaTime;
+
+ if (nNowDancerOutCounter[i] >= 1)
+ {
+ nNowDancerOutCounter[i] = 1;
+ DancerStates[i] = 0;
+ }
+
+ int frame = (int)(nNowDancerOutCounter[i] * (this.arMotionArray_Out.Length - 1));
+ if (this.Dancer_Out[i] != null && this.Dancer_Out[i].Length > 0 && this.Dancer_Out[i][this.arMotionArray_Out[frame]] != null)
+ {
+ this.Dancer_Out[i][this.arMotionArray_Out[frame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
+ }
+ }
+ }
+ break;
+ case 3:
+ if (this.Dancer[i] != null && this.Dancer[i].Length > 0 && this.Dancer[i][this.ar踊り子モーション番号[nNowDancerFrame]] != null)
+ {
+ this.Dancer[i][this.ar踊り子モーション番号[nNowDancerFrame]].t2D中心基準描画(TJAPlayer3.Skin.Game_Dancer_X[i], TJAPlayer3.Skin.Game_Dancer_Y[i]);
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ return base.Draw();
+ }
+
+ #region[ private ]
+ //-----------------
+ private int nDancerCount;
+ private float[] nNowDancerInCounter;
+ private float[] nNowDancerOutCounter;
+ private float nNowDancerCounter;
+ private int nNowDancerFrame;
+ private int nDancerInPtn;
+ private int nDancerOutPtn;
+ private int nDancerPtn;
+ private float nDancerBeat;
+ private float nDancerInInterval;
+ private float nDancerOutInterval;
+ private int[] arMotionArray_In;
+ private int[] arMotionArray_Out;
+ private int[] ar踊り子モーション番号;
+ //public CCounter ct踊り子モーション;
+ private CTexture[][] Dancer_In;
+ private CTexture[][] Dancer_Out;
+ private CTexture[][] Dancer;
+ private int[] DancerStates;
+ private string Game_Dancer_In_Motion;
+ private string Game_Dancer_Out_Motion;
+
+ private void LoadDancerConifg(string dancerPath)
+ {
+ var _str = "";
+ TJAPlayer3.Skin.LoadSkinConfigFromFile(dancerPath + @$"{Path.DirectorySeparatorChar}DancerConfig.txt", ref _str);
+
+ string[] delimiter = { "\n" };
+ string[] strSingleLine = _str.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
+
+ TJAPlayer3.Skin.Game_Dancer_X = new int[] { 640, 430, 856, 215, 1070 };
+ TJAPlayer3.Skin.Game_Dancer_Y = new int[] { 500, 500, 500, 500, 500 };
+ nDancerCount = 5;
+ nDancerInInterval = 0;
+ nDancerOutInterval = 0;
+
+ foreach (string s in strSingleLine)
+ {
+ string str = s.Replace('\t', ' ').TrimStart(new char[] { '\t', ' ' });
+ if ((str.Length != 0) && (str[0] != ';'))
+ {
+ try
+ {
+ string strCommand;
+ string strParam;
+ string[] strArray = str.Split(new char[] { '=' });
+
+ if (strArray.Length == 2)
+ {
+ strCommand = strArray[0].Trim();
+ strParam = strArray[1].Trim();
+
+ if (strCommand == "Game_Dancer_Count")
+ {
+ nDancerCount = int.Parse(strParam);
+ TJAPlayer3.Skin.Game_Dancer_X = new int[nDancerCount];
+ TJAPlayer3.Skin.Game_Dancer_Y = new int[nDancerCount];
+ }
+ else if (strCommand == "Game_Dancer_X")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ TJAPlayer3.Skin.Game_Dancer_X[i] = int.Parse(strSplit[i]);
+ }
+ }
+ else if (strCommand == "Game_Dancer_Y")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ TJAPlayer3.Skin.Game_Dancer_Y[i] = int.Parse(strSplit[i]);
+ }
+ }
+ else if (strCommand == "Game_Dancer_Motion")
+ {
+ TJAPlayer3.Skin.Game_Dancer_Motion = strParam;
+ }
+ else if (strCommand == "Game_Dancer_In_Motion")
+ {
+ Game_Dancer_In_Motion = strParam;
+ }
+ else if (strCommand == "Game_Dancer_Out_Motion")
+ {
+ Game_Dancer_Out_Motion = strParam;
+ }
+ else if (strCommand == "Game_Dancer_Beat")
+ {
+ nDancerBeat = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Dancer_In_Interval")
+ {
+ nDancerInInterval = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Dancer_Out_Interval")
+ {
+ nDancerOutInterval = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Dancer_Gauge")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < nDancerCount; i++)
+ {
+ TJAPlayer3.Skin.Game_Dancer_Gauge[i] = int.Parse(strSplit[i]);
+ }
+ }
+
+ }
+ continue;
+ }
+ catch (Exception exception)
+ {
+ Trace.TraceError(exception.ToString());
+ Trace.TraceError("例外が発生しましたが処理を継続します。 (6a32cc37-1527-412e-968a-512c1f0135cd)");
+ continue;
+ }
+ }
+ }
+
+ }
+ //-----------------
+ #endregion
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsチップファイアD.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplFireworks.cs
similarity index 83%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsチップファイアD.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplFireworks.cs
index 8467fb21..4c0cbb8c 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsチップファイアD.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplFireworks.cs
@@ -1,551 +1,492 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using FDK;
-
-using Rectangle = System.Drawing.Rectangle;
-using Point = System.Drawing.Point;
-using Color = System.Drawing.Color;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsチップファイアD : CActivity
- {
- // コンストラクタ
-
- public CAct演奏DrumsチップファイアD()
- {
- base.IsDeActivated = true;
- }
-
-
- // メソッド
-
- ///
- /// 大音符の花火エフェクト
- ///
- ///
- public virtual void Start( int nLane, int nPlayer )
- {
- nY座標P2 = new int[] { 548, 612, 670, 712, 730, 780, 725, 690, 640 };
- if( TJAPlayer3.Tx.Effects_Hit_FireWorks != null && TJAPlayer3.Tx.Effects_Hit_FireWorks != null )
- {
- for (int i = 0; i < 9; i++)
- {
- for (int j = 0; j < 45; j++)
- {
- if (!this.st大音符花火[j].b使用中)
- {
- this.st大音符花火[j].b使用中 = true;
- this.st大音符花火[j].ct進行 = new CCounter(0, 40, 18, TJAPlayer3.Timer); // カウンタ
- this.st大音符花火[j].fX = this.nX座標[ i ]; //X座標
- this.st大音符花火[j].fY = nPlayer == 0 ? this.nY座標[ i ] : this.nY座標P2[ i ];
-
- switch(nLane)
- {
- case 0:
- this.st大音符花火[j].nColor = 0;
- break;
- case 1:
- this.st大音符花火[j].nColor = 1;
- break;
- }
-
- switch( i )
- {
- case 0:
- this.st大音符花火[ j ].n開始フレーム = 0;
- this.st大音符花火[ j ].n終了フレーム = 16;
- break;
- case 1:
- this.st大音符花火[ j ].n開始フレーム = 3;
- this.st大音符花火[ j ].n終了フレーム = 19;
- break;
- case 2:
- this.st大音符花火[ j ].n開始フレーム = 6;
- this.st大音符花火[ j ].n終了フレーム = 22;
- break;
- case 3:
- this.st大音符花火[ j ].n開始フレーム = 9;
- this.st大音符花火[ j ].n終了フレーム = 25;
- break;
- case 4:
- this.st大音符花火[ j ].n開始フレーム = 12;
- this.st大音符花火[ j ].n終了フレーム = 28;
- break;
- case 5:
- this.st大音符花火[ j ].n開始フレーム = 15;
- this.st大音符花火[ j ].n終了フレーム = 31;
- break;
- case 6:
- this.st大音符花火[ j ].n開始フレーム = 18;
- this.st大音符花火[ j ].n終了フレーム = 34;
- break;
- case 7:
- this.st大音符花火[ j ].n開始フレーム = 21;
- this.st大音符花火[ j ].n終了フレーム = 37;
- break;
- case 8:
- this.st大音符花火[ j ].n開始フレーム = 24;
- this.st大音符花火[ j ].n終了フレーム = 40;
- break;
- }
-
-
-
- break;
- }
- }
- }
- }
- }
-
- public virtual void Start( int nLane, ENoteJudge judge, int player )
- {
- for (int j = 0; j < 3 * 4; j++)
- {
- if( !this.st状態[ j ].b使用中 )
- //for( int n = 0; n < 1; n++ )
- {
- this.st状態[ j ].b使用中 = true;
- //this.st状態[ n ].ct進行 = new CCounter( 0, 9, 20, CDTXMania.Timer );
- this.st状態[ j ].ct進行 = new CCounter( 0, 6, 25, TJAPlayer3.Timer );
- this.st状態[ j ].judge = judge;
- this.st状態[ j ].nPlayer = player;
- this.st状態_大[ j ].nPlayer = player;
-
- switch( nLane )
- {
- case 0x11:
- case 0x12:
- this.st状態[ j ].nIsBig = 0;
- break;
- case 0x13:
- case 0x14:
- case 0x1A:
- case 0x1B:
- this.st状態_大[ j ].ct進行 = new CCounter( 0, 9, 20, TJAPlayer3.Timer );
- this.st状態_大[ j ].judge = judge;
- this.st状態_大[ j ].nIsBig = 1;
- break;
- }
- break;
- }
- }
- }
- public void Start紙吹雪()
- {
- return;
- /*
- if (this.tx紙吹雪 != null)
- {
- for (int i = 0; i < 256; i++)
- {
- for (int j = 0; j < 16; j++)
- {
- if (!this.st紙吹雪[j].b使用中)
- {
- this.st紙吹雪[j].b使用中 = true;
- int n回転初期値 = CDTXMania.Random.Next(360);
- int nX拡散方向 = CDTXMania.Random.Next(10);
- int n拡散の大きさ = CDTXMania.Random.Next( 50, 1400 );
- int n重力加速 = CDTXMania.Random.Next( 6, 100 );
- double num7 = ( n拡散の大きさ / 1000.0 ) + (1 / 100.0); // 拡散の大きさ
- //double num7 = 0.9 + ( ( (double) CDTXMania.Random.Next( 40 ) ) / 100.0 );
- this.st紙吹雪[ j ].nGraphic = CDTXMania.Random.Next(3);
- this.st紙吹雪[ j ].nColor = CDTXMania.Random.Next(3);
- this.st紙吹雪[j].ct進行 = new CCounter(0, 500, 5, CDTXMania.Timer); // カウンタ
- this.st紙吹雪[j].fX = 1000; //X座標(仮)
-
- this.st紙吹雪[j].fY = ((( 470 + (((float)Math.Sin((double)this.st紙吹雪[j].f半径)) * this.st紙吹雪[j].f半径)) )); //Y座標
- //this.st紙吹雪[j].f加速度X = (float)(num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0));
- //this.st紙吹雪[ j ].f加速度X = (float)( ( num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0)) > 0.005 ? Math.Abs( num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0)) : num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0) );
- this.st紙吹雪[ j ].f加速度X = (float)Math.Abs(num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0)) - ( nX拡散方向 / 20.0f );
- this.st紙吹雪[j].f加速度Y = (float)-Math.Abs( num7 * (Math.Sin((Math.PI * 2 * n回転初期値) / 360.0))) - 0.05f;
- //this.st紙吹雪[j].f加速度Y = (float)( num7 * (Math.Sin((Math.PI * 2 * n回転初期値) / 360.0))) - 0.05f;
- this.st紙吹雪[j].f加速度の加速度X = 1.009f + (float)(num7 / 1000);
- this.st紙吹雪[j].f加速度の加速度Y = 0.989f + (float)(num7 / 1000);
- //this.st紙吹雪[j].f重力加速度 = 0.0100f;
- this.st紙吹雪[j].f重力加速度 = n重力加速 / 10000.0f;
- this.st紙吹雪[j].f半径 = (float)(0.5 + (((double)CDTXMania.Random.Next(40)) / 100.0));
-
-
- break;
- }
- }
- }
- } */
- }
-
- // CActivity 実装
-
- public override void Activate()
- {
- for( int i = 0; i < 3 * 4; i++ )
- {
- this.st状態[ i ].ct進行 = new CCounter();
- this.st状態[ i ].b使用中 = false;
- this.st状態_大[ i ].ct進行 = new CCounter();
- }
- for( int i = 0; i < 256; i++ )
- {
- this.st紙吹雪[ i ] = new ST紙吹雪();
- this.st紙吹雪[ i ].b使用中 = false;
- this.st紙吹雪[ i ].ct進行 = new CCounter();
- }
- base.Activate();
- }
- public override void DeActivate()
- {
- for( int i = 0; i < 3 * 4; i++ )
- {
- this.st状態[ i ].ct進行 = null;
- this.st状態_大[ i ].ct進行 = null;
- }
- for( int i = 0; i < 256; i++ )
- {
- this.st紙吹雪[ i ].ct進行 = null;
- }
- base.DeActivate();
- }
- public override void CreateManagedResource()
- {
- // this.txアタックエフェクトUpper = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\7_explosion_upper.png" ) );
- // this.txアタックエフェクトUpper_big = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_explosion_upper_big.png" ) );
- //if( this.txアタックエフェクトUpper != null )
- //{
- // this.txアタックエフェクトUpper.b加算合成 = true;
- //}
- // this.tx大音符花火[0] = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\7_explosion_bignotes_red.png" ) );
- // this.tx大音符花火[0].b加算合成 = true;
- // this.tx大音符花火[1] = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\7_explosion_bignotes_blue.png" ) );
- // this.tx大音符花火[1].b加算合成 = true;
- //this.tx紙吹雪 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_particle paper.png" ) );
- base.CreateManagedResource();
- }
- public override void ReleaseManagedResource()
- {
- //CDTXMania.tテクスチャの解放( ref this.txアタックエフェクトUpper );
- //CDTXMania.tテクスチャの解放( ref this.txアタックエフェクトUpper_big );
- // CDTXMania.tテクスチャの解放( ref this.tx大音符花火[ 0 ] );
- // CDTXMania.tテクスチャの解放( ref this.tx大音符花火[ 1 ] );
- //CDTXMania.tテクスチャの解放( ref this.tx紙吹雪 );
- base.ReleaseManagedResource();
- }
- public override int Draw()
- {
- if( !base.IsDeActivated )
- {
- int nWidth = (TJAPlayer3.Tx.Effects_Hit_Explosion.szTextureSize.Width / 7);
- int nHeight = (TJAPlayer3.Tx.Effects_Hit_Explosion.szTextureSize.Height / 4);
- int nBombWidth = (TJAPlayer3.Tx.Effects_Hit_Bomb.szTextureSize.Width / 7);
- int nBombHeight = (TJAPlayer3.Tx.Effects_Hit_Bomb.szTextureSize.Height / 4);
- for ( int i = 0; i < 3 * 4; i++ )
- {
- if( this.st状態[ i ].b使用中 )
- {
- if( !this.st状態[ i ].ct進行.IsStoped )
- {
- this.st状態[ i ].ct進行.Tick();
- if( this.st状態[ i ].ct進行.IsEnded )
- {
- this.st状態[ i ].ct進行.Stop();
- this.st状態[ i ].b使用中 = false;
- }
-
- // (When performing calibration, reduce visual distraction
- // and current judgment feedback near the judgment position.)
- if( TJAPlayer3.Tx.Effects_Hit_Explosion != null && !TJAPlayer3.IsPerformingCalibration )
- {
- int n = this.st状態[ i ].nIsBig == 1 ? (nHeight * 2) : 0;
-
- int nX = 0;
- int nY = 0;
-
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
- nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
- nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
- }
- else
- {
- nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
- nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
- }
- nX += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
- nY += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
-
- switch ( st状態[ i ].judge )
- {
- case ENoteJudge.Perfect:
- case ENoteJudge.Great:
- case ENoteJudge.Auto:
- if (!TJAPlayer3.ConfigIni.SimpleMode) TJAPlayer3.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n, nWidth, nHeight));
- break;
- case ENoteJudge.Good:
- TJAPlayer3.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n + nHeight, nWidth, nHeight));
- break;
- case ENoteJudge.Mine:
- TJAPlayer3.Tx.Effects_Hit_Bomb?.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nBombWidth, 0, nBombWidth, nBombHeight));
- break;
- case ENoteJudge.Miss:
- case ENoteJudge.Bad:
- break;
- }
- }
- }
- }
- }
-
- for( int i = 0; i < 3 * 4; i++ )
- {
- if( !this.st状態_大[ i ].ct進行.IsStoped )
- {
- this.st状態_大[ i ].ct進行.Tick();
- if( this.st状態_大[ i ].ct進行.IsEnded )
- {
- this.st状態_大[ i ].ct進行.Stop();
- }
- if(TJAPlayer3.Tx.Effects_Hit_Explosion_Big != null && this.st状態_大[ i ].nIsBig == 1 )
- {
-
- switch( st状態_大[ i ].judge )
- {
- case ENoteJudge.Perfect:
- case ENoteJudge.Great:
- case ENoteJudge.Auto:
- if( this.st状態_大[ i ].nIsBig == 1 && !TJAPlayer3.ConfigIni.SimpleMode)
- {
- //float fX = 415 - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Width * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.X ) / 2.0f);
- //float fY = TJAPlayer3.Skin.nJudgePointY[ this.st状態_大[ i ].nPlayer ] - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Height * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.Y ) / 2.0f);
- //float fY = 257 - ((this.txアタックエフェクトUpper_big.sz画像サイズ.Height * this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y ) / 2.0f);
-
- ////7
- float f倍率 = 0.5f + ( (this.st状態_大[ i ].ct進行.CurrentValue * 0.5f) / 10.0f);
- //this.txアタックエフェクトUpper_big.vc拡大縮小倍率.X = f倍率;
- //this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y = f倍率;
- //this.txアタックエフェクトUpper_big.n透明度 = (int)(255 * f倍率);
- //this.txアタックエフェクトUpper_big.t2D描画( CDTXMania.app.Device, fX, fY );
-
- /*
- Matrix mat = Matrix.Identity;
- mat *= Matrix.Scaling( f倍率, f倍率, f倍率 );
- mat *= Matrix.Translation( TJAPlayer3.Skin.nScrollFieldX[0] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[ this.st状態[ i ].nPlayer ] - SampleFramework.GameWindowSize.Height / 2.0f), 0f );
- //mat *= Matrix.Billboard( new Vector3( 15, 15, 15 ), new Vector3(0, 0, 0), new Vector3( 0, 0, 0 ), new Vector3( 0, 0, 0 ) );
- //mat *= Matrix.Translation( 0f, 0f, 0f );
-
-
- TJAPlayer3.Tx.Effects_Hit_Explosion_Big.Opacity = 255;
- TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t3D描画( mat );
- */
-
- float x = 0;
- float y = 0;
-
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
- }
- else
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
- }
- x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
- y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
-
- x -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szTextureSize.Width * (f倍率 - 1.0f) / 2.0f);
- y -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szTextureSize.Height * (f倍率 - 1.0f) / 2.0f);
-
- TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.X = f倍率;
- TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.Y = f倍率;
- TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t2D描画(x, y);
- }
- break;
-
- case ENoteJudge.Good:
- break;
-
- case ENoteJudge.Miss:
- case ENoteJudge.Bad:
- break;
- }
- }
- }
- }
-
- for (int i = 0; i < 45; i++)
- {
- if( TJAPlayer3.Skin.nScrollFieldX[0] != 414 )
- break;
-
- if (this.st大音符花火[i].b使用中)
- {
- this.st大音符花火[i].n前回のValue = this.st大音符花火[i].ct進行.CurrentValue;
- this.st大音符花火[i].ct進行.Tick();
- if (this.st大音符花火[i].ct進行.IsEnded)
- {
- this.st大音符花火[i].ct進行.Stop();
- this.st大音符花火[i].b使用中 = false;
- }
- /*
- Matrix mat = Matrix.Identity;
-
- mat *= Matrix.Translation(this.st大音符花火[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st大音符花火[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
- */
- float fX = this.st大音符花火[i].fX - ( 192 / 2 );
- float fY = this.st大音符花火[i].fY - ( 192 / 2 );
-
- //if(CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ] != null && this.st大音符花火[ i ].nColor == 0 )
- //{
- // if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
- // {
- // //this.tx大音符花火[ 0 ].t3D描画(CDTXMania.app.Device, mat, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ));
- // //this.tx大音符花火[ 0 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
- // CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
- // }
- //}
- ////if(CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ] != null && this.st大音符花火[ i ].nColor == 1 )
- //{
- // if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
- // {
- // //this.tx大音符花火[ 1 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, );
- // //CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
- // }
- //}
- }
-
- }
-
- for (int i = 0; i < 256; i++)
- {
- if (this.st紙吹雪[i].b使用中)
- {
- this.st紙吹雪[i].n前回のValue = this.st紙吹雪[i].ct進行.CurrentValue;
- this.st紙吹雪[i].ct進行.Tick();
- if (this.st紙吹雪[i].ct進行.IsEnded)
- {
- this.st紙吹雪[i].ct進行.Stop();
- this.st紙吹雪[i].b使用中 = false;
- }
- else if( this.st紙吹雪[ i ].fX > 1300 || this.st紙吹雪[ i ].fX < -20 )
- {
- this.st紙吹雪[i].ct進行.Stop();
- this.st紙吹雪[i].b使用中 = false;
- }
- for (int n = this.st紙吹雪[i].n前回のValue; n < this.st紙吹雪[i].ct進行.CurrentValue; n++)
- {
- this.st紙吹雪[i].fX -= this.st紙吹雪[i].f加速度X;
- this.st紙吹雪[i].fY -= this.st紙吹雪[i].f加速度Y;
- this.st紙吹雪[i].f加速度X *= this.st紙吹雪[i].f加速度の加速度X;
- this.st紙吹雪[i].f加速度Y *= this.st紙吹雪[i].f加速度の加速度Y;
- this.st紙吹雪[i].f加速度Y -= this.st紙吹雪[i].f重力加速度;
- }
- /*
- Matrix mat = Matrix.Identity;
-
- float x = (float)(this.st紙吹雪[i].f半径 * Math.Cos((Math.PI / 2 * this.st紙吹雪[i].ct進行.n現在の値) / 100.0)) * 2.3f;
- mat *= Matrix.Scaling(x, x, 1f);
- mat *= Matrix.Translation(this.st紙吹雪[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st紙吹雪[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
- */
-
- /*if (this.tx紙吹雪 != null)
- {
- this.tx紙吹雪.t3D描画(CDTXMania.app.Device, mat, new Rectangle( 32 * this.st紙吹雪[ i ].nGraphic, 32 * this.st紙吹雪[ i ].nColor, 32, 32 ));
-
- } */
- }
-
- }
- }
- return 0;
- }
-
-
- // その他
-
- #region [ private ]
- //-----------------
- //private CTextureAf txアタックエフェクトUpper;
- //private CTexture txアタックエフェクトUpper_big;
- //private CTextureAf[] tx大音符花火 = new CTextureAf[2];
- //private CTexture tx紙吹雪;
-
- protected STSTATUS[] st状態 = new STSTATUS[ 3 * 4 ];
- protected STSTATUS_B[] st状態_大 = new STSTATUS_B[ 3 * 4 ];
- private ST大音符花火[] st大音符花火 = new ST大音符花火[45];
-
- protected int[] nX座標 = new int[] { 450, 521, 596, 686, 778, 863, 970, 1070, 1150 };
- protected int[] nY座標 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
- protected int[] nY座標P2 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
-
- [StructLayout(LayoutKind.Sequential)]
- protected struct STSTATUS
- {
- public bool b使用中;
- public CCounter ct進行;
- public ENoteJudge judge;
- public int nIsBig;
- public int n透明度;
- public int nPlayer;
- }
- [StructLayout(LayoutKind.Sequential)]
- protected struct STSTATUS_B
- {
- public CCounter ct進行;
- public ENoteJudge judge;
- public int nIsBig;
- public int n透明度;
- public int nPlayer;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- private struct ST大音符花火
- {
- public int nColor;
- public bool b使用中;
- public CCounter ct進行;
- public int n前回のValue;
- public float fX;
- public float fY;
- public int n開始フレーム;
- public int n終了フレーム;
- }
-
- private ST紙吹雪[] st紙吹雪 = new ST紙吹雪[ 256 ];
- [StructLayout( LayoutKind.Sequential )]
- private struct ST紙吹雪
- {
- public int nGraphic;
- public int nColor;
- public bool b使用中;
- public CCounter ct進行;
- public int n前回のValue;
- public float fX;
- public float fY;
- public float f加速度X;
- public float f加速度Y;
- public float f加速度の加速度X;
- public float f加速度の加速度Y;
- public float f重力加速度;
- public float f半径;
- public float f角度;
- }
- //-----------------
- #endregion
- }
-}
-
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using FDK;
+
+using Rectangle = System.Drawing.Rectangle;
+using Point = System.Drawing.Point;
+using Color = System.Drawing.Color;
+
+namespace TJAPlayer3
+{
+ internal class CActImplFireworks : CActivity
+ {
+ // コンストラクタ
+
+ public CActImplFireworks()
+ {
+ base.IsDeActivated = true;
+ }
+
+
+ // メソッド
+
+ ///
+ /// 大音符の花火エフェクト
+ ///
+ ///
+ public virtual void Start( int nLane, int nPlayer )
+ {
+ nY座標P2 = new int[] { 548, 612, 670, 712, 730, 780, 725, 690, 640 };
+ if( TJAPlayer3.Tx.Effects_Hit_FireWorks != null && TJAPlayer3.Tx.Effects_Hit_FireWorks != null )
+ {
+ for (int i = 0; i < 9; i++)
+ {
+ for (int j = 0; j < 45; j++)
+ {
+ if (!this.st大音符花火[j].b使用中)
+ {
+ this.st大音符花火[j].b使用中 = true;
+ this.st大音符花火[j].ct進行 = new CCounter(0, 40, 18, TJAPlayer3.Timer); // カウンタ
+ this.st大音符花火[j].fX = this.nX座標[ i ]; //X座標
+ this.st大音符花火[j].fY = nPlayer == 0 ? this.nY座標[ i ] : this.nY座標P2[ i ];
+
+ switch(nLane)
+ {
+ case 0:
+ this.st大音符花火[j].nColor = 0;
+ break;
+ case 1:
+ this.st大音符花火[j].nColor = 1;
+ break;
+ }
+
+ switch( i )
+ {
+ case 0:
+ this.st大音符花火[ j ].n開始フレーム = 0;
+ this.st大音符花火[ j ].n終了フレーム = 16;
+ break;
+ case 1:
+ this.st大音符花火[ j ].n開始フレーム = 3;
+ this.st大音符花火[ j ].n終了フレーム = 19;
+ break;
+ case 2:
+ this.st大音符花火[ j ].n開始フレーム = 6;
+ this.st大音符花火[ j ].n終了フレーム = 22;
+ break;
+ case 3:
+ this.st大音符花火[ j ].n開始フレーム = 9;
+ this.st大音符花火[ j ].n終了フレーム = 25;
+ break;
+ case 4:
+ this.st大音符花火[ j ].n開始フレーム = 12;
+ this.st大音符花火[ j ].n終了フレーム = 28;
+ break;
+ case 5:
+ this.st大音符花火[ j ].n開始フレーム = 15;
+ this.st大音符花火[ j ].n終了フレーム = 31;
+ break;
+ case 6:
+ this.st大音符花火[ j ].n開始フレーム = 18;
+ this.st大音符花火[ j ].n終了フレーム = 34;
+ break;
+ case 7:
+ this.st大音符花火[ j ].n開始フレーム = 21;
+ this.st大音符花火[ j ].n終了フレーム = 37;
+ break;
+ case 8:
+ this.st大音符花火[ j ].n開始フレーム = 24;
+ this.st大音符花火[ j ].n終了フレーム = 40;
+ break;
+ }
+
+
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ public virtual void Start( int nLane, ENoteJudge judge, int player )
+ {
+ for (int j = 0; j < 3 * 4; j++)
+ {
+ if( !this.st状態[ j ].b使用中 )
+ //for( int n = 0; n < 1; n++ )
+ {
+ this.st状態[ j ].b使用中 = true;
+ //this.st状態[ n ].ct進行 = new CCounter( 0, 9, 20, CDTXMania.Timer );
+ this.st状態[ j ].ct進行 = new CCounter( 0, 6, 25, TJAPlayer3.Timer );
+ this.st状態[ j ].judge = judge;
+ this.st状態[ j ].nPlayer = player;
+ this.st状態_大[ j ].nPlayer = player;
+
+ switch( nLane )
+ {
+ case 0x11:
+ case 0x12:
+ this.st状態[ j ].nIsBig = 0;
+ break;
+ case 0x13:
+ case 0x14:
+ case 0x1A:
+ case 0x1B:
+ this.st状態_大[ j ].ct進行 = new CCounter( 0, 9, 20, TJAPlayer3.Timer );
+ this.st状態_大[ j ].judge = judge;
+ this.st状態_大[ j ].nIsBig = 1;
+ break;
+ }
+ break;
+ }
+ }
+ }
+
+ // CActivity 実装
+
+ public override void Activate()
+ {
+ for( int i = 0; i < 3 * 4; i++ )
+ {
+ this.st状態[ i ].ct進行 = new CCounter();
+ this.st状態[ i ].b使用中 = false;
+ this.st状態_大[ i ].ct進行 = new CCounter();
+ }
+ for( int i = 0; i < 256; i++ )
+ {
+ this.st紙吹雪[ i ] = new ST紙吹雪();
+ this.st紙吹雪[ i ].b使用中 = false;
+ this.st紙吹雪[ i ].ct進行 = new CCounter();
+ }
+ base.Activate();
+ }
+ public override void DeActivate()
+ {
+ for( int i = 0; i < 3 * 4; i++ )
+ {
+ this.st状態[ i ].ct進行 = null;
+ this.st状態_大[ i ].ct進行 = null;
+ }
+ for( int i = 0; i < 256; i++ )
+ {
+ this.st紙吹雪[ i ].ct進行 = null;
+ }
+ base.DeActivate();
+ }
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+ public override int Draw()
+ {
+ if( !base.IsDeActivated )
+ {
+ int nWidth = (TJAPlayer3.Tx.Effects_Hit_Explosion.szTextureSize.Width / 7);
+ int nHeight = (TJAPlayer3.Tx.Effects_Hit_Explosion.szTextureSize.Height / 4);
+ int nBombWidth = (TJAPlayer3.Tx.Effects_Hit_Bomb.szTextureSize.Width / 7);
+ int nBombHeight = (TJAPlayer3.Tx.Effects_Hit_Bomb.szTextureSize.Height / 4);
+ for ( int i = 0; i < 3 * 4; i++ )
+ {
+ if( this.st状態[ i ].b使用中 )
+ {
+ if( !this.st状態[ i ].ct進行.IsStoped )
+ {
+ this.st状態[ i ].ct進行.Tick();
+ if( this.st状態[ i ].ct進行.IsEnded )
+ {
+ this.st状態[ i ].ct進行.Stop();
+ this.st状態[ i ].b使用中 = false;
+ }
+
+ // (When performing calibration, reduce visual distraction
+ // and current judgment feedback near the judgment position.)
+ if( TJAPlayer3.Tx.Effects_Hit_Explosion != null && !TJAPlayer3.IsPerformingCalibration )
+ {
+ int n = this.st状態[ i ].nIsBig == 1 ? (nHeight * 2) : 0;
+
+ int nX = 0;
+ int nY = 0;
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
+ nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
+ nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
+ }
+ else
+ {
+ nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
+ nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
+ }
+ nX += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
+ nY += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
+
+ switch ( st状態[ i ].judge )
+ {
+ case ENoteJudge.Perfect:
+ case ENoteJudge.Great:
+ case ENoteJudge.Auto:
+ if (!TJAPlayer3.ConfigIni.SimpleMode) TJAPlayer3.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n, nWidth, nHeight));
+ break;
+ case ENoteJudge.Good:
+ TJAPlayer3.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n + nHeight, nWidth, nHeight));
+ break;
+ case ENoteJudge.Mine:
+ TJAPlayer3.Tx.Effects_Hit_Bomb?.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nBombWidth, 0, nBombWidth, nBombHeight));
+ break;
+ case ENoteJudge.Miss:
+ case ENoteJudge.Bad:
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ for( int i = 0; i < 3 * 4; i++ )
+ {
+ if( !this.st状態_大[ i ].ct進行.IsStoped )
+ {
+ this.st状態_大[ i ].ct進行.Tick();
+ if( this.st状態_大[ i ].ct進行.IsEnded )
+ {
+ this.st状態_大[ i ].ct進行.Stop();
+ }
+ if(TJAPlayer3.Tx.Effects_Hit_Explosion_Big != null && this.st状態_大[ i ].nIsBig == 1 )
+ {
+
+ switch( st状態_大[ i ].judge )
+ {
+ case ENoteJudge.Perfect:
+ case ENoteJudge.Great:
+ case ENoteJudge.Auto:
+ if( this.st状態_大[ i ].nIsBig == 1 && !TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ //float fX = 415 - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Width * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.X ) / 2.0f);
+ //float fY = TJAPlayer3.Skin.nJudgePointY[ this.st状態_大[ i ].nPlayer ] - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Height * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.Y ) / 2.0f);
+ //float fY = 257 - ((this.txアタックエフェクトUpper_big.sz画像サイズ.Height * this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y ) / 2.0f);
+
+ ////7
+ float f倍率 = 0.5f + ( (this.st状態_大[ i ].ct進行.CurrentValue * 0.5f) / 10.0f);
+ //this.txアタックエフェクトUpper_big.vc拡大縮小倍率.X = f倍率;
+ //this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y = f倍率;
+ //this.txアタックエフェクトUpper_big.n透明度 = (int)(255 * f倍率);
+ //this.txアタックエフェクトUpper_big.t2D描画( CDTXMania.app.Device, fX, fY );
+
+ /*
+ Matrix mat = Matrix.Identity;
+ mat *= Matrix.Scaling( f倍率, f倍率, f倍率 );
+ mat *= Matrix.Translation( TJAPlayer3.Skin.nScrollFieldX[0] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[ this.st状態[ i ].nPlayer ] - SampleFramework.GameWindowSize.Height / 2.0f), 0f );
+ //mat *= Matrix.Billboard( new Vector3( 15, 15, 15 ), new Vector3(0, 0, 0), new Vector3( 0, 0, 0 ), new Vector3( 0, 0, 0 ) );
+ //mat *= Matrix.Translation( 0f, 0f, 0f );
+
+
+ TJAPlayer3.Tx.Effects_Hit_Explosion_Big.Opacity = 255;
+ TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t3D描画( mat );
+ */
+
+ float x = 0;
+ float y = 0;
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
+ }
+ else
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
+ }
+ x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
+ y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
+
+ x -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szTextureSize.Width * (f倍率 - 1.0f) / 2.0f);
+ y -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szTextureSize.Height * (f倍率 - 1.0f) / 2.0f);
+
+ TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.X = f倍率;
+ TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.Y = f倍率;
+ TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t2D描画(x, y);
+ }
+ break;
+
+ case ENoteJudge.Good:
+ break;
+
+ case ENoteJudge.Miss:
+ case ENoteJudge.Bad:
+ break;
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < 45; i++)
+ {
+ if( TJAPlayer3.Skin.nScrollFieldX[0] != 414 )
+ break;
+
+ if (this.st大音符花火[i].b使用中)
+ {
+ this.st大音符花火[i].n前回のValue = this.st大音符花火[i].ct進行.CurrentValue;
+ this.st大音符花火[i].ct進行.Tick();
+ if (this.st大音符花火[i].ct進行.IsEnded)
+ {
+ this.st大音符花火[i].ct進行.Stop();
+ this.st大音符花火[i].b使用中 = false;
+ }
+ /*
+ Matrix mat = Matrix.Identity;
+
+ mat *= Matrix.Translation(this.st大音符花火[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st大音符花火[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
+ */
+ float fX = this.st大音符花火[i].fX - ( 192 / 2 );
+ float fY = this.st大音符花火[i].fY - ( 192 / 2 );
+
+ //if(CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ] != null && this.st大音符花火[ i ].nColor == 0 )
+ //{
+ // if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
+ // {
+ // //this.tx大音符花火[ 0 ].t3D描画(CDTXMania.app.Device, mat, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ));
+ // //this.tx大音符花火[ 0 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
+ // CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
+ // }
+ //}
+ ////if(CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ] != null && this.st大音符花火[ i ].nColor == 1 )
+ //{
+ // if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
+ // {
+ // //this.tx大音符花火[ 1 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, );
+ // //CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
+ // }
+ //}
+ }
+
+ }
+
+ for (int i = 0; i < 256; i++)
+ {
+ if (this.st紙吹雪[i].b使用中)
+ {
+ this.st紙吹雪[i].n前回のValue = this.st紙吹雪[i].ct進行.CurrentValue;
+ this.st紙吹雪[i].ct進行.Tick();
+ if (this.st紙吹雪[i].ct進行.IsEnded)
+ {
+ this.st紙吹雪[i].ct進行.Stop();
+ this.st紙吹雪[i].b使用中 = false;
+ }
+ else if( this.st紙吹雪[ i ].fX > 1300 || this.st紙吹雪[ i ].fX < -20 )
+ {
+ this.st紙吹雪[i].ct進行.Stop();
+ this.st紙吹雪[i].b使用中 = false;
+ }
+ for (int n = this.st紙吹雪[i].n前回のValue; n < this.st紙吹雪[i].ct進行.CurrentValue; n++)
+ {
+ this.st紙吹雪[i].fX -= this.st紙吹雪[i].f加速度X;
+ this.st紙吹雪[i].fY -= this.st紙吹雪[i].f加速度Y;
+ this.st紙吹雪[i].f加速度X *= this.st紙吹雪[i].f加速度の加速度X;
+ this.st紙吹雪[i].f加速度Y *= this.st紙吹雪[i].f加速度の加速度Y;
+ this.st紙吹雪[i].f加速度Y -= this.st紙吹雪[i].f重力加速度;
+ }
+ /*
+ Matrix mat = Matrix.Identity;
+
+ float x = (float)(this.st紙吹雪[i].f半径 * Math.Cos((Math.PI / 2 * this.st紙吹雪[i].ct進行.n現在の値) / 100.0)) * 2.3f;
+ mat *= Matrix.Scaling(x, x, 1f);
+ mat *= Matrix.Translation(this.st紙吹雪[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st紙吹雪[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
+ */
+
+ /*if (this.tx紙吹雪 != null)
+ {
+ this.tx紙吹雪.t3D描画(CDTXMania.app.Device, mat, new Rectangle( 32 * this.st紙吹雪[ i ].nGraphic, 32 * this.st紙吹雪[ i ].nColor, 32, 32 ));
+
+ } */
+ }
+
+ }
+ }
+ return 0;
+ }
+
+
+ // その他
+
+ #region [ private ]
+ //-----------------
+ //private CTextureAf txアタックエフェクトUpper;
+ //private CTexture txアタックエフェクトUpper_big;
+ //private CTextureAf[] tx大音符花火 = new CTextureAf[2];
+ //private CTexture tx紙吹雪;
+
+ protected STSTATUS[] st状態 = new STSTATUS[ 3 * 4 ];
+ protected STSTATUS_B[] st状態_大 = new STSTATUS_B[ 3 * 4 ];
+ private ST大音符花火[] st大音符花火 = new ST大音符花火[45];
+
+ protected int[] nX座標 = new int[] { 450, 521, 596, 686, 778, 863, 970, 1070, 1150 };
+ protected int[] nY座標 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
+ protected int[] nY座標P2 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
+
+ [StructLayout(LayoutKind.Sequential)]
+ protected struct STSTATUS
+ {
+ public bool b使用中;
+ public CCounter ct進行;
+ public ENoteJudge judge;
+ public int nIsBig;
+ public int n透明度;
+ public int nPlayer;
+ }
+ [StructLayout(LayoutKind.Sequential)]
+ protected struct STSTATUS_B
+ {
+ public CCounter ct進行;
+ public ENoteJudge judge;
+ public int nIsBig;
+ public int n透明度;
+ public int nPlayer;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct ST大音符花火
+ {
+ public int nColor;
+ public bool b使用中;
+ public CCounter ct進行;
+ public int n前回のValue;
+ public float fX;
+ public float fY;
+ public int n開始フレーム;
+ public int n終了フレーム;
+ }
+
+ private ST紙吹雪[] st紙吹雪 = new ST紙吹雪[ 256 ];
+ [StructLayout( LayoutKind.Sequential )]
+ private struct ST紙吹雪
+ {
+ public int nGraphic;
+ public int nColor;
+ public bool b使用中;
+ public CCounter ct進行;
+ public int n前回のValue;
+ public float fX;
+ public float fY;
+ public float f加速度X;
+ public float f加速度Y;
+ public float f加速度の加速度X;
+ public float f加速度の加速度Y;
+ public float f重力加速度;
+ public float f半径;
+ public float f角度;
+ }
+ //-----------------
+ #endregion
+ }
+}
+
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsFooter.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplFooter.cs
similarity index 92%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsFooter.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplFooter.cs
index 39cb2798..4f8b4c76 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsFooter.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplFooter.cs
@@ -1,76 +1,76 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsFooter : CActivity
- {
- ///
- /// フッター
- ///
- public CAct演奏DrumsFooter()
- {
- base.IsDeActivated = true;
- }
-
- public override void Activate()
- {
- var footerDir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.FOOTER}");
- var preset = HScenePreset.GetBGPreset();
-
- if (System.IO.Directory.Exists(footerDir))
- {
- Random random = new Random();
-
- var upDirs = System.IO.Directory.GetFiles(footerDir);
- if (upDirs.Length > 0)
- {
- var _presetPath = (preset != null && preset.FooterSet != null) ? $@"{footerDir}" + preset.FooterSet[random.Next(0, preset.FooterSet.Length)] + ".png" : "";
- var path = (preset != null && System.IO.File.Exists(_presetPath))
- ? _presetPath
- : upDirs[random.Next(0, upDirs.Length)];
-
- Mob_Footer = TJAPlayer3.tテクスチャの生成(path);
- }
- }
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- TJAPlayer3.tDisposeSafely(ref Mob_Footer);
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- if (this.Mob_Footer != null)
- {
- this.Mob_Footer.t2D描画(0, TJAPlayer3.Skin.Resolution[1] - this.Mob_Footer.szTextureSize.Height);
- }
- return base.Draw();
- }
-
- #region[ private ]
- //-----------------
- public CTexture Mob_Footer;
- //-----------------
- #endregion
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using FDK;
+
+namespace TJAPlayer3
+{
+ internal class CActImplFooter : CActivity
+ {
+ ///
+ /// フッター
+ ///
+ public CActImplFooter()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public override void Activate()
+ {
+ var footerDir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.FOOTER}");
+ var preset = HScenePreset.GetBGPreset();
+
+ if (System.IO.Directory.Exists(footerDir))
+ {
+ Random random = new Random();
+
+ var upDirs = System.IO.Directory.GetFiles(footerDir);
+ if (upDirs.Length > 0)
+ {
+ var _presetPath = (preset != null && preset.FooterSet != null) ? $@"{footerDir}" + preset.FooterSet[random.Next(0, preset.FooterSet.Length)] + ".png" : "";
+ var path = (preset != null && System.IO.File.Exists(_presetPath))
+ ? _presetPath
+ : upDirs[random.Next(0, upDirs.Length)];
+
+ Mob_Footer = TJAPlayer3.tテクスチャの生成(path);
+ }
+ }
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ TJAPlayer3.tDisposeSafely(ref Mob_Footer);
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ if (this.Mob_Footer != null)
+ {
+ this.Mob_Footer.t2D描画(0, TJAPlayer3.Skin.Resolution[1] - this.Mob_Footer.szTextureSize.Height);
+ }
+ return base.Draw();
+ }
+
+ #region[ private ]
+ //-----------------
+ public CTexture Mob_Footer;
+ //-----------------
+ #endregion
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲージ.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs
similarity index 99%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲージ.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs
index 949fe3eb..3963420f 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsゲージ.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplGauge.cs
@@ -8,7 +8,7 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsゲージ : CAct演奏ゲージ共通
+ internal class CActImplGauge : CAct演奏ゲージ共通
{
// プロパティ
@@ -38,7 +38,7 @@ namespace TJAPlayer3
/// _Danger時にゲージの色が変わる演出の実装。
/// _Danger、MAX時のアニメーション実装。
///
- public CAct演奏Drumsゲージ()
+ public CActImplGauge()
{
base.IsDeActivated = true;
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums判定文字列.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplJudgeText.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums判定文字列.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplJudgeText.cs
index fdd83bd4..a7b3558e 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums判定文字列.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplJudgeText.cs
@@ -8,11 +8,11 @@ using System.Drawing;
namespace TJAPlayer3
{
- internal class CAct演奏Drums判定文字列 : CActivity
+ internal class CActImplJudgeText : CActivity
{
// コンストラクタ
- public CAct演奏Drums判定文字列()
+ public CActImplJudgeText()
{
base.IsDeActivated = true;
}
@@ -102,13 +102,13 @@ namespace TJAPlayer3
if (JudgesDict.ContainsKey(judge))
{
njudge = JudgesDict[judge];
- }
-
- if (njudge == 0 && TJAPlayer3.ConfigIni.SimpleMode)
- {
- return;
- }
-
+ }
+
+ if (njudge == 0 && TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ return;
+ }
+
int height = TJAPlayer3.Tx.Judge.szTextureSize.Height / 5;
judgeAnime.rc = new Rectangle(0, (int)njudge * height, TJAPlayer3.Tx.Judge.szTextureSize.Width, height);
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs
similarity index 99%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs
index 887311fd..5433d2a0 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLane.cs
@@ -6,9 +6,9 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsレーン : CActivity
+ internal class CActImplLane : CActivity
{
- public CAct演奏Drumsレーン()
+ public CActImplLane()
{
base.IsDeActivated = true;
}
@@ -103,13 +103,13 @@ namespace TJAPlayer3
_laneNull = true;
break;
}
- }
-
+ }
+
#endregion
-
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- TJAPlayer3.Tx.Lane_Base[(int)nAfter[i]].t2D描画(x[i], y[i]);
+
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ TJAPlayer3.Tx.Lane_Base[(int)nAfter[i]].t2D描画(x[i], y[i]);
}
else if( this.ct分岐アニメ進行[ i ].IsTicked && !_laneNull)
{
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン太鼓.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs
similarity index 98%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン太鼓.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs
index e6aa3409..d570fc96 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsレーン太鼓.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplLaneTaiko.cs
@@ -1,1068 +1,1068 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using System.Diagnostics;
-using FDK;
-
-using Rectangle = System.Drawing.Rectangle;
-using Point = System.Drawing.Point;
-using Color = System.Drawing.Color;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drumsレーン太鼓 : CActivity
- {
- ///
- /// レーンを描画するクラス。
- ///
- ///
- ///
- public CAct演奏Drumsレーン太鼓()
- {
- base.IsDeActivated = true;
- }
-
- public override void Activate()
- {
- for (int i = 0; i < 5; i++)
- {
- this.st状態[i].ct進行 = new CCounter();
- this.stBranch[i].ct分岐アニメ進行 = new CCounter();
- this.stBranch[i].nフラッシュ制御タイマ = -1;
- this.stBranch[i].nBranchレイヤー透明度 = 0;
- this.stBranch[i].nBranch文字透明度 = 0;
- this.stBranch[i].nY座標 = 0;
-
- this.n総移動時間[i] = -1;
- }
- this.ctゴーゴー = new CCounter();
-
-
- this.ctゴーゴー炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer);
- base.Activate();
- }
-
- public override void DeActivate()
- {
- for (int i = 0; i < 5; i++)
- {
- this.st状態[i].ct進行 = null;
- this.stBranch[i].ct分岐アニメ進行 = null;
- }
- this.ctゴーゴー = null;
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- if (base.IsFirstDraw)
- {
- for (int i = 0; i < 5; i++)
- this.stBranch[i].nフラッシュ制御タイマ = (long)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
- base.IsFirstDraw = false;
- }
-
- //それぞれが独立したレイヤーでないといけないのでforループはパーツごとに分離すること。
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2 && !TJAPlayer3.ConfigIni.bAIBattleMode) TJAPlayer3.stage演奏ドラム画面.actMtaiko.DrawBackSymbol();
-
- #region[ レーン本体 ]
-
-
- int[] x = new int[5];
- int[] y = new int[5];
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- x[i] = TJAPlayer3.Skin.Game_Lane_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- y[i] = TJAPlayer3.Skin.Game_Lane_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- x[i] = TJAPlayer3.Skin.Game_Lane_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- y[i] = TJAPlayer3.Skin.Game_Lane_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
- }
- else
- {
- x[i] = TJAPlayer3.Skin.Game_Lane_X[i];
- y[i] = TJAPlayer3.Skin.Game_Lane_Y[i];
- }
- }
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode && TJAPlayer3.Tx.Lane_Background_AI != null)
- TJAPlayer3.Tx.Lane_Background_AI?.t2D描画(x[i], y[i]);
- else
- TJAPlayer3.Tx.Lane_Background_Main?.t2D描画(x[i], y[i]);
- }
-
- #endregion
-
- if (TJAPlayer3.ConfigIni.nPlayerCount > 2 && !TJAPlayer3.ConfigIni.bAIBattleMode) TJAPlayer3.stage演奏ドラム画面.actMtaiko.DrawBackSymbol();
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- #region[ 分岐アニメ制御タイマー ]
- long num = FDK.SoundManager.PlayTimer.NowTime;
- if (num < this.stBranch[i].nフラッシュ制御タイマ)
- {
- this.stBranch[i].nフラッシュ制御タイマ = num;
- }
- while ((num - this.stBranch[i].nフラッシュ制御タイマ) >= 30)
- {
- if (this.stBranch[i].nBranchレイヤー透明度 <= 255)
- {
- this.stBranch[i].nBranchレイヤー透明度 += 10;
- }
-
- if (this.stBranch[i].nBranch文字透明度 >= 0)
- {
- this.stBranch[i].nBranch文字透明度 -= 10;
- }
-
- if (this.stBranch[i].nY座標 != 0 && this.stBranch[i].nY座標 <= 20)
- {
- this.stBranch[i].nY座標++;
- }
-
- this.stBranch[i].nフラッシュ制御タイマ += 8;
- }
-
- if (!this.stBranch[i].ct分岐アニメ進行.IsStoped)
- {
- this.stBranch[i].ct分岐アニメ進行.Tick();
- if (this.stBranch[i].ct分岐アニメ進行.IsEnded)
- {
- this.stBranch[i].ct分岐アニメ進行.Stop();
- }
- }
- #endregion
- }
- #region[ 分岐レイヤー ]
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bUseBranch[i] == true)
- {
- #region[ 動いていない ]
- switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
- {
- case CDTX.ECourse.eNormal:
- if (TJAPlayer3.Tx.Lane_Base[0] != null)
- {
- TJAPlayer3.Tx.Lane_Base[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
- }
- break;
- case CDTX.ECourse.eExpert:
- if (TJAPlayer3.Tx.Lane_Base[1] != null)
- {
- TJAPlayer3.Tx.Lane_Base[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
- }
- break;
- case CDTX.ECourse.eMaster:
- if (TJAPlayer3.Tx.Lane_Base[2] != null)
- {
- TJAPlayer3.Tx.Lane_Base[2].Opacity = 255;
- TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
- }
- break;
- }
- #endregion
-
- if (TJAPlayer3.ConfigIni.nBranchAnime == 1)
- {
- #region[ AC7~14風の背後レイヤー ]
- if (this.stBranch[i].ct分岐アニメ進行.IsTicked)
- {
- int n透明度 = ((100 - this.stBranch[i].ct分岐アニメ進行.CurrentValue) * 0xff) / 100;
-
- if (this.stBranch[i].ct分岐アニメ進行.IsEnded)
- {
- n透明度 = 255;
- this.stBranch[i].ct分岐アニメ進行.Stop();
- }
-
- #region[ 普通譜面_レベルアップ ]
- //普通→玄人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
- {
- if (TJAPlayer3.Tx.Lane_Base[0] != null && TJAPlayer3.Tx.Lane_Base[1] != null)
- {
- TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
- }
- }
- //普通→達人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 100)
- {
- n透明度 = ((100 - this.stBranch[i].ct分岐アニメ進行.CurrentValue) * 0xff) / 100;
- }
- if (TJAPlayer3.Tx.Lane_Base[0] != null && TJAPlayer3.Tx.Lane_Base[2] != null)
- {
- TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- }
- #endregion
- #region[ 玄人譜面_レベルアップ ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- if (TJAPlayer3.Tx.Lane_Base[1] != null && TJAPlayer3.Tx.Lane_Base[2] != null)
- {
- TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- }
- #endregion
- #region[ 玄人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- if (TJAPlayer3.Tx.Lane_Base[1] != null && TJAPlayer3.Tx.Lane_Base[0] != null)
- {
- TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- }
- #endregion
- #region[ 達人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- if (TJAPlayer3.Tx.Lane_Base[2] != null && TJAPlayer3.Tx.Lane_Base[0] != null)
- {
- TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Base[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- }
- #endregion
- }
- #endregion
- }
- else if (TJAPlayer3.ConfigIni.nBranchAnime == 0)
- {
- TJAPlayer3.stage演奏ドラム画面.actLane.Draw();
- }
- }
- }
- #endregion
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- #region[ ゴーゴータイムレーン背景レイヤー ]
- if (TJAPlayer3.Tx.Lane_Background_GoGo != null && TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i])
- {
- if (!this.ctゴーゴー.IsStoped)
- {
- this.ctゴーゴー.Tick();
- }
-
- if (this.ctゴーゴー.CurrentValue <= 4)
- {
- TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.2f;
- TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 54);
- }
- else if (this.ctゴーゴー.CurrentValue <= 5)
- {
- TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.4f;
- TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 40);
- }
- else if (this.ctゴーゴー.CurrentValue <= 6)
- {
- TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.6f;
- TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 26);
- }
- else if (this.ctゴーゴー.CurrentValue <= 8)
- {
- TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.8f;
- TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 13);
- }
- else if (this.ctゴーゴー.CurrentValue >= 9)
- {
- TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 1.0f;
- TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i]);
- }
- }
- #endregion
- }
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bUseBranch[i] == true)
- {
- #region NullCheck
-
- bool _laneNull = false;
-
- for (int j = 0; j < TJAPlayer3.Tx.Lane_Text.Length; j++)
- {
- if (TJAPlayer3.Tx.Lane_Text[j] == null)
- {
- _laneNull = true;
- break;
- }
- }
-
- #endregion
-
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
- {
- case CDTX.ECourse.eNormal:
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eExpert:
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eMaster:
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
- break;
- }
- }
- else if (TJAPlayer3.ConfigIni.nBranchAnime == 0 && !_laneNull)
- {
- if (!this.stBranch[i].ct分岐アニメ進行.IsTicked)
- {
- switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
- {
- case CDTX.ECourse.eNormal:
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eExpert:
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eMaster:
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
- break;
- }
- }
- if (this.stBranch[i].ct分岐アニメ進行.IsTicked)
- {
- #region[ 普通譜面_レベルアップ ]
- //普通→玄人
- if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
-
- TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
- //CDTXMania.Tx.Lane_Text[1].n透明度 = this.ct分岐アニメ進行.n現在の値 > 100 ? 255 : ( ( ( this.ct分岐アニメ進行.n現在の値 * 0xff ) / 60 ) );
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] + this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 30) + this.stBranch[i].nY);
- }
- else
- {
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- }
-
- }
-
- //普通→達人
- if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 12) + this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
- }
- //if( this.stBranch[ i ].ct分岐アニメ進行.n現在の値 >= 5 && this.stBranch[ i ].ct分岐アニメ進行.n現在の値 < 60 )
- //{
- // this.stBranch[ i ].nY = this.stBranch[ i ].ct分岐アニメ進行.n現在の値 / 2;
- // this.tx普通譜面[ 1 ].t2D描画(CDTXMania.app.Device, 333, CDTXMania.Skin.nScrollFieldY[ i ] + this.stBranch[ i ].nY);
- // this.tx普通譜面[ 1 ].n透明度 = this.stBranch[ i ].ct分岐アニメ進行.n現在の値 > 100 ? 0 : ( 255 - ( ( this.stBranch[ i ].ct分岐アニメ進行.n現在の値 * 0xff) / 100));
- // this.tx玄人譜面[ 1 ].t2D描画(CDTXMania.app.Device, 333, ( CDTXMania.Skin.nScrollFieldY[ i ] - 10 ) + this.stBranch[ i ].nY);
- //}
- else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 60 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 150)
- {
- this.stBranch[i].nY = 21;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- }
- else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 150 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 210)
- {
- this.stBranch[i].nY = ((this.stBranch[i].ct分岐アニメ進行.CurrentValue - 150) / 2);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
- }
- else
- {
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
- }
- }
- #endregion
- #region[ 玄人譜面_レベルアップ ]
- //玄人→達人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
-
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
- }
- else
- {
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
- }
- }
- #endregion
- #region[ 玄人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
-
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
- }
- else
- {
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
- }
- }
- #endregion
- #region[ 達人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
-
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] - this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
- }
- else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 60 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 150)
- {
- this.stBranch[i].nY = 21;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- }
- else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 150 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 210)
- {
- this.stBranch[i].nY = ((this.stBranch[i].ct分岐アニメ進行.CurrentValue - 150) / 2);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
- }
- else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 210)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
- }
- }
- if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
- {
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
-
- TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
- if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
- {
- this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] - this.stBranch[i].nY);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
- }
- else
- {
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- }
-
- }
- #endregion
- }
- }
- else if (!_laneNull)
- {
- if (this.stBranch[i].nY座標 == 21)
- {
- this.stBranch[i].nY座標 = 0;
- }
-
- if (this.stBranch[i].nY座標 == 0)
- {
- switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
- {
- case CDTX.ECourse.eNormal:
- TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eExpert:
- TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
- break;
- case CDTX.ECourse.eMaster:
- TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
- break;
- }
- }
-
- if (this.stBranch[i].nY座標 != 0)
- {
- #region[ 普通譜面_レベルアップ ]
- //普通→玄人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
- {
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- //普通→達人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- #endregion
- #region[ 玄人譜面_レベルアップ ]
- //玄人→達人
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
- {
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- #endregion
- #region[ 玄人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- #endregion
- #region[ 達人譜面_レベルダウン ]
- if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
- {
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
- {
- TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
- TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
- }
- #endregion
- }
- }
-
- }
- }
-
-
- if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
- {
- if (TJAPlayer3.Tx.Lane_Background_Sub != null)
- {
- TJAPlayer3.Tx.Lane_Background_Sub.t2D描画(TJAPlayer3.Skin.Game_Lane_Sub_X[0], TJAPlayer3.Skin.Game_Lane_Sub_Y[0]);
- if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay)
- {
- TJAPlayer3.Tx.Lane_Background_Sub.t2D描画(TJAPlayer3.Skin.Game_Lane_Sub_X[1], TJAPlayer3.Skin.Game_Lane_Sub_Y[1]);
- }
- }
- }
-
-
- TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.Draw();
-
-
-
- if (TJAPlayer3.Tx.Taiko_Frame[0] != null)
- {
- // Tower frame (without tamashii jauge) if playing a tower chart
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- int frame_x;
- int frame_y;
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
- }
- else
- {
- frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_X[i];
- frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_Y[i];
- }
-
- CTexture tex = null;
-
- switch (i)
- {
- case 0:
- {
- if (TJAPlayer3.ConfigIni.bTokkunMode)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[3];
- }
- else if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[5];
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[2];
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount > 2)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[6];
- }
- else
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[0];
- }
- }
- break;
- case 1:
- {
- if (TJAPlayer3.ConfigIni.bAIBattleMode)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[4];
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount > 2)
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[6];
- }
- else
- {
- tex = TJAPlayer3.Tx.Taiko_Frame[1];
- }
- }
- break;
- case 2:
- tex = TJAPlayer3.Tx.Taiko_Frame[6];
- break;
- case 3:
- tex = TJAPlayer3.Tx.Taiko_Frame[6];
- break;
- case 4:
- tex = TJAPlayer3.Tx.Taiko_Frame[6];
- break;
- }
-
- tex?.t2D描画(frame_x, frame_y);
- }
-
- /*
- if (TJAPlayer3.ConfigIni.bTokkunMode == true && TJAPlayer3.Tx.Taiko_Frame[3] != null)
- TJAPlayer3.Tx.Taiko_Frame[3]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
- else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower && TJAPlayer3.Tx.Taiko_Frame[2] != null)
- TJAPlayer3.Tx.Taiko_Frame[2]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
- else if (TJAPlayer3.ConfigIni.bAIBattleMode && TJAPlayer3.Tx.Taiko_Frame[5] != null)
- TJAPlayer3.Tx.Taiko_Frame[5]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
- else
- TJAPlayer3.Tx.Taiko_Frame[0]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
-
- if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay)
- {
- if (TJAPlayer3.ConfigIni.bAIBattleMode)
- TJAPlayer3.Tx.Taiko_Frame[4]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[1], TJAPlayer3.Skin.Game_Taiko_Frame_Y[1]);
- else
- TJAPlayer3.Tx.Taiko_Frame[1]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[1], TJAPlayer3.Skin.Game_Taiko_Frame_Y[1]);
- }
- */
- }
- var nTime = (long)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
-
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (this.n総移動時間[i] != -1)
- {
- if (n移動方向[i] == 1)
- {
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動開始Y[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.nVerticalJSPos[i]);
- //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
- }
- else
- {
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動開始Y[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.nVerticalJSPos[i]);
- //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
- }
-
- if (((int)nTime) > this.n移動開始時刻[i] + this.n総移動時間[i])
- {
- this.n総移動時間[i] = -1;
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動目的場所X[i];
- TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動目的場所Y[i];
- //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動目的場所X[i];
- }
- }
- }
-
-
-
-
- if (TJAPlayer3.ConfigIni.bEnableAVI && TJAPlayer3.DTX.listVD.Count > 0 && TJAPlayer3.stage演奏ドラム画面.ShowVideo)
- {
- if (TJAPlayer3.Tx.Lane_Background_Main != null) TJAPlayer3.Tx.Lane_Background_Main.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
- if (TJAPlayer3.Tx.Lane_Background_AI != null) TJAPlayer3.Tx.Lane_Background_AI.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
- if (TJAPlayer3.Tx.Lane_Background_Sub != null) TJAPlayer3.Tx.Lane_Background_Sub.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
- if (TJAPlayer3.Tx.Lane_Background_GoGo != null) TJAPlayer3.Tx.Lane_Background_GoGo.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
- }
- else
- {
- if (TJAPlayer3.Tx.Lane_Background_Main != null) TJAPlayer3.Tx.Lane_Background_Main.Opacity = 255;
- if (TJAPlayer3.Tx.Lane_Background_AI != null) TJAPlayer3.Tx.Lane_Background_AI.Opacity = 255;
- if (TJAPlayer3.Tx.Lane_Background_Sub != null) TJAPlayer3.Tx.Lane_Background_Sub.Opacity = 255;
- if (TJAPlayer3.Tx.Lane_Background_GoGo != null) TJAPlayer3.Tx.Lane_Background_GoGo.Opacity = 255;
- }
-
- return base.Draw();
- }
-
- public void ゴーゴー炎()
- {
- //判定枠
- if (TJAPlayer3.Tx.Judge_Frame != null)
- {
- TJAPlayer3.Tx.Judge_Frame.b加算合成 = TJAPlayer3.Skin.Game_JudgeFrame_AddBlend;
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- TJAPlayer3.Tx.Judge_Frame.t2D描画(
- TJAPlayer3.stage演奏ドラム画面.NoteOriginX[i],
- TJAPlayer3.stage演奏ドラム画面.NoteOriginY[i], new Rectangle(0, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
- }
- }
-
-
- #region[ ゴーゴー炎 ]
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i] && !TJAPlayer3.ConfigIni.SimpleMode)
- {
- this.ctゴーゴー炎.TickLoop();
-
- if (TJAPlayer3.Tx.Effects_Fire != null)
- {
- float f倍率 = 1.0f;
-
- float[] ar倍率 = new float[] { 0.8f, 1.2f, 1.7f, 2.5f, 2.3f, 2.2f, 2.0f, 1.8f, 1.7f, 1.6f, 1.6f, 1.5f, 1.5f, 1.4f, 1.3f, 1.2f, 1.1f, 1.0f };
-
- f倍率 = ar倍率[this.ctゴーゴー.CurrentValue];
-
- /*
- Matrix mat = Matrix.Identity;
- mat *= Matrix.Scaling(f倍率, f倍率, 1.0f);
- mat *= Matrix.Translation(TJAPlayer3.Skin.nScrollFieldX[i] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[i] - SampleFramework.GameWindowSize.Height / 2.0f), 0f);
- */
- //this.txゴーゴー炎.b加算合成 = true;
-
- //this.ctゴーゴー.n現在の値 = 6;
-
- int width = TJAPlayer3.Tx.Effects_Fire.szTextureSize.Width / 7;
- int height = TJAPlayer3.Tx.Effects_Fire.szTextureSize.Height;
-
- float x = -(width * (f倍率 - 1.0f) / 2.0f);
- float y = -(height * (f倍率 - 1.0f) / 2.0f);
-
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- x += TJAPlayer3.Skin.Game_Effect_Fire_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- y += TJAPlayer3.Skin.Game_Effect_Fire_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- x += TJAPlayer3.Skin.Game_Effect_Fire_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- y += TJAPlayer3.Skin.Game_Effect_Fire_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
- }
- else
- {
- x += TJAPlayer3.Skin.Game_Effect_Fire_X[i];
- y += TJAPlayer3.Skin.Game_Effect_Fire_Y[i];
- }
-
- TJAPlayer3.Tx.Effects_Fire.vcScaleRatio.X = f倍率;
- TJAPlayer3.Tx.Effects_Fire.vcScaleRatio.Y = f倍率;
-
- TJAPlayer3.Tx.Effects_Fire.t2D描画(x, y,
- new Rectangle(width * (this.ctゴーゴー炎.CurrentValue), 0, width, height));
- }
- }
- }
- #endregion
- for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
- {
- if (!this.st状態[i].ct進行.IsStoped)
- {
- this.st状態[i].ct進行.Tick();
- if (this.st状態[i].ct進行.IsEnded)
- {
- this.st状態[i].ct進行.Stop();
- }
- //if( this.txアタックエフェクトLower != null )
- {
- //this.txアタックエフェクトLower.b加算合成 = true;
- int n = this.st状態[i].nIsBig == 1 ? 520 : 0;
-
- float x = 0;
- float y = 0;
-
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
- }
- else
- {
- x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[i];
- y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[i];
- }
- x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i);
- y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i);
-
- switch (st状態[i].judge)
- {
- case ENoteJudge.Perfect:
- case ENoteJudge.Great:
- case ENoteJudge.Auto:
- if (!TJAPlayer3.ConfigIni.SimpleMode)
- {
- //this.txアタックエフェクトLower.t2D描画( CDTXMania.app.Device, 285, 127, new Rectangle( this.st状態[ i ].ct進行.n現在の値 * 260, n, 260, 260 ) );
- if (this.st状態[i].nIsBig == 1 && TJAPlayer3.Tx.Effects_Hit_Great_Big[this.st状態[i].ct進行.CurrentValue] != null)
- TJAPlayer3.Tx.Effects_Hit_Great_Big[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
- else if (TJAPlayer3.Tx.Effects_Hit_Great[this.st状態[i].ct進行.CurrentValue] != null)
- TJAPlayer3.Tx.Effects_Hit_Great[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
- }
- break;
-
- case ENoteJudge.Good:
- //this.txアタックエフェクトLower.t2D描画( CDTXMania.app.Device, 285, 127, new Rectangle( this.st状態[ i ].ct進行.n現在の値 * 260, n + 260, 260, 260 ) );
- if (this.st状態[i].nIsBig == 1 && TJAPlayer3.Tx.Effects_Hit_Good_Big[this.st状態[i].ct進行.CurrentValue] != null)
- TJAPlayer3.Tx.Effects_Hit_Good_Big[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
- else if (TJAPlayer3.Tx.Effects_Hit_Good[this.st状態[i].ct進行.CurrentValue] != null)
- TJAPlayer3.Tx.Effects_Hit_Good[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
- break;
-
- case ENoteJudge.Miss:
- case ENoteJudge.Bad:
- break;
- }
- }
- }
- }
-
-
- }
-
- public virtual void Start(int nLane, ENoteJudge judge, bool b両手入力, int nPlayer)
- {
- //2017.08.15 kairera0467 排他なので番地をそのまま各レーンの状態として扱う
-
- //for( int n = 0; n < 1; n++ )
- {
- this.st状態[nPlayer].ct進行 = new CCounter(0, 14, 20, TJAPlayer3.Timer);
- this.st状態[nPlayer].judge = judge;
- this.st状態[nPlayer].nPlayer = nPlayer;
-
- switch (nLane)
- {
- case 0x11:
- case 0x12:
- this.st状態[nPlayer].nIsBig = 0;
- break;
- case 0x13:
- case 0x14:
- case 0x1A:
- case 0x1B:
- {
- if (b両手入力)
- this.st状態[nPlayer].nIsBig = 1;
- else
- this.st状態[nPlayer].nIsBig = 0;
- }
- break;
- }
- }
- }
-
-
- public void GOGOSTART()
- {
- this.ctゴーゴー = new CCounter(0, 17, 18, TJAPlayer3.Timer);
- if(TJAPlayer3.ConfigIni.nPlayerCount == 1 && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) TJAPlayer3.stage演奏ドラム画面.GoGoSplash.StartSplash();
- }
-
-
- public void t分岐レイヤー_コース変化(CDTX.ECourse n現在, CDTX.ECourse n次回, int nPlayer)
- {
- if (n現在 == n次回)
- {
- return;
- }
- this.stBranch[nPlayer].ct分岐アニメ進行 = new CCounter(0, 300, 2, TJAPlayer3.Timer);
-
- this.stBranch[nPlayer].nBranchレイヤー透明度 = 6;
- this.stBranch[nPlayer].nY座標 = 1;
-
- this.stBranch[nPlayer].nBefore = n現在;
- this.stBranch[nPlayer].nAfter = n次回;
-
- TJAPlayer3.stage演奏ドラム画面.actLane.t分岐レイヤー_コース変化(n現在, n次回, nPlayer);
- }
-
- public void t判定枠移動(double db移動時間, int n移動px, int n移動方向, int nPlayer, int vJs)
- {
- this.n移動開始時刻[nPlayer] = (int)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
- this.n移動開始X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer];
- this.n移動開始Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer];
- this.n総移動時間[nPlayer] = (int)(db移動時間 * 1000);
- this.n移動方向[nPlayer] = n移動方向;
- this.n移動距離px[nPlayer] = n移動px;
- this.nVerticalJSPos[nPlayer] = vJs;
- if (n移動方向 == 0)
- {
- this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] - n移動px;
- this.n移動目的場所Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer] - vJs;
- }
- else
- {
- this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] + n移動px;
- this.n移動目的場所Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer] + vJs;
- }
- }
-
- #region[ private ]
- //-----------------
- //private CTexture txLane;
- //private CTexture txLaneB;
- //private CTexture tx枠線;
- //private CTexture tx判定枠;
- //private CTexture txゴーゴー;
- //private CTexture txゴーゴー炎;
- //private CTexture[] txArゴーゴー炎;
- //private CTexture[] txArアタックエフェクトLower_A;
- //private CTexture[] txArアタックエフェクトLower_B;
- //private CTexture[] txArアタックエフェクトLower_C;
- //private CTexture[] txArアタックエフェクトLower_D;
-
- //private CTexture[] txLaneFlush = new CTexture[3];
-
- //private CTexture[] tx普通譜面 = new CTexture[2];
- //private CTexture[] tx玄人譜面 = new CTexture[2];
- //private CTexture[] tx達人譜面 = new CTexture[2];
-
- //private CTextureAf txアタックエフェクトLower;
-
- protected STSTATUS[] st状態 = new STSTATUS[5];
-
- //private CTexture[] txゴーゴースプラッシュ;
-
- [StructLayout(LayoutKind.Sequential)]
- protected struct STSTATUS
- {
- public bool b使用中;
- public CCounter ct進行;
- public ENoteJudge judge;
- public int nIsBig;
- public int n透明度;
- public int nPlayer;
- }
- private CCounter ctゴーゴー;
- private CCounter ctゴーゴー炎;
-
-
-
- public STBRANCH[] stBranch = new STBRANCH[5];
- [StructLayout(LayoutKind.Sequential)]
- public struct STBRANCH
- {
- public CCounter ct分岐アニメ進行;
- public CDTX.ECourse nBefore;
- public CDTX.ECourse nAfter;
-
- public long nフラッシュ制御タイマ;
- public int nBranchレイヤー透明度;
- public int nBranch文字透明度;
- public int nY座標;
- public int nY;
- }
-
-
- private int[] n総移動時間 = new int[5];
- private int[] n移動開始X = new int[5];
- private int[] n移動開始Y = new int[5];
- private int[] n移動開始時刻 = new int[5];
- private int[] n移動距離px = new int[5];
- private int[] nVerticalJSPos = new int[5];
- private int[] n移動目的場所X = new int[5];
- private int[] n移動目的場所Y = new int[5];
- private int[] n移動方向 = new int[5];
-
- //-----------------
- #endregion
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Diagnostics;
+using FDK;
+
+using Rectangle = System.Drawing.Rectangle;
+using Point = System.Drawing.Point;
+using Color = System.Drawing.Color;
+
+namespace TJAPlayer3
+{
+ internal class CActImplLaneTaiko : CActivity
+ {
+ ///
+ /// レーンを描画するクラス。
+ ///
+ ///
+ ///
+ public CActImplLaneTaiko()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public override void Activate()
+ {
+ for (int i = 0; i < 5; i++)
+ {
+ this.st状態[i].ct進行 = new CCounter();
+ this.stBranch[i].ct分岐アニメ進行 = new CCounter();
+ this.stBranch[i].nフラッシュ制御タイマ = -1;
+ this.stBranch[i].nBranchレイヤー透明度 = 0;
+ this.stBranch[i].nBranch文字透明度 = 0;
+ this.stBranch[i].nY座標 = 0;
+
+ this.n総移動時間[i] = -1;
+ }
+ this.ctゴーゴー = new CCounter();
+
+
+ this.ctゴーゴー炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer);
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ for (int i = 0; i < 5; i++)
+ {
+ this.st状態[i].ct進行 = null;
+ this.stBranch[i].ct分岐アニメ進行 = null;
+ }
+ this.ctゴーゴー = null;
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ if (base.IsFirstDraw)
+ {
+ for (int i = 0; i < 5; i++)
+ this.stBranch[i].nフラッシュ制御タイマ = (long)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
+ base.IsFirstDraw = false;
+ }
+
+ //それぞれが独立したレイヤーでないといけないのでforループはパーツごとに分離すること。
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2 && !TJAPlayer3.ConfigIni.bAIBattleMode) TJAPlayer3.stage演奏ドラム画面.actMtaiko.DrawBackSymbol();
+
+ #region[ レーン本体 ]
+
+
+ int[] x = new int[5];
+ int[] y = new int[5];
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ x[i] = TJAPlayer3.Skin.Game_Lane_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ y[i] = TJAPlayer3.Skin.Game_Lane_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ x[i] = TJAPlayer3.Skin.Game_Lane_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ y[i] = TJAPlayer3.Skin.Game_Lane_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+ }
+ else
+ {
+ x[i] = TJAPlayer3.Skin.Game_Lane_X[i];
+ y[i] = TJAPlayer3.Skin.Game_Lane_Y[i];
+ }
+ }
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (i == 1 && TJAPlayer3.ConfigIni.bAIBattleMode && TJAPlayer3.Tx.Lane_Background_AI != null)
+ TJAPlayer3.Tx.Lane_Background_AI?.t2D描画(x[i], y[i]);
+ else
+ TJAPlayer3.Tx.Lane_Background_Main?.t2D描画(x[i], y[i]);
+ }
+
+ #endregion
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount > 2 && !TJAPlayer3.ConfigIni.bAIBattleMode) TJAPlayer3.stage演奏ドラム画面.actMtaiko.DrawBackSymbol();
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ #region[ 分岐アニメ制御タイマー ]
+ long num = FDK.SoundManager.PlayTimer.NowTime;
+ if (num < this.stBranch[i].nフラッシュ制御タイマ)
+ {
+ this.stBranch[i].nフラッシュ制御タイマ = num;
+ }
+ while ((num - this.stBranch[i].nフラッシュ制御タイマ) >= 30)
+ {
+ if (this.stBranch[i].nBranchレイヤー透明度 <= 255)
+ {
+ this.stBranch[i].nBranchレイヤー透明度 += 10;
+ }
+
+ if (this.stBranch[i].nBranch文字透明度 >= 0)
+ {
+ this.stBranch[i].nBranch文字透明度 -= 10;
+ }
+
+ if (this.stBranch[i].nY座標 != 0 && this.stBranch[i].nY座標 <= 20)
+ {
+ this.stBranch[i].nY座標++;
+ }
+
+ this.stBranch[i].nフラッシュ制御タイマ += 8;
+ }
+
+ if (!this.stBranch[i].ct分岐アニメ進行.IsStoped)
+ {
+ this.stBranch[i].ct分岐アニメ進行.Tick();
+ if (this.stBranch[i].ct分岐アニメ進行.IsEnded)
+ {
+ this.stBranch[i].ct分岐アニメ進行.Stop();
+ }
+ }
+ #endregion
+ }
+ #region[ 分岐レイヤー ]
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bUseBranch[i] == true)
+ {
+ #region[ 動いていない ]
+ switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
+ {
+ case CDTX.ECourse.eNormal:
+ if (TJAPlayer3.Tx.Lane_Base[0] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
+ }
+ break;
+ case CDTX.ECourse.eExpert:
+ if (TJAPlayer3.Tx.Lane_Base[1] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
+ }
+ break;
+ case CDTX.ECourse.eMaster:
+ if (TJAPlayer3.Tx.Lane_Base[2] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[2].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
+ }
+ break;
+ }
+ #endregion
+
+ if (TJAPlayer3.ConfigIni.nBranchAnime == 1)
+ {
+ #region[ AC7~14風の背後レイヤー ]
+ if (this.stBranch[i].ct分岐アニメ進行.IsTicked)
+ {
+ int n透明度 = ((100 - this.stBranch[i].ct分岐アニメ進行.CurrentValue) * 0xff) / 100;
+
+ if (this.stBranch[i].ct分岐アニメ進行.IsEnded)
+ {
+ n透明度 = 255;
+ this.stBranch[i].ct分岐アニメ進行.Stop();
+ }
+
+ #region[ 普通譜面_レベルアップ ]
+ //普通→玄人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
+ {
+ if (TJAPlayer3.Tx.Lane_Base[0] != null && TJAPlayer3.Tx.Lane_Base[1] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
+ }
+ }
+ //普通→達人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 100)
+ {
+ n透明度 = ((100 - this.stBranch[i].ct分岐アニメ進行.CurrentValue) * 0xff) / 100;
+ }
+ if (TJAPlayer3.Tx.Lane_Base[0] != null && TJAPlayer3.Tx.Lane_Base[2] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ }
+ #endregion
+ #region[ 玄人譜面_レベルアップ ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ if (TJAPlayer3.Tx.Lane_Base[1] != null && TJAPlayer3.Tx.Lane_Base[2] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ }
+ #endregion
+ #region[ 玄人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ if (TJAPlayer3.Tx.Lane_Base[1] != null && TJAPlayer3.Tx.Lane_Base[0] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[1].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ }
+ #endregion
+ #region[ 達人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ if (TJAPlayer3.Tx.Lane_Base[2] != null && TJAPlayer3.Tx.Lane_Base[0] != null)
+ {
+ TJAPlayer3.Tx.Lane_Base[2].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[0].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Base[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ }
+ #endregion
+ }
+ #endregion
+ }
+ else if (TJAPlayer3.ConfigIni.nBranchAnime == 0)
+ {
+ TJAPlayer3.stage演奏ドラム画面.actLane.Draw();
+ }
+ }
+ }
+ #endregion
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ #region[ ゴーゴータイムレーン背景レイヤー ]
+ if (TJAPlayer3.Tx.Lane_Background_GoGo != null && TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i])
+ {
+ if (!this.ctゴーゴー.IsStoped)
+ {
+ this.ctゴーゴー.Tick();
+ }
+
+ if (this.ctゴーゴー.CurrentValue <= 4)
+ {
+ TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.2f;
+ TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 54);
+ }
+ else if (this.ctゴーゴー.CurrentValue <= 5)
+ {
+ TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.4f;
+ TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 40);
+ }
+ else if (this.ctゴーゴー.CurrentValue <= 6)
+ {
+ TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.6f;
+ TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 26);
+ }
+ else if (this.ctゴーゴー.CurrentValue <= 8)
+ {
+ TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 0.8f;
+ TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i] + 13);
+ }
+ else if (this.ctゴーゴー.CurrentValue >= 9)
+ {
+ TJAPlayer3.Tx.Lane_Background_GoGo.vcScaleRatio.Y = 1.0f;
+ TJAPlayer3.Tx.Lane_Background_GoGo.t2D描画(x[i], y[i]);
+ }
+ }
+ #endregion
+ }
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bUseBranch[i] == true)
+ {
+ #region NullCheck
+
+ bool _laneNull = false;
+
+ for (int j = 0; j < TJAPlayer3.Tx.Lane_Text.Length; j++)
+ {
+ if (TJAPlayer3.Tx.Lane_Text[j] == null)
+ {
+ _laneNull = true;
+ break;
+ }
+ }
+
+ #endregion
+
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
+ {
+ case CDTX.ECourse.eNormal:
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eExpert:
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eMaster:
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
+ break;
+ }
+ }
+ else if (TJAPlayer3.ConfigIni.nBranchAnime == 0 && !_laneNull)
+ {
+ if (!this.stBranch[i].ct分岐アニメ進行.IsTicked)
+ {
+ switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
+ {
+ case CDTX.ECourse.eNormal:
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eExpert:
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eMaster:
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
+ break;
+ }
+ }
+ if (this.stBranch[i].ct分岐アニメ進行.IsTicked)
+ {
+ #region[ 普通譜面_レベルアップ ]
+ //普通→玄人
+ if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
+ //CDTXMania.Tx.Lane_Text[1].n透明度 = this.ct分岐アニメ進行.n現在の値 > 100 ? 255 : ( ( ( this.ct分岐アニメ進行.n現在の値 * 0xff ) / 60 ) );
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] + this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 30) + this.stBranch[i].nY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ }
+
+ }
+
+ //普通→達人
+ if (this.stBranch[i].nBefore == 0 && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 12) + this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
+ }
+ //if( this.stBranch[ i ].ct分岐アニメ進行.n現在の値 >= 5 && this.stBranch[ i ].ct分岐アニメ進行.n現在の値 < 60 )
+ //{
+ // this.stBranch[ i ].nY = this.stBranch[ i ].ct分岐アニメ進行.n現在の値 / 2;
+ // this.tx普通譜面[ 1 ].t2D描画(CDTXMania.app.Device, 333, CDTXMania.Skin.nScrollFieldY[ i ] + this.stBranch[ i ].nY);
+ // this.tx普通譜面[ 1 ].n透明度 = this.stBranch[ i ].ct分岐アニメ進行.n現在の値 > 100 ? 0 : ( 255 - ( ( this.stBranch[ i ].ct分岐アニメ進行.n現在の値 * 0xff) / 100));
+ // this.tx玄人譜面[ 1 ].t2D描画(CDTXMania.app.Device, 333, ( CDTXMania.Skin.nScrollFieldY[ i ] - 10 ) + this.stBranch[ i ].nY);
+ //}
+ else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 60 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 150)
+ {
+ this.stBranch[i].nY = 21;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ }
+ else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 150 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 210)
+ {
+ this.stBranch[i].nY = ((this.stBranch[i].ct分岐アニメ進行.CurrentValue - 150) / 2);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
+ }
+ }
+ #endregion
+ #region[ 玄人譜面_レベルアップ ]
+ //玄人→達人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] - 20) + this.stBranch[i].nY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
+ }
+ }
+ #endregion
+ #region[ 玄人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
+ }
+ }
+ #endregion
+ #region[ 達人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] - this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
+ }
+ else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 60 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 150)
+ {
+ this.stBranch[i].nY = 21;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ }
+ else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 150 && this.stBranch[i].ct分岐アニメ進行.CurrentValue < 210)
+ {
+ this.stBranch[i].nY = ((this.stBranch[i].ct分岐アニメ進行.CurrentValue - 150) / 2);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 100));
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
+ }
+ else if (this.stBranch[i].ct分岐アニメ進行.CurrentValue >= 210)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
+ }
+ }
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].ct分岐アニメ進行.CurrentValue > 100 ? 0 : (255 - ((this.stBranch[i].ct分岐アニメ進行.CurrentValue * 0xff) / 60));
+ if (this.stBranch[i].ct分岐アニメ進行.CurrentValue < 60)
+ {
+ this.stBranch[i].nY = this.stBranch[i].ct分岐アニメ進行.CurrentValue / 2;
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] - this.stBranch[i].nY);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 30) - this.stBranch[i].nY);
+ }
+ else
+ {
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ }
+
+ }
+ #endregion
+ }
+ }
+ else if (!_laneNull)
+ {
+ if (this.stBranch[i].nY座標 == 21)
+ {
+ this.stBranch[i].nY座標 = 0;
+ }
+
+ if (this.stBranch[i].nY座標 == 0)
+ {
+ switch (TJAPlayer3.stage演奏ドラム画面.nレーン用表示コース[i])
+ {
+ case CDTX.ECourse.eNormal:
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eExpert:
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i]);
+ break;
+ case CDTX.ECourse.eMaster:
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = 255;
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i]);
+ break;
+ }
+ }
+
+ if (this.stBranch[i].nY座標 != 0)
+ {
+ #region[ 普通譜面_レベルアップ ]
+ //普通→玄人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ //普通→達人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eNormal && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[0].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ #endregion
+ #region[ 玄人譜面_レベルアップ ]
+ //玄人→達人
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eMaster)
+ {
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], (y[i] + 20) - this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ #endregion
+ #region[ 玄人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eExpert && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[1].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ #endregion
+ #region[ 達人譜面_レベルダウン ]
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eNormal)
+ {
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[0].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ if (this.stBranch[i].nBefore == CDTX.ECourse.eMaster && this.stBranch[i].nAfter == CDTX.ECourse.eExpert)
+ {
+ TJAPlayer3.Tx.Lane_Text[2].t2D描画(x[i], y[i] + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[1].t2D描画(x[i], (y[i] - 24) + this.stBranch[i].nY座標);
+ TJAPlayer3.Tx.Lane_Text[2].Opacity = this.stBranch[i].nBranchレイヤー透明度;
+ }
+ #endregion
+ }
+ }
+
+ }
+ }
+
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
+ {
+ if (TJAPlayer3.Tx.Lane_Background_Sub != null)
+ {
+ TJAPlayer3.Tx.Lane_Background_Sub.t2D描画(TJAPlayer3.Skin.Game_Lane_Sub_X[0], TJAPlayer3.Skin.Game_Lane_Sub_Y[0]);
+ if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay)
+ {
+ TJAPlayer3.Tx.Lane_Background_Sub.t2D描画(TJAPlayer3.Skin.Game_Lane_Sub_X[1], TJAPlayer3.Skin.Game_Lane_Sub_Y[1]);
+ }
+ }
+ }
+
+
+ TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.Draw();
+
+
+
+ if (TJAPlayer3.Tx.Taiko_Frame[0] != null)
+ {
+ // Tower frame (without tamashii jauge) if playing a tower chart
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ int frame_x;
+ int frame_y;
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+ }
+ else
+ {
+ frame_x = TJAPlayer3.Skin.Game_Taiko_Frame_X[i];
+ frame_y = TJAPlayer3.Skin.Game_Taiko_Frame_Y[i];
+ }
+
+ CTexture tex = null;
+
+ switch (i)
+ {
+ case 0:
+ {
+ if (TJAPlayer3.ConfigIni.bTokkunMode)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[3];
+ }
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[5];
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[2];
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount > 2)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[6];
+ }
+ else
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[0];
+ }
+ }
+ break;
+ case 1:
+ {
+ if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[4];
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount > 2)
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[6];
+ }
+ else
+ {
+ tex = TJAPlayer3.Tx.Taiko_Frame[1];
+ }
+ }
+ break;
+ case 2:
+ tex = TJAPlayer3.Tx.Taiko_Frame[6];
+ break;
+ case 3:
+ tex = TJAPlayer3.Tx.Taiko_Frame[6];
+ break;
+ case 4:
+ tex = TJAPlayer3.Tx.Taiko_Frame[6];
+ break;
+ }
+
+ tex?.t2D描画(frame_x, frame_y);
+ }
+
+ /*
+ if (TJAPlayer3.ConfigIni.bTokkunMode == true && TJAPlayer3.Tx.Taiko_Frame[3] != null)
+ TJAPlayer3.Tx.Taiko_Frame[3]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
+ else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower && TJAPlayer3.Tx.Taiko_Frame[2] != null)
+ TJAPlayer3.Tx.Taiko_Frame[2]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
+ else if (TJAPlayer3.ConfigIni.bAIBattleMode && TJAPlayer3.Tx.Taiko_Frame[5] != null)
+ TJAPlayer3.Tx.Taiko_Frame[5]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
+ else
+ TJAPlayer3.Tx.Taiko_Frame[0]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[0], TJAPlayer3.Skin.Game_Taiko_Frame_Y[0]);
+
+ if (TJAPlayer3.stage演奏ドラム画面.bDoublePlay)
+ {
+ if (TJAPlayer3.ConfigIni.bAIBattleMode)
+ TJAPlayer3.Tx.Taiko_Frame[4]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[1], TJAPlayer3.Skin.Game_Taiko_Frame_Y[1]);
+ else
+ TJAPlayer3.Tx.Taiko_Frame[1]?.t2D描画(TJAPlayer3.Skin.Game_Taiko_Frame_X[1], TJAPlayer3.Skin.Game_Taiko_Frame_Y[1]);
+ }
+ */
+ }
+ var nTime = (long)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
+
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (this.n総移動時間[i] != -1)
+ {
+ if (n移動方向[i] == 1)
+ {
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動開始Y[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.nVerticalJSPos[i]);
+ //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
+ }
+ else
+ {
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動開始Y[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.nVerticalJSPos[i]);
+ //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
+ }
+
+ if (((int)nTime) > this.n移動開始時刻[i] + this.n総移動時間[i])
+ {
+ this.n総移動時間[i] = -1;
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動目的場所X[i];
+ TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[i] = this.n移動目的場所Y[i];
+ //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動目的場所X[i];
+ }
+ }
+ }
+
+
+
+
+ if (TJAPlayer3.ConfigIni.bEnableAVI && TJAPlayer3.DTX.listVD.Count > 0 && TJAPlayer3.stage演奏ドラム画面.ShowVideo)
+ {
+ if (TJAPlayer3.Tx.Lane_Background_Main != null) TJAPlayer3.Tx.Lane_Background_Main.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
+ if (TJAPlayer3.Tx.Lane_Background_AI != null) TJAPlayer3.Tx.Lane_Background_AI.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
+ if (TJAPlayer3.Tx.Lane_Background_Sub != null) TJAPlayer3.Tx.Lane_Background_Sub.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
+ if (TJAPlayer3.Tx.Lane_Background_GoGo != null) TJAPlayer3.Tx.Lane_Background_GoGo.Opacity = TJAPlayer3.ConfigIni.nBGAlpha;
+ }
+ else
+ {
+ if (TJAPlayer3.Tx.Lane_Background_Main != null) TJAPlayer3.Tx.Lane_Background_Main.Opacity = 255;
+ if (TJAPlayer3.Tx.Lane_Background_AI != null) TJAPlayer3.Tx.Lane_Background_AI.Opacity = 255;
+ if (TJAPlayer3.Tx.Lane_Background_Sub != null) TJAPlayer3.Tx.Lane_Background_Sub.Opacity = 255;
+ if (TJAPlayer3.Tx.Lane_Background_GoGo != null) TJAPlayer3.Tx.Lane_Background_GoGo.Opacity = 255;
+ }
+
+ return base.Draw();
+ }
+
+ public void ゴーゴー炎()
+ {
+ //判定枠
+ if (TJAPlayer3.Tx.Judge_Frame != null)
+ {
+ TJAPlayer3.Tx.Judge_Frame.b加算合成 = TJAPlayer3.Skin.Game_JudgeFrame_AddBlend;
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ TJAPlayer3.Tx.Judge_Frame.t2D描画(
+ TJAPlayer3.stage演奏ドラム画面.NoteOriginX[i],
+ TJAPlayer3.stage演奏ドラム画面.NoteOriginY[i], new Rectangle(0, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
+ }
+ }
+
+
+ #region[ ゴーゴー炎 ]
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i] && !TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ this.ctゴーゴー炎.TickLoop();
+
+ if (TJAPlayer3.Tx.Effects_Fire != null)
+ {
+ float f倍率 = 1.0f;
+
+ float[] ar倍率 = new float[] { 0.8f, 1.2f, 1.7f, 2.5f, 2.3f, 2.2f, 2.0f, 1.8f, 1.7f, 1.6f, 1.6f, 1.5f, 1.5f, 1.4f, 1.3f, 1.2f, 1.1f, 1.0f };
+
+ f倍率 = ar倍率[this.ctゴーゴー.CurrentValue];
+
+ /*
+ Matrix mat = Matrix.Identity;
+ mat *= Matrix.Scaling(f倍率, f倍率, 1.0f);
+ mat *= Matrix.Translation(TJAPlayer3.Skin.nScrollFieldX[i] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[i] - SampleFramework.GameWindowSize.Height / 2.0f), 0f);
+ */
+ //this.txゴーゴー炎.b加算合成 = true;
+
+ //this.ctゴーゴー.n現在の値 = 6;
+
+ int width = TJAPlayer3.Tx.Effects_Fire.szTextureSize.Width / 7;
+ int height = TJAPlayer3.Tx.Effects_Fire.szTextureSize.Height;
+
+ float x = -(width * (f倍率 - 1.0f) / 2.0f);
+ float y = -(height * (f倍率 - 1.0f) / 2.0f);
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ x += TJAPlayer3.Skin.Game_Effect_Fire_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ y += TJAPlayer3.Skin.Game_Effect_Fire_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ x += TJAPlayer3.Skin.Game_Effect_Fire_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ y += TJAPlayer3.Skin.Game_Effect_Fire_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+ }
+ else
+ {
+ x += TJAPlayer3.Skin.Game_Effect_Fire_X[i];
+ y += TJAPlayer3.Skin.Game_Effect_Fire_Y[i];
+ }
+
+ TJAPlayer3.Tx.Effects_Fire.vcScaleRatio.X = f倍率;
+ TJAPlayer3.Tx.Effects_Fire.vcScaleRatio.Y = f倍率;
+
+ TJAPlayer3.Tx.Effects_Fire.t2D描画(x, y,
+ new Rectangle(width * (this.ctゴーゴー炎.CurrentValue), 0, width, height));
+ }
+ }
+ }
+ #endregion
+ for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
+ {
+ if (!this.st状態[i].ct進行.IsStoped)
+ {
+ this.st状態[i].ct進行.Tick();
+ if (this.st状態[i].ct進行.IsEnded)
+ {
+ this.st状態[i].ct進行.Stop();
+ }
+ //if( this.txアタックエフェクトLower != null )
+ {
+ //this.txアタックエフェクトLower.b加算合成 = true;
+ int n = this.st状態[i].nIsBig == 1 ? 520 : 0;
+
+ float x = 0;
+ float y = 0;
+
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * i);
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * i);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * i);
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * i);
+ }
+ else
+ {
+ x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[i];
+ y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[i];
+ }
+ x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i);
+ y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i);
+
+ switch (st状態[i].judge)
+ {
+ case ENoteJudge.Perfect:
+ case ENoteJudge.Great:
+ case ENoteJudge.Auto:
+ if (!TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ //this.txアタックエフェクトLower.t2D描画( CDTXMania.app.Device, 285, 127, new Rectangle( this.st状態[ i ].ct進行.n現在の値 * 260, n, 260, 260 ) );
+ if (this.st状態[i].nIsBig == 1 && TJAPlayer3.Tx.Effects_Hit_Great_Big[this.st状態[i].ct進行.CurrentValue] != null)
+ TJAPlayer3.Tx.Effects_Hit_Great_Big[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
+ else if (TJAPlayer3.Tx.Effects_Hit_Great[this.st状態[i].ct進行.CurrentValue] != null)
+ TJAPlayer3.Tx.Effects_Hit_Great[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
+ }
+ break;
+
+ case ENoteJudge.Good:
+ //this.txアタックエフェクトLower.t2D描画( CDTXMania.app.Device, 285, 127, new Rectangle( this.st状態[ i ].ct進行.n現在の値 * 260, n + 260, 260, 260 ) );
+ if (this.st状態[i].nIsBig == 1 && TJAPlayer3.Tx.Effects_Hit_Good_Big[this.st状態[i].ct進行.CurrentValue] != null)
+ TJAPlayer3.Tx.Effects_Hit_Good_Big[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
+ else if (TJAPlayer3.Tx.Effects_Hit_Good[this.st状態[i].ct進行.CurrentValue] != null)
+ TJAPlayer3.Tx.Effects_Hit_Good[this.st状態[i].ct進行.CurrentValue].t2D描画(x, y);
+ break;
+
+ case ENoteJudge.Miss:
+ case ENoteJudge.Bad:
+ break;
+ }
+ }
+ }
+ }
+
+
+ }
+
+ public virtual void Start(int nLane, ENoteJudge judge, bool b両手入力, int nPlayer)
+ {
+ //2017.08.15 kairera0467 排他なので番地をそのまま各レーンの状態として扱う
+
+ //for( int n = 0; n < 1; n++ )
+ {
+ this.st状態[nPlayer].ct進行 = new CCounter(0, 14, 20, TJAPlayer3.Timer);
+ this.st状態[nPlayer].judge = judge;
+ this.st状態[nPlayer].nPlayer = nPlayer;
+
+ switch (nLane)
+ {
+ case 0x11:
+ case 0x12:
+ this.st状態[nPlayer].nIsBig = 0;
+ break;
+ case 0x13:
+ case 0x14:
+ case 0x1A:
+ case 0x1B:
+ {
+ if (b両手入力)
+ this.st状態[nPlayer].nIsBig = 1;
+ else
+ this.st状態[nPlayer].nIsBig = 0;
+ }
+ break;
+ }
+ }
+ }
+
+
+ public void GOGOSTART()
+ {
+ this.ctゴーゴー = new CCounter(0, 17, 18, TJAPlayer3.Timer);
+ if(TJAPlayer3.ConfigIni.nPlayerCount == 1 && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan) TJAPlayer3.stage演奏ドラム画面.GoGoSplash.StartSplash();
+ }
+
+
+ public void t分岐レイヤー_コース変化(CDTX.ECourse n現在, CDTX.ECourse n次回, int nPlayer)
+ {
+ if (n現在 == n次回)
+ {
+ return;
+ }
+ this.stBranch[nPlayer].ct分岐アニメ進行 = new CCounter(0, 300, 2, TJAPlayer3.Timer);
+
+ this.stBranch[nPlayer].nBranchレイヤー透明度 = 6;
+ this.stBranch[nPlayer].nY座標 = 1;
+
+ this.stBranch[nPlayer].nBefore = n現在;
+ this.stBranch[nPlayer].nAfter = n次回;
+
+ TJAPlayer3.stage演奏ドラム画面.actLane.t分岐レイヤー_コース変化(n現在, n次回, nPlayer);
+ }
+
+ public void t判定枠移動(double db移動時間, int n移動px, int n移動方向, int nPlayer, int vJs)
+ {
+ this.n移動開始時刻[nPlayer] = (int)(SoundManager.PlayTimer.NowTime * TJAPlayer3.ConfigIni.SongPlaybackSpeed);
+ this.n移動開始X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer];
+ this.n移動開始Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer];
+ this.n総移動時間[nPlayer] = (int)(db移動時間 * 1000);
+ this.n移動方向[nPlayer] = n移動方向;
+ this.n移動距離px[nPlayer] = n移動px;
+ this.nVerticalJSPos[nPlayer] = vJs;
+ if (n移動方向 == 0)
+ {
+ this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] - n移動px;
+ this.n移動目的場所Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer] - vJs;
+ }
+ else
+ {
+ this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] + n移動px;
+ this.n移動目的場所Y[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLY[nPlayer] + vJs;
+ }
+ }
+
+ #region[ private ]
+ //-----------------
+ //private CTexture txLane;
+ //private CTexture txLaneB;
+ //private CTexture tx枠線;
+ //private CTexture tx判定枠;
+ //private CTexture txゴーゴー;
+ //private CTexture txゴーゴー炎;
+ //private CTexture[] txArゴーゴー炎;
+ //private CTexture[] txArアタックエフェクトLower_A;
+ //private CTexture[] txArアタックエフェクトLower_B;
+ //private CTexture[] txArアタックエフェクトLower_C;
+ //private CTexture[] txArアタックエフェクトLower_D;
+
+ //private CTexture[] txLaneFlush = new CTexture[3];
+
+ //private CTexture[] tx普通譜面 = new CTexture[2];
+ //private CTexture[] tx玄人譜面 = new CTexture[2];
+ //private CTexture[] tx達人譜面 = new CTexture[2];
+
+ //private CTextureAf txアタックエフェクトLower;
+
+ protected STSTATUS[] st状態 = new STSTATUS[5];
+
+ //private CTexture[] txゴーゴースプラッシュ;
+
+ [StructLayout(LayoutKind.Sequential)]
+ protected struct STSTATUS
+ {
+ public bool b使用中;
+ public CCounter ct進行;
+ public ENoteJudge judge;
+ public int nIsBig;
+ public int n透明度;
+ public int nPlayer;
+ }
+ private CCounter ctゴーゴー;
+ private CCounter ctゴーゴー炎;
+
+
+
+ public STBRANCH[] stBranch = new STBRANCH[5];
+ [StructLayout(LayoutKind.Sequential)]
+ public struct STBRANCH
+ {
+ public CCounter ct分岐アニメ進行;
+ public CDTX.ECourse nBefore;
+ public CDTX.ECourse nAfter;
+
+ public long nフラッシュ制御タイマ;
+ public int nBranchレイヤー透明度;
+ public int nBranch文字透明度;
+ public int nY座標;
+ public int nY;
+ }
+
+
+ private int[] n総移動時間 = new int[5];
+ private int[] n移動開始X = new int[5];
+ private int[] n移動開始Y = new int[5];
+ private int[] n移動開始時刻 = new int[5];
+ private int[] n移動距離px = new int[5];
+ private int[] nVerticalJSPos = new int[5];
+ private int[] n移動目的場所X = new int[5];
+ private int[] n移動目的場所Y = new int[5];
+ private int[] n移動方向 = new int[5];
+
+ //-----------------
+ #endregion
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMob.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMob.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMob.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplMob.cs
index 289a7740..a51eb3a7 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMob.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMob.cs
@@ -7,12 +7,12 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏DrumsMob : CActivity
+ internal class CActImplMob : CActivity
{
///
/// 踊り子
///
- public CAct演奏DrumsMob()
+ public CActImplMob()
{
base.IsDeActivated = true;
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs
similarity index 99%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs
index ddfd46e3..2ce2a301 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplMtaiko.cs
@@ -9,13 +9,13 @@ using Rectangle = System.Drawing.Rectangle;
namespace TJAPlayer3
{
- internal class CAct演奏DrumsMtaiko : CActivity
+ internal class CActImplMtaiko : CActivity
{
///
/// mtaiko部分を描画するクラス。左側だけ。
///
///
- public CAct演奏DrumsMtaiko()
+ public CActImplMtaiko()
{
base.IsDeActivated = true;
}
@@ -210,16 +210,16 @@ namespace TJAPlayer3
}
*/
- int getMTaikoOpacity(int brightness)
- {
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- return brightness <= 0 ? 0 : 255;
- }
- else
- {
- return brightness * 73;
- }
+ int getMTaikoOpacity(int brightness)
+ {
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ return brightness <= 0 ? 0 : 255;
+ }
+ else
+ {
+ return brightness * 73;
+ }
}
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsパッド.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplPad.cs
similarity index 52%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsパッド.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplPad.cs
index 27755574..ac6662c9 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsパッド.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplPad.cs
@@ -7,85 +7,12 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsパッド : CActivity
+ internal class CActImplPad : CActivity
{
// コンストラクタ
- public CAct演奏Drumsパッド()
+ public CActImplPad()
{
- ST基本位置[] st基本位置Array = new ST基本位置[ 10 ];
-
- //LC
- ST基本位置 st基本位置 = new ST基本位置();
- st基本位置.x = 263;
- st基本位置.y = 10;
- st基本位置.rc = new Rectangle( 0, 0, 0x60, 0x60 );
- st基本位置Array[ 0 ] = st基本位置;
-
- //HH
- ST基本位置 st基本位置2 = new ST基本位置();
- st基本位置2.x = 336;
- st基本位置2.y = 10;
- st基本位置2.rc = new Rectangle( 0x60, 0, 0x60, 0x60 );
- st基本位置Array[ 1 ] = st基本位置2;
-
- //SD
- ST基本位置 st基本位置3 = new ST基本位置();
- st基本位置3.x = 446;
- st基本位置3.y = 10;
- st基本位置3.rc = new Rectangle( 0, 0x60, 0x60, 0x60 );
- st基本位置Array[ 2 ] = st基本位置3;
-
- //BD
- ST基本位置 st基本位置4 = new ST基本位置();
- st基本位置4.x = 565;
- st基本位置4.y = 10;
- st基本位置4.rc = new Rectangle( 0, 0xc0, 0x60, 0x60);
- st基本位置Array[ 3 ] = st基本位置4;
-
- //HT
- ST基本位置 st基本位置5 = new ST基本位置();
- st基本位置5.x = 510;
- st基本位置5.y = 10;
- st基本位置5.rc = new Rectangle( 0x60, 0x60, 0x60, 0x60 );
- st基本位置Array[ 4 ] = st基本位置5;
-
- //LT
- ST基本位置 st基本位置6 = new ST基本位置();
- st基本位置6.x = 622;
- st基本位置6.y = 10;
- st基本位置6.rc = new Rectangle( 0xc0, 0x60, 0x60, 0x60 );
- st基本位置Array[ 5 ] = st基本位置6;
-
- //FT
- ST基本位置 st基本位置7 = new ST基本位置();
- st基本位置7.x = 672;
- st基本位置7.y = 10;
- st基本位置7.rc = new Rectangle( 288, 0x60, 0x60, 0x60 );
- st基本位置Array[ 6 ] = st基本位置7;
-
- //CY
- ST基本位置 st基本位置8 = new ST基本位置();
- st基本位置8.x = 0x2df;
- st基本位置8.y = 10;
- st基本位置8.rc = new Rectangle( 0xc0, 0, 0x60, 0x60 );
- st基本位置Array[ 7 ] = st基本位置8;
-
- //RD
- ST基本位置 st基本位置9 = new ST基本位置();
- st基本位置9.x = 0x317;
- st基本位置9.y = 10;
- st基本位置9.rc = new Rectangle( 288, 0, 0x60, 0x60 );
- st基本位置Array[ 8 ] = st基本位置9;
-
- //LP
- ST基本位置 st基本位置10 = new ST基本位置();
- st基本位置10.x = 0x18c;
- st基本位置10.y = 10;
- st基本位置10.rc = new Rectangle( 0x60, 0xc0, 0x60, 0x60);
- st基本位置Array[ 9 ] = st基本位置10;
-
- this.st基本位置 = st基本位置Array;
base.IsDeActivated = true;
}
@@ -191,20 +118,10 @@ namespace TJAPlayer3
public int nY座標オフセットdot;
public int nY座標加速度dot;
}
- [StructLayout( LayoutKind.Sequential )]
- private struct ST基本位置
- {
- public int x;
- public int y;
- public Rectangle rc;
- }
private long nY座標制御タイマ;
private long nフラッシュ制御タイマ;
- private readonly int[] n描画順 = new int[] { 9, 3, 2, 6, 5, 4, 8, 7, 1, 0 };
- // LP BD SD FT HT LT RD CY HH LC
private STパッド状態[] stパッド状態 = new STパッド状態[ 10 ];
- private readonly ST基本位置[] st基本位置;
//-----------------
#endregion
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRoll.cs
similarity index 74%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplRoll.cs
index 5f15d00a..5443b0a1 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRoll.cs
@@ -1,229 +1,181 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drums連打 : CActivity
- {
-
-
- public CAct演奏Drums連打()
- {
- ST文字位置[] st文字位置Array = new ST文字位置[ 11 ];
-
- ST文字位置 st文字位置 = new ST文字位置();
- st文字位置.ch = '0';
- st文字位置.pt = new Point( 0, 0 );
- st文字位置Array[ 0 ] = st文字位置;
- ST文字位置 st文字位置2 = new ST文字位置();
- st文字位置2.ch = '1';
- st文字位置2.pt = new Point( 62, 0 );
- st文字位置Array[ 1 ] = st文字位置2;
- ST文字位置 st文字位置3 = new ST文字位置();
- st文字位置3.ch = '2';
- st文字位置3.pt = new Point( 124, 0 );
- st文字位置Array[ 2 ] = st文字位置3;
- ST文字位置 st文字位置4 = new ST文字位置();
- st文字位置4.ch = '3';
- st文字位置4.pt = new Point( 186, 0 );
- st文字位置Array[ 3 ] = st文字位置4;
- ST文字位置 st文字位置5 = new ST文字位置();
- st文字位置5.ch = '4';
- st文字位置5.pt = new Point( 248, 0 );
- st文字位置Array[ 4 ] = st文字位置5;
- ST文字位置 st文字位置6 = new ST文字位置();
- st文字位置6.ch = '5';
- st文字位置6.pt = new Point( 310, 0 );
- st文字位置Array[ 5 ] = st文字位置6;
- ST文字位置 st文字位置7 = new ST文字位置();
- st文字位置7.ch = '6';
- st文字位置7.pt = new Point( 372, 0 );
- st文字位置Array[ 6 ] = st文字位置7;
- ST文字位置 st文字位置8 = new ST文字位置();
- st文字位置8.ch = '7';
- st文字位置8.pt = new Point( 434, 0 );
- st文字位置Array[ 7 ] = st文字位置8;
- ST文字位置 st文字位置9 = new ST文字位置();
- st文字位置9.ch = '8';
- st文字位置9.pt = new Point( 496, 0 );
- st文字位置Array[ 8 ] = st文字位置9;
- ST文字位置 st文字位置10 = new ST文字位置();
- st文字位置10.ch = '9';
- st文字位置10.pt = new Point( 558, 0 );
- st文字位置Array[ 9 ] = st文字位置10;
-
- this.st文字位置 = st文字位置Array;
-
- base.IsDeActivated = true;
-
- }
-
- public override void Activate()
- {
- this.ct連打枠カウンター = new CCounter[ 5 ];
- this.ct連打アニメ = new CCounter[5];
- FadeOut = new Animations.FadeOut[5];
- for ( int i = 0; i < 5; i++ )
- {
- this.ct連打枠カウンター[ i ] = new CCounter();
- this.ct連打アニメ[i] = new CCounter();
- // 後から変えれるようにする。大体10フレーム分。
- FadeOut[i] = new Animations.FadeOut(167);
- }
- this.b表示 = new bool[]{ false, false, false, false, false };
- this.n連打数 = new int[ 5 ];
-
- base.Activate();
- }
-
- public override void DeActivate()
- {
- for (int i = 0; i < 5; i++)
- {
- ct連打枠カウンター[i] = null;
- ct連打アニメ[i] = null;
- FadeOut[i] = null;
- }
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw( )
- {
- return base.Draw();
- }
-
- public int On進行描画( int n連打数, int player )
- {
- if (TJAPlayer3.ConfigIni.nPlayerCount > 2) return base.Draw();
-
- this.ct連打枠カウンター[ player ].Tick();
- this.ct連打アニメ[player].Tick();
- FadeOut[player].Tick();
- //1PY:-3 2PY:514
- //仮置き
- int[] nRollBalloon = new int[] { -3, 514, 0, 0 };
- int[] nRollNumber = new int[] { 48, 559, 0, 0 };
- for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
- {
- //CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, this.ct連打枠カウンター[player].n現在の値.ToString());
- if ( this.ct連打枠カウンター[ player ].IsUnEnded)
- {
- if (ct連打枠カウンター[player].CurrentValue > 66 && !FadeOut[player].Counter.IsTicked)
- {
- FadeOut[player].Start();
- }
- var opacity = (int)FadeOut[player].GetAnimation();
-
- if(ct連打枠カウンター[player].CurrentValue == 0 || ct連打枠カウンター[player].CurrentValue == 60)
- {
- bNowRollAnime = 0;
- TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 64;
- }
- else if (ct連打枠カウンター[player].CurrentValue == 1 || ct連打枠カウンター[player].CurrentValue == 59)
- {
- bNowRollAnime = 1;
- TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 128;
- }
- else if (ct連打枠カウンター[player].CurrentValue == 2 || ct連打枠カウンター[player].CurrentValue == 58)
- {
- bNowRollAnime = 2;
- TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 192;
- }
- else if (ct連打枠カウンター[player].CurrentValue == 3 || ct連打枠カウンター[player].CurrentValue == 57)
- {
- bNowRollAnime = 3;
- TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 255;
- }
- else if (ct連打枠カウンター[player].CurrentValue >= 4 || ct連打枠カウンター[player].CurrentValue <= 56)
- {
- bNowRollAnime = 4;
- TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 255;
- }
-
- float width = TJAPlayer3.Tx.Balloon_Roll.szTextureSize.Width / 5.0f;
- float height = TJAPlayer3.Tx.Balloon_Roll.szTextureSize.Height;
-
- TJAPlayer3.Tx.Balloon_Roll?.t2D描画(TJAPlayer3.Skin.Game_Balloon_Roll_Frame_X[player], TJAPlayer3.Skin.Game_Balloon_Roll_Frame_Y[player], new RectangleF(0 + bNowRollAnime * width, 0, width, height));
- this.t文字表示(TJAPlayer3.Skin.Game_Balloon_Roll_Number_X[player], TJAPlayer3.Skin.Game_Balloon_Roll_Number_Y[player], n連打数, player);
- }
- }
-
- return base.Draw();
- }
-
- public void t枠表示時間延長(int player, bool first)
- {
- if ((this.ct連打枠カウンター[player].CurrentValue >= 6 && !first) || first)
- this.ct連打枠カウンター[player] = new CCounter(0, 60, 40, TJAPlayer3.Timer);
-
- if(!first)
- this.ct連打枠カウンター[player].CurrentValue = 5;
- else
- this.ct連打枠カウンター[player].CurrentValue = 0;
- }
-
- public int bNowRollAnime;
- public bool[] b表示;
- public int[] n連打数;
- public CCounter[] ct連打枠カウンター;
- //private CTexture tx連打枠;
- //private CTexture tx連打数字;
- private readonly ST文字位置[] st文字位置;
- public CCounter[] ct連打アニメ;
- private float[] RollScale = new float[]
- {
- 0.000f,
- 0.123f, // リピート
- 0.164f,
- 0.164f,
- 0.164f,
- 0.137f,
- 0.110f,
- 0.082f,
- 0.055f,
- 0.000f
- };
- private Animations.FadeOut[] FadeOut;
-
- [StructLayout(LayoutKind.Sequential)]
- private struct ST文字位置
- {
- public char ch;
- public Point pt;
- }
-
- private void t文字表示( int x, int y, int num, int nPlayer)
- {
- TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Roll_Number_Scale;
- TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Roll_Number_Scale + RollScale[this.ct連打アニメ[nPlayer].CurrentValue];
-
- int[] nums = CConversion.SeparateDigits(num);
- for (int j = 0; j < nums.Length; j++)
- {
- float offset = j - (nums.Length / 2.0f);
- float _x = x - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[0] * offset);
- float _y = y - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[1] * offset);
-
- float width = TJAPlayer3.Tx.Balloon_Number_Roll.sz画像サイズ.Width / 10.0f;
- float height = TJAPlayer3.Tx.Balloon_Number_Roll.sz画像サイズ.Height;
-
- TJAPlayer3.Tx.Balloon_Number_Roll.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using FDK;
+
+namespace TJAPlayer3
+{
+ internal class CActImplRoll : CActivity
+ {
+
+
+ public CActImplRoll()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public override void Activate()
+ {
+ this.ct連打枠カウンター = new CCounter[ 5 ];
+ this.ct連打アニメ = new CCounter[5];
+ FadeOut = new Animations.FadeOut[5];
+ for ( int i = 0; i < 5; i++ )
+ {
+ this.ct連打枠カウンター[ i ] = new CCounter();
+ this.ct連打アニメ[i] = new CCounter();
+ // 後から変えれるようにする。大体10フレーム分。
+ FadeOut[i] = new Animations.FadeOut(167);
+ }
+ this.b表示 = new bool[]{ false, false, false, false, false };
+ this.n連打数 = new int[ 5 ];
+
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ for (int i = 0; i < 5; i++)
+ {
+ ct連打枠カウンター[i] = null;
+ ct連打アニメ[i] = null;
+ FadeOut[i] = null;
+ }
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw( )
+ {
+ return base.Draw();
+ }
+
+ public int On進行描画( int n連打数, int player )
+ {
+ if (TJAPlayer3.ConfigIni.nPlayerCount > 2) return base.Draw();
+
+ this.ct連打枠カウンター[ player ].Tick();
+ this.ct連打アニメ[player].Tick();
+ FadeOut[player].Tick();
+ //1PY:-3 2PY:514
+ //仮置き
+ int[] nRollBalloon = new int[] { -3, 514, 0, 0 };
+ int[] nRollNumber = new int[] { 48, 559, 0, 0 };
+ for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
+ {
+ //CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, this.ct連打枠カウンター[player].n現在の値.ToString());
+ if ( this.ct連打枠カウンター[ player ].IsUnEnded)
+ {
+ if (ct連打枠カウンター[player].CurrentValue > 66 && !FadeOut[player].Counter.IsTicked)
+ {
+ FadeOut[player].Start();
+ }
+ var opacity = (int)FadeOut[player].GetAnimation();
+
+ if(ct連打枠カウンター[player].CurrentValue == 0 || ct連打枠カウンター[player].CurrentValue == 60)
+ {
+ bNowRollAnime = 0;
+ TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 64;
+ }
+ else if (ct連打枠カウンター[player].CurrentValue == 1 || ct連打枠カウンター[player].CurrentValue == 59)
+ {
+ bNowRollAnime = 1;
+ TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 128;
+ }
+ else if (ct連打枠カウンター[player].CurrentValue == 2 || ct連打枠カウンター[player].CurrentValue == 58)
+ {
+ bNowRollAnime = 2;
+ TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 192;
+ }
+ else if (ct連打枠カウンター[player].CurrentValue == 3 || ct連打枠カウンター[player].CurrentValue == 57)
+ {
+ bNowRollAnime = 3;
+ TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 255;
+ }
+ else if (ct連打枠カウンター[player].CurrentValue >= 4 || ct連打枠カウンター[player].CurrentValue <= 56)
+ {
+ bNowRollAnime = 4;
+ TJAPlayer3.Tx.Balloon_Number_Roll.Opacity = 255;
+ }
+
+ float width = TJAPlayer3.Tx.Balloon_Roll.szTextureSize.Width / 5.0f;
+ float height = TJAPlayer3.Tx.Balloon_Roll.szTextureSize.Height;
+
+ TJAPlayer3.Tx.Balloon_Roll?.t2D描画(TJAPlayer3.Skin.Game_Balloon_Roll_Frame_X[player], TJAPlayer3.Skin.Game_Balloon_Roll_Frame_Y[player], new RectangleF(0 + bNowRollAnime * width, 0, width, height));
+ this.t文字表示(TJAPlayer3.Skin.Game_Balloon_Roll_Number_X[player], TJAPlayer3.Skin.Game_Balloon_Roll_Number_Y[player], n連打数, player);
+ }
+ }
+
+ return base.Draw();
+ }
+
+ public void t枠表示時間延長(int player, bool first)
+ {
+ if ((this.ct連打枠カウンター[player].CurrentValue >= 6 && !first) || first)
+ this.ct連打枠カウンター[player] = new CCounter(0, 60, 40, TJAPlayer3.Timer);
+
+ if(!first)
+ this.ct連打枠カウンター[player].CurrentValue = 5;
+ else
+ this.ct連打枠カウンター[player].CurrentValue = 0;
+ }
+
+ public int bNowRollAnime;
+ public bool[] b表示;
+ public int[] n連打数;
+ public CCounter[] ct連打枠カウンター;
+
+ public CCounter[] ct連打アニメ;
+ private float[] RollScale = new float[]
+ {
+ 0.000f,
+ 0.123f, // リピート
+ 0.164f,
+ 0.164f,
+ 0.164f,
+ 0.137f,
+ 0.110f,
+ 0.082f,
+ 0.055f,
+ 0.000f
+ };
+ private Animations.FadeOut[] FadeOut;
+
+ [StructLayout(LayoutKind.Sequential)]
+ private struct ST文字位置
+ {
+ public char ch;
+ public Point pt;
+ }
+
+ private void t文字表示( int x, int y, int num, int nPlayer)
+ {
+ TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.X = TJAPlayer3.Skin.Game_Balloon_Roll_Number_Scale;
+ TJAPlayer3.Tx.Balloon_Number_Roll.vcScaleRatio.Y = TJAPlayer3.Skin.Game_Balloon_Roll_Number_Scale + RollScale[this.ct連打アニメ[nPlayer].CurrentValue];
+
+ int[] nums = CConversion.SeparateDigits(num);
+ for (int j = 0; j < nums.Length; j++)
+ {
+ float offset = j - (nums.Length / 2.0f);
+ float _x = x - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[0] * offset);
+ float _y = y - (TJAPlayer3.Skin.Game_Balloon_Number_Interval[1] * offset);
+
+ float width = TJAPlayer3.Tx.Balloon_Number_Roll.sz画像サイズ.Width / 10.0f;
+ float height = TJAPlayer3.Tx.Balloon_Number_Roll.sz画像サイズ.Height;
+
+ TJAPlayer3.Tx.Balloon_Number_Roll.t2D拡大率考慮下基準描画(_x, _y, new RectangleF(width * nums[j], 0, width, height));
+ }
+ }
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打キャラ.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRollEffect.cs
similarity index 66%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打キャラ.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplRollEffect.cs
index 8750c0db..b0eff380 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drums連打キャラ.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRollEffect.cs
@@ -7,11 +7,11 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drums連打キャラ : CActivity
+ internal class CActImplRollEffect : CActivity
{
// コンストラクタ
- public CAct演奏Drums連打キャラ()
+ public CActImplRollEffect()
{
base.IsDeActivated = true;
}
@@ -22,32 +22,6 @@ namespace TJAPlayer3
{
if (TJAPlayer3.ConfigIni.SimpleMode) return;
- //if( CDTXMania.Tx.Effects_Roll[0] != null )
- //{
- // int[] arXseed = new int[] { 56, -10, 200, 345, 100, 451, 600, 260, -30, 534, 156, 363 };
- // for (int i = 0; i < 1; i++)
- // {
- // for (int j = 0; j < 64; j++)
- // {
- // if (!this.st連打キャラ[j].b使用中)
- // {
- // this.st連打キャラ[j].b使用中 = true;
- // if(this.nTex枚数 <= 1) this.st連打キャラ[j].nColor = 0;
- // else this.st連打キャラ[j].nColor = CDTXMania.Random.Next( 0, this.nTex枚数 - 1);
- // this.st連打キャラ[j].ct進行 = new CCounter( 0, 1000, 4, CDTXMania.Timer); // カウンタ
-
- // //位置生成(β版)
- // int nXseed = CDTXMania.Random.Next(12);
- // this.st連打キャラ[ j ].fX開始点 = arXseed[ nXseed ];
- // this.st連打キャラ[j].fX = arXseed[ nXseed ];
- // this.st連打キャラ[j].fY = 720;
- // this.st連打キャラ[j].fX加速度 = 5/2;
- // this.st連打キャラ[j].fY加速度 = 5/2;
- // break;
- // }
- // }
- // }
- //}
for (int i = 0; i < 128; i++)
{
if(!RollCharas[i].IsUsing)
@@ -93,12 +67,7 @@ namespace TJAPlayer3
public override void Activate()
{
- //for (int i = 0; i < 64; i++)
- //{
- // this.st連打キャラ[i] = new ST連打キャラ();
- // this.st連打キャラ[i].b使用中 = false;
- // this.st連打キャラ[i].ct進行 = new CCounter();
- //}
+
for (int i = 0; i < 128; i++)
{
RollCharas[i] = new RollChara();
@@ -111,10 +80,7 @@ namespace TJAPlayer3
}
public override void DeActivate()
{
- //for (int i = 0; i < 64; i++)
- //{
- // this.st連打キャラ[i].ct進行 = null;
- //}
+
for (int i = 0; i < 128; i++)
{
RollCharas[i].Counter = null;
@@ -123,51 +89,18 @@ namespace TJAPlayer3
}
public override void CreateManagedResource()
{
- //this.nTex枚数 = 4;
- //this.txChara = new CTexture[ this.nTex枚数 ];
- //for (int i = 0; i < this.nTex枚数; i++)
- //{
- // this.txChara[ i ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\RollEffect\00\" + i.ToString() + ".png" ) );
- //}
base.CreateManagedResource();
}
public override void ReleaseManagedResource()
{
- // for (int i = 0; i < this.nTex枚数; i++)
- // {
- //CDTXMania.tテクスチャの解放( ref this.txChara[ i ] );
- // }
+
base.ReleaseManagedResource();
}
- public override int Draw()
+ public override int Draw()
{
if ( !base.IsDeActivated && !TJAPlayer3.ConfigIni.SimpleMode)
{
- //for( int i = 0; i < 64; i++ )
- //{
- // if( this.st連打キャラ[i].b使用中 )
- // {
- // this.st連打キャラ[i].n前回のValue = this.st連打キャラ[i].ct進行.n現在の値;
- // this.st連打キャラ[i].ct進行.t進行();
- // if (this.st連打キャラ[i].ct進行.b終了値に達した)
- // {
- // this.st連打キャラ[i].ct進行.t停止();
- // this.st連打キャラ[i].b使用中 = false;
- // }
- // for (int n = this.st連打キャラ[i].n前回のValue; n < this.st連打キャラ[i].ct進行.n現在の値; n++)
- // {
- // this.st連打キャラ[i].fX += this.st連打キャラ[i].fX加速度;
- // this.st連打キャラ[i].fY -= this.st連打キャラ[i].fY加速度;
- // }
-
- // if(CDTXMania.Tx.Effects_Roll[ this.st連打キャラ[ i ].nColor ] != null )
- // {
- // CDTXMania.Tx.Effects_Roll[ this.st連打キャラ[ i ].nColor ].t2D描画( CDTXMania.app.Device, (int)this.st連打キャラ[i].fX, (int)this.st連打キャラ[i].fY, new Rectangle( this.st連打キャラ[i].nColor * 0, 0, 128, 128 ) );
- // }
- // }
-
- //}
if (TJAPlayer3.ConfigIni.nPlayerCount > 2) return 0;
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsRunner.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs
similarity index 96%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsRunner.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs
index fff9bd4e..f85315bc 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsRunner.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplRunner.cs
@@ -1,281 +1,281 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using FDK;
-using System.Diagnostics;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsRunner : CActivity
- {
- ///
- /// ランナー
- ///
- public CAct演奏DrumsRunner()
- {
- base.IsDeActivated = true;
- }
-
- public void Start(int Player, bool IsMiss, CDTX.CChip pChip)
- {
- if (Runner != null && !TJAPlayer3.ConfigIni.SimpleMode)
- {
- while (stRunners[Index].b使用中)
- {
- Index += 1;
- if (Index >= 128)
- {
- Index = 0;
- break; // 2018.6.15 IMARER 無限ループが発生するので修正
- }
- }
- if (pChip.nチャンネル番号 < 0x15 || (pChip.nチャンネル番号 >= 0x1A))
- {
- if (!stRunners[Index].b使用中)
- {
- stRunners[Index].b使用中 = true;
- stRunners[Index].nPlayer = Player;
- if (IsMiss == true)
- {
- stRunners[Index].nType = 0;
- }
- else
- {
- stRunners[Index].nType = random.Next(1, Type + 1);
- }
- stRunners[Index].ct進行 = new CCounter(0, TJAPlayer3.Skin.Resolution[0], Timer, TJAPlayer3.Timer);
- stRunners[Index].nOldValue = 0;
- stRunners[Index].nNowPtn = 0;
- stRunners[Index].fX = 0;
- }
-
- }
- }
- }
-
- public override void Activate()
- {
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- base.Activate();
- return;
- }
-
- for (int i = 0; i < 128; i++)
- {
- stRunners[i] = new STRunner();
- stRunners[i].b使用中 = false;
- stRunners[i].ct進行 = new CCounter();
- }
-
- var preset = HScenePreset.GetBGPreset();
-
- Random random = new Random();
-
- var dancerOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.RUNNER}");
- if (System.IO.Directory.Exists($@"{dancerOrigindir}"))
- {
- var dirs = System.IO.Directory.GetDirectories($@"{dancerOrigindir}");
- if (dirs.Length > 0)
- {
- var _presetPath = (preset != null && preset.RunnerSet != null) ? $@"{dancerOrigindir}" + preset.RunnerSet[random.Next(0, preset.RunnerSet.Length)] : "";
- var path = (preset != null && System.IO.Directory.Exists(_presetPath))
- ? _presetPath
- : dirs[random.Next(0, dirs.Length)];
- LoadRunnerConifg(path);
-
- Runner = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}Runner.png");
- }
- }
-
- // フィールド上で代入してたためこちらへ移動。
- base.Activate();
- }
-
- public override void DeActivate()
- {
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- base.DeActivate();
- return;
- }
-
- for (int i = 0; i < 128; i++)
- {
- stRunners[i].ct進行 = null;
- }
-
- TJAPlayer3.tDisposeSafely(ref Runner);
-
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
-
- public override int Draw()
- {
- if (TJAPlayer3.ConfigIni.SimpleMode)
- {
- return base.Draw();
- }
-
- for (int i = 0; i < 128; i++)
- {
- if (stRunners[i].b使用中)
- {
- stRunners[i].nOldValue = stRunners[i].ct進行.CurrentValue;
- stRunners[i].ct進行.Tick();
- if (stRunners[i].ct進行.IsEnded || stRunners[i].fX > TJAPlayer3.Skin.Resolution[0])
- {
- stRunners[i].ct進行.Stop();
- stRunners[i].b使用中 = false;
- }
- for (int n = stRunners[i].nOldValue; n < stRunners[i].ct進行.CurrentValue; n++)
- {
- stRunners[i].fX += (float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[stRunners[i].nPlayer] / 18;
- int Width = TJAPlayer3.Skin.Resolution[0] / Ptn;
- stRunners[i].nNowPtn = (int)stRunners[i].fX / Width;
- }
- if (Runner != null)
- {
- if (stRunners[i].nPlayer == 0)
- {
- Runner.t2D描画((int)(StartPoint_X[0] + stRunners[i].fX), StartPoint_Y[0], new Rectangle(stRunners[i].nNowPtn * Size[0], stRunners[i].nType * Size[1], Size[0], Size[1]));
- }
- else
- {
- Runner.t2D描画((int)(StartPoint_X[1] + stRunners[i].fX), StartPoint_Y[1], new Rectangle(stRunners[i].nNowPtn * Size[0], stRunners[i].nType * Size[1], Size[0], Size[1]));
- }
- }
- }
- }
- return base.Draw();
- }
-
- #region[ private ]
- //-----------------
- [StructLayout(LayoutKind.Sequential)]
- private struct STRunner
- {
- public bool b使用中;
- public int nPlayer;
- public int nType;
- public int nOldValue;
- public int nNowPtn;
- public float fX;
- public CCounter ct進行;
- }
- private STRunner[] stRunners = new STRunner[128];
- Random random = new Random();
- int Index = 0;
-
- private CTexture Runner;
-
- private void LoadRunnerConifg(string dancerPath)
- {
- var _str = "";
- TJAPlayer3.Skin.LoadSkinConfigFromFile(dancerPath + @"\RunnerConfig.txt", ref _str);
-
- string[] delimiter = { "\n" };
- string[] strSingleLine = _str.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
-
- Size = new int[2] { 60, 125 };
- Ptn = 48;
- Type = 4;
- StartPoint_X = new int[2] { 175, 175 };
- StartPoint_Y = new int[2] { 40, 560 };
- Timer = 16;
-
- foreach (string s in strSingleLine)
- {
- string str = s.Replace('\t', ' ').TrimStart(new char[] { '\t', ' ' });
- if ((str.Length != 0) && (str[0] != ';'))
- {
- try
- {
- string strCommand;
- string strParam;
- string[] strArray = str.Split(new char[] { '=' });
-
- if (strArray.Length == 2)
- {
- strCommand = strArray[0].Trim();
- strParam = strArray[1].Trim();
-
- if (strCommand == "Game_Runner_Size")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < 2; i++)
- {
- Size[i] = int.Parse(strSplit[i]);
- }
- }
- else if (strCommand == "Game_Runner_Ptn")
- {
- Ptn = int.Parse(strParam);
- }
- else if (strCommand == "Game_Runner_Type")
- {
- Type = int.Parse(strParam);
- }
- else if (strCommand == "Game_Runner_Timer")
- {
- Timer = int.Parse(strParam);
- }
- else if (strCommand == "Game_Runner_StartPoint_X")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < 2; i++)
- {
- StartPoint_X[i] = int.Parse(strSplit[i]);
- }
- }
- else if (strCommand == "Game_Runner_StartPoint_Y")
- {
- string[] strSplit = strParam.Split(',');
- for (int i = 0; i < 2; i++)
- {
- StartPoint_Y[i] = int.Parse(strSplit[i]);
- }
- }
-
- }
- continue;
- }
- catch (Exception exception)
- {
- Trace.TraceError(exception.ToString());
- Trace.TraceError("例外が発生しましたが処理を継続します。 (6a32cc37-1527-412e-968a-512c1f0135cd)");
- continue;
- }
- }
- }
-
- }
-
- // ランナー画像のサイズ。 X, Y
- private int[] Size;
- // ランナーのコマ数
- private int Ptn;
- // ランナーのキャラクターのバリエーション(ミス時を含まない)。
- private int Type;
- private int Timer;
- // スタート地点のX座標 1P, 2P
- private int[] StartPoint_X;
- // スタート地点のY座標 1P, 2P
- private int[] StartPoint_Y;
-
- //-----------------
- #endregion
- }
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using FDK;
+using System.Diagnostics;
+
+namespace TJAPlayer3
+{
+ internal class CActImplRunner : CActivity
+ {
+ ///
+ /// ランナー
+ ///
+ public CActImplRunner()
+ {
+ base.IsDeActivated = true;
+ }
+
+ public void Start(int Player, bool IsMiss, CDTX.CChip pChip)
+ {
+ if (Runner != null && !TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ while (stRunners[Index].b使用中)
+ {
+ Index += 1;
+ if (Index >= 128)
+ {
+ Index = 0;
+ break; // 2018.6.15 IMARER 無限ループが発生するので修正
+ }
+ }
+ if (pChip.nチャンネル番号 < 0x15 || (pChip.nチャンネル番号 >= 0x1A))
+ {
+ if (!stRunners[Index].b使用中)
+ {
+ stRunners[Index].b使用中 = true;
+ stRunners[Index].nPlayer = Player;
+ if (IsMiss == true)
+ {
+ stRunners[Index].nType = 0;
+ }
+ else
+ {
+ stRunners[Index].nType = random.Next(1, Type + 1);
+ }
+ stRunners[Index].ct進行 = new CCounter(0, TJAPlayer3.Skin.Resolution[0], Timer, TJAPlayer3.Timer);
+ stRunners[Index].nOldValue = 0;
+ stRunners[Index].nNowPtn = 0;
+ stRunners[Index].fX = 0;
+ }
+
+ }
+ }
+ }
+
+ public override void Activate()
+ {
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ base.Activate();
+ return;
+ }
+
+ for (int i = 0; i < 128; i++)
+ {
+ stRunners[i] = new STRunner();
+ stRunners[i].b使用中 = false;
+ stRunners[i].ct進行 = new CCounter();
+ }
+
+ var preset = HScenePreset.GetBGPreset();
+
+ Random random = new Random();
+
+ var dancerOrigindir = CSkin.Path($"{TextureLoader.BASE}{TextureLoader.GAME}{TextureLoader.RUNNER}");
+ if (System.IO.Directory.Exists($@"{dancerOrigindir}"))
+ {
+ var dirs = System.IO.Directory.GetDirectories($@"{dancerOrigindir}");
+ if (dirs.Length > 0)
+ {
+ var _presetPath = (preset != null && preset.RunnerSet != null) ? $@"{dancerOrigindir}" + preset.RunnerSet[random.Next(0, preset.RunnerSet.Length)] : "";
+ var path = (preset != null && System.IO.Directory.Exists(_presetPath))
+ ? _presetPath
+ : dirs[random.Next(0, dirs.Length)];
+ LoadRunnerConifg(path);
+
+ Runner = TJAPlayer3.tテクスチャの生成($@"{path}{Path.DirectorySeparatorChar}Runner.png");
+ }
+ }
+
+ // フィールド上で代入してたためこちらへ移動。
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ base.DeActivate();
+ return;
+ }
+
+ for (int i = 0; i < 128; i++)
+ {
+ stRunners[i].ct進行 = null;
+ }
+
+ TJAPlayer3.tDisposeSafely(ref Runner);
+
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+ base.ReleaseManagedResource();
+ }
+
+ public override int Draw()
+ {
+ if (TJAPlayer3.ConfigIni.SimpleMode)
+ {
+ return base.Draw();
+ }
+
+ for (int i = 0; i < 128; i++)
+ {
+ if (stRunners[i].b使用中)
+ {
+ stRunners[i].nOldValue = stRunners[i].ct進行.CurrentValue;
+ stRunners[i].ct進行.Tick();
+ if (stRunners[i].ct進行.IsEnded || stRunners[i].fX > TJAPlayer3.Skin.Resolution[0])
+ {
+ stRunners[i].ct進行.Stop();
+ stRunners[i].b使用中 = false;
+ }
+ for (int n = stRunners[i].nOldValue; n < stRunners[i].ct進行.CurrentValue; n++)
+ {
+ stRunners[i].fX += (float)TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[stRunners[i].nPlayer] / 18;
+ int Width = TJAPlayer3.Skin.Resolution[0] / Ptn;
+ stRunners[i].nNowPtn = (int)stRunners[i].fX / Width;
+ }
+ if (Runner != null)
+ {
+ if (stRunners[i].nPlayer == 0)
+ {
+ Runner.t2D描画((int)(StartPoint_X[0] + stRunners[i].fX), StartPoint_Y[0], new Rectangle(stRunners[i].nNowPtn * Size[0], stRunners[i].nType * Size[1], Size[0], Size[1]));
+ }
+ else
+ {
+ Runner.t2D描画((int)(StartPoint_X[1] + stRunners[i].fX), StartPoint_Y[1], new Rectangle(stRunners[i].nNowPtn * Size[0], stRunners[i].nType * Size[1], Size[0], Size[1]));
+ }
+ }
+ }
+ }
+ return base.Draw();
+ }
+
+ #region[ private ]
+ //-----------------
+ [StructLayout(LayoutKind.Sequential)]
+ private struct STRunner
+ {
+ public bool b使用中;
+ public int nPlayer;
+ public int nType;
+ public int nOldValue;
+ public int nNowPtn;
+ public float fX;
+ public CCounter ct進行;
+ }
+ private STRunner[] stRunners = new STRunner[128];
+ Random random = new Random();
+ int Index = 0;
+
+ private CTexture Runner;
+
+ private void LoadRunnerConifg(string dancerPath)
+ {
+ var _str = "";
+ TJAPlayer3.Skin.LoadSkinConfigFromFile(dancerPath + @"\RunnerConfig.txt", ref _str);
+
+ string[] delimiter = { "\n" };
+ string[] strSingleLine = _str.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
+
+ Size = new int[2] { 60, 125 };
+ Ptn = 48;
+ Type = 4;
+ StartPoint_X = new int[2] { 175, 175 };
+ StartPoint_Y = new int[2] { 40, 560 };
+ Timer = 16;
+
+ foreach (string s in strSingleLine)
+ {
+ string str = s.Replace('\t', ' ').TrimStart(new char[] { '\t', ' ' });
+ if ((str.Length != 0) && (str[0] != ';'))
+ {
+ try
+ {
+ string strCommand;
+ string strParam;
+ string[] strArray = str.Split(new char[] { '=' });
+
+ if (strArray.Length == 2)
+ {
+ strCommand = strArray[0].Trim();
+ strParam = strArray[1].Trim();
+
+ if (strCommand == "Game_Runner_Size")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < 2; i++)
+ {
+ Size[i] = int.Parse(strSplit[i]);
+ }
+ }
+ else if (strCommand == "Game_Runner_Ptn")
+ {
+ Ptn = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Runner_Type")
+ {
+ Type = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Runner_Timer")
+ {
+ Timer = int.Parse(strParam);
+ }
+ else if (strCommand == "Game_Runner_StartPoint_X")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < 2; i++)
+ {
+ StartPoint_X[i] = int.Parse(strSplit[i]);
+ }
+ }
+ else if (strCommand == "Game_Runner_StartPoint_Y")
+ {
+ string[] strSplit = strParam.Split(',');
+ for (int i = 0; i < 2; i++)
+ {
+ StartPoint_Y[i] = int.Parse(strSplit[i]);
+ }
+ }
+
+ }
+ continue;
+ }
+ catch (Exception exception)
+ {
+ Trace.TraceError(exception.ToString());
+ Trace.TraceError("例外が発生しましたが処理を継続します。 (6a32cc37-1527-412e-968a-512c1f0135cd)");
+ continue;
+ }
+ }
+ }
+
+ }
+
+ // ランナー画像のサイズ。 X, Y
+ private int[] Size;
+ // ランナーのコマ数
+ private int Ptn;
+ // ランナーのキャラクターのバリエーション(ミス時を含まない)。
+ private int Type;
+ private int Timer;
+ // スタート地点のX座標 1P, 2P
+ private int[] StartPoint_X;
+ // スタート地点のY座標 1P, 2P
+ private int[] StartPoint_Y;
+
+ //-----------------
+ #endregion
+ }
}
\ No newline at end of file
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコア.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs
similarity index 99%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコア.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs
index 276d51b3..3f83edfd 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコア.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScore.cs
@@ -7,7 +7,7 @@ using FDK;
namespace TJAPlayer3
{
- internal class CAct演奏Drumsスコア : CAct演奏スコア共通
+ internal class CActImplScore : CAct演奏スコア共通
{
// CActivity 実装(共通クラスからの差分のみ)
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコアランク.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScoreRank.cs
similarity index 97%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコアランク.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplScoreRank.cs
index 14d9bb61..0b6df200 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsスコアランク.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplScoreRank.cs
@@ -1,266 +1,266 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using FDK;
-
-namespace TJAPlayer3
-{
- class CAct演奏Drumsスコアランク : CActivity
- {
- public override void Activate()
- {
- double RollTimems = 0;
-
- /*
- foreach (var chip in TJAPlayer3.DTX.listChip)
- {
- if (NotesManager.IsRoll(chip))
- {
- RollTimems += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
- }
- }
- */
-
- for (int player = 0; player < 5; player++)
- {
- this.ScoreRank[player] = new int[] { 500000, 600000, 700000, 800000, 900000, 950000,
- Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[player] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[player]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[player] * 100) + (int)(Math.Ceiling(TJAPlayer3.stage演奏ドラム画面.nRollTimeMs[player] * 16.6 / 10) * 100 * 10)) };
-
- for (int i = 0; i < 7; i++)
- {
- this.counter[player][i] = new CCounter();
- }
- }
- base.Activate();
- }
-
- public override void DeActivate()
- {
- base.DeActivate();
- }
-
- public override void CreateManagedResource()
- {
- TowerResult_ScoreRankEffect = TJAPlayer3.tテクスチャの生成(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.TOWERRESULT}ScoreRankEffect.png"));
-
- base.CreateManagedResource();
- }
-
- public override void ReleaseManagedResource()
- {
-
- TJAPlayer3.tDisposeSafely(ref TowerResult_ScoreRankEffect);
-
- base.ReleaseManagedResource();
- }
-
- private void displayScoreRank(int i, int player, float x, float y, int mode = 0)
- {
- CCounter cct = this.counter[player][i];
-
- CTexture tex = TJAPlayer3.Tx.ScoreRank;
- if (mode == 1) // tower
- tex = TowerResult_ScoreRankEffect;
-
- if (tex == null)
- return;
-
- if (!cct.IsTicked)
- {
- cct.Start(0, 3000, 1, TJAPlayer3.Timer);
- }
- if (cct.CurrentValue <= 255)
- {
- tex.Opacity = cct.CurrentValue;
- x = ((cct.CurrentValue / 255.0f) - 1.0f) * (player == 0 ? -TJAPlayer3.Skin.Game_Judge_Move[0] : TJAPlayer3.Skin.Game_Judge_Move[0]);
- y = ((cct.CurrentValue / 255.0f) - 1.0f) * (player == 0 ? -TJAPlayer3.Skin.Game_Judge_Move[1] : TJAPlayer3.Skin.Game_Judge_Move[1]);
- }
- if (cct.CurrentValue > 255 && cct.CurrentValue <= 255 + 180)
- {
- tex.Opacity = 255;
-
- float newSize = 1.0f + (float)Math.Sin((cct.CurrentValue - 255) * (Math.PI / 180)) * 0.2f;
- tex.vcScaleRatio.X = newSize;
- tex.vcScaleRatio.Y = newSize;
- x = 0;
- y = 0;
- }
- if (cct.CurrentValue > 255 + 180 && cct.CurrentValue <= 2745)
- {
- tex.Opacity = 255;
- tex.vcScaleRatio.X = 1.0f;
- tex.vcScaleRatio.Y = 1.0f;
- x = 0;
- y = 0;
- }
- if (cct.CurrentValue >= 2745 && cct.CurrentValue <= 3000)
- {
- tex.Opacity = 255 - ((cct.CurrentValue - 2745));
- x = ((cct.CurrentValue - 2745) / 255.0f) * (player == 0 || TJAPlayer3.ConfigIni.nPlayerCount >= 2 ? -TJAPlayer3.Skin.Game_Judge_Move[0] : TJAPlayer3.Skin.Game_Judge_Move[0]);
- y = ((cct.CurrentValue - 2745) / 255.0f) * (player == 0 || TJAPlayer3.ConfigIni.nPlayerCount >= 2 ? -TJAPlayer3.Skin.Game_Judge_Move[1] : TJAPlayer3.Skin.Game_Judge_Move[1]);
- }
-
- var xpos = 0;
- var ypos = 0;
- if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
- {
- xpos = TJAPlayer3.Skin.Game_ScoreRank_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
- ypos = TJAPlayer3.Skin.Game_ScoreRank_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
- }
- else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
- {
- xpos = TJAPlayer3.Skin.Game_ScoreRank_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
- ypos = TJAPlayer3.Skin.Game_ScoreRank_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
- }
- else
- {
- xpos = TJAPlayer3.Skin.Game_ScoreRank_X[player];
- ypos = TJAPlayer3.Skin.Game_ScoreRank_Y[player];
- }
- xpos += (int)x;
- ypos += (int)y;
-
- int width;
- int height;
-
- switch (mode)
- {
- case 1:
- width = tex.szTextureSize.Width / 7;
- height = tex.szTextureSize.Height;
- break;
- default:
- width = tex.szTextureSize.Width;
- height = tex.szTextureSize.Height / 7;
- break;
- }
-
- if (mode == 0)
- tex.t2D拡大率考慮中央基準描画(xpos, ypos, new System.Drawing.Rectangle(0, height * i, width, height));
- else if (mode == 1 && player == 0)
- tex.t2D拡大率考慮中央基準描画(xpos, ypos, new System.Drawing.Rectangle(width * i, 0, width, height));
- }
-
- public override int Draw()
- {
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
- {
- float x = 0;
- float y = 0;
-
- for (int i = 0; i < 7; i++)
- {
- if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Tower)
- {
-
- for (int player = 0; player < 5; player++)
- {
- #region [Ensou score ranks]
-
- counter[player][i].Tick();
- if (TJAPlayer3.stage演奏ドラム画面.actScore.GetScore(player) >= ScoreRank[player][i])
- {
- displayScoreRank(i, player, x, y);
-
- #region [Legacy]
-
- /*
- if (!this.counter[i].b進行中)
- {
- this.counter[i].t開始(0, 3000, 1, TJAPlayer3.Timer);
- }
- if (counter[i].n現在の値 <= 255)
- {
- TJAPlayer3.Tx.ScoreRank.Opacity = counter[i].n現在の値;
- x = 51 - (counter[i].n現在の値 / 5.0f);
- }
- if (counter[i].n現在の値 > 255 && counter[i].n現在の値 <= 255 + 180)
- {
- TJAPlayer3.Tx.ScoreRank.Opacity = 255;
- TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.X = 1.0f + (float)Math.Sin((counter[i].n現在の値 - 255) * (Math.PI / 180)) * 0.2f;
- TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.Y = 1.0f + (float)Math.Sin((counter[i].n現在の値 - 255) * (Math.PI / 180)) * 0.2f;
- x = 0;
- }
- if (counter[i].n現在の値 > 255 + 180 && counter[i].n現在の値 <= 2745)
- {
- TJAPlayer3.Tx.ScoreRank.Opacity = 255;
- TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.X = 1.0f;
- TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.Y = 1.0f;
- x = 0;
- }
- if (counter[i].n現在の値 >= 2745 && counter[i].n現在の値 <= 3000)
- {
- TJAPlayer3.Tx.ScoreRank.Opacity = 255 - ((counter[i].n現在の値 - 2745));
- x = -((counter[i].n現在の値 - 2745) / 5.0f);
- }
-
- TJAPlayer3.Tx.ScoreRank.t2D拡大率考慮中央基準描画(87, 98 + (int)x, new System.Drawing.Rectangle(0, i == 0 ? i * 114 : i * 120, 140, i == 0 ? 114 : 120));
- */
-
- #endregion
- }
-
- x = 0;
- }
- #endregion
- }
- else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
- {
- #region [Tower score ranks]
-
- double progress = CFloorManagement.LastRegisteredFloor / ((double)TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor);
-
- bool[] conditions =
- {
- progress >= 0.1,
- progress >= 0.25,
- progress >= 0.5,
- progress >= 0.75,
- progress == 1 && CFloorManagement.CurrentNumberOfLives > 0,
- TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0,
- TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0
- };
-
- counter[0][i].Tick();
-
- bool satisfied = true;
- for (int j = 0; j <= i; j++)
- if (conditions[j] == false)
- {
- satisfied = false;
- break;
- }
-
-
- if (satisfied == true)
- {
- displayScoreRank(i, 0, x, y, 1);
- }
-
- #endregion
- }
- }
-
-
- }
-
- //TJAPlayer3.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, ScoreRank[6].ToString());
- //TJAPlayer3.act文字コンソール.tPrint(0, 10, C文字コンソール.Eフォント種別.白, ScoreRank2P[6].ToString());
-
- return base.Draw();
- }
-
- private CTexture TowerResult_ScoreRankEffect;
-
- public int[][] ScoreRank = new int[5][];
- private CCounter[][] counter = new CCounter[5][] {
- new CCounter[7],
- new CCounter[7],
- new CCounter[7],
- new CCounter[7],
- new CCounter[7]
- };
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FDK;
+
+namespace TJAPlayer3
+{
+ class CActImplScoreRank : CActivity
+ {
+ public override void Activate()
+ {
+ double RollTimems = 0;
+
+ /*
+ foreach (var chip in TJAPlayer3.DTX.listChip)
+ {
+ if (NotesManager.IsRoll(chip))
+ {
+ RollTimems += (chip.nノーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
+ }
+ }
+ */
+
+ for (int player = 0; player < 5; player++)
+ {
+ this.ScoreRank[player] = new int[] { 500000, 600000, 700000, 800000, 900000, 950000,
+ Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[player] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[player]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[player] * 100) + (int)(Math.Ceiling(TJAPlayer3.stage演奏ドラム画面.nRollTimeMs[player] * 16.6 / 10) * 100 * 10)) };
+
+ for (int i = 0; i < 7; i++)
+ {
+ this.counter[player][i] = new CCounter();
+ }
+ }
+ base.Activate();
+ }
+
+ public override void DeActivate()
+ {
+ base.DeActivate();
+ }
+
+ public override void CreateManagedResource()
+ {
+ TowerResult_ScoreRankEffect = TJAPlayer3.tテクスチャの生成(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.TOWERRESULT}ScoreRankEffect.png"));
+
+ base.CreateManagedResource();
+ }
+
+ public override void ReleaseManagedResource()
+ {
+
+ TJAPlayer3.tDisposeSafely(ref TowerResult_ScoreRankEffect);
+
+ base.ReleaseManagedResource();
+ }
+
+ private void displayScoreRank(int i, int player, float x, float y, int mode = 0)
+ {
+ CCounter cct = this.counter[player][i];
+
+ CTexture tex = TJAPlayer3.Tx.ScoreRank;
+ if (mode == 1) // tower
+ tex = TowerResult_ScoreRankEffect;
+
+ if (tex == null)
+ return;
+
+ if (!cct.IsTicked)
+ {
+ cct.Start(0, 3000, 1, TJAPlayer3.Timer);
+ }
+ if (cct.CurrentValue <= 255)
+ {
+ tex.Opacity = cct.CurrentValue;
+ x = ((cct.CurrentValue / 255.0f) - 1.0f) * (player == 0 ? -TJAPlayer3.Skin.Game_Judge_Move[0] : TJAPlayer3.Skin.Game_Judge_Move[0]);
+ y = ((cct.CurrentValue / 255.0f) - 1.0f) * (player == 0 ? -TJAPlayer3.Skin.Game_Judge_Move[1] : TJAPlayer3.Skin.Game_Judge_Move[1]);
+ }
+ if (cct.CurrentValue > 255 && cct.CurrentValue <= 255 + 180)
+ {
+ tex.Opacity = 255;
+
+ float newSize = 1.0f + (float)Math.Sin((cct.CurrentValue - 255) * (Math.PI / 180)) * 0.2f;
+ tex.vcScaleRatio.X = newSize;
+ tex.vcScaleRatio.Y = newSize;
+ x = 0;
+ y = 0;
+ }
+ if (cct.CurrentValue > 255 + 180 && cct.CurrentValue <= 2745)
+ {
+ tex.Opacity = 255;
+ tex.vcScaleRatio.X = 1.0f;
+ tex.vcScaleRatio.Y = 1.0f;
+ x = 0;
+ y = 0;
+ }
+ if (cct.CurrentValue >= 2745 && cct.CurrentValue <= 3000)
+ {
+ tex.Opacity = 255 - ((cct.CurrentValue - 2745));
+ x = ((cct.CurrentValue - 2745) / 255.0f) * (player == 0 || TJAPlayer3.ConfigIni.nPlayerCount >= 2 ? -TJAPlayer3.Skin.Game_Judge_Move[0] : TJAPlayer3.Skin.Game_Judge_Move[0]);
+ y = ((cct.CurrentValue - 2745) / 255.0f) * (player == 0 || TJAPlayer3.ConfigIni.nPlayerCount >= 2 ? -TJAPlayer3.Skin.Game_Judge_Move[1] : TJAPlayer3.Skin.Game_Judge_Move[1]);
+ }
+
+ var xpos = 0;
+ var ypos = 0;
+ if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
+ {
+ xpos = TJAPlayer3.Skin.Game_ScoreRank_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * player);
+ ypos = TJAPlayer3.Skin.Game_ScoreRank_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * player);
+ }
+ else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
+ {
+ xpos = TJAPlayer3.Skin.Game_ScoreRank_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * player);
+ ypos = TJAPlayer3.Skin.Game_ScoreRank_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * player);
+ }
+ else
+ {
+ xpos = TJAPlayer3.Skin.Game_ScoreRank_X[player];
+ ypos = TJAPlayer3.Skin.Game_ScoreRank_Y[player];
+ }
+ xpos += (int)x;
+ ypos += (int)y;
+
+ int width;
+ int height;
+
+ switch (mode)
+ {
+ case 1:
+ width = tex.szTextureSize.Width / 7;
+ height = tex.szTextureSize.Height;
+ break;
+ default:
+ width = tex.szTextureSize.Width;
+ height = tex.szTextureSize.Height / 7;
+ break;
+ }
+
+ if (mode == 0)
+ tex.t2D拡大率考慮中央基準描画(xpos, ypos, new System.Drawing.Rectangle(0, height * i, width, height));
+ else if (mode == 1 && player == 0)
+ tex.t2D拡大率考慮中央基準描画(xpos, ypos, new System.Drawing.Rectangle(width * i, 0, width, height));
+ }
+
+ public override int Draw()
+ {
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan)
+ {
+ float x = 0;
+ float y = 0;
+
+ for (int i = 0; i < 7; i++)
+ {
+ if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Tower)
+ {
+
+ for (int player = 0; player < 5; player++)
+ {
+ #region [Ensou score ranks]
+
+ counter[player][i].Tick();
+ if (TJAPlayer3.stage演奏ドラム画面.actScore.GetScore(player) >= ScoreRank[player][i])
+ {
+ displayScoreRank(i, player, x, y);
+
+ #region [Legacy]
+
+ /*
+ if (!this.counter[i].b進行中)
+ {
+ this.counter[i].t開始(0, 3000, 1, TJAPlayer3.Timer);
+ }
+ if (counter[i].n現在の値 <= 255)
+ {
+ TJAPlayer3.Tx.ScoreRank.Opacity = counter[i].n現在の値;
+ x = 51 - (counter[i].n現在の値 / 5.0f);
+ }
+ if (counter[i].n現在の値 > 255 && counter[i].n現在の値 <= 255 + 180)
+ {
+ TJAPlayer3.Tx.ScoreRank.Opacity = 255;
+ TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.X = 1.0f + (float)Math.Sin((counter[i].n現在の値 - 255) * (Math.PI / 180)) * 0.2f;
+ TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.Y = 1.0f + (float)Math.Sin((counter[i].n現在の値 - 255) * (Math.PI / 180)) * 0.2f;
+ x = 0;
+ }
+ if (counter[i].n現在の値 > 255 + 180 && counter[i].n現在の値 <= 2745)
+ {
+ TJAPlayer3.Tx.ScoreRank.Opacity = 255;
+ TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.X = 1.0f;
+ TJAPlayer3.Tx.ScoreRank.vc拡大縮小倍率.Y = 1.0f;
+ x = 0;
+ }
+ if (counter[i].n現在の値 >= 2745 && counter[i].n現在の値 <= 3000)
+ {
+ TJAPlayer3.Tx.ScoreRank.Opacity = 255 - ((counter[i].n現在の値 - 2745));
+ x = -((counter[i].n現在の値 - 2745) / 5.0f);
+ }
+
+ TJAPlayer3.Tx.ScoreRank.t2D拡大率考慮中央基準描画(87, 98 + (int)x, new System.Drawing.Rectangle(0, i == 0 ? i * 114 : i * 120, 140, i == 0 ? 114 : 120));
+ */
+
+ #endregion
+ }
+
+ x = 0;
+ }
+ #endregion
+ }
+ else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
+ {
+ #region [Tower score ranks]
+
+ double progress = CFloorManagement.LastRegisteredFloor / ((double)TJAPlayer3.stageSongSelect.rChoosenSong.arスコア[5].譜面情報.nTotalFloor);
+
+ bool[] conditions =
+ {
+ progress >= 0.1,
+ progress >= 0.25,
+ progress >= 0.5,
+ progress >= 0.75,
+ progress == 1 && CFloorManagement.CurrentNumberOfLives > 0,
+ TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss == 0 && TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine == 0,
+ TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood == 0
+ };
+
+ counter[0][i].Tick();
+
+ bool satisfied = true;
+ for (int j = 0; j <= i; j++)
+ if (conditions[j] == false)
+ {
+ satisfied = false;
+ break;
+ }
+
+
+ if (satisfied == true)
+ {
+ displayScoreRank(i, 0, x, y, 1);
+ }
+
+ #endregion
+ }
+ }
+
+
+ }
+
+ //TJAPlayer3.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, ScoreRank[6].ToString());
+ //TJAPlayer3.act文字コンソール.tPrint(0, 10, C文字コンソール.Eフォント種別.白, ScoreRank2P[6].ToString());
+
+ return base.Draw();
+ }
+
+ private CTexture TowerResult_ScoreRankEffect;
+
+ public int[][] ScoreRank = new int[5][];
+ private CCounter[][] counter = new CCounter[5][] {
+ new CCounter[7],
+ new CCounter[7],
+ new CCounter[7],
+ new CCounter[7],
+ new CCounter[7]
+ };
+ }
+}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsTrainingMode.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs
similarity index 99%
rename from OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsTrainingMode.cs
rename to OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs
index 9f36a382..7eabc9eb 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsTrainingMode.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CActImplTrainingMode.cs
@@ -9,9 +9,9 @@ using System.Drawing;
namespace TJAPlayer3
{
- class CAct演奏DrumsTrainingMode : CActivity
+ class CActImplTrainingMode : CActivity
{
- public CAct演奏DrumsTrainingMode()
+ public CActImplTrainingMode()
{
base.IsDeActivated = true;
}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDanger.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDanger.cs
deleted file mode 100644
index 60236a43..00000000
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsDanger.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsDanger : CAct演奏Danger共通
- {
- // コンストラクタ
-
- //public CAct演奏DrumsDanger()
- //{
- // base.b活性化してない = true;
- //}
-
-
- // CActivity 実装
-
- //public override void On活性化()
- //{
- // this.bDanger中 = false;
- // this.ct移動用 = new CCounter();
- // this.ct透明度用 = new CCounter();
- // base.On活性化();
- //}
- //public override void On非活性化()
- //{
- // this.ct移動用 = null;
- // this.ct透明度用 = null;
- // base.On非活性化();
- //}
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
- public override void ReleaseManagedResource()
- {
- TJAPlayer3.tテクスチャの解放( ref this.txDANGER );
- base.ReleaseManagedResource();
- }
- public override int Draw()
- {
- throw new InvalidOperationException( "t進行描画(bool)のほうを使用してください。" );
- }
- ///
- /// ドラム画面のDANGER描画
- ///
- /// DrumsのゲージがDangerかどうか(Guitar/Bassと共用のゲージ)
- /// Guitarのゲージ(未使用)
- /// Bassのゲージ(未使用)
- ///
- public override int t進行描画( bool bIsDangerDrums, bool bIsDangerGuitar, bool bIsDangerBass )
- {
- return 0;
- }
-
-
- // その他
-
- #region [ private ]
- //-----------------
- //private bool bDanger中;
- //private CCounter ct移動用;
- //private CCounter ct透明度用;
-// private const int n右位置 = 0x12a;
-// private const int n左位置 = 0x26;
- private readonly Rectangle[] rc領域 = new Rectangle[] { new Rectangle( 0, 0, 0x20, 0x40 ), new Rectangle( 0x20, 0, 0x20, 0x40 ) };
- private CTexture txDANGER;
- //-----------------
- #endregion
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsグラフ.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsグラフ.cs
deleted file mode 100644
index 2f0303a4..00000000
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsグラフ.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Drawing;
-using System.IO;
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drumsグラフ : CActivity
- {
-
- // コンストラクタ
-
- public CAct演奏Drumsグラフ()
- {
- base.IsDeActivated = true;
- }
-
-
- // CActivity 実装
-
- public override void Activate()
- {
- base.Activate();
- }
- public override void DeActivate()
- {
- base.DeActivate();
- }
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
- public override int Draw()
- {
- if( !base.IsDeActivated )
- {
- if( base.IsFirstDraw )
- {
- }
-
- }
- return 0;
- }
-
-
- // その他
-
- #region [ private ]
- //----------------
- //-----------------
- #endregion
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsコンボDGB.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsコンボDGB.cs
deleted file mode 100644
index c7b7e1bc..00000000
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏DrumsコンボDGB.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏DrumsコンボDGB : CAct演奏Combo共通
- {
- // CAct演奏Combo共通 実装
-
- protected override void tコンボ表示_ギター( int nCombo値, int nジャンプインデックス )
- {
- }
- protected override void tコンボ表示_ドラム( int nCombo値, int nジャンプインデックス )
- {
- }
- protected override void tコンボ表示_ベース( int nCombo値, int nジャンプインデックス )
- {
- }
- protected override void tコンボ表示_太鼓(int nCombo値, int nジャンプインデックス, int nPlayer)
- {
- base.tコンボ表示_太鼓( nCombo値, nジャンプインデックス, nPlayer );
- }
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsステータスパネル.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsステータスパネル.cs
deleted file mode 100644
index fc6cc093..00000000
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CAct演奏Drumsステータスパネル.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Drawing;
-
-using FDK;
-
-namespace TJAPlayer3
-{
- internal class CAct演奏Drumsステータスパネル : CAct演奏ステータスパネル共通
- {
- // コンストラクタ
- public override void Activate()
- {
-
- base.Activate();
- }
-
- public override void CreateManagedResource()
- {
- base.CreateManagedResource();
- }
- public override void ReleaseManagedResource()
- {
- base.ReleaseManagedResource();
- }
- public override int Draw()
- {
-
-
- return 0;
- }
-
-
- // その他
-
- #region [ private ]
- //-----------------
-
- //-----------------
- #endregion
- }
-}
diff --git a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
index 2c3bdd54..d13d30cf 100644
--- a/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
+++ b/OpenTaiko/src/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
@@ -25,17 +25,14 @@ namespace TJAPlayer3
base.eStageID = CStage.EStage.Game;
base.ePhaseID = CStage.EPhase.Common_NORMAL;
base.IsDeActivated = true;
- base.ChildActivities.Add( this.actPad = new CAct演奏Drumsパッド() );
- base.ChildActivities.Add( this.actCombo = new CAct演奏DrumsコンボDGB() );
- base.ChildActivities.Add( this.actDANGER = new CAct演奏DrumsDanger() );
- base.ChildActivities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() );
+ base.ChildActivities.Add( this.actPad = new CActImplPad() );
+ base.ChildActivities.Add( this.actCombo = new CActImplCombo() );
+ base.ChildActivities.Add( this.actChipFireD = new CActImplFireworks() );
base.ChildActivities.Add( this.Rainbow = new Rainbow() );
- base.ChildActivities.Add( this.actGauge = new CAct演奏Drumsゲージ() );
- base.ChildActivities.Add( this.actGraph = new CAct演奏Drumsグラフ() ); // #24074 2011.01.23 add ikanick
- base.ChildActivities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() );
+ base.ChildActivities.Add( this.actGauge = new CActImplGauge() );
+ base.ChildActivities.Add( this.actJudgeString = new CActImplJudgeText() );
base.ChildActivities.Add( this.actTaikoLaneFlash = new TaikoLaneFlash() );
- base.ChildActivities.Add( this.actScore = new CAct演奏Drumsスコア() );
- base.ChildActivities.Add( this.actStatusPanels = new CAct演奏Drumsステータスパネル() );
+ base.ChildActivities.Add( this.actScore = new CActImplScore() );
base.ChildActivities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );
base.ChildActivities.Add( this.actAVI = new CAct演奏AVI() );
base.ChildActivities.Add( this.actPanel = new CAct演奏パネル文字列() );
@@ -45,32 +42,32 @@ namespace TJAPlayer3
base.ChildActivities.Add( this.actFI = new CActFIFOStart() );
base.ChildActivities.Add( this.actFO = new CActFIFOBlack() );
base.ChildActivities.Add( this.actFOClear = new CActFIFOResult() );
- base.ChildActivities.Add( this.actLane = new CAct演奏Drumsレーン() );
- base.ChildActivities.Add( this.actEnd = new CAct演奏Drums演奏終了演出() );
- base.ChildActivities.Add( this.actDancer = new CAct演奏DrumsDancer() );
- base.ChildActivities.Add( this.actMtaiko = new CAct演奏DrumsMtaiko() );
- base.ChildActivities.Add( this.actLaneTaiko = new CAct演奏Drumsレーン太鼓() );
- base.ChildActivities.Add( this.actRoll = new CAct演奏Drums連打() );
- base.ChildActivities.Add( this.actBalloon = new CAct演奏Drums風船() );
- base.ChildActivities.Add( this.actChara = new CAct演奏Drumsキャラクター() );
+ base.ChildActivities.Add( this.actLane = new CActImplLane() );
+ base.ChildActivities.Add( this.actEnd = new CActImplClearAnimation() );
+ base.ChildActivities.Add( this.actDancer = new CActImplDancer() );
+ base.ChildActivities.Add( this.actMtaiko = new CActImplMtaiko() );
+ base.ChildActivities.Add( this.actLaneTaiko = new CActImplLaneTaiko() );
+ base.ChildActivities.Add( this.actRoll = new CActImplRoll() );
+ base.ChildActivities.Add( this.actBalloon = new CActImplBalloon() );
+ base.ChildActivities.Add( this.actChara = new CActImplCharacter() );
base.ChildActivities.Add( this.actGame = new CAct演奏Drumsゲームモード() );
- base.ChildActivities.Add( this.actBackground = new CAct演奏Drums背景() );
- base.ChildActivities.Add( this.actRollChara = new CAct演奏Drums連打キャラ() );
- base.ChildActivities.Add( this.actComboBalloon = new CAct演奏Drumsコンボ吹き出し() );
+ base.ChildActivities.Add( this.actBackground = new CActImplBackground() );
+ base.ChildActivities.Add( this.actRollChara = new CActImplRollEffect() );
+ base.ChildActivities.Add( this.actComboBalloon = new CActImplComboBalloon() );
base.ChildActivities.Add( this.actComboVoice = new CAct演奏Combo音声() );
base.ChildActivities.Add( this.actPauseMenu = new CAct演奏PauseMenu() );
- base.ChildActivities.Add(this.actChipEffects = new CAct演奏Drumsチップエフェクト());
- base.ChildActivities.Add(this.actFooter = new CAct演奏DrumsFooter());
- base.ChildActivities.Add(this.actRunner = new CAct演奏DrumsRunner());
- base.ChildActivities.Add(this.actMob = new CAct演奏DrumsMob());
+ base.ChildActivities.Add(this.actChipEffects = new CActImplChipEffects());
+ base.ChildActivities.Add(this.actFooter = new CActImplFooter());
+ base.ChildActivities.Add(this.actRunner = new CActImplRunner());
+ base.ChildActivities.Add(this.actMob = new CActImplMob());
base.ChildActivities.Add(this.GoGoSplash = new GoGoSplash());
base.ChildActivities.Add(this.FlyingNotes = new FlyingNotes());
base.ChildActivities.Add(this.FireWorks = new FireWorks());
base.ChildActivities.Add(this.PuchiChara = new PuchiChara());
- base.ChildActivities.Add(this.ScoreRank = new CAct演奏Drumsスコアランク());
+ base.ChildActivities.Add(this.ScoreRank = new CActImplScoreRank());
base.ChildActivities.Add(this.actDan = new Dan_Cert());
- base.ChildActivities.Add(this.actTokkun = new CAct演奏DrumsTrainingMode());
+ base.ChildActivities.Add(this.actTokkun = new CActImplTrainingMode());
base.ChildActivities.Add(this.actAIBattle = new AIBattle());
#region[ 文字初期化 ]
ST文字位置[] st文字位置Array = new ST文字位置[ 12 ];
@@ -650,7 +647,7 @@ namespace TJAPlayer3
if (HGaugeMethods.UNSAFE_IsRainbow(i))
{
double dbUnit = (((60.0 / (TJAPlayer3.stage演奏ドラム画面.actPlayInfo.dbBPM[i]))));
- this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Combo10_Max, true);
+ this.actChara.ChangeAnime(i, CActImplCharacter.Anime.Combo10_Max, true);
}
}
}
@@ -658,14 +655,14 @@ namespace TJAPlayer3
{
if (TJAPlayer3.Skin.Characters_Become_Cleared_Ptn[Character] != 0)
{
- this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Cleared, true);;
+ this.actChara.ChangeAnime(i, CActImplCharacter.Anime.Cleared, true);;
}
}
else
{
if (TJAPlayer3.Skin.Characters_ClearOut_Ptn[Character] != 0)
{
- this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.ClearOut, true);
+ this.actChara.ChangeAnime(i, CActImplCharacter.Anime.ClearOut, true);
}
}
}
@@ -707,22 +704,21 @@ namespace TJAPlayer3
public char ch;
public Point pt;
}
- public CAct演奏DrumsチップファイアD actChipFireD;
+ public CActImplFireworks actChipFireD;
- private CAct演奏Drumsグラフ actGraph; // #24074 2011.01.23 add ikanick
- private CAct演奏Drumsパッド actPad;
- public CAct演奏Drumsレーン actLane;
- public CAct演奏DrumsMtaiko actMtaiko;
- public CAct演奏Drumsレーン太鼓 actLaneTaiko;
- public CAct演奏Drums演奏終了演出 actEnd;
+ private CActImplPad actPad;
+ public CActImplLane actLane;
+ public CActImplMtaiko actMtaiko;
+ public CActImplLaneTaiko actLaneTaiko;
+ public CActImplClearAnimation actEnd;
private CAct演奏Drumsゲームモード actGame;
- public CAct演奏DrumsTrainingMode actTokkun;
- public CAct演奏Drums背景 actBackground;
+ public CActImplTrainingMode actTokkun;
+ public CActImplBackground actBackground;
public GoGoSplash GoGoSplash;
public FlyingNotes FlyingNotes;
public FireWorks FireWorks;
public PuchiChara PuchiChara;
- public CAct演奏Drumsスコアランク ScoreRank;
+ public CActImplScoreRank ScoreRank;
private bool bフィルイン中;
private readonly EPad[] eチャンネルtoパッド = new EPad[]
{
@@ -910,10 +906,6 @@ namespace TJAPlayer3
{
base.t進行描画_AVI( 0, 0 );
}
- protected override void t進行描画_DANGER()
- {
- this.actDANGER.t進行描画( this.actGauge.IsDanger(EInstrumentPad.DRUMS), false, false );
- }
private void t進行描画_チップファイアD()
{
@@ -2545,10 +2537,10 @@ namespace TJAPlayer3
this.n風船残り[i],
i,
NotesManager.IsFuzeRoll(chkChip)
- ? CAct演奏Drums風船.EBalloonType.FUSEROLL
+ ? CActImplBalloon.EBalloonType.FUSEROLL
: NotesManager.IsKusudama(chkChip)
- ? CAct演奏Drums風船.EBalloonType.KUSUDAMA
- : CAct演奏Drums風船.EBalloonType.BALLOON
+ ? CActImplBalloon.EBalloonType.KUSUDAMA
+ : CActImplBalloon.EBalloonType.BALLOON
);
}
else