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

(Pre 0.4.2) Issue #6 fixed (song issues within the song select menu), however song select menu code is extremely bloaty and might need a complete rewrite

This commit is contained in:
0aubsq 2021-10-13 04:18:11 +02:00
parent 7c7c51947f
commit ba160497af
7 changed files with 150 additions and 22 deletions

View File

@ -11,7 +11,7 @@ TJAPlayer3-Develop-ReWrite-1のフォーク, 太鼓の達人 ニジイロVerを
このプログラムはまだスキンを含みません。
著作権を全く満ちるためにデフォルトスキンを作る予定でございます。
著作権に全く従うためにデフォルトスキンを作る予定でございます。
それまでニジイロ系のスキンが希望なら僕のDiscordでご連絡ください

View File

@ -685,7 +685,7 @@ namespace TJAPlayer3
this.bgm起動画面 = new Cシステムサウンド(@"Sounds\Setup BGM.ogg", true, true, false, ESoundGroup.SongPlayback);
this.bgmオプション画面 = new Cシステムサウンド(@"Sounds\Option BGM.ogg", true, true, false, ESoundGroup.SongPlayback);
this.bgmコンフィグ画面 = new Cシステムサウンド(@"Sounds\Config BGM.ogg", true, true, false, ESoundGroup.SongPlayback);
this.bgm選曲画面 = new Cシステムサウンド(@"Sounds\Select BGM.ogg", true, true, false, ESoundGroup.SongPlayback);
//this.bgm選曲画面 = new Cシステムサウンド(@"Sounds\Select BGM.ogg", true, true, false, ESoundGroup.SongPlayback);
this.soundSongSelectChara = new Cシステムサウンド(@"Sounds\SongSelect Chara.ogg", false, false, false, ESoundGroup.SongPlayback);
this.soundSkip = new Cシステムサウンド(@"Sounds\Skip.ogg", false, false, false, ESoundGroup.SoundEffect);
this.SoundBanapas = new Cシステムサウンド(@"Sounds\Banapas.ogg", false, false, false, ESoundGroup.SoundEffect);

View File

@ -975,8 +975,13 @@ namespace TJAPlayer3
r直前のステージ = r現在のステージ;
r現在のステージ = stageタイトル;
/*
Skin.bgm選曲画面イン.t停止する();
Skin.bgm選曲画面.t停止する();
*/
CSongSelectSongManager.stopSong();
CSongSelectSongManager.enable();
foreach ( STPlugin pg in this.listプラグイン )
{
Directory.SetCurrentDirectory( pg.strプラグインフォルダ );
@ -997,10 +1002,15 @@ namespace TJAPlayer3
Trace.TraceInformation( "■ 曲読み込み" );
stage曲読み込み.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage曲読み込み;
r現在のステージ = stage曲読み込み;
/*
Skin.bgm選曲画面イン.t停止する();
Skin.bgm選曲画面.t停止する();
*/
CSongSelectSongManager.stopSong();
CSongSelectSongManager.enable();
foreach ( STPlugin pg in this.listプラグイン )
{
Directory.SetCurrentDirectory( pg.strプラグインフォルダ );
@ -1087,10 +1097,15 @@ namespace TJAPlayer3
Trace.TraceInformation("■ タイトル");
stageタイトル.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageタイトル;
r現在のステージ = stageタイトル;
/*
Skin.bgm選曲画面イン.t停止する();
Skin.bgm選曲画面.t停止する();
*/
CSongSelectSongManager.stopSong();
CSongSelectSongManager.enable();
foreach (STPlugin pg in this.listプラグイン)
{
Directory.SetCurrentDirectory(pg.strプラグインフォルダ);

View File

@ -189,7 +189,8 @@ namespace TJAPlayer3
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
}
TJAPlayer3.Skin.bgm選曲画面.t停止する();
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
public CCounter ct待機;

View File

@ -177,9 +177,12 @@ namespace TJAPlayer3
// If is not yet available then we wish to queue scanning.
var loudnessMetadata = cスコア..SongLoudnessMetadata
?? LoudnessMetadataScanner.LoadForAudioPath(strPreviewFilename);
TJAPlayer3.SongGainController.Set( cスコア..SongVol, loudnessMetadata, this.sound );
this.sound.t再生を開始する( true );
TJAPlayer3.SongGainController.Set( cスコア..SongVol, loudnessMetadata, this.sound );
// Disable song if playing while playing the preview song
CSongSelectSongManager.disable();
this.sound.t再生を開始する( true );
if( long再生位置 == -1 )
{

View File

@ -270,7 +270,8 @@ namespace TJAPlayer3
this.t選択曲が変更された(false);
TJAPlayer3.stage選曲.t選択曲変更通知(); // #27648 項目数変更を反映させる
this.b選択曲が変更された = true;
TJAPlayer3.Skin.bgm選曲画面.t停止する();
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
return ret;
}
@ -1634,11 +1635,14 @@ namespace TJAPlayer3
if (bBoxClose)
{
this.tBOXを出る();
TJAPlayer3.stage選曲.bBGM再生済み = false;
if (TJAPlayer3.ConfigIni.bBGM音を発声する)
TJAPlayer3.stage選曲.bBGM再生済み = false;
/*
if (TJAPlayer3.ConfigIni.bBGM音を発声する || !TJAPlayer3.Skin.bgm選曲画面イン.b再生中)
TJAPlayer3.Skin.bgm選曲画面イン.t再生する();
TJAPlayer3.stage選曲.bBGMIn再生した = true;
bBoxClose = false;
*/
CSongSelectSongManager.playSongIfPossible();
bBoxClose = false;
}
}

View File

@ -9,7 +9,63 @@ using System.Text;
using SlimDX;
namespace TJAPlayer3
{
{
/*
** class CSongSelectSongManager
** playSongIfPossible : Play song is enabled and not playing, supports both intro and regular song
** stopSong : Stop song without disabling it
** enable : Enable the menu song
** disable : Disable the menu song
*/
#region [Generic static class for handling the menu song]
static internal class CSongSelectSongManager
{
public static void playSongIfPossible()
{
if (CSongSelectSongManager.isSongDisabled)
return;
if (TJAPlayer3.ConfigIni.bBGM音を発声する && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中 && !TJAPlayer3.Skin.bgm選曲画面.b再生中)
{
if (inSongPlayed == false)
{
TJAPlayer3.Skin.bgm選曲画面イン.t再生する();
CSongSelectSongManager.inSongPlayed = true;
}
else
{
TJAPlayer3.Skin.bgm選曲画面.t再生する();
}
}
}
public static void stopSong()
{
TJAPlayer3.Skin.bgm選曲画面イン.t停止する();
TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.inSongPlayed = false;
}
public static void enable()
{
CSongSelectSongManager.isSongDisabled = false;
}
public static void disable()
{
CSongSelectSongManager.stopSong();
CSongSelectSongManager.isSongDisabled = true;
}
private static bool inSongPlayed = false;
private static bool isSongDisabled = false;
}
#endregion
internal class CStage選曲 : CStage
{
// プロパティ
@ -184,6 +240,10 @@ namespace TJAPlayer3
this.act曲リスト.Refresh(cs, bRemakeSongTitleBar);
}
public override void On活性化()
{
Trace.TraceInformation("選曲ステージを活性化します。");
@ -192,7 +252,10 @@ namespace TJAPlayer3
{
n確定された曲の難易度 = new int[2];
this.eフェードアウト完了時の戻り値 = E戻り値.;
// BGM played
this.bBGM再生済み = false;
this.ftフォント = new Font("MS UI Gothic", 26f, GraphicsUnit.Pixel);
for (int i = 0; i < 2; i++)
this.ctキー反復用[i] = new CCounter(0, 0, 0, TJAPlayer3.Timer);
@ -209,8 +272,11 @@ namespace TJAPlayer3
ctBackgroundFade.n現在の値 = 600;
if(TJAPlayer3.ConfigIni.bBGM音を発声する)
/*
if(TJAPlayer3.ConfigIni.bBGM音を発声する && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中 && !TJAPlayer3.Skin.bgm選曲画面.b再生中)
TJAPlayer3.Skin.bgm選曲画面イン.t再生する();
*/
for (int i = 0; i < 3; i++)
r[i] = new Random();
@ -433,11 +499,20 @@ namespace TJAPlayer3
this.actShowCurrentPosition.On進行描画(); // #27648 2011.3.28 yyagi
if (TJAPlayer3.ConfigIni.bBGM音を発声する && !this.bBGM再生済み && (base.eフェーズID == CStage.Eフェーズ._通常状態) && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中)
// Select screen song
if (base.eフェーズID == CStage.Eフェーズ._通常状態)
{
CSongSelectSongManager.playSongIfPossible();
}
/*
if (TJAPlayer3.ConfigIni.bBGM音を発声する && !this.bBGM再生済み && (base.eフェーズID == CStage.Eフェーズ._通常状態) && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中 && !TJAPlayer3.Skin.bgm選曲画面.b再生中)
{
TJAPlayer3.Skin.bgm選曲画面イン.t停止する();
TJAPlayer3.Skin.bgm選曲画面.t再生する();
this.bBGM再生済み = true;
}
*/
if (this.ctDiffSelect移動待ち != null)
@ -467,6 +542,9 @@ namespace TJAPlayer3
if (TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDXKeys.Key.Escape) && (this.act曲リスト.r現在選択中の曲 != null))// && ( ) ) )
if (this.act曲リスト.r現在選択中の曲.r親ード == null)
{ // [ESC]
this.actPresound.tサウンド停止();
CSongSelectSongManager.enable();
TJAPlayer3.Skin.sound取消音.t再生する();
this.eフェードアウト完了時の戻り値 = E戻り値.;
this.actFIFO.tフェードアウト開始();
@ -477,6 +555,9 @@ namespace TJAPlayer3
{
if (this.act曲リスト.ctBoxOpen.b終了値に達した || this.act曲リスト.ctBoxOpen.n現在の値 == 0)
{
this.actPresound.tサウンド停止();
CSongSelectSongManager.enable();
TJAPlayer3.Skin.sound取消音.t再生する();
this.act曲リスト.ctBarFlash.t開始(0, 2700, 1, TJAPlayer3.Timer);
this.act曲リスト.ctBoxOpen.t開始(200, 2700, 1.3f, TJAPlayer3.Timer);
@ -603,6 +684,8 @@ namespace TJAPlayer3
break;
case C曲リストード.Eード種別.BOX:
{
CSongSelectSongManager.disable();
TJAPlayer3.Skin.sound決定音.t再生する();
this.act曲リスト.ctBarFlash.t開始(0, 2700, 1, TJAPlayer3.Timer);
this.act曲リスト.ctBoxOpen.t開始(200, 2700, 1.3f, TJAPlayer3.Timer);
@ -612,6 +695,9 @@ namespace TJAPlayer3
break;
case C曲リストード.Eード種別.BACKBOX:
{
// TOJIRU
CSongSelectSongManager.enable();
TJAPlayer3.Skin.sound取消音.t再生する();
this.act曲リスト.ctBarFlash.t開始(0, 2700, 1, TJAPlayer3.Timer);
this.act曲リスト.ctBoxOpen.t開始(200, 2700, 1.3f, TJAPlayer3.Timer);
@ -1097,18 +1183,26 @@ namespace TJAPlayer3
TJAPlayer3.stage選曲.bBGMIn再生した = false;
TJAPlayer3.Skin.bgm選曲画面イン.n位置_現在のサウンド = 0;
TJAPlayer3.Skin.bgm選曲画面.n位置_現在のサウンド = 0;
/*
TJAPlayer3.Skin.bgm選曲画面イン.t停止する();
TJAPlayer3.Skin.bgm選曲画面.t停止する();
*/
CSongSelectSongManager.disable();
}
else
{
if (!bBGMIn再生した)
/*
if (!bBGMIn再生した && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中 && !TJAPlayer3.Skin.bgm選曲画面.b再生中)
{
TJAPlayer3.stage選曲.bBGM再生済み = false;
if (TJAPlayer3.ConfigIni.bBGM音を発声する)
TJAPlayer3.Skin.bgm選曲画面イン.t再生する();
bBGMIn再生した = true;
}
*/
CSongSelectSongManager.enable();
CSongSelectSongManager.playSongIfPossible();
}
this.ctBackgroundFade.t開始(0, 600, 1, TJAPlayer3.Timer);
if (this.act曲リスト.ctBarOpen.n現在の値 >= 200 || this.ctBackgroundFade.n現在の値 >= 600 - 255)
@ -1121,19 +1215,27 @@ namespace TJAPlayer3
if ((this.act曲リスト.r前の曲(r現在選択中の曲).eード種別 == C曲リストード.Eード種別.SCORE) || this.act曲リスト.r前の曲(r現在選択中の曲).eード種別 == C曲リストード.Eード種別.BACKBOX)
{
TJAPlayer3.stage選曲.bBGMIn再生した = false;
/*
TJAPlayer3.Skin.bgm選曲画面.t停止する();
TJAPlayer3.Skin.bgm選曲画面イン.t停止する();
*/
CSongSelectSongManager.disable();
}
else
{
if (!bBGMIn再生した)
/*
if (!bBGMIn再生した && !TJAPlayer3.Skin.bgm選曲画面イン.b再生中 && !TJAPlayer3.Skin.bgm選曲画面.b再生中)
{
TJAPlayer3.stage選曲.bBGM再生済み = false;
if (TJAPlayer3.ConfigIni.bBGM音を発声する)
TJAPlayer3.Skin.bgm選曲画面イン.t再生する();
bBGMIn再生した = true;
}
*/
CSongSelectSongManager.enable();
CSongSelectSongManager.playSongIfPossible();
}
this.ctBackgroundFade.t開始(0, 600, 1, TJAPlayer3.Timer);
if (this.act曲リスト.ctBarOpen.n現在の値 >= 200 || this.ctBackgroundFade.n現在の値 >= 600 - 255)
TJAPlayer3.stage選曲.OldGenre = this.r現在選択中の曲.strジャンル;
@ -1218,7 +1320,8 @@ namespace TJAPlayer3
}
Trace.TraceInformation(builder2.ToString());
}
TJAPlayer3.Skin.bgm選曲画面.t停止する();
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
private void t曲を選択する()
{
@ -1232,7 +1335,8 @@ namespace TJAPlayer3
this.actFOtoNowLoading.tフェードアウト開始(); // #27787 2012.3.10 yyagi 曲決定時の画面フェードアウトの省略
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
}
TJAPlayer3.Skin.bgm選曲画面.t停止する();
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
public void t曲を選択する(int nCurrentLevel, int player)
{
@ -1247,7 +1351,8 @@ namespace TJAPlayer3
base.eフェーズID = CStage.Eフェーズ._NowLoading画面へのフェードアウト;
}
TJAPlayer3.Skin.bgm選曲画面.t停止する();
// TJAPlayer3.Skin.bgm選曲画面.t停止する();
CSongSelectSongManager.stopSong();
}
private List<C曲リストード> t指定された曲が存在する場所の曲を列挙する_子リスト含む(C曲リストード song)
{