1
0
mirror of synced 2025-01-19 01:24:08 +01:00

Add 10 Levels of AI in addition of Auto mode (It's a separated option that also change the 2nd player nameplate to AI don one, results for AI are also not saved.)

This commit is contained in:
0aubsq 2021-11-28 10:20:53 +01:00
parent ad4c262f26
commit 310e9063c0
12 changed files with 161 additions and 79 deletions

View File

@ -18,6 +18,8 @@
9 : "Risky" description
10 : "Song speed" option title
11 : "Song speed" description
12 : "AI Level" option title
13 : "AI Level" description
16 : "Layout type" option title
17 : "Layout type" description
18 : "Time stretch" description

View File

@ -605,6 +605,24 @@ namespace TJAPlayer3
}
// プロパティ
public class CAIPerformances
{
public int nGoodOdds;
public int nPerfectOdds;
public int nBadOdds;
public int nRollSpeed;
public CAIPerformances(int po, int go, int bo, int rp)
{
nGoodOdds = go;
nPerfectOdds = po;
nBadOdds = bo;
nRollSpeed = rp;
}
}
#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
//----------------------------------------
public float[,] fGaugeFactor = new float[5,2];
@ -738,6 +756,21 @@ namespace TJAPlayer3
public bool bAuto先生の連打;
public int nRollsPerSec;
public int nAILevel;
public CAIPerformances[] apAIPerformances =
{
new CAIPerformances(500, 400, 100, 7),
new CAIPerformances(650, 310, 40, 8),
new CAIPerformances(750, 225, 25, 9),
new CAIPerformances(800, 180, 20, 10),
new CAIPerformances(850, 135, 15, 12),
new CAIPerformances(900, 90, 10, 14),
new CAIPerformances(910, 85, 5, 16),
new CAIPerformances(950, 49, 1, 22),
new CAIPerformances(975, 25, 0, 26),
new CAIPerformances(1000, 0, 0, 30)
};
public bool b大音符判定;
public int n両手判定の待ち時間;
@ -1296,6 +1329,7 @@ namespace TJAPlayer3
this.n表示可能な最小コンボ数.Bass = 10;
this.n表示可能な最小コンボ数.Taiko = 10;
this.nRollsPerSec = 15;
this.nAILevel = 0;
this.FontName = "MS UI Gothic";
this.BoxFontName = "MS UI Gothic";
this.ApplyLoudnessMetadata = true;
@ -1817,6 +1851,7 @@ namespace TJAPlayer3
sw.WriteLine("Taiko2P={0}", this.b太鼓パートAutoPlay2P ? 1 : 0);
sw.WriteLine("TaikoAutoRoll={0}", this.bAuto先生の連打 ? 1 : 0);
sw.WriteLine("RollsPerSec={0}", this.nRollsPerSec);
sw.WriteLine("AILevel={0}", this.nAILevel);
sw.WriteLine();
sw.WriteLine(";-------------------");
#endregion
@ -2558,6 +2593,10 @@ namespace TJAPlayer3
else if (str3.Equals("RollsPerSec"))
{
this.nRollsPerSec = int.Parse(str4);
}
else if (str3.Equals("AILevel"))
{
this.nAILevel = int.Parse(str4);
}
continue;
//-----------------------------

View File

@ -32,6 +32,11 @@ namespace TJAPlayer3
[10] = "Song Playback Speed",
[11] = "Change song playback speed.\nIf the Time Stretch option is enabled,\nsound issues may occur below 0.9x playback speed.\n" +
"Note: It also changes the songs' pitch.",
[12] = "AI Level",
[13] = "Determines how precise the AI is.\n" +
"If 0, AI is disabled.\n" +
"If 1 or more, the 2P will play as AI.\n" +
"Disabled if AUTO 2P is on.",
[16] = "Layout type",
[17] = "You can change the layout of the songs \ndisplayed on the song select screen.\n" +
"0 : Regular (Up to down diagonal)\n" +

View File

@ -103,7 +103,7 @@ namespace TJAPlayer3
[59] = "Para que el carril de J2\n" +
" se juegue automáticamente.",
[60] = "Velocidad del redoble",
[61] = "Redobles por segundo cuando se usa el\nmodo automático.\nNo tiene efecto en los globos.\nDesactivado si está en 0,\nbloqueado a un redoble por frame.",
[61] = "Redobles por segundo cuando se usa el\nmodo automático.\nNo tiene efecto en los globos.\nDesactivado si está en 0,\nbloqueado a un redoble por frame." +
" no se completarán en modo automático.",
[62] = "VelDesplazamiento",
[63] = "Cambiar la velocidad de desplazamiento\n" +

View File

@ -38,6 +38,11 @@ namespace TJAPlayer3
"Note: Cette option change aussi le ton de la musique.\n" +
"Si TimeStretch=ON, il peut y avoir du\n" +
"lag si la vitesse générale est inférieure à x0.900.",
[12] = "Niveau de l'IA",
[13] = "Determine les performances de l'IA.\n" +
"Si 0, l'IA est désactivée.\n" +
"Si au moins 1, le J2 est joué par l'IA.\n" +
"Non compatible avec le mode AUTO J2.",
[16] = "Disposition des blocs",
[17] = "Cette option détermine l'ordonnancement \ndes blocs dans le menu de selection \n des musiques en mode partie rapide.\n" +
"0 : Standard (Diagonale haut-bas)\n" +

View File

@ -38,6 +38,11 @@ namespace TJAPlayer3
"TimeStretchがONのときに、演奏\n" +
"速度をx0.850以下にすると、音の\n" +
"ズレが大きくなります。",
[12] = "AIレベル",
[13] = "AIの制度を定める設定です。\n" +
"ならAIはオフされます。\n" +
"以上なら2PはAIとして自動でやります。\n" +
"AUTO 2PはオンならAI使用できません。",
[16] = "選曲画面レイアウト",
[17] = "選曲画面のレイアウトの変更ができます。\n" +
"0=>通常の設計(上下斜)\n" +

View File

@ -397,6 +397,10 @@ namespace TJAPlayer3
CLangManager.LangInstance.GetString(61));
this.list項目リスト.Add(this.iRollsPerSec);
this.iAILevel = new CItemInteger(CLangManager.LangInstance.GetString(12), 0, 10, TJAPlayer3.ConfigIni.nAILevel,
CLangManager.LangInstance.GetString(13));
this.list項目リスト.Add(this.iAILevel);
/*
this.iTaikoAutoRoll = new CItemToggle(CLangManager.LangInstance.GetString(60), TJAPlayer3.ConfigIni.bAuto先生の連打,
@ -1413,6 +1417,7 @@ namespace TJAPlayer3
private CItemToggle iTaikoAutoRoll;
private CItemInteger iRollsPerSec;
private CItemInteger iAILevel;
private CItemToggle iTaikoBranchGuide;
private CItemList iTaikoDefaultCourse; //2017.01.30 DD デフォルトでカーソルをあわせる難易度
@ -1551,6 +1556,9 @@ namespace TJAPlayer3
//TJAPlayer3.ConfigIni.bAuto先生の連打 = this.iTaikoAutoRoll.bON;
TJAPlayer3.ConfigIni.nRollsPerSec = this.iRollsPerSec.n現在の値;
TJAPlayer3.ConfigIni.nAILevel = this.iAILevel.n現在の値;
TJAPlayer3.NamePlate.tNamePlateRefreshTitles(1);
TJAPlayer3.ConfigIni.n譜面スクロール速度.Drums = this.iDrumsScrollSpeed.n現在の値;
//CDTXMania.ConfigIni.bドラムコンボ表示 = this.iDrumsComboDisp.bON;
// "Sudden" || "Sud+Hid"

View File

@ -826,6 +826,19 @@ namespace TJAPlayer3
{
var e判定 = e指定時刻からChipのJUDGEを返すImpl(nTime, pChip);
/*
if (TJAPlayer3.ConfigIni.nAILevel > 0)
{
int dice = TJAPlayer3.Random.Next(1000);
if (dice < TJAPlayer3.ConfigIni.apAIPerformances[TJAPlayer3.ConfigIni.nAILevel - 1].nBadOdds)
e判定 = E判定.Poor;
else if (dice + TJAPlayer3.ConfigIni.apAIPerformances[TJAPlayer3.ConfigIni.nAILevel - 1].nBadOdds
< TJAPlayer3.ConfigIni.apAIPerformances[TJAPlayer3.ConfigIni.nAILevel - 1].nGoodOdds)
e判定 = E判定.Good;
}
*/
// When performing calibration, reduce audio distraction from user input.
// For users who play primarily by watching notes cross the judgment position,
// you might think that we want them to see visual judgment feedback during
@ -849,6 +862,7 @@ namespace TJAPlayer3
private E判定 e指定時刻からChipのJUDGEを返すImpl( long nTime, CDTX.CChip pChip )
{
if ( pChip != null )
{
pChip.nLag = (int) ( nTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature
@ -1397,7 +1411,7 @@ namespace TJAPlayer3
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
break;
case 1:
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P;
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0;
break;
}
@ -1425,6 +1439,9 @@ namespace TJAPlayer3
//連打が短すぎると発声されない
eJudgeResult = (bCorrectLane)? this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip ) : E判定.Miss;
// AI judges
eJudgeResult = AlterJudgement(nPlayer, eJudgeResult, true);
if (!bAutoPlay && eJudgeResult != E判定.Miss)
{
CLagLogger.Add(nPlayer, pChip);
@ -1437,9 +1454,15 @@ namespace TJAPlayer3
this.b連打中[nPlayer] = true;
if (bAutoPlay)
{
if (this.bPAUSE == false && TJAPlayer3.ConfigIni.nRollsPerSec > 0) // && TJAPlayer3.ConfigIni.bAuto先生の連打)
int rollSpeed = TJAPlayer3.ConfigIni.nRollsPerSec;
if (TJAPlayer3.ConfigIni.nAILevel > 0)
rollSpeed = TJAPlayer3.ConfigIni.apAIPerformances[TJAPlayer3.ConfigIni.nAILevel - 1].nRollSpeed;
if (this.bPAUSE == false && rollSpeed > 0) // && TJAPlayer3.ConfigIni.bAuto先生の連打)
{
if (((CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) > (pChip.n発声時刻ms + (1000.0 / (double)TJAPlayer3.ConfigIni.nRollsPerSec) * pChip.nRollCount))
if (((CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) > (pChip.n発声時刻ms + (1000.0 / (double)rollSpeed) * pChip.nRollCount))
{
if (this.nHand[nPlayer] == 0)
this.nHand[nPlayer]++;
@ -1465,22 +1488,6 @@ namespace TJAPlayer3
this.tRollProcess(pChip, (CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)), 1, nNowInput, 0, nPlayer);
}
//if ((int)CSound管理.rc演奏用タイマ.n現在時刻ms >= pChip.nーツ終了時刻ms)
//{
// if (actChara.CharaAction_Balloon_Breaking.b進行中)
// {
// this.actChara.bマイどんアクション中 = false; // 風船終了後、再生されていたアクションがされないようにするために追加。(AioiLight)
// if (actChara.CharaAction_Balloon_Miss != null)
// {
// actChara.アクションタイマーリセット();
// actChara.bマイどんアクション中 = true;
// actChara.CharaAction_Balloon_Miss = new CCounter(0, CDTXMania.Skin.Game_Chara_Ptn_Balloon_Miss - 1, CDTXMania.Skin.Game_Chara_Balloon_Timer, CDTXMania.Timer);
// System.Windows.Forms.MessageBox.Show("");
// }
// }
//}
break;
//---------------------------
#endregion
@ -1547,22 +1554,12 @@ namespace TJAPlayer3
if (eJudgeResult != E判定.Auto && eJudgeResult != E判定.Miss)
{
this.actJudgeString.Start(nPlayer, bAutoPlay ? E判定.Auto : eJudgeResult);
this.actJudgeString.Start(nPlayer, (bAutoPlay && TJAPlayer3.ConfigIni.nAILevel == 0) ? E判定.Auto : eJudgeResult);
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.Start(pChip.nチャンネル番号, eJudgeResult, true, nPlayer);
TJAPlayer3.stage演奏ドラム画面.actChipFireD.Start(pChip.nチャンネル番号, eJudgeResult, nPlayer);
}
if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay ? true : (nNowInput == 2 || nNowInput == 3))
{
//if( pChip.nチャンネル番号 == 0x13 || pChip.nチャンネル番号 == 0x1A )
// //CDTXMania.stage演奏ドラム画面.actChipFireD.Start( 0, nPlayer );
//else if( pChip.nチャンネル番号 == 0x14 || pChip.nチャンネル番号 == 0x1B )
// //CDTXMania.stage演奏ドラム画面.actChipFireD.Start( 1, nPlayer );
}
}
else if (eJudgeResult != E判定.Poor && eJudgeResult != E判定.Bad)
{
//this.actJudgeString.Start( 0,bAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag, pChip, nPlayer );
}
}
break;
}
@ -2560,7 +2557,7 @@ namespace TJAPlayer3
#endregion
#region
if ((pastJudge == E判定.Miss || pastJudge == E判定.Poor) && (pastJudge != E判定.Miss && pastJudge != E判定.Poor))
if ((pastJudge == E判定.Miss || pastJudge == E判定.Poor) && (futureJudge != E判定.Miss && futureJudge != E判定.Poor))
{
// 過去の判定が不可で、未来の判定が可以上なら未来を返却。
nearestChip = futureChip;
@ -2771,6 +2768,8 @@ namespace TJAPlayer3
protected abstract void ();
protected void tキー入力()
{
// Inputs
IInputDevice keyboard = TJAPlayer3.Input管理.Keyboard;
if ( keyboard.bキーが押された( (int)SlimDXKeys.Key.F1 ) &&
( keyboard.bキーが押されている( (int)SlimDXKeys.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDXKeys.Key.LeftShift ) ) )
@ -2792,6 +2791,7 @@ namespace TJAPlayer3
if ( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ._STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ._STAGE_FAILED_フェードアウト ) )
{
this.t入力処理_ドラム();
if ( keyboard.bキーが押された( (int)SlimDXKeys.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDXKeys.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDXKeys.Key.LeftShift ) ) )
{ // shift (+ctrl) + UpArrow (BGMAdjust)
TJAPlayer3.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDXKeys.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDXKeys.Key.RightControl ) ) ? 1 : 10 );
@ -3144,7 +3144,7 @@ namespace TJAPlayer3
bAutoPlay = configIni.b太鼓パートAutoPlay;
break;
case 1:
bAutoPlay = configIni.b太鼓パートAutoPlay2P;
bAutoPlay = configIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0;
dTX = TJAPlayer3.DTX_2P;
break;
default:
@ -4030,7 +4030,7 @@ namespace TJAPlayer3
bAutoPlay = configIni.b太鼓パートAutoPlay;
break;
case 1:
bAutoPlay = configIni.b太鼓パートAutoPlay2P;
bAutoPlay = configIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0;
dTX = TJAPlayer3.DTX_2P;
break;
default:
@ -4843,6 +4843,25 @@ namespace TJAPlayer3
}
}
private int nDice = 0;
public E判定 AlterJudgement(int player, E判定 judgement, bool reroll)
{
int AILevel = TJAPlayer3.ConfigIni.nAILevel;
if (AILevel > 0 && player == 1)
{
if (reroll)
nDice = TJAPlayer3.Random.Next(1000);
if (nDice < TJAPlayer3.ConfigIni.apAIPerformances[AILevel - 1].nBadOdds)
return E判定.Poor;
else if (nDice + TJAPlayer3.ConfigIni.apAIPerformances[AILevel - 1].nBadOdds
< TJAPlayer3.ConfigIni.apAIPerformances[AILevel - 1].nGoodOdds)
return E判定.Good;
}
return judgement;
}
public void ReSetScore(int scoreInit, int scoreDiff)
{
//一打目の処理落ちがひどいので、あらかじめここで点数の計算をしておく。

View File

@ -328,6 +328,8 @@ namespace TJAPlayer3
// other controller, etc. and the sounds of the input calibration audio file.
if (!TJAPlayer3.IsPerformingCalibration)
{
// Oto iro here
this.soundRed = TJAPlayer3.Sound管理.tサウンドを生成する( CSkin.Path( @"Sounds\Taiko\dong.ogg" ), ESoundGroup.SoundEffect );
this.soundBlue = TJAPlayer3.Sound管理.tサウンドを生成する( CSkin.Path( @"Sounds\Taiko\ka.ogg" ), ESoundGroup.SoundEffect );
this.soundAdlib = TJAPlayer3.Sound管理.tサウンドを生成する( CSkin.Path(@"Sounds\Taiko\Adlib.ogg"), ESoundGroup.SoundEffect );
@ -335,6 +337,7 @@ namespace TJAPlayer3
this.soundBlue2 = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Taiko\ka.ogg"), ESoundGroup.SoundEffect);
this.soundAdlib2 = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Taiko\Adlib.ogg"), ESoundGroup.SoundEffect);
if (TJAPlayer3.ConfigIni.nPlayerCount >= 2)//2020.05.06 Mr-Ojii左右に出したかったから、追加。
{
this.soundRed.n位置 = -100;
@ -353,25 +356,6 @@ namespace TJAPlayer3
{
if( !base.b活性化してない )
{
////CDTXMania.tテクスチャの解放( ref this.tx背景 );
//CDTXMania.tテクスチャの解放( ref this.txヒットバー );
//CDTXMania.tテクスチャの解放( ref this.txヒットバーGB );
//CDTXMania.tテクスチャの解放( ref this.txチップ );
// //CDTXMania.tテクスチャの解放( ref this.tx太鼓ーツ );
// CDTXMania.tテクスチャの解放( ref this.txHand );
// CDTXMania.tテクスチャの解放( ref this.txSenotes );
// CDTXMania.tテクスチャの解放( ref this.tx小節線 );
// CDTXMania.tテクスチャの解放( ref this.tx小節線_branch );
//CDTXMania.tテクスチャの解放( ref this.txレーンフレームGB );
////CDTXMania.tテクスチャの解放( ref this.txWailing枠 );
// CDTXMania.tテクスチャの解放( ref this.tx判定数表示パネル );
// CDTXMania.tテクスチャの解放( ref this.tx判定数小文字 );
// CDTXMania.tテクスチャの解放( ref this.txNamePlate );
// if (CDTXMania.stage演奏ドラム画面.bDoublePlay)
// CDTXMania.tテクスチャの解放( ref this.txNamePlate2P );
// CDTXMania.tテクスチャの解放( ref this.txPlayerNumber);
if( this.soundRed != null )
this.soundRed.t解放する();
if( this.soundBlue != null )
@ -607,14 +591,6 @@ namespace TJAPlayer3
this.actFOClear.tフェードアウト開始();
}
//if( bIsFinishedPlaying && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
//{
// this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;
// base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;
// this.actFOClear.tフェードアウト開始();
//}
if( bIsFinishedFadeout )
{
Debug.WriteLine( "Total On進行描画=" + sw.ElapsedMilliseconds + "ms" );
@ -797,6 +773,9 @@ namespace TJAPlayer3
int nPad = index;
E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip );
e判定 = AlterJudgement(nPlayer, e判定, false);
//if( pChip.nコース == this.n現在のコース )
this.actGame.t叩ききりまショー_判定から各数値を増加させる( e判定, (int)( nHitTime - pChip.n発声時刻ms ) );
if( e判定 == E判定.Miss )
@ -955,6 +934,7 @@ namespace TJAPlayer3
CDTX.CChip chipNoHit = r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(nTime, nUsePlayer);
E判定 e判定 = (chipNoHit != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipNoHit) : E判定.Miss;
e判定 = AlterJudgement(nUsePlayer, e判定, false);
bool b太鼓音再生フラグ = true;
if (chipNoHit != null)
@ -1380,7 +1360,7 @@ namespace TJAPlayer3
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay;
break;
case 1:
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P;
bAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0;
break;
case 2:
case 3:
@ -1393,10 +1373,12 @@ namespace TJAPlayer3
pChip.bHit = true;
if (pChip.nチャンネル番号 != 0x1F)
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));
TJAPlayer3.stage演奏ドラム画面.actTaikoLaneFlash.PlayerLane[nPlayer].Start(PlayerLane.FlashType.Hit);
this.actMtaiko.tMtaikoEvent(pChip.nチャンネル番号, this.nHand[nPlayer], nPlayer);
int n大音符 = (pChip.nチャンネル番号 == 0x11 || pChip.nチャンネル番号 == 0x12 ? 2 : 0);
@ -2057,7 +2039,7 @@ namespace TJAPlayer3
if (pChip.n発声時刻ms < (CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) && pChip.nーツ終了時刻ms > (CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)))
{
//時間内でかつ0x9Aじゃないならならヒット処理
if (pChip.nチャンネル番号 != 0x18 && (nPlayer == 0 ? TJAPlayer3.ConfigIni.b太鼓パートAutoPlay : TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P))
if (pChip.nチャンネル番号 != 0x18 && (nPlayer == 0 ? TJAPlayer3.ConfigIni.b太鼓パートAutoPlay : (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0)))
this.tチップのヒット処理(pChip.n発声時刻ms, pChip, E楽器パート.TAIKO, false, 0, nPlayer);
}
}

View File

@ -483,7 +483,7 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
this.nEarnedMedalsCount[0] = 0;
if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P)
if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P || TJAPlayer3.ConfigIni.nAILevel > 0)
this.nEarnedMedalsCount[1] = 0;
TJAPlayer3.NamePlateConfig.tEarnCoins(this.nEarnedMedalsCount);

View File

@ -40,6 +40,9 @@ namespace TJAPlayer3
this.pfdan = new CPrivateFastFont(new FontFamily("MS UI Gothic"), 12);
}
tNamePlateRefreshTitles(player);
/*
using (var tex = pfName.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Name[player], Color.White, Color.Black, 25))
txName[player] = TJAPlayer3.tテクスチャの生成(tex);
@ -48,6 +51,7 @@ namespace TJAPlayer3
using (var tex = pfdan.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Dan[player], Color.White, Color.Black, 22))
txdan[player] = TJAPlayer3.tテクスチャの生成(tex);
*/
}
ctNamePlateEffect = new CCounter(0, 120, 16.6f, TJAPlayer3.Timer);
@ -56,13 +60,26 @@ namespace TJAPlayer3
public void tNamePlateRefreshTitles(int player)
{
using (var tex = pfName.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Name[player], Color.White, Color.Black, 25))
string[] stages = { "初", "二", "三", "四", "五", "六", "七", "八", "九", "極" };
string name = "AIドン";
string title = "デウス・エクス・マキナ";
string dan = stages[Math.Max(0, TJAPlayer3.ConfigIni.nAILevel - 1)] + "面";
if (TJAPlayer3.ConfigIni.nAILevel == 0 || player == 0)
{
name = TJAPlayer3.NamePlateConfig.data.Name[player];
title = TJAPlayer3.NamePlateConfig.data.Title[player];
dan = TJAPlayer3.NamePlateConfig.data.Dan[player];
}
using (var tex = pfName.DrawPrivateFont(name, Color.White, Color.Black, 25))
txName[player] = TJAPlayer3.tテクスチャの生成(tex);
using (var tex = pfTitle.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Title[player], Color.Black, Color.Empty))
using (var tex = pfTitle.DrawPrivateFont(title, Color.Black, Color.Empty))
txTitle[player] = TJAPlayer3.tテクスチャの生成(tex);
using (var tex = pfdan.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Dan[player], Color.White, Color.Black, 22))
using (var tex = pfdan.DrawPrivateFont(dan, Color.White, Color.Black, 22))
txdan[player] = TJAPlayer3.tテクスチャの生成(tex);
}

Binary file not shown.