1
0
mirror of synced 2024-11-24 07:30:21 +01:00

Version 0.4.3 : Course:Tower are now fully playable, including LIFE parameter, early lose condition if LIFE reachs 0, and so on. Full result screen and Lower background will release later

This commit is contained in:
0aubsq 2021-10-14 12:56:11 +02:00
parent 97e3a9b99e
commit e206db822b
11 changed files with 201 additions and 49 deletions

View File

@ -3,9 +3,9 @@ TJAPlayer3-Develop-ReWrite-1のフォーク, 太鼓の達人 ニジイロVerを
(English version coming soon)
- 現在の版: v0.4.2
- 現在の版: v0.4.3
- スキンの最新版: v0.4.2
- スキンの最新版: v0.4.3
## 予告情報 (重要)
@ -49,6 +49,13 @@ Discord以外で配布しておりません。
## 更新記録
<details>
<summary>v0.4.3</summary>
- PS2の太鼓タワーを実装 (Gameplay)
</details>
<details>
<summary>v0.4.2</summary>

View File

@ -367,6 +367,10 @@ namespace TJAPlayer3
public Cシステムサウンド soundSelectAnnounce = null;
// Tower Sfx
public Cシステムサウンド soundTowerMiss = null;
public Cシステムサウンド bgmTowerResult = null;
//public Cシステムサウンド soundRed = null;
//public Cシステムサウンド soundBlue = null;
public Cシステムサウンド soundBalloon = null;
@ -707,6 +711,8 @@ namespace TJAPlayer3
this.bgmDanResult = new Cシステムサウンド(@"Sounds\Dan\Dan_Result.ogg", false, false, true, ESoundGroup.SongPlayback);
this.bgmTowerResult = new Cシステムサウンド(@"Sounds\Tower\Tower_Result.ogg", false, false, true, ESoundGroup.SongPlayback);
this.soundTowerMiss = new Cシステムサウンド(@"Sounds\Tower\Miss.wav", false, false, true, ESoundGroup.SoundEffect);
this.soundCrownIn = new Cシステムサウンド(@"Sounds\ResultScreen\CrownIn.ogg", false, false, false, ESoundGroup.SoundEffect);
this.soundRankIn = new Cシステムサウンド(@"Sounds\ResultScreen\RankIn.ogg", false, false, false, ESoundGroup.SoundEffect);

View File

@ -20,6 +20,7 @@ namespace TJAPlayer3
const string RESULT = @"6_Result\";
const string EXIT = @"7_Exit\";
const string DANRESULT = @"7_DanResult\";
const string TOWERRESULT = @"8_TowerResult\";
// InGame
const string CHARA = @"1_Chara\";
@ -774,7 +775,7 @@ namespace TJAPlayer3
Exit_Background = TxC(EXIT + @"Background.png");
#endregion
#region [8_DanResults]
#region [7_DanResults]
DanResult_Background = TxC(DANRESULT + @"Background.png");
DanResult_Rank = TxC(DANRESULT + @"Rank.png");
@ -785,9 +786,21 @@ namespace TJAPlayer3
#endregion
#region [8_TowerResults]
TowerResult_Background = TxC(TOWERRESULT + @"Background.png");
TowerResult_Panel = TxC(TOWERRESULT + @"Panel.png");
for (int i = 0; i < TowerResult_Tower.Length; i++)
{
TowerResult_Tower[i] = TxC(TOWERRESULT + @"Tower\" + i.ToString() + ".png");
}
#endregion
}
public void DisposeTexture()
public void DisposeTexture()
{
foreach (var tex in listTexture)
{
@ -1128,7 +1141,7 @@ namespace TJAPlayer3
/*Exit_Text */;
#endregion
#region [8_DanResults]
#region [7_DanResults]
public CTexture DanResult_Background,
DanResult_Rank,
@ -1139,6 +1152,15 @@ namespace TJAPlayer3
#endregion
#region [8_TowerResults]
public CTexture TowerResult_Background,
TowerResult_Panel;
public CTexture[]
TowerResult_Tower = new CTexture[1];
#endregion
#region [ ]
public List<CTexture> listTexture = new List<CTexture>();
#endregion

View File

@ -70,8 +70,9 @@ namespace TJAPlayer3
public void Start()
{
this.dbFailedTime = TJAPlayer3.Timer.n現在時刻;
this.ct進行 = new CCounter( 0, 1000, 2, TJAPlayer3.Timer );
if( TJAPlayer3.ConfigIni.eGameMode != EGame.OFF )
this.ct進行 = new CCounter( 0, 300, 22, TJAPlayer3.Timer );
this.ctEnd_ClearFailed = new CCounter(0, 69, 30, TJAPlayer3.Timer);
if ( TJAPlayer3.ConfigIni.eGameMode != EGame.OFF )
{
this.ct進行 = new CCounter( 0, 4000, 2, TJAPlayer3.Timer );
}
@ -99,26 +100,58 @@ namespace TJAPlayer3
}
public override void OnManagedリソースの作成()
{
this.failedSongPlayed = false;
if( !base.b活性化してない )
{
// this.txBlack = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\Tile black 64x64.png" ) );
//this.txStageFailed = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_stage_failed.jpg" ) );
//this.txGameFailed = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_GameFailed.png" ) );
// this.tx数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_RollNumber.png" ) );
{
// this.txBlack = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\Tile black 64x64.png" ) );
//this.txStageFailed = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_stage_failed.jpg" ) );
//this.txGameFailed = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_GameFailed.png" ) );
// this.tx数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_RollNumber.png" ) );
this.soundFailed = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Failed.ogg"), ESoundGroup.SoundEffect);
base.OnManagedリソースの作成();
}
}
public override void OnManagedリソースの解放()
{
if( !base.b活性化してない )
{
//CDTXMania.tテクスチャの解放( ref this.txStageFailed );
//CDTXMania.tテクスチャの解放( ref this.txGameFailed );
// CDTXMania.tテクスチャの解放( ref this.txBlack );
// CDTXMania.tテクスチャの解放( ref this.tx数字 );
{
//CDTXMania.tテクスチャの解放( ref this.txStageFailed );
//CDTXMania.tテクスチャの解放( ref this.txGameFailed );
// CDTXMania.tテクスチャの解放( ref this.txBlack );
// CDTXMania.tテクスチャの解放( ref this.tx数字 );
if (this.soundFailed != null)
this.soundFailed.t解放する();
base.OnManagedリソースの解放();
}
}
}
#region [Effect]
private void showEndEffect_Failed(int i)
{
int[] y = new int[] { 0, 176 };
this.ctEnd_ClearFailed.t進行();
if (this.ctEnd_ClearFailed.n現在の値 <= 20)
{
TJAPlayer3.Tx.End_ClearFailed[this.ctEnd_ClearFailed.n現在の値].t2D描画(TJAPlayer3.app.Device, 505, y[i] + 145);
}
if (this.ctEnd_ClearFailed.n現在の値 >= 20 && this.ctEnd_ClearFailed.n現在の値 <= 67)
{
TJAPlayer3.Tx.ClearFailed.t2D描画(TJAPlayer3.app.Device, 502, y[i] + 192);
}
else if (this.ctEnd_ClearFailed.n現在の値 == 68)
{
TJAPlayer3.Tx.ClearFailed1.t2D描画(TJAPlayer3.app.Device, 502, y[i] + 192);
}
else if (this.ctEnd_ClearFailed.n現在の値 >= 69)
{
TJAPlayer3.Tx.ClearFailed2.t2D描画(TJAPlayer3.app.Device, 502, y[i] + 192);
}
}
#endregion
public override int On進行描画()
{
if( base.b活性化してない )
@ -129,9 +162,22 @@ namespace TJAPlayer3
{
return 0;
}
this.ct進行.t進行();
if (TJAPlayer3.ConfigIni.eGameMode == EGame. || TJAPlayer3.ConfigIni.eGameMode == EGame.)
this.ct進行.t進行();
#region [Failed screen]
if (this.soundFailed != null && !this.failedSongPlayed)
{
this.soundFailed.t再生を開始する();
this.failedSongPlayed = true;
}
this.showEndEffect_Failed(0);
#endregion
/*
if (TJAPlayer3.ConfigIni.eGameMode == EGame. || TJAPlayer3.ConfigIni.eGameMode == EGame.)
{
if (TJAPlayer3.Tx.Tile_Black != null)
{
@ -191,6 +237,8 @@ namespace TJAPlayer3
}
}
*/
if( !this.ct進行.b終了値に達した )
{
return 0;
@ -206,11 +254,15 @@ namespace TJAPlayer3
private bool b効果音再生済み;
private CCounter ct進行;
private CSound sd効果音;
//private CTexture txStageFailed;
// private CTexture txGameFailed;
// private CTexture txBlack;
// private CTexture tx数字;
private double dbFailedTime;
private bool failedSongPlayed;
private CSound soundFailed;
private CCounter ctEnd_ClearFailed;
//private CTexture txStageFailed;
// private CTexture txGameFailed;
// private CTexture txBlack;
// private CTexture tx数字;
private double dbFailedTime;
//-----------------
private ST文字位置[] st文字位置;

View File

@ -3081,12 +3081,24 @@ namespace TJAPlayer3
}
protected void t進行描画_STAGEFAILED()
{
if ( ( ( base.eフェーズID == CStage.Eフェーズ._STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ._STAGE_FAILED_フェードアウト ) ) && ( ( this.actStageFailed.On進行描画() != 0 ) && ( base.eフェーズID != CStage.Eフェーズ._STAGE_FAILED_フェードアウト ) ) )
// Transition for failed games
if ( ( ( base.eフェーズID == CStage.Eフェーズ._STAGE_FAILED )
|| ( base.eフェーズID == CStage.Eフェーズ._STAGE_FAILED_フェードアウト ) )
&& ( ( this.actStageFailed.On進行描画() != 0 )
&& ( base.eフェーズID != CStage.Eフェーズ._STAGE_FAILED_フェードアウト ) ) )
{
this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.;
base.eフェーズID = CStage.Eフェーズ._STAGE_FAILED_フェードアウト;
this.actFO.tフェードアウト開始();
}
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.;
}
else
{
this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.;
}
base.eフェーズID = CStage.Eフェーズ._STAGE_FAILED_フェードアウト;
this.actFO.tフェードアウト開始();
}
}
protected void t進行描画_チップファイアGB()

View File

@ -126,18 +126,17 @@ namespace TJAPlayer3
if (this.ctキャラクターアクション_ゴーゴースタート != null || TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart != 0) this.ctキャラクターアクション_ゴーゴースタート[i].t進行db();
if (this.ctキャラクターアクション_ゴーゴースタートMAX != null || TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max != 0) this.ctキャラクターアクション_ゴーゴースタートMAX[i].t進行db();
if (this.ctキャラクターアクション_ルマ != null || TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn != 0) this.ctキャラクターアクション_ルマ[i].t進行db();
if (this.ctキャラクターアクション_魂MAX != null || TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn != 0) this.ctキャラクターアクション_魂MAX[i].t進行db();
if (this.ctキャラクターアクション_魂MAX != null || TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn != 0) this.ctキャラクターアクション_魂MAX[i].t進行db();
// Blinking animation during invincibility frames
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
if (CFloorManagement.isBlinking() == true)
break;
}
if (this.b風船連打中[i] != true && this.bマイどんアクション中[i] != true && CharaAction_Balloon_Delay[i].b終了値に達した)
{
// Blinking animation during invincibility frames
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
if (CFloorManagement.isBlinking() == true)
break;
}
if (!TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[i])
{
if (TJAPlayer3.stage演奏ドラム画面.actGauge.db現在のゲージ値[i] >= 100.0 && TJAPlayer3.Skin.Game_Chara_Ptn_Clear != 0)
@ -177,7 +176,6 @@ namespace TJAPlayer3
if (this.b風船連打中[i] != true && bマイどんアクション中[i] == true && CharaAction_Balloon_Delay[i].b終了値に達した)
{
if (this.ctキャラクターアクション_10コンボ[i].b進行中)
{
if (TJAPlayer3.Tx.Chara_10Combo[i] != null && TJAPlayer3.Skin.Game_Chara_Ptn_10combo != 0)

View File

@ -31,7 +31,24 @@ namespace TJAPlayer3
this.ctEnd_DondaFullComboLoop = new CCounter(0, 2, 30, TJAPlayer3.Timer);
// モードの決定。クリア失敗・フルコンボも事前に作っとく。
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
if (CFloorManagement.CurrentNumberOfLives > 0)
{
if (TJAPlayer3.stage演奏ドラム画面.CBranchScore[0].nMiss == 0)
{
if (TJAPlayer3.stage演奏ドラム画面.CBranchScore[0].nGood == 0)
this.Mode[0] = EndMode.StageDondaFullCombo;
else
this.Mode[0] = EndMode.StageFullCombo;
}
else
this.Mode[0] = EndMode.StageCleared;
}
else
this.Mode[0] = EndMode.StageFailed;
}
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
// 段位認定モード。
if (!TJAPlayer3.stage演奏ドラム画面.actDan.GetFailedAllChallenges())

View File

@ -26,7 +26,7 @@ namespace TJAPlayer3
{
CFloorManagement.InvincibilityFrames = new CCounter(0, CFloorManagement.InvincibilityDuration + 1000, 1, TJAPlayer3.Timer);
CFloorManagement.CurrentNumberOfLives--;
// Play "outch" sfx
TJAPlayer3.Skin.soundTowerMiss.t再生する();
}
}
@ -253,8 +253,8 @@ namespace TJAPlayer3
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkTouTatsuKaiSuu).t2D描画(TJAPlayer3.app.Device, 550, 32);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkKai).t2D描画(TJAPlayer3.app.Device, 750, 104);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkTouTatsuKaiSuu).t2D描画(TJAPlayer3.app.Device, 350, 32);
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(ttkKai).t2D描画(TJAPlayer3.app.Device, 550, 104);
this.ct炎.t進行Loop();
CFloorManagement.loopFrames();
@ -278,7 +278,7 @@ namespace TJAPlayer3
{
int currentNum = int.Parse(floorStr[idx].ToString());
TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.app.Device, 756 - ((digitLength - 8) * (len - idx) * 1.4f),
TJAPlayer3.Tx.Taiko_Combo[0].t2D描画(TJAPlayer3.app.Device, 556 - ((digitLength - 8) * (len - idx) * 1.4f),
84,
new Rectangle(digitLength * currentNum, 0,
digitLength, TJAPlayer3.Tx.Taiko_Combo[0].szテクスチャサイズ.Height));

View File

@ -435,7 +435,10 @@ namespace TJAPlayer3
base.b初めての進行描画 = false;
}
#endregion
if ( ( ( TJAPlayer3.ConfigIni.nRisky != 0 && this.actGauge.IsFailed( E楽器パート.TAIKO ) ) || this.actGame.st叩ききりまショー.ct残り時間.b終了値に達した ) && ( base.eフェーズID == CStage.Eフェーズ._通常状態 ) )
if ( ( ( TJAPlayer3.ConfigIni.nRisky != 0 && this.actGauge.IsFailed( E楽器パート.TAIKO ) )
|| this.actGame.st叩ききりまショー.ct残り時間.b終了値に達した
|| (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower && CFloorManagement.CurrentNumberOfLives <= 0))
&& ( base.eフェーズID == CStage.Eフェーズ._通常状態 ))
{
this.actStageFailed.Start();
TJAPlayer3.DTX.t全チップの再生停止();

View File

@ -319,6 +319,11 @@ namespace TJAPlayer3
ctShine_Plate = new CCounter(0, 1000, 1, TJAPlayer3.Timer);
ctWork_Plate = new CCounter(0, 4000, 1, TJAPlayer3.Timer);
if (TJAPlayer3.Tx.TowerResult_Background != null)
ctTower_Animation = new CCounter(0, TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Height - 720, 25, TJAPlayer3.Timer);
else
ctTower_Animation = new CCounter();
Dan_Plate = TJAPlayer3.tテクスチャの生成(Path.GetDirectoryName(TJAPlayer3.DTX.strファイル名の絶対パス) + @"\Dan_Plate.png");
@ -666,7 +671,33 @@ namespace TJAPlayer3
{
#region [Tower result screen]
if (!b音声再生 && !TJAPlayer3.Skin.bgmTowerResult.b再生中)
{
TJAPlayer3.Skin.bgmTowerResult.t再生する();
b音声再生 = true;
}
// Pictures here
this.ctTower_Animation.t進行();
int xFactor = 0;
float yFactor = 1f;
if (TJAPlayer3.Tx.TowerResult_Background != null && TJAPlayer3.Tx.TowerResult_Tower[0] != null)
{
xFactor = (TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Width - TJAPlayer3.Tx.TowerResult_Tower[0].szテクスチャサイズ.Width) / 2;
yFactor = TJAPlayer3.Tx.TowerResult_Tower[0].szテクスチャサイズ.Height / (float)TJAPlayer3.Tx.TowerResult_Background.szテクスチャサイズ.Height;
}
TJAPlayer3.Tx.TowerResult_Background?.t2D描画(TJAPlayer3.app.Device, 0, -1 * this.ctTower_Animation.n現在の値);
TJAPlayer3.Tx.TowerResult_Tower[0]?.t2D描画(TJAPlayer3.app.Device, xFactor, -1 * yFactor * this.ctTower_Animation.n現在の値);
TJAPlayer3.Tx.TowerResult_Panel?.t2D描画(TJAPlayer3.app.Device, 0, 0);
if (!b音声再生 && !TJAPlayer3.Skin.bgmTowerResult.b再生中)
{
TJAPlayer3.Skin.bgmTowerResult.t再生する();
b音声再生 = true;
}
#endregion
@ -752,6 +783,7 @@ namespace TJAPlayer3
this.eフェードアウト完了時の戻り値 = E戻り値.;
TJAPlayer3.Skin.bgmリザルト音.t停止する();
TJAPlayer3.Skin.bgmDanResult.t停止する();
TJAPlayer3.Skin.bgmTowerResult.t停止する();
TJAPlayer3.Skin.sound決定音.t再生する();
}
}
@ -925,7 +957,10 @@ namespace TJAPlayer3
private int[] WorksTimeStamp = { 1000, 2000, 3000 };
// Dan informations
private CTexture Dan_Plate;
private CTexture Dan_Plate;
// Tower informations
private CCounter ctTower_Animation;
private CCounter ctAutoReturn;
//private CTexture txオプションパネル;

@ -1 +1 @@
Subproject commit cfa3580a0dab1354420d2d306c059cb7c30de91c
Subproject commit dcc5f2f6230cf9c647451687acf1fcb824607189