Add Fuse Roll support (D) | Fix #293
This commit is contained in:
parent
df27cbac9c
commit
5e918751c0
@ -8774,6 +8774,9 @@ namespace TJAPlayer3
|
||||
|
||||
public int[] Game_Balloon_Balloon_Number_4P = new int[] { 423, 95 };
|
||||
public int[] Game_Balloon_Balloon_Number_5P = new int[] { 423, 87 };
|
||||
|
||||
public int Game_Kusudama_Number_X = 960;
|
||||
public int Game_Kusudama_Number_Y = 450;
|
||||
#endregion
|
||||
#region Effects
|
||||
public int[] Game_Effect_Roll_StartPoint_X = new int[] { 56, -10, 200, 345, 100, 451, 600, 260, -30, 534, 156, 363 };
|
||||
|
@ -4283,7 +4283,7 @@ namespace TJAPlayer3
|
||||
if (b分岐前の連打開始)
|
||||
{
|
||||
//if (listChips[i].nチャンネル番号 == 0x15 || listChips[i].nチャンネル番号 == 0x16)
|
||||
if (NotesManager.IsRoll(listChips[i]))
|
||||
if (NotesManager.IsRoll(listChips[i]) || NotesManager.IsFuzeRoll(listChips[i]))
|
||||
{
|
||||
if (nReturnChip == null)
|
||||
nReturnChip = i;
|
||||
@ -4453,7 +4453,7 @@ namespace TJAPlayer3
|
||||
|
||||
if (nObjectNum != 0)
|
||||
{
|
||||
if ((nObjectNum >= 5 && nObjectNum <= 7) || nObjectNum == 9 || nObjectNum == 16 || nObjectNum == 17)
|
||||
if ((nObjectNum >= 5 && nObjectNum <= 7) || nObjectNum == 9 || nObjectNum == 13 || nObjectNum == 16 || nObjectNum == 17)
|
||||
{
|
||||
if (nNowRoll != 0)
|
||||
{
|
||||
@ -4495,8 +4495,8 @@ namespace TJAPlayer3
|
||||
chip.dbBPM = this.dbNowBPM;
|
||||
chip.dbSCROLL = this.dbNowScroll;
|
||||
chip.dbSCROLL_Y = this.dbNowScrollY;
|
||||
chip.nスクロール方向 = this.nスクロール方向;
|
||||
|
||||
chip.nスクロール方向 = this.nスクロール方向;
|
||||
|
||||
if (IsEndedBranching)
|
||||
chip.nコース = (ECourse)i;
|
||||
else
|
||||
@ -4637,6 +4637,9 @@ namespace TJAPlayer3
|
||||
case 0xB:
|
||||
chip.nSenote = 6;
|
||||
break;
|
||||
case 0xD:
|
||||
chip.nSenote = 0xB;
|
||||
break;
|
||||
case 0xF1:
|
||||
chip.nSenote = 5;
|
||||
break;
|
||||
|
@ -57,6 +57,10 @@ namespace TJAPlayer3
|
||||
const string MODICONS = @"21_ModIcons\";
|
||||
const string AIBATTLE = @"22_AIBattle\";
|
||||
|
||||
// Special balloons
|
||||
const string KUSUDAMA = @"Kusudama\";
|
||||
const string FUSE = @"Fuseroll\";
|
||||
|
||||
// Tower infos
|
||||
const string TOWERDON = @"Tower_Don\";
|
||||
const string TOWERFLOOR = @"Tower_Floors\";
|
||||
@ -594,8 +598,17 @@ namespace TJAPlayer3
|
||||
Balloon_Breaking[i] = TxC(GAME + BALLOON + @"Breaking_" + i.ToString() + ".png");
|
||||
}
|
||||
|
||||
Kusudama = TxC(GAME + BALLOON + KUSUDAMA + @"Kusudama.png");
|
||||
Kusudama_Clear = TxC(GAME + BALLOON + KUSUDAMA + @"Kusudama_Clear.png");
|
||||
Kusudama_Fail = TxC(GAME + BALLOON + KUSUDAMA + @"Kusudama_Fail.png");
|
||||
Kusudama_Number = TxC(GAME + BALLOON + KUSUDAMA + @"Kusudama_Number.png");
|
||||
Kusudama_Back = TxC(GAME + BALLOON + KUSUDAMA + @"Kusudama_Back.png");
|
||||
|
||||
Fuse_Number = TxC(GAME + BALLOON + FUSE + @"Number_Fuse.png");
|
||||
Fuse_Balloon = TxC(GAME + BALLOON + FUSE + @"Fuse.png");
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Effects
|
||||
|
||||
Effects_Hit_Explosion = TxCAf(GAME + EFFECTS + @"Hit\Explosion.png");
|
||||
@ -2246,6 +2259,15 @@ namespace TJAPlayer3
|
||||
Balloon_Number_Roll,
|
||||
Balloon_Number_Combo/*,*/
|
||||
/*Balloon_Broken*/;
|
||||
public CTexture Kusudama,
|
||||
Kusudama_Clear,
|
||||
Kusudama_Fail,
|
||||
Kusudama_Number,
|
||||
Kusudama_Back;
|
||||
|
||||
public CTexture Fuse_Number,
|
||||
Fuse_Balloon;
|
||||
|
||||
public CTexture[] Balloon_Breaking;
|
||||
#endregion
|
||||
#region エフェクト
|
||||
|
@ -133,7 +133,7 @@ namespace TJAPlayer3
|
||||
{
|
||||
chip.nList上の位置 = n整数値管理;
|
||||
//if ((chip.nチャンネル番号 == 0x15 || chip.nチャンネル番号 == 0x16) && (n整数値管理 < this.listChip[i].Count - 1))
|
||||
if (NotesManager.IsRoll(chip) && (n整数値管理 < this.listChip[i].Count - 1))
|
||||
if ((NotesManager.IsRoll(chip) || NotesManager.IsFuzeRoll(chip)) && (n整数値管理 < this.listChip[i].Count - 1))
|
||||
{
|
||||
if (chip.db発声時刻ms < r指定時刻に一番近い未ヒットChipを過去方向優先で検索する(0, i).db発声時刻ms)
|
||||
{
|
||||
@ -1131,7 +1131,7 @@ namespace TJAPlayer3
|
||||
return E判定.Perfect;
|
||||
}
|
||||
}
|
||||
else if(NotesManager.IsBalloon(pChip))
|
||||
else if(NotesManager.IsGenericBalloon(pChip))
|
||||
{
|
||||
if ((CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) >= pChip.n発声時刻ms - 17 && (CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < pChip.nノーツ終了時刻ms)
|
||||
{
|
||||
@ -1701,7 +1701,7 @@ namespace TJAPlayer3
|
||||
//---------------------------
|
||||
#endregion
|
||||
}
|
||||
else if (NotesManager.IsBalloon(pChip))
|
||||
else if (NotesManager.IsGenericBalloon(pChip))
|
||||
{
|
||||
#region [ Balloon ]
|
||||
|
||||
@ -3415,6 +3415,7 @@ namespace TJAPlayer3
|
||||
case 0x16:
|
||||
case 0x17:
|
||||
case 0x19:
|
||||
case 0x1D:
|
||||
{
|
||||
//2015.03.28 kairera0467
|
||||
//描画順序を変えるため、メイン処理だけをこちらに残して描画処理は分離。
|
||||
@ -3460,6 +3461,29 @@ namespace TJAPlayer3
|
||||
TJAPlayer3.Timer);
|
||||
}
|
||||
}
|
||||
if (chip現在処理中の連打チップ[nPlayer].nBalloon > chip現在処理中の連打チップ[nPlayer].nRollCount)
|
||||
{
|
||||
if (pChip.n連打音符State == 13)
|
||||
{
|
||||
this.actJudgeString.Start(nPlayer, E判定.Mine);
|
||||
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.Start(0x11, E判定.Bad, true, nPlayer);
|
||||
TJAPlayer3.stage演奏ドラム画面.actChipFireD.Start(0x11, E判定.Mine, nPlayer);
|
||||
actGauge.MineDamage(nPlayer);
|
||||
TJAPlayer3.Skin.soundBomb?.t再生する();
|
||||
this.CChartScore[nPlayer].nMine++;
|
||||
this.CSectionScore[nPlayer].nMine++;
|
||||
this.CBranchScore[nPlayer].nMine++;
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
|
||||
CFloorManagement.damage();
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||
this.nMine[actDan.NowShowingNumber]++;
|
||||
this.actCombo.n現在のコンボ数[nPlayer] = 0;
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||
this.nCombo[actDan.NowShowingNumber] = 0;
|
||||
this.actComboVoice.tReset(nPlayer);
|
||||
this.bIsMiss[nPlayer] = true;
|
||||
}
|
||||
}
|
||||
chip現在処理中の連打チップ[nPlayer] = null;
|
||||
|
||||
}
|
||||
@ -3471,7 +3495,6 @@ namespace TJAPlayer3
|
||||
|
||||
break;
|
||||
|
||||
case 0x1d:
|
||||
case 0x1e:
|
||||
break;
|
||||
|
||||
@ -4074,6 +4097,7 @@ namespace TJAPlayer3
|
||||
case 0x17: //風船
|
||||
case 0x18: //連打終了
|
||||
case 0x19:
|
||||
case 0x1D:
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
{
|
||||
@ -4270,7 +4294,7 @@ namespace TJAPlayer3
|
||||
|
||||
var bDontDeleteFlag = NotesManager.IsHittableNote(_chip);// Chip >= 0x11 && Chip <= 0x19;
|
||||
var bRollAllFlag = NotesManager.IsGenericRoll(_chip);//Chip >= 0x15 && Chip <= 0x19;
|
||||
var bBalloonOnlyFlag = NotesManager.IsBalloon(_chip) || NotesManager.IsKusudama(_chip);//Chip == 0x17;
|
||||
var bBalloonOnlyFlag = NotesManager.IsGenericBalloon(_chip);//Chip == 0x17;
|
||||
var bRollOnlyFlag = NotesManager.IsRoll(_chip);//Chip >= 0x15 && Chip <= 0x16;
|
||||
|
||||
if (bDontDeleteFlag)
|
||||
|
@ -120,7 +120,14 @@ namespace TJAPlayer3
|
||||
return base.On進行描画();
|
||||
}
|
||||
|
||||
public int On進行描画(int n連打ノルマ, int n連打数, int player)
|
||||
public enum EBalloonType
|
||||
{
|
||||
BALLOON,
|
||||
KUSUDAMA,
|
||||
FUSEROLL
|
||||
}
|
||||
|
||||
public int On進行描画(int n連打ノルマ, int n連打数, int player, EBalloonType btype)
|
||||
{
|
||||
this.ct風船ふきだしアニメ.t進行Loop();
|
||||
this.ct風船アニメ[player].t進行();
|
||||
@ -185,7 +192,7 @@ namespace TJAPlayer3
|
||||
for (int j = 0; j < 5; j++)
|
||||
{
|
||||
|
||||
if (n残り打数[j] < n連打数)
|
||||
if (n残り打数[j] < n連打数 && btype == EBalloonType.BALLOON)
|
||||
{
|
||||
if (TJAPlayer3.Tx.Balloon_Breaking[j] != null)
|
||||
TJAPlayer3.Tx.Balloon_Breaking[j].t2D描画(TJAPlayer3.app.Device, x + (this.ct風船ふきだしアニメ.n現在の値 == 1 ? 3 : 0), y);
|
||||
@ -193,9 +200,28 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
//1P:31 2P:329
|
||||
if (TJAPlayer3.Tx.Balloon_Balloon != null)
|
||||
TJAPlayer3.Tx.Balloon_Balloon.t2D描画(TJAPlayer3.app.Device, frame_x, frame_y);
|
||||
this.t文字表示(num_x, num_y, n連打数, player);
|
||||
|
||||
if (btype == EBalloonType.BALLOON)
|
||||
{
|
||||
if (TJAPlayer3.Tx.Balloon_Balloon != null)
|
||||
TJAPlayer3.Tx.Balloon_Balloon.t2D描画(TJAPlayer3.app.Device, 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描画(TJAPlayer3.app.Device, 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描画(TJAPlayer3.app.Device, 0, 0);
|
||||
if (TJAPlayer3.Tx.Kusudama != null)
|
||||
TJAPlayer3.Tx.Kusudama.t2D描画(TJAPlayer3.app.Device, 0, 0);
|
||||
this.tKusudamaNumber(n連打数);
|
||||
}
|
||||
|
||||
//CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, n連打数.ToString() );
|
||||
}
|
||||
if (n連打数 == 0 && TJAPlayer3.stage演奏ドラム画面.actChara.b風船連打中[player])
|
||||
@ -247,11 +273,8 @@ namespace TJAPlayer3
|
||||
public Point pt;
|
||||
}
|
||||
|
||||
private void t文字表示(int x, int y, int num, int nPlayer)
|
||||
private void _nbDisplay(CTexture tx, int num, int x, int y)
|
||||
{
|
||||
TJAPlayer3.Tx.Balloon_Number_Roll.vc拡大縮小倍率.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
|
||||
TJAPlayer3.Tx.Balloon_Number_Roll.vc拡大縮小倍率.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].n現在の値];
|
||||
|
||||
int[] nums = C変換.SeparateDigits(num);
|
||||
for (int j = 0; j < nums.Length; j++)
|
||||
{
|
||||
@ -259,13 +282,42 @@ namespace TJAPlayer3
|
||||
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;
|
||||
float width = tx.sz画像サイズ.Width / 10.0f;
|
||||
float height = tx.sz画像サイズ.Height;
|
||||
|
||||
TJAPlayer3.Tx.Balloon_Number_Roll.t2D拡大率考慮下基準描画(TJAPlayer3.app.Device, _x, _y, new RectangleF(width * nums[j], 0, width, height));
|
||||
tx.t2D拡大率考慮下基準描画(TJAPlayer3.app.Device, _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.vc拡大縮小倍率.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
|
||||
TJAPlayer3.Tx.Kusudama_Number.vc拡大縮小倍率.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
|
||||
int x = TJAPlayer3.Skin.Game_Kusudama_Number_X;
|
||||
int y = TJAPlayer3.Skin.Game_Kusudama_Number_Y;
|
||||
|
||||
_nbDisplay(TJAPlayer3.Tx.Kusudama_Number, num, x, y);
|
||||
}
|
||||
|
||||
private void tFuseNumber(int x, int y, int num, int nPlayer)
|
||||
{
|
||||
if (TJAPlayer3.Tx.Fuse_Number == null) return;
|
||||
TJAPlayer3.Tx.Fuse_Number.vc拡大縮小倍率.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
|
||||
TJAPlayer3.Tx.Fuse_Number.vc拡大縮小倍率.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].n現在の値];
|
||||
|
||||
_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.vc拡大縮小倍率.X = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale;
|
||||
TJAPlayer3.Tx.Balloon_Number_Roll.vc拡大縮小倍率.Y = TJAPlayer3.Skin.Game_Balloon_Balloon_Number_Scale + RollScale[this.ct風船アニメ[nPlayer].n現在の値];
|
||||
|
||||
_nbDisplay(TJAPlayer3.Tx.Balloon_Number_Roll, num, x, y);
|
||||
}
|
||||
|
||||
public void tEnd()
|
||||
{
|
||||
this.ct風船終了 = new CCounter(0, 80, 10, CSound管理.rc演奏用タイマ);
|
||||
|
@ -1424,7 +1424,7 @@ namespace TJAPlayer3
|
||||
&& NotesManager.IsGenericRoll(chipNoHit)
|
||||
&& !NotesManager.IsRollEnd(chipNoHit))
|
||||
{
|
||||
bool _isBalloon = NotesManager.IsBalloon(chipNoHit);
|
||||
bool _isBalloon = NotesManager.IsGenericBalloon(chipNoHit);
|
||||
bool _isKusudama = NotesManager.IsKusudama(chipNoHit);
|
||||
bool _isKongaRedRoll = (NotesManager.IsSmallRoll(chipNoHit) || NotesManager.IsBigRoll(chipNoHit)) || _gt == EGameType.TAIKO;
|
||||
|
||||
@ -2131,6 +2131,7 @@ namespace TJAPlayer3
|
||||
{
|
||||
int nSenotesX = 0;
|
||||
int nSenotesY = 0;
|
||||
long nowTime = (long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (double)(TJAPlayer3.ConfigIni.n演奏速度 / 20.0));
|
||||
|
||||
switch (TJAPlayer3.ConfigIni.nPlayerCount)
|
||||
{
|
||||
@ -2167,14 +2168,14 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (NotesManager.IsGenericRoll(pChip))
|
||||
{
|
||||
if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (double)(TJAPlayer3.ConfigIni.n演奏速度 / 20.0)) < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms))
|
||||
if (pChip.nノーツ出現時刻ms != 0 && (nowTime < pChip.n発声時刻ms - pChip.nノーツ出現時刻ms))
|
||||
pChip.bShow = false;
|
||||
else if (pChip.nノーツ出現時刻ms != 0 && pChip.nノーツ移動開始時刻ms != 0)
|
||||
pChip.bShow = true;
|
||||
}
|
||||
if (NotesManager.IsRollEnd(pChip))
|
||||
{
|
||||
if (pChip.nノーツ出現時刻ms != 0 && ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (double)(TJAPlayer3.ConfigIni.n演奏速度 / 20.0)) < n先頭発声位置 - pChip.nノーツ出現時刻ms))
|
||||
if (pChip.nノーツ出現時刻ms != 0 && (nowTime < n先頭発声位置 - pChip.nノーツ出現時刻ms))
|
||||
pChip.bShow = false;
|
||||
else
|
||||
pChip.bShow = true;
|
||||
@ -2198,7 +2199,7 @@ namespace TJAPlayer3
|
||||
if (pChip.dbSCROLL_Y != 0.0)
|
||||
{
|
||||
double _scrollSpeed = pChip.dbSCROLL_Y * (this.act譜面スクロール速度.db現在の譜面スクロール速度[nPlayer] + 1.0) / 10.0;
|
||||
long __dbt = (long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
|
||||
long __dbt = nowTime;
|
||||
long time = pChip.n発声時刻ms - __dbt;
|
||||
float play_bpm_time = this.GetNowPBMTime(dTX, 0);
|
||||
y += NotesManager.GetNoteY(pChip, time * pChip.dbBPM, _scrollSpeed, TJAPlayer3.Skin.Game_Notes_Interval, play_bpm_time, configIni.eScrollMode, false);
|
||||
@ -2321,20 +2322,35 @@ namespace TJAPlayer3
|
||||
int _58_cut = 58 * _size[0] / 136;
|
||||
int _78_cut = 78 * _size[0] / 136;
|
||||
|
||||
if (NotesManager.IsRoll(pChip))
|
||||
if (NotesManager.IsRoll(pChip) || NotesManager.IsFuzeRoll(pChip))
|
||||
{
|
||||
if (NotesManager.IsFuzeRoll(pChip)
|
||||
&& nowTime >= pChip.n発声時刻ms && nowTime < pChip.nノーツ終了時刻ms)
|
||||
{
|
||||
x = NoteOriginX[nPlayer];
|
||||
y = NoteOriginY[nPlayer];
|
||||
}
|
||||
|
||||
|
||||
NotesManager.DisplayRoll(nPlayer, x, y, pChip, num9, normalColor, effectedColor, x末端, y末端);
|
||||
|
||||
if (TJAPlayer3.Tx.SENotes[(int)_gt] != null)
|
||||
{
|
||||
int _shift = NotesManager.IsBigRoll(pChip) ? 26 : 0;
|
||||
|
||||
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].vc拡大縮小倍率.X = x末端 - x - 44 - _shift;
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x + 90 + _shift, y + nSenotesY, new Rectangle(_60_cut, 8 * _size[1], 1, _size[1]));
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].vc拡大縮小倍率.X = 1.0f;
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x + 30 + _shift, y + nSenotesY, new Rectangle(0, 8 * _size[1], _60_cut, _size[1]));
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x - (_shift / 13), y + nSenotesY, new Rectangle(0, _size[1] * pChip.nSenote, _size[0], _size[1]));
|
||||
if (!NotesManager.IsFuzeRoll(pChip))
|
||||
{
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].vc拡大縮小倍率.X = x末端 - x - 44 - _shift;
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x + 90 + _shift, y + nSenotesY, new Rectangle(_60_cut, 8 * _size[1], 1, _size[1]));
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].vc拡大縮小倍率.X = 1.0f;
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x + 30 + _shift, y + nSenotesY, new Rectangle(0, 8 * _size[1], _60_cut, _size[1]));
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x - (_shift / 13), y + nSenotesY, new Rectangle(0, _size[1] * pChip.nSenote, _size[0], _size[1]));
|
||||
}
|
||||
else
|
||||
{
|
||||
NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -2343,9 +2359,9 @@ namespace TJAPlayer3
|
||||
{
|
||||
if (pChip.bShow)
|
||||
{
|
||||
if ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) >= pChip.n発声時刻ms && (long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) < pChip.nノーツ終了時刻ms)
|
||||
if (nowTime >= pChip.n発声時刻ms && nowTime < pChip.nノーツ終了時刻ms)
|
||||
x = NoteOriginX[nPlayer];
|
||||
else if ((long)(CSound管理.rc演奏用タイマ.n現在時刻ms * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) >= pChip.nノーツ終了時刻ms)
|
||||
else if (nowTime >= pChip.nノーツ終了時刻ms)
|
||||
x = (NoteOriginX[nPlayer] + pChip.nバーからのノーツ末端距離dot);
|
||||
|
||||
NotesManager.DisplayNote(nPlayer, x, y, pChip, num9, TJAPlayer3.Skin.Game_Notes_Size[0] * 2);
|
||||
@ -2377,7 +2393,7 @@ namespace TJAPlayer3
|
||||
n = 910;
|
||||
break;
|
||||
}
|
||||
if (pChip.n連打音符State != 7)
|
||||
if (pChip.n連打音符State != 7 && pChip.n連打音符State != 13)
|
||||
{
|
||||
//if( CDTXMania.ConfigIni.eSTEALTH != Eステルスモード.DORON )
|
||||
// CDTXMania.Tx.Notes.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( n, num9, 130, 130 ) );//大音符:1170
|
||||
@ -2387,7 +2403,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)))
|
||||
if (pChip.n発声時刻ms < nowTime && pChip.nノーツ終了時刻ms > nowTime)
|
||||
{
|
||||
//時間内でかつ0x9Aじゃないならならヒット処理
|
||||
if (!NotesManager.IsRollEnd(pChip) && (nPlayer != 1 ? TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[nPlayer] : (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[nPlayer] || TJAPlayer3.ConfigIni.bAIBattleMode)))
|
||||
@ -2482,18 +2498,26 @@ namespace TJAPlayer3
|
||||
if (this.chip現在処理中の連打チップ[i] != null)
|
||||
{
|
||||
//int n = this.chip現在処理中の連打チップ[i].nチャンネル番号;
|
||||
if (NotesManager.IsBalloon(this.chip現在処理中の連打チップ[i]) && this.b連打中[i] == true)
|
||||
if (NotesManager.IsGenericBalloon(this.chip現在処理中の連打チップ[i]) && this.b連打中[i] == true)
|
||||
{
|
||||
//if (this.chip現在処理中の連打チップ.n発声時刻ms <= (int)CSound管理.rc演奏用タイマ.n現在時刻ms && this.chip現在処理中の連打チップ.nノーツ終了時刻ms >= (int)CSound管理.rc演奏用タイマ.n現在時刻ms)
|
||||
if (this.chip現在処理中の連打チップ[i].n発声時刻ms <= (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)) && this.chip現在処理中の連打チップ[i].nノーツ終了時刻ms + 500 >= (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)))
|
||||
{
|
||||
this.chip現在処理中の連打チップ[i].bShow = false;
|
||||
this.actBalloon.On進行描画(this.chip現在処理中の連打チップ[i].nBalloon, this.n風船残り[i], i);
|
||||
this.actBalloon.On進行描画(
|
||||
this.chip現在処理中の連打チップ[i].nBalloon,
|
||||
this.n風船残り[i],
|
||||
i,
|
||||
NotesManager.IsFuzeRoll(this.chip現在処理中の連打チップ[i])
|
||||
? CAct演奏Drums風船.EBalloonType.FUSEROLL
|
||||
: NotesManager.IsKusudama(this.chip現在処理中の連打チップ[i])
|
||||
? CAct演奏Drums風船.EBalloonType.KUSUDAMA
|
||||
: CAct演奏Drums風船.EBalloonType.BALLOON
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.n現在の連打数[i] = 0;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ namespace TJAPlayer3
|
||||
["A"] = 10, // Joint Big Don (2P)
|
||||
["B"] = 11, // Joint Big Ka (2P)
|
||||
["C"] = 12, // Mine
|
||||
["D"] = 7, // ProjectOutfox's Fuse roll (Coming soon)
|
||||
["D"] = 13, // ProjectOutfox's Fuse roll
|
||||
["E"] = 0, // Unused
|
||||
["F"] = 15, // ADLib
|
||||
["G"] = 0xF1, // Green (Purple) double hit note
|
||||
@ -365,10 +365,14 @@ namespace TJAPlayer3
|
||||
{
|
||||
EGameType _gt = TJAPlayer3.ConfigIni.nGameType[TJAPlayer3.GetActualPlayer(player)];
|
||||
|
||||
if (TJAPlayer3.ConfigIni.eSTEALTH[TJAPlayer3.GetActualPlayer(player)] != Eステルスモード.OFF || !chip.bShow || TJAPlayer3.Tx.Notes[(int)_gt] == null)
|
||||
if (TJAPlayer3.ConfigIni.eSTEALTH[TJAPlayer3.GetActualPlayer(player)] != Eステルスモード.OFF || !chip.bShow)
|
||||
return;
|
||||
|
||||
int _offset = 0;
|
||||
var _texarr = TJAPlayer3.Tx.Notes[(int)_gt];
|
||||
int rollOrigin = (TJAPlayer3.Skin.Game_Notes_Size[0] * 5);
|
||||
float _adjust = TJAPlayer3.Skin.Game_Notes_Size[0] / 2.0f;
|
||||
float image_size = TJAPlayer3.Skin.Game_Notes_Size[0];
|
||||
|
||||
if (IsSmallRoll(chip) || (_gt == EGameType.TAIKO && IsYellowRoll(chip)))
|
||||
{
|
||||
@ -386,15 +390,18 @@ namespace TJAPlayer3
|
||||
{
|
||||
_offset = TJAPlayer3.Skin.Game_Notes_Size[0] * 8;
|
||||
}
|
||||
else if (IsFuzeRoll(chip))
|
||||
{
|
||||
_texarr = TJAPlayer3.Tx.Note_FuseRoll;
|
||||
_offset = -rollOrigin;
|
||||
}
|
||||
|
||||
if (_texarr == null) return;
|
||||
|
||||
float _adjust = TJAPlayer3.Skin.Game_Notes_Size[0] / 2.0f;
|
||||
float image_size = TJAPlayer3.Skin.Game_Notes_Size[0];
|
||||
int index = x末端 - x;
|
||||
|
||||
int rollOrigin = (TJAPlayer3.Skin.Game_Notes_Size[0] * 5);
|
||||
|
||||
var theta = -Math.Atan2(chip.dbSCROLL_Y, chip.dbSCROLL);
|
||||
// Temporary patch for odd math bug, to fix later
|
||||
// Temporary patch for odd math bug, to fix later, still bugs on katharsis (negative roll)
|
||||
if (chip.dbSCROLL_Y == 0)//theta == 0 || theta == -Math.PI)
|
||||
theta += 0.00000000001;
|
||||
|
||||
@ -404,24 +411,24 @@ namespace TJAPlayer3
|
||||
var odiv = (index - _adjust + _adjust + 1) / TJAPlayer3.Skin.Game_Notes_Size[0];
|
||||
|
||||
if (TJAPlayer3.Skin.Game_RollColorMode != CSkin.RollColorMode.None)
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].color4 = effectedColor;
|
||||
_texarr.color4 = effectedColor;
|
||||
else
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].color4 = normalColor;
|
||||
_texarr.color4 = normalColor;
|
||||
|
||||
// Body
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].vc拡大縮小倍率.X = (float)div;
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].fZ軸中心回転 = (float)theta;
|
||||
_texarr.vc拡大縮小倍率.X = (float)div;
|
||||
_texarr.fZ軸中心回転 = (float)theta;
|
||||
//var _x0 = x + _adjust;
|
||||
//var _y0 = y + 0f;
|
||||
|
||||
var _center_x = (x + x末端 + image_size) / 2;
|
||||
var _center_y = _adjust + (y + y末端) / 2;
|
||||
//TJAPlayer3.Tx.Notes[(int)_gt].t2D描画(TJAPlayer3.app.Device, _x0, _y0, new Rectangle(rollOrigin + TJAPlayer3.Skin.Game_Notes_Size[0] + _offset, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].t2D中心基準描画(TJAPlayer3.app.Device, (int)_center_x, (int)_center_y, new Rectangle(rollOrigin + TJAPlayer3.Skin.Game_Notes_Size[0] + _offset, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
_texarr.t2D中心基準描画(TJAPlayer3.app.Device, (int)_center_x, (int)_center_y, new Rectangle(rollOrigin + TJAPlayer3.Skin.Game_Notes_Size[0] + _offset, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
//t2D拡大率考慮中央基準描画 t2D中心基準描画
|
||||
|
||||
// Tail
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].vc拡大縮小倍率.X = 1.0f;
|
||||
_texarr.vc拡大縮小倍率.X = 1.0f;
|
||||
//var _x0 = x末端 + _adjust;
|
||||
//var _y0 = y末端 + 0f;
|
||||
var _d = _adjust;
|
||||
@ -433,19 +440,19 @@ namespace TJAPlayer3
|
||||
var _xc = x2 + (x2 - x1) * _d / dist;
|
||||
var _yc = y2 + (y2 - y1) * _d / dist;
|
||||
//TJAPlayer3.Tx.Notes[(int)_gt].t2D描画(TJAPlayer3.app.Device, (int)_x0, (int)_y0, 0, new Rectangle(rollOrigin + (TJAPlayer3.Skin.Game_Notes_Size[0] * 2) + _offset, frame, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].t2D中心基準描画(TJAPlayer3.app.Device, (int)_xc, (int)_yc, 0, new Rectangle(rollOrigin + (TJAPlayer3.Skin.Game_Notes_Size[0] * 2) + _offset, frame, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
_texarr.t2D中心基準描画(TJAPlayer3.app.Device, (int)_xc, (int)_yc, 0, new Rectangle(rollOrigin + (TJAPlayer3.Skin.Game_Notes_Size[0] * 2) + _offset, frame, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
|
||||
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].fZ軸中心回転 = 0;
|
||||
_texarr.fZ軸中心回転 = 0;
|
||||
|
||||
if (TJAPlayer3.Skin.Game_RollColorMode == CSkin.RollColorMode.All)
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].color4 = effectedColor;
|
||||
_texarr.color4 = effectedColor;
|
||||
else
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].color4 = normalColor;
|
||||
_texarr.color4 = normalColor;
|
||||
|
||||
// Head
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].t2D描画(TJAPlayer3.app.Device, x, y, 0, new Rectangle(rollOrigin + _offset, frame, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
TJAPlayer3.Tx.Notes[(int)_gt].color4 = normalColor;
|
||||
_texarr.t2D描画(TJAPlayer3.app.Device, x, y, 0, new Rectangle(rollOrigin + _offset, frame, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
|
||||
_texarr.color4 = normalColor;
|
||||
}
|
||||
|
||||
// SENotes
|
||||
@ -464,6 +471,10 @@ namespace TJAPlayer3
|
||||
{
|
||||
TJAPlayer3.Tx.SENotesExtension?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, 0, TJAPlayer3.Skin.Game_SENote_Size[0], TJAPlayer3.Skin.Game_SENote_Size[1]));
|
||||
}
|
||||
else if (IsFuzeRoll(chip))
|
||||
{
|
||||
TJAPlayer3.Tx.SENotesExtension?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, TJAPlayer3.Skin.Game_SENote_Size[1] * 2, TJAPlayer3.Skin.Game_SENote_Size[0], TJAPlayer3.Skin.Game_SENote_Size[1]));
|
||||
}
|
||||
else
|
||||
{
|
||||
TJAPlayer3.Tx.SENotes[(int)_gt]?.t2D描画(TJAPlayer3.app.Device, x, y, new Rectangle(0, TJAPlayer3.Skin.Game_SENote_Size[1] * chip.nSenote, TJAPlayer3.Skin.Game_SENote_Size[0], TJAPlayer3.Skin.Game_SENote_Size[1]));
|
||||
|
Loading…
x
Reference in New Issue
Block a user