diff --git a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs index 671655c1..d99fc5d4 100644 --- a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs +++ b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs @@ -605,8 +605,21 @@ namespace TJAPlayer3 Lane_Base[i] = TxC(GAME + LANE + "Base_" + Lanes[i] + ".png"); Lane_Text[i] = TxC(GAME + LANE + "Text_" + Lanes[i] + ".png"); } - Lane_Red = TxC(GAME + LANE + @"Red.png"); - Lane_Blue = TxC(GAME + LANE + @"Blue.png"); + + Lane_Red = new CTexture[2]; + Lane_Blue = new CTexture[2]; + Lane_Clap = new CTexture[2]; + + var _suffixes = new string[] { "", "_Konga" }; + + for (int i = 0; i < Lane_Red.Length; i++) + { + Lane_Red[i] = TxC(GAME + LANE + @"Red" + _suffixes[i] + @".png"); + Lane_Blue[i] = TxC(GAME + LANE + @"Blue" + _suffixes[i] + @".png"); + Lane_Clap[i] = TxC(GAME + LANE + @"Clap" + _suffixes[i] + @".png"); + } + + Lane_Yellow = TxC(GAME + LANE + @"Yellow.png"); Lane_Background_Main = TxC(GAME + LANE + @"Background_Main.png"); Lane_Background_AI = TxC(GAME + LANE + @"Background_AI.png"); @@ -1657,11 +1670,12 @@ namespace TJAPlayer3 public CTexture[] Effects_Roll; #endregion #region レーン - public CTexture[] Lane_Base, - Lane_Text; - public CTexture Lane_Red, + public CTexture[] Lane_Red, Lane_Blue, - Lane_Yellow; + Lane_Clap, + Lane_Base, + Lane_Text; + public CTexture Lane_Yellow; public CTexture Lane_Background_Main, Lane_Background_AI, Lane_Background_Sub, diff --git a/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs b/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs index c2901556..7fd0ce60 100644 --- a/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs +++ b/TJAPlayer3/Stages/07.Game/CStage演奏画面共通.cs @@ -913,7 +913,9 @@ namespace TJAPlayer3 } protected void tサウンド再生( CDTX.CChip pChip, int nPlayer ) { + var _gt = TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(nPlayer)]; int index = pChip.nチャンネル番号; + if (index == 0x11 || index == 0x13 || index == 0x1A) { if (pChip.nPlayerSide == 0) @@ -924,19 +926,44 @@ namespace TJAPlayer3 { this.soundRed2?.t再生を開始する(); } + if (index == 0x13 && _gt == EGameType.KONGA) + { + if (pChip.nPlayerSide == 0) + { + this.soundBlue?.t再生を開始する(); + } + else + { + this.soundBlue2?.t再生を開始する(); + } + } } else if (index == 0x12 || index == 0x14 || index == 0x1B) { - - - if (pChip.nPlayerSide == 0) - { - this.soundBlue?.t再生を開始する(); + if (index == 0x14 && _gt == EGameType.KONGA) + { + if (pChip.nPlayerSide == 0) + { + this.soundClap?.t再生を開始する(); + } + else + { + this.soundClap2?.t再生を開始する(); + } } - else - { - this.soundBlue2?.t再生を開始する(); + else + { + if (pChip.nPlayerSide == 0) + { + this.soundBlue?.t再生を開始する(); + } + else + { + this.soundBlue2?.t再生を開始する(); + } } + + } else if (index == 0x1F) { diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs index 3943ee4b..1844d1af 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏DrumsMtaiko.cs @@ -121,6 +121,7 @@ namespace TJAPlayer3 { int _actual = TJAPlayer3.GetActualPlayer(i); EGameType _gt = TJAPlayer3.ConfigIni.nGameType[_actual]; + int playerShift = i * 5; // Drum base TJAPlayer3.Tx.Taiko_Base[(int)_gt]?.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Taiko_X[i], TJAPlayer3.Skin.Game_Taiko_Y[i]); @@ -130,10 +131,10 @@ namespace TJAPlayer3 { if (TJAPlayer3.Tx.Taiko_Don_Left != null && TJAPlayer3.Tx.Taiko_Don_Right != null && TJAPlayer3.Tx.Taiko_Ka_Left != null && TJAPlayer3.Tx.Taiko_Ka_Right != null) { - TJAPlayer3.Tx.Taiko_Ka_Left.Opacity = this.stパッド状態[4 * i].n明るさ * 73; - TJAPlayer3.Tx.Taiko_Ka_Right.Opacity = this.stパッド状態[1 + 4 * i].n明るさ * 73; - TJAPlayer3.Tx.Taiko_Don_Left.Opacity = this.stパッド状態[2 + 4 * i].n明るさ * 73; - TJAPlayer3.Tx.Taiko_Don_Right.Opacity = this.stパッド状態[3 + 4 * i].n明るさ * 73; + TJAPlayer3.Tx.Taiko_Ka_Left.Opacity = this.stパッド状態[playerShift].n明るさ * 73; + TJAPlayer3.Tx.Taiko_Ka_Right.Opacity = this.stパッド状態[1 + playerShift].n明るさ * 73; + TJAPlayer3.Tx.Taiko_Don_Left.Opacity = this.stパッド状態[2 + playerShift].n明るさ * 73; + TJAPlayer3.Tx.Taiko_Don_Right.Opacity = this.stパッド状態[3 + playerShift].n明るさ * 73; TJAPlayer3.Tx.Taiko_Ka_Left.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Taiko_X[i], TJAPlayer3.Skin.Game_Taiko_Y[i], new Rectangle(0, 0, TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Width / 2, TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Height)); TJAPlayer3.Tx.Taiko_Ka_Right.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Taiko_X[i] + TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Width / 2, TJAPlayer3.Skin.Game_Taiko_Y[i], new Rectangle(TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Width / 2, 0, TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Width / 2, TJAPlayer3.Tx.Taiko_Ka_Right.szテクスチャサイズ.Height)); @@ -145,9 +146,9 @@ namespace TJAPlayer3 { if (TJAPlayer3.Tx.Taiko_Konga_Clap != null && TJAPlayer3.Tx.Taiko_Konga_Don != null && TJAPlayer3.Tx.Taiko_Konga_Ka != null) { - TJAPlayer3.Tx.Taiko_Konga_Clap.Opacity = 0; // Not yet implemented - TJAPlayer3.Tx.Taiko_Konga_Don.Opacity = Math.Max(this.stパッド状態[2 + 4 * i].n明るさ, this.stパッド状態[3 + 4 * i].n明るさ) * 73; - TJAPlayer3.Tx.Taiko_Konga_Ka.Opacity = Math.Max(this.stパッド状態[4 * i].n明るさ, this.stパッド状態[1 + 4 * i].n明るさ) * 73; + TJAPlayer3.Tx.Taiko_Konga_Clap.Opacity = this.stパッド状態[4 + playerShift].n明るさ * 73; + TJAPlayer3.Tx.Taiko_Konga_Don.Opacity = Math.Max(this.stパッド状態[2 + playerShift].n明るさ, this.stパッド状態[3 + playerShift].n明るさ) * 73; + TJAPlayer3.Tx.Taiko_Konga_Ka.Opacity = Math.Max(this.stパッド状態[playerShift].n明るさ, this.stパッド状態[1 + playerShift].n明るさ) * 73; TJAPlayer3.Tx.Taiko_Konga_Ka.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Taiko_X[i], TJAPlayer3.Skin.Game_Taiko_Y[i]); TJAPlayer3.Tx.Taiko_Konga_Don.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.Game_Taiko_X[i], TJAPlayer3.Skin.Game_Taiko_Y[i]); @@ -315,6 +316,9 @@ namespace TJAPlayer3 { CConfigIni configIni = TJAPlayer3.ConfigIni; bool bAutoPlay = false; + int playerShift = 5 * nPlayer; + var _gt = configIni.nGameType[TJAPlayer3.GetActualPlayer(nPlayer)]; + switch (nPlayer) { case 0: @@ -337,13 +341,24 @@ namespace TJAPlayer3 case 0x16: case 0x17: { - this.stパッド状態[ 2 + nHand + ( 4 * nPlayer ) ].n明るさ = 8; + this.stパッド状態[ 2 + nHand + playerShift].n明るさ = 8; } break; case 0x12: + { + this.stパッド状態[nHand + playerShift].n明るさ = 8; + } + break; case 0x14: { - this.stパッド状態[ nHand + ( 4 * nPlayer ) ].n明るさ = 8; + if (_gt == EGameType.KONGA) + { + this.stパッド状態[4 + playerShift].n明るさ = 8; + } + else + { + this.stパッド状態[nHand + playerShift].n明るさ = 8; + } } break; @@ -358,27 +373,43 @@ namespace TJAPlayer3 case 0x16: case 0x17: { - this.stパッド状態[ 2 + nHand + ( 4 * nPlayer ) ].n明るさ = 8; + this.stパッド状態[ 2 + nHand + playerShift].n明るさ = 8; } break; case 0x13: { - this.stパッド状態[ 2 + ( 4 * nPlayer ) ].n明るさ = 8; - this.stパッド状態[ 3 + ( 4 * nPlayer ) ].n明るさ = 8; + if (_gt == EGameType.KONGA) + { + this.stパッド状態[0 + playerShift].n明るさ = 8; + this.stパッド状態[2 + playerShift].n明るさ = 8; + } + else + { + this.stパッド状態[2 + playerShift].n明るさ = 8; + this.stパッド状態[3 + playerShift].n明るさ = 8; + } } break; case 0x12: { - this.stパッド状態[ nHand + ( 4 * nPlayer ) ].n明るさ = 8; + this.stパッド状態[ nHand + playerShift].n明るさ = 8; } break; case 0x14: { - this.stパッド状態[ 0 + ( 4 * nPlayer ) ].n明るさ = 8; - this.stパッド状態[ 1 + ( 4 * nPlayer ) ].n明るさ = 8; + if (_gt == EGameType.KONGA) + { + this.stパッド状態[4 + playerShift].n明るさ = 8; + } + else + { + this.stパッド状態[0 + playerShift].n明るさ = 8; + this.stパッド状態[1 + playerShift].n明るさ = 8; + } + } break; } @@ -406,7 +437,7 @@ namespace TJAPlayer3 } //太鼓 - private STパッド状態[] stパッド状態 = new STパッド状態[ 4 * 4 ]; + private STパッド状態[] stパッド状態 = new STパッド状態[ 4 * 5 ]; private long nフラッシュ制御タイマ; //private CTexture[] txコースシンボル = new CTexture[ 6 ]; diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs index 6dcdbef5..8d0b55d0 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs @@ -977,8 +977,10 @@ namespace TJAPlayer3 else if ((TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0) && (nPad >= 16 && nPad <= 19)) break; var padTo = nUsePlayer == 0 ? nPad - 12 : nPad - 12 - 4; - var isDon = padTo < 2 ? true : false; - + var isDon = padTo < 2 ? true : false; + + #region [ADLIB] + CDTX.CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(nTime, nUsePlayer); E判定 e判定 = (chipNoHit != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipNoHit, nUsePlayer) : E判定.Miss; @@ -998,8 +1000,12 @@ namespace TJAPlayer3 { this.soundAdlib2?.t再生を開始する(); } - } - + } + + #endregion + + #region [Visual effects] + switch (nPad) { case 12: @@ -1067,11 +1073,46 @@ namespace TJAPlayer3 if (b太鼓音再生フラグ) this.soundBlue2?.t再生を開始する(); break; + // Clap + case (int)Eパッド.CLAP: + if (TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(0)] == EGameType.KONGA) + { + nLane = (int)PlayerLane.FlashType.Clap; + nHand = 0; + nChannel = 0x14; + if (b太鼓音再生フラグ) + { + this.soundClap?.t再生を開始する(); + } + } + else + { + nLane = (int)PlayerLane.FlashType.Total; + } + break; + case (int)Eパッド.CLAP2P: + if (TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(1)] == EGameType.KONGA) + { + nLane = (int)PlayerLane.FlashType.Clap; + nHand = 0; + nChannel = 0x14; + if (b太鼓音再生フラグ) + { + this.soundClap2?.t再生を開始する(); + } + } + else + { + nLane = (int)PlayerLane.FlashType.Total; + } + break; } TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nUsePlayer].Start((PlayerLane.FlashType)nLane); - TJAPlayer3.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(nChannel, nHand, nUsePlayer); - + TJAPlayer3.stage演奏ドラム画面.actMtaiko.tMtaikoEvent(nChannel, nHand, nUsePlayer); + + #endregion + if (this.b連打中[nUsePlayer]) { chipNoHit = this.chip現在処理中の連打チップ[nUsePlayer]; @@ -1391,7 +1432,7 @@ namespace TJAPlayer3 } protected override void t進行描画_チップ_Taiko( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, int nPlayer ) { - int nLane = 0; + int nLane = (int)PlayerLane.FlashType.Red; EGameType _gt = TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(nPlayer)]; @@ -1426,8 +1467,11 @@ namespace TJAPlayer3 this.FlyingNotes.Start(pChip.nチャンネル番号 < 0x1A ? (pChip.nチャンネル番号 - 0x10) : (pChip.nチャンネル番号 - 0x17), nPlayer); //this.actChipFireTaiko.Start(pChip.nチャンネル番号 < 0x1A ? (pChip.nチャンネル番号 - 0x10) : (pChip.nチャンネル番号 - 0x17), nPlayer); - if (pChip.nチャンネル番号 == 0x12 || pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1B) nLane = 1; - TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start((nLane == 0 ? PlayerLane.FlashType.Red : PlayerLane.FlashType.Blue)); + if (pChip.nチャンネル番号 == 0x12 || pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1B) nLane = (int)PlayerLane.FlashType.Blue; + + if (pChip.nチャンネル番号 == 0x14 && _gt == EGameType.KONGA) nLane = (int)PlayerLane.FlashType.Clap; + + TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start((PlayerLane.FlashType)nLane); TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Hit); this.actMtaiko.tMtaikoEvent(pChip.nチャンネル番号, this.nHand[nPlayer], nPlayer); diff --git a/TJAPlayer3/Stages/07.Game/Taiko/TaikoLaneFlash.cs b/TJAPlayer3/Stages/07.Game/Taiko/TaikoLaneFlash.cs index d83ff69d..127844a3 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/TaikoLaneFlash.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/TaikoLaneFlash.cs @@ -56,15 +56,20 @@ namespace TJAPlayer3 public PlayerLane(int player) { Flash = new LaneFlash[(int)FlashType.Total]; + var _gt = TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(player)]; + for (int i = 0; i < (int)FlashType.Total; i++) { switch (i) { case (int)FlashType.Red: - Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Red, player); + Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Red[(int)_gt], player); break; case (int)FlashType.Blue: - Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Blue, player); + Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Blue[(int)_gt], player); + break; + case (int)FlashType.Clap: + Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Clap[(int)_gt], player); break; case (int)FlashType.Hit: Flash[i] = new LaneFlash(ref TJAPlayer3.Tx.Lane_Yellow, player); @@ -86,6 +91,7 @@ namespace TJAPlayer3 { Red, Blue, + Clap, Hit, Total } diff --git a/Test/Documentation/I18N/DictionnaryIndexes.md b/Test/Documentation/I18N/DictionnaryIndexes.md index db768fd9..46d83b27 100644 --- a/Test/Documentation/I18N/DictionnaryIndexes.md +++ b/Test/Documentation/I18N/DictionnaryIndexes.md @@ -161,10 +161,10 @@ 10055 : "System key input configuration" option title 10056 : "Hide Dan/Tower" option title 10057 : "Hide Dan/Tower" description -10058 : "Konga clap key settings" option title -10059 : "Konga clap key settings" description -10060 : "Konga clap key settings for 2P" option title -10061 : "Konga clap key settings for 2P" description +10060 : "Konga clap key settings" option title +10061 : "Konga clap key settings" description +10062 : "Konga clap key settings for 2P" option title +10063 : "Konga clap key settings for 2P" description 10084 : "Shin-uchi toggle" option title 10085 : "System options" menu title 10086 : "Gameplay options" menu title diff --git a/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Blue_Konga.png b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Blue_Konga.png new file mode 100644 index 00000000..4b046381 Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Blue_Konga.png differ diff --git a/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Clap_Konga.png b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Clap_Konga.png new file mode 100644 index 00000000..742b8039 Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Clap_Konga.png differ diff --git a/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Red_Konga.png b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Red_Konga.png new file mode 100644 index 00000000..08ba8302 Binary files /dev/null and b/Test/System/SimpleStyle/Graphics/5_Game/12_Lane/Red_Konga.png differ