deprecate old calibration method (calibration tja) that got replaced by input calibration on the regular menu
This commit is contained in:
parent
12eec18ab9
commit
1314118073
File diff suppressed because it is too large
Load Diff
@ -783,8 +783,6 @@ namespace OpenTaiko {
|
||||
|
||||
}
|
||||
|
||||
OpenTaiko.IsPerformingCalibration = false;
|
||||
|
||||
OpenTaiko.stageSongSelect.actDifficultySelectionScreen.bIsDifficltSelect = false;
|
||||
|
||||
this.pfBoxName = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.SongSelect_BoxName_Scale);
|
||||
|
@ -48,17 +48,7 @@ namespace OpenTaiko {
|
||||
var 譜面情報 = OpenTaiko.stageSongSelect.r確定されたスコア.譜面情報;
|
||||
this.str曲タイトル = 譜面情報.タイトル;
|
||||
this.strサブタイトル = 譜面情報.strサブタイトル;
|
||||
}
|
||||
|
||||
// For the moment, detect that we are performing
|
||||
// calibration via there being an actual single
|
||||
// player and the special song title and subtitle
|
||||
// of the .tja used to perform input calibration
|
||||
OpenTaiko.IsPerformingCalibration =
|
||||
!OpenTaiko.ConfigIni.bAutoPlay[0] &&
|
||||
OpenTaiko.ConfigIni.nPlayerCount == 1 &&
|
||||
str曲タイトル == "Input Calibration" &&
|
||||
strサブタイトル == "TJAPlayer3 Developers";
|
||||
}
|
||||
|
||||
this.strSTAGEFILE = CSkin.Path(@$"Graphics{Path.DirectorySeparatorChar}4_SongLoading{Path.DirectorySeparatorChar}Background.png");
|
||||
|
||||
@ -76,13 +66,9 @@ namespace OpenTaiko {
|
||||
// calibration is about to begin, rather than
|
||||
// displaying the song title and subtitle as usual.
|
||||
|
||||
var タイトル = OpenTaiko.IsPerformingCalibration
|
||||
? "Input calibration is about to begin."
|
||||
: this.str曲タイトル;
|
||||
var タイトル = this.str曲タイトル;
|
||||
|
||||
var サブタイトル = OpenTaiko.IsPerformingCalibration
|
||||
? "Please play as accurately as possible."
|
||||
: this.strサブタイトル;
|
||||
var サブタイトル = this.strサブタイトル;
|
||||
|
||||
if (!string.IsNullOrEmpty(タイトル)) {
|
||||
//this.txタイトル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
|
||||
@ -108,7 +94,6 @@ namespace OpenTaiko {
|
||||
Trace.TraceError("テクスチャの生成に失敗しました。({0})", new object[] { this.strSTAGEFILE });
|
||||
this.txタイトル = null;
|
||||
this.txサブタイトル = null;
|
||||
this.tx背景 = null;
|
||||
}
|
||||
|
||||
base.Activate();
|
||||
@ -134,9 +119,8 @@ namespace OpenTaiko {
|
||||
this.pfTITLE = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.SongLoading_Title_FontSize);
|
||||
this.pfSUBTITLE = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.SongLoading_SubTitle_FontSize);
|
||||
pfDanTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_Title_Size);
|
||||
pfDanSubTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_SubTitle_Size);
|
||||
|
||||
this.tx背景 = OpenTaiko.tテクスチャの生成(this.strSTAGEFILE, false);
|
||||
pfDanSubTitle = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Game_DanC_SubTitle_Size);
|
||||
|
||||
//this.txSongnamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @$"Graphics{Path.DirectorySeparatorChar}6_SongnamePlate.png" ) );
|
||||
base.CreateManagedResource();
|
||||
}
|
||||
@ -147,7 +131,6 @@ namespace OpenTaiko {
|
||||
pfDanTitle?.Dispose();
|
||||
pfDanSubTitle?.Dispose();
|
||||
|
||||
OpenTaiko.tテクスチャの解放(ref this.tx背景);
|
||||
base.ReleaseManagedResource();
|
||||
}
|
||||
public override int Draw() {
|
||||
@ -547,8 +530,7 @@ namespace OpenTaiko {
|
||||
private string str曲タイトル;
|
||||
private string strサブタイトル;
|
||||
private CTexture txタイトル;
|
||||
private CTexture txサブタイトル;
|
||||
private CTexture tx背景;
|
||||
private CTexture txサブタイトル;
|
||||
//private CTexture txSongnamePlate;
|
||||
private DateTime timeBeginLoad;
|
||||
private DateTime timeBeginLoadWAV;
|
||||
|
@ -505,12 +505,6 @@ namespace OpenTaiko {
|
||||
|
||||
var meanLag = CLagLogger.LogAndReturnMeanLag();
|
||||
|
||||
if (OpenTaiko.IsPerformingCalibration && meanLag != null) {
|
||||
var oldInputAdjustTimeMs = OpenTaiko.ConfigIni.nInputAdjustTimeMs;
|
||||
var newInputAdjustTimeMs = oldInputAdjustTimeMs - (int)Math.Round(meanLag.Value);
|
||||
Trace.TraceInformation($"Calibration complete. Updating InputAdjustTime from {oldInputAdjustTimeMs}ms to {newInputAdjustTimeMs}ms.");
|
||||
OpenTaiko.ConfigIni.nInputAdjustTimeMs = newInputAdjustTimeMs;
|
||||
}
|
||||
this.actDan.IsAnimating = false;// IsAnimating=trueのときにそのまま選曲画面に戻ると、文字列が描画されない問題修正用。
|
||||
OpenTaiko.tテクスチャの解放(ref this.tx背景);
|
||||
|
||||
@ -941,23 +935,7 @@ namespace OpenTaiko {
|
||||
|
||||
internal ENoteJudge e指定時刻からChipのJUDGEを返す(long nTime, CDTX.CChip pChip, int player = 0) {
|
||||
var e判定 = e指定時刻からChipのJUDGEを返すImpl(nTime, pChip, player);
|
||||
|
||||
// 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
|
||||
// calibration, but we do not. Humans are remarkably good at adjusting
|
||||
// the timing of their own physical movement, even without realizing it.
|
||||
// We are calibrating their input timing for the purposes of judgment.
|
||||
// We do not want them subconsciously playing early so as to line up
|
||||
// their hits with the perfect, good, etc. judgment results based on their
|
||||
// current (and soon to be replaced) input adjust time values.
|
||||
// Instead, we want them focused on the sounds of their keyboard, tatacon,
|
||||
// other controller, etc. and the visuals of notes crossing the judgment position.
|
||||
if (OpenTaiko.IsPerformingCalibration) {
|
||||
return e判定 < ENoteJudge.Good ? ENoteJudge.Good : e判定;
|
||||
} else {
|
||||
return e判定;
|
||||
}
|
||||
return e判定;
|
||||
}
|
||||
|
||||
private bool tEasyTimeZones(int nPlayer) {
|
||||
@ -2865,13 +2843,7 @@ namespace OpenTaiko {
|
||||
}
|
||||
}
|
||||
protected void tパネル文字列の設定() {
|
||||
// When performing calibration, inform the player that
|
||||
// calibration is taking place, rather than
|
||||
// displaying the panel title or song title as usual.
|
||||
|
||||
var panelString = OpenTaiko.IsPerformingCalibration
|
||||
? "Calibrating input..."
|
||||
: string.IsNullOrEmpty(OpenTaiko.DTX.PANEL) ? OpenTaiko.DTX.TITLE.GetString("") : OpenTaiko.DTX.PANEL;
|
||||
var panelString = string.IsNullOrEmpty(OpenTaiko.DTX.PANEL) ? OpenTaiko.DTX.TITLE.GetString("") : OpenTaiko.DTX.PANEL;
|
||||
|
||||
this.actPanel.SetPanelString(panelString,
|
||||
OpenTaiko.stageSongSelect.rChoosenSong.str本当のジャンル,
|
||||
|
@ -1,427 +1,427 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using FDK;
|
||||
using Rectangle = System.Drawing.Rectangle;
|
||||
|
||||
namespace OpenTaiko {
|
||||
internal class CActImplFireworks : CActivity {
|
||||
// コンストラクタ
|
||||
|
||||
public CActImplFireworks() {
|
||||
base.IsDeActivated = true;
|
||||
}
|
||||
|
||||
|
||||
// メソッド
|
||||
|
||||
/// <summary>
|
||||
/// 大音符の花火エフェクト
|
||||
/// </summary>
|
||||
/// <param name="nLane"></param>
|
||||
public virtual void Start(int nLane, int nPlayer) {
|
||||
nY座標P2 = new int[] { 548, 612, 670, 712, 730, 780, 725, 690, 640 };
|
||||
if (OpenTaiko.Tx.Effects_Hit_FireWorks != null && OpenTaiko.Tx.Effects_Hit_FireWorks != null) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int j = 0; j < 45; j++) {
|
||||
if (!this.st大音符花火[j].b使用中) {
|
||||
this.st大音符花火[j].b使用中 = true;
|
||||
this.st大音符花火[j].ct進行 = new CCounter(0, 40, 18, OpenTaiko.Timer); // カウンタ
|
||||
this.st大音符花火[j].fX = this.nX座標[i]; //X座標
|
||||
this.st大音符花火[j].fY = nPlayer == 0 ? this.nY座標[i] : this.nY座標P2[i];
|
||||
|
||||
switch (nLane) {
|
||||
case 0:
|
||||
this.st大音符花火[j].nColor = 0;
|
||||
break;
|
||||
case 1:
|
||||
this.st大音符花火[j].nColor = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
this.st大音符花火[j].n開始フレーム = 0;
|
||||
this.st大音符花火[j].n終了フレーム = 16;
|
||||
break;
|
||||
case 1:
|
||||
this.st大音符花火[j].n開始フレーム = 3;
|
||||
this.st大音符花火[j].n終了フレーム = 19;
|
||||
break;
|
||||
case 2:
|
||||
this.st大音符花火[j].n開始フレーム = 6;
|
||||
this.st大音符花火[j].n終了フレーム = 22;
|
||||
break;
|
||||
case 3:
|
||||
this.st大音符花火[j].n開始フレーム = 9;
|
||||
this.st大音符花火[j].n終了フレーム = 25;
|
||||
break;
|
||||
case 4:
|
||||
this.st大音符花火[j].n開始フレーム = 12;
|
||||
this.st大音符花火[j].n終了フレーム = 28;
|
||||
break;
|
||||
case 5:
|
||||
this.st大音符花火[j].n開始フレーム = 15;
|
||||
this.st大音符花火[j].n終了フレーム = 31;
|
||||
break;
|
||||
case 6:
|
||||
this.st大音符花火[j].n開始フレーム = 18;
|
||||
this.st大音符花火[j].n終了フレーム = 34;
|
||||
break;
|
||||
case 7:
|
||||
this.st大音符花火[j].n開始フレーム = 21;
|
||||
this.st大音符花火[j].n終了フレーム = 37;
|
||||
break;
|
||||
case 8:
|
||||
this.st大音符花火[j].n開始フレーム = 24;
|
||||
this.st大音符花火[j].n終了フレーム = 40;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Start(int nLane, ENoteJudge judge, int player) {
|
||||
for (int j = 0; j < 3 * 4; j++) {
|
||||
if (!this.st状態[j].b使用中)
|
||||
//for( int n = 0; n < 1; n++ )
|
||||
{
|
||||
this.st状態[j].b使用中 = true;
|
||||
//this.st状態[ n ].ct進行 = new CCounter( 0, 9, 20, CDTXMania.Timer );
|
||||
this.st状態[j].ct進行 = new CCounter(0, 6, 25, OpenTaiko.Timer);
|
||||
this.st状態[j].judge = judge;
|
||||
this.st状態[j].nPlayer = player;
|
||||
this.st状態_大[j].nPlayer = player;
|
||||
|
||||
switch (nLane) {
|
||||
case 0x11:
|
||||
case 0x12:
|
||||
this.st状態[j].nIsBig = 0;
|
||||
break;
|
||||
case 0x13:
|
||||
case 0x14:
|
||||
case 0x1A:
|
||||
case 0x1B:
|
||||
this.st状態_大[j].ct進行 = new CCounter(0, 9, 20, OpenTaiko.Timer);
|
||||
this.st状態_大[j].judge = judge;
|
||||
this.st状態_大[j].nIsBig = 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CActivity 実装
|
||||
|
||||
public override void Activate() {
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
this.st状態[i].ct進行 = new CCounter();
|
||||
this.st状態[i].b使用中 = false;
|
||||
this.st状態_大[i].ct進行 = new CCounter();
|
||||
}
|
||||
for (int i = 0; i < 256; i++) {
|
||||
this.st紙吹雪[i] = new ST紙吹雪();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
this.st紙吹雪[i].ct進行 = new CCounter();
|
||||
}
|
||||
base.Activate();
|
||||
}
|
||||
public override void DeActivate() {
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
this.st状態[i].ct進行 = null;
|
||||
this.st状態_大[i].ct進行 = null;
|
||||
}
|
||||
for (int i = 0; i < 256; i++) {
|
||||
this.st紙吹雪[i].ct進行 = null;
|
||||
}
|
||||
base.DeActivate();
|
||||
}
|
||||
public override void CreateManagedResource() {
|
||||
base.CreateManagedResource();
|
||||
}
|
||||
public override void ReleaseManagedResource() {
|
||||
base.ReleaseManagedResource();
|
||||
}
|
||||
public override int Draw() {
|
||||
if (!base.IsDeActivated) {
|
||||
int nWidth = (OpenTaiko.Tx.Effects_Hit_Explosion.szTextureSize.Width / 7);
|
||||
int nHeight = (OpenTaiko.Tx.Effects_Hit_Explosion.szTextureSize.Height / 4);
|
||||
int nBombWidth = (OpenTaiko.Tx.Effects_Hit_Bomb.szTextureSize.Width / 7);
|
||||
int nBombHeight = (OpenTaiko.Tx.Effects_Hit_Bomb.szTextureSize.Height / 4);
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
if (this.st状態[i].b使用中) {
|
||||
if (!this.st状態[i].ct進行.IsStoped) {
|
||||
this.st状態[i].ct進行.Tick();
|
||||
if (this.st状態[i].ct進行.IsEnded) {
|
||||
this.st状態[i].ct進行.Stop();
|
||||
this.st状態[i].b使用中 = false;
|
||||
}
|
||||
|
||||
// (When performing calibration, reduce visual distraction
|
||||
// and current judgment feedback near the judgment position.)
|
||||
if (OpenTaiko.Tx.Effects_Hit_Explosion != null && !OpenTaiko.IsPerformingCalibration) {
|
||||
int n = this.st状態[i].nIsBig == 1 ? (nHeight * 2) : 0;
|
||||
|
||||
int nX = 0;
|
||||
int nY = 0;
|
||||
|
||||
if (OpenTaiko.ConfigIni.nPlayerCount == 5) {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[0] + (OpenTaiko.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[1] + (OpenTaiko.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 4 || OpenTaiko.ConfigIni.nPlayerCount == 3) {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[0] + (OpenTaiko.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[1] + (OpenTaiko.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
|
||||
} else {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
|
||||
}
|
||||
nX += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
|
||||
nY += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
|
||||
|
||||
switch (st状態[i].judge) {
|
||||
case ENoteJudge.Perfect:
|
||||
case ENoteJudge.Great:
|
||||
case ENoteJudge.Auto:
|
||||
if (!OpenTaiko.ConfigIni.SimpleMode) OpenTaiko.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n, nWidth, nHeight));
|
||||
break;
|
||||
case ENoteJudge.Good:
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n + nHeight, nWidth, nHeight));
|
||||
break;
|
||||
case ENoteJudge.Mine:
|
||||
OpenTaiko.Tx.Effects_Hit_Bomb?.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nBombWidth, 0, nBombWidth, nBombHeight));
|
||||
break;
|
||||
case ENoteJudge.Miss:
|
||||
case ENoteJudge.Bad:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
if (!this.st状態_大[i].ct進行.IsStoped) {
|
||||
this.st状態_大[i].ct進行.Tick();
|
||||
if (this.st状態_大[i].ct進行.IsEnded) {
|
||||
this.st状態_大[i].ct進行.Stop();
|
||||
}
|
||||
if (OpenTaiko.Tx.Effects_Hit_Explosion_Big != null && this.st状態_大[i].nIsBig == 1) {
|
||||
|
||||
switch (st状態_大[i].judge) {
|
||||
case ENoteJudge.Perfect:
|
||||
case ENoteJudge.Great:
|
||||
case ENoteJudge.Auto:
|
||||
if (this.st状態_大[i].nIsBig == 1 && !OpenTaiko.ConfigIni.SimpleMode) {
|
||||
//float fX = 415 - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Width * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.X ) / 2.0f);
|
||||
//float fY = TJAPlayer3.Skin.nJudgePointY[ this.st状態_大[ i ].nPlayer ] - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Height * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.Y ) / 2.0f);
|
||||
//float fY = 257 - ((this.txアタックエフェクトUpper_big.sz画像サイズ.Height * this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y ) / 2.0f);
|
||||
|
||||
////7
|
||||
float f倍率 = 0.5f + ((this.st状態_大[i].ct進行.CurrentValue * 0.5f) / 10.0f);
|
||||
//this.txアタックエフェクトUpper_big.vc拡大縮小倍率.X = f倍率;
|
||||
//this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y = f倍率;
|
||||
//this.txアタックエフェクトUpper_big.n透明度 = (int)(255 * f倍率);
|
||||
//this.txアタックエフェクトUpper_big.t2D描画( CDTXMania.app.Device, fX, fY );
|
||||
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
mat *= Matrix.Scaling( f倍率, f倍率, f倍率 );
|
||||
mat *= Matrix.Translation( TJAPlayer3.Skin.nScrollFieldX[0] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[ this.st状態[ i ].nPlayer ] - SampleFramework.GameWindowSize.Height / 2.0f), 0f );
|
||||
//mat *= Matrix.Billboard( new Vector3( 15, 15, 15 ), new Vector3(0, 0, 0), new Vector3( 0, 0, 0 ), new Vector3( 0, 0, 0 ) );
|
||||
//mat *= Matrix.Translation( 0f, 0f, 0f );
|
||||
|
||||
|
||||
TJAPlayer3.Tx.Effects_Hit_Explosion_Big.Opacity = 255;
|
||||
TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t3D描画( mat );
|
||||
*/
|
||||
|
||||
float x = 0;
|
||||
float y = 0;
|
||||
|
||||
if (OpenTaiko.ConfigIni.nPlayerCount == 5) {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[0] + (OpenTaiko.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[1] + (OpenTaiko.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 4 || OpenTaiko.ConfigIni.nPlayerCount == 3) {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[0] + (OpenTaiko.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[1] + (OpenTaiko.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
|
||||
} else {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
|
||||
}
|
||||
x += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
|
||||
y += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
|
||||
|
||||
x -= (OpenTaiko.Tx.Effects_Hit_Explosion_Big.szTextureSize.Width * (f倍率 - 1.0f) / 2.0f);
|
||||
y -= (OpenTaiko.Tx.Effects_Hit_Explosion_Big.szTextureSize.Height * (f倍率 - 1.0f) / 2.0f);
|
||||
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.X = f倍率;
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.Y = f倍率;
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.t2D描画(x, y);
|
||||
}
|
||||
break;
|
||||
|
||||
case ENoteJudge.Good:
|
||||
break;
|
||||
|
||||
case ENoteJudge.Miss:
|
||||
case ENoteJudge.Bad:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 45; i++) {
|
||||
if (OpenTaiko.Skin.nScrollFieldX[0] != 414)
|
||||
break;
|
||||
|
||||
if (this.st大音符花火[i].b使用中) {
|
||||
this.st大音符花火[i].n前回のValue = this.st大音符花火[i].ct進行.CurrentValue;
|
||||
this.st大音符花火[i].ct進行.Tick();
|
||||
if (this.st大音符花火[i].ct進行.IsEnded) {
|
||||
this.st大音符花火[i].ct進行.Stop();
|
||||
this.st大音符花火[i].b使用中 = false;
|
||||
}
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
|
||||
mat *= Matrix.Translation(this.st大音符花火[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st大音符花火[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
|
||||
*/
|
||||
float fX = this.st大音符花火[i].fX - (192 / 2);
|
||||
float fY = this.st大音符花火[i].fY - (192 / 2);
|
||||
|
||||
//if(CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ] != null && this.st大音符花火[ i ].nColor == 0 )
|
||||
//{
|
||||
// if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
|
||||
// {
|
||||
// //this.tx大音符花火[ 0 ].t3D描画(CDTXMania.app.Device, mat, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ));
|
||||
// //this.tx大音符花火[ 0 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// }
|
||||
//}
|
||||
////if(CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ] != null && this.st大音符花火[ i ].nColor == 1 )
|
||||
//{
|
||||
// if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
|
||||
// {
|
||||
// //this.tx大音符花火[ 1 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, );
|
||||
// //CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
if (this.st紙吹雪[i].b使用中) {
|
||||
this.st紙吹雪[i].n前回のValue = this.st紙吹雪[i].ct進行.CurrentValue;
|
||||
this.st紙吹雪[i].ct進行.Tick();
|
||||
if (this.st紙吹雪[i].ct進行.IsEnded) {
|
||||
this.st紙吹雪[i].ct進行.Stop();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
} else if (this.st紙吹雪[i].fX > 1300 || this.st紙吹雪[i].fX < -20) {
|
||||
this.st紙吹雪[i].ct進行.Stop();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
}
|
||||
for (int n = this.st紙吹雪[i].n前回のValue; n < this.st紙吹雪[i].ct進行.CurrentValue; n++) {
|
||||
this.st紙吹雪[i].fX -= this.st紙吹雪[i].f加速度X;
|
||||
this.st紙吹雪[i].fY -= this.st紙吹雪[i].f加速度Y;
|
||||
this.st紙吹雪[i].f加速度X *= this.st紙吹雪[i].f加速度の加速度X;
|
||||
this.st紙吹雪[i].f加速度Y *= this.st紙吹雪[i].f加速度の加速度Y;
|
||||
this.st紙吹雪[i].f加速度Y -= this.st紙吹雪[i].f重力加速度;
|
||||
}
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
|
||||
float x = (float)(this.st紙吹雪[i].f半径 * Math.Cos((Math.PI / 2 * this.st紙吹雪[i].ct進行.n現在の値) / 100.0)) * 2.3f;
|
||||
mat *= Matrix.Scaling(x, x, 1f);
|
||||
mat *= Matrix.Translation(this.st紙吹雪[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st紙吹雪[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
|
||||
*/
|
||||
|
||||
/*if (this.tx紙吹雪 != null)
|
||||
{
|
||||
this.tx紙吹雪.t3D描画(CDTXMania.app.Device, mat, new Rectangle( 32 * this.st紙吹雪[ i ].nGraphic, 32 * this.st紙吹雪[ i ].nColor, 32, 32 ));
|
||||
|
||||
} */
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
//private CTextureAf txアタックエフェクトUpper;
|
||||
//private CTexture txアタックエフェクトUpper_big;
|
||||
//private CTextureAf[] tx大音符花火 = new CTextureAf[2];
|
||||
//private CTexture tx紙吹雪;
|
||||
|
||||
protected STSTATUS[] st状態 = new STSTATUS[3 * 4];
|
||||
protected STSTATUS_B[] st状態_大 = new STSTATUS_B[3 * 4];
|
||||
private ST大音符花火[] st大音符花火 = new ST大音符花火[45];
|
||||
|
||||
protected int[] nX座標 = new int[] { 450, 521, 596, 686, 778, 863, 970, 1070, 1150 };
|
||||
protected int[] nY座標 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
|
||||
protected int[] nY座標P2 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
protected struct STSTATUS {
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public ENoteJudge judge;
|
||||
public int nIsBig;
|
||||
public int n透明度;
|
||||
public int nPlayer;
|
||||
}
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
protected struct STSTATUS_B {
|
||||
public CCounter ct進行;
|
||||
public ENoteJudge judge;
|
||||
public int nIsBig;
|
||||
public int n透明度;
|
||||
public int nPlayer;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct ST大音符花火 {
|
||||
public int nColor;
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public int n前回のValue;
|
||||
public float fX;
|
||||
public float fY;
|
||||
public int n開始フレーム;
|
||||
public int n終了フレーム;
|
||||
}
|
||||
|
||||
private ST紙吹雪[] st紙吹雪 = new ST紙吹雪[256];
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct ST紙吹雪 {
|
||||
public int nGraphic;
|
||||
public int nColor;
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public int n前回のValue;
|
||||
public float fX;
|
||||
public float fY;
|
||||
public float f加速度X;
|
||||
public float f加速度Y;
|
||||
public float f加速度の加速度X;
|
||||
public float f加速度の加速度Y;
|
||||
public float f重力加速度;
|
||||
public float f半径;
|
||||
public float f角度;
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
using FDK;
|
||||
using Rectangle = System.Drawing.Rectangle;
|
||||
|
||||
namespace OpenTaiko {
|
||||
internal class CActImplFireworks : CActivity {
|
||||
// コンストラクタ
|
||||
|
||||
public CActImplFireworks() {
|
||||
base.IsDeActivated = true;
|
||||
}
|
||||
|
||||
|
||||
// メソッド
|
||||
|
||||
/// <summary>
|
||||
/// 大音符の花火エフェクト
|
||||
/// </summary>
|
||||
/// <param name="nLane"></param>
|
||||
public virtual void Start(int nLane, int nPlayer) {
|
||||
nY座標P2 = new int[] { 548, 612, 670, 712, 730, 780, 725, 690, 640 };
|
||||
if (OpenTaiko.Tx.Effects_Hit_FireWorks != null && OpenTaiko.Tx.Effects_Hit_FireWorks != null) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
for (int j = 0; j < 45; j++) {
|
||||
if (!this.st大音符花火[j].b使用中) {
|
||||
this.st大音符花火[j].b使用中 = true;
|
||||
this.st大音符花火[j].ct進行 = new CCounter(0, 40, 18, OpenTaiko.Timer); // カウンタ
|
||||
this.st大音符花火[j].fX = this.nX座標[i]; //X座標
|
||||
this.st大音符花火[j].fY = nPlayer == 0 ? this.nY座標[i] : this.nY座標P2[i];
|
||||
|
||||
switch (nLane) {
|
||||
case 0:
|
||||
this.st大音符花火[j].nColor = 0;
|
||||
break;
|
||||
case 1:
|
||||
this.st大音符花火[j].nColor = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
this.st大音符花火[j].n開始フレーム = 0;
|
||||
this.st大音符花火[j].n終了フレーム = 16;
|
||||
break;
|
||||
case 1:
|
||||
this.st大音符花火[j].n開始フレーム = 3;
|
||||
this.st大音符花火[j].n終了フレーム = 19;
|
||||
break;
|
||||
case 2:
|
||||
this.st大音符花火[j].n開始フレーム = 6;
|
||||
this.st大音符花火[j].n終了フレーム = 22;
|
||||
break;
|
||||
case 3:
|
||||
this.st大音符花火[j].n開始フレーム = 9;
|
||||
this.st大音符花火[j].n終了フレーム = 25;
|
||||
break;
|
||||
case 4:
|
||||
this.st大音符花火[j].n開始フレーム = 12;
|
||||
this.st大音符花火[j].n終了フレーム = 28;
|
||||
break;
|
||||
case 5:
|
||||
this.st大音符花火[j].n開始フレーム = 15;
|
||||
this.st大音符花火[j].n終了フレーム = 31;
|
||||
break;
|
||||
case 6:
|
||||
this.st大音符花火[j].n開始フレーム = 18;
|
||||
this.st大音符花火[j].n終了フレーム = 34;
|
||||
break;
|
||||
case 7:
|
||||
this.st大音符花火[j].n開始フレーム = 21;
|
||||
this.st大音符花火[j].n終了フレーム = 37;
|
||||
break;
|
||||
case 8:
|
||||
this.st大音符花火[j].n開始フレーム = 24;
|
||||
this.st大音符花火[j].n終了フレーム = 40;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Start(int nLane, ENoteJudge judge, int player) {
|
||||
for (int j = 0; j < 3 * 4; j++) {
|
||||
if (!this.st状態[j].b使用中)
|
||||
//for( int n = 0; n < 1; n++ )
|
||||
{
|
||||
this.st状態[j].b使用中 = true;
|
||||
//this.st状態[ n ].ct進行 = new CCounter( 0, 9, 20, CDTXMania.Timer );
|
||||
this.st状態[j].ct進行 = new CCounter(0, 6, 25, OpenTaiko.Timer);
|
||||
this.st状態[j].judge = judge;
|
||||
this.st状態[j].nPlayer = player;
|
||||
this.st状態_大[j].nPlayer = player;
|
||||
|
||||
switch (nLane) {
|
||||
case 0x11:
|
||||
case 0x12:
|
||||
this.st状態[j].nIsBig = 0;
|
||||
break;
|
||||
case 0x13:
|
||||
case 0x14:
|
||||
case 0x1A:
|
||||
case 0x1B:
|
||||
this.st状態_大[j].ct進行 = new CCounter(0, 9, 20, OpenTaiko.Timer);
|
||||
this.st状態_大[j].judge = judge;
|
||||
this.st状態_大[j].nIsBig = 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CActivity 実装
|
||||
|
||||
public override void Activate() {
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
this.st状態[i].ct進行 = new CCounter();
|
||||
this.st状態[i].b使用中 = false;
|
||||
this.st状態_大[i].ct進行 = new CCounter();
|
||||
}
|
||||
for (int i = 0; i < 256; i++) {
|
||||
this.st紙吹雪[i] = new ST紙吹雪();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
this.st紙吹雪[i].ct進行 = new CCounter();
|
||||
}
|
||||
base.Activate();
|
||||
}
|
||||
public override void DeActivate() {
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
this.st状態[i].ct進行 = null;
|
||||
this.st状態_大[i].ct進行 = null;
|
||||
}
|
||||
for (int i = 0; i < 256; i++) {
|
||||
this.st紙吹雪[i].ct進行 = null;
|
||||
}
|
||||
base.DeActivate();
|
||||
}
|
||||
public override void CreateManagedResource() {
|
||||
base.CreateManagedResource();
|
||||
}
|
||||
public override void ReleaseManagedResource() {
|
||||
base.ReleaseManagedResource();
|
||||
}
|
||||
public override int Draw() {
|
||||
if (!base.IsDeActivated) {
|
||||
int nWidth = (OpenTaiko.Tx.Effects_Hit_Explosion.szTextureSize.Width / 7);
|
||||
int nHeight = (OpenTaiko.Tx.Effects_Hit_Explosion.szTextureSize.Height / 4);
|
||||
int nBombWidth = (OpenTaiko.Tx.Effects_Hit_Bomb.szTextureSize.Width / 7);
|
||||
int nBombHeight = (OpenTaiko.Tx.Effects_Hit_Bomb.szTextureSize.Height / 4);
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
if (this.st状態[i].b使用中) {
|
||||
if (!this.st状態[i].ct進行.IsStoped) {
|
||||
this.st状態[i].ct進行.Tick();
|
||||
if (this.st状態[i].ct進行.IsEnded) {
|
||||
this.st状態[i].ct進行.Stop();
|
||||
this.st状態[i].b使用中 = false;
|
||||
}
|
||||
|
||||
// (When performing calibration, reduce visual distraction
|
||||
// and current judgment feedback near the judgment position.)
|
||||
if (OpenTaiko.Tx.Effects_Hit_Explosion != null) {
|
||||
int n = this.st状態[i].nIsBig == 1 ? (nHeight * 2) : 0;
|
||||
|
||||
int nX = 0;
|
||||
int nY = 0;
|
||||
|
||||
if (OpenTaiko.ConfigIni.nPlayerCount == 5) {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[0] + (OpenTaiko.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[1] + (OpenTaiko.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 4 || OpenTaiko.ConfigIni.nPlayerCount == 3) {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[0] + (OpenTaiko.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[1] + (OpenTaiko.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
|
||||
} else {
|
||||
nX = OpenTaiko.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
|
||||
nY = OpenTaiko.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
|
||||
}
|
||||
nX += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
|
||||
nY += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
|
||||
|
||||
switch (st状態[i].judge) {
|
||||
case ENoteJudge.Perfect:
|
||||
case ENoteJudge.Great:
|
||||
case ENoteJudge.Auto:
|
||||
if (!OpenTaiko.ConfigIni.SimpleMode) OpenTaiko.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n, nWidth, nHeight));
|
||||
break;
|
||||
case ENoteJudge.Good:
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nWidth, n + nHeight, nWidth, nHeight));
|
||||
break;
|
||||
case ENoteJudge.Mine:
|
||||
OpenTaiko.Tx.Effects_Hit_Bomb?.t2D描画(nX, nY, new Rectangle(this.st状態[i].ct進行.CurrentValue * nBombWidth, 0, nBombWidth, nBombHeight));
|
||||
break;
|
||||
case ENoteJudge.Miss:
|
||||
case ENoteJudge.Bad:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3 * 4; i++) {
|
||||
if (!this.st状態_大[i].ct進行.IsStoped) {
|
||||
this.st状態_大[i].ct進行.Tick();
|
||||
if (this.st状態_大[i].ct進行.IsEnded) {
|
||||
this.st状態_大[i].ct進行.Stop();
|
||||
}
|
||||
if (OpenTaiko.Tx.Effects_Hit_Explosion_Big != null && this.st状態_大[i].nIsBig == 1) {
|
||||
|
||||
switch (st状態_大[i].judge) {
|
||||
case ENoteJudge.Perfect:
|
||||
case ENoteJudge.Great:
|
||||
case ENoteJudge.Auto:
|
||||
if (this.st状態_大[i].nIsBig == 1 && !OpenTaiko.ConfigIni.SimpleMode) {
|
||||
//float fX = 415 - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Width * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.X ) / 2.0f);
|
||||
//float fY = TJAPlayer3.Skin.nJudgePointY[ this.st状態_大[ i ].nPlayer ] - ((TJAPlayer3.Tx.Effects_Hit_Explosion_Big.sz画像サイズ.Height * TJAPlayer3.Tx.Effects_Hit_Explosion_Big.vc拡大縮小倍率.Y ) / 2.0f);
|
||||
//float fY = 257 - ((this.txアタックエフェクトUpper_big.sz画像サイズ.Height * this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y ) / 2.0f);
|
||||
|
||||
////7
|
||||
float f倍率 = 0.5f + ((this.st状態_大[i].ct進行.CurrentValue * 0.5f) / 10.0f);
|
||||
//this.txアタックエフェクトUpper_big.vc拡大縮小倍率.X = f倍率;
|
||||
//this.txアタックエフェクトUpper_big.vc拡大縮小倍率.Y = f倍率;
|
||||
//this.txアタックエフェクトUpper_big.n透明度 = (int)(255 * f倍率);
|
||||
//this.txアタックエフェクトUpper_big.t2D描画( CDTXMania.app.Device, fX, fY );
|
||||
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
mat *= Matrix.Scaling( f倍率, f倍率, f倍率 );
|
||||
mat *= Matrix.Translation( TJAPlayer3.Skin.nScrollFieldX[0] - SampleFramework.GameWindowSize.Width / 2.0f, -(TJAPlayer3.Skin.nJudgePointY[ this.st状態[ i ].nPlayer ] - SampleFramework.GameWindowSize.Height / 2.0f), 0f );
|
||||
//mat *= Matrix.Billboard( new Vector3( 15, 15, 15 ), new Vector3(0, 0, 0), new Vector3( 0, 0, 0 ), new Vector3( 0, 0, 0 ) );
|
||||
//mat *= Matrix.Translation( 0f, 0f, 0f );
|
||||
|
||||
|
||||
TJAPlayer3.Tx.Effects_Hit_Explosion_Big.Opacity = 255;
|
||||
TJAPlayer3.Tx.Effects_Hit_Explosion_Big.t3D描画( mat );
|
||||
*/
|
||||
|
||||
float x = 0;
|
||||
float y = 0;
|
||||
|
||||
if (OpenTaiko.ConfigIni.nPlayerCount == 5) {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[0] + (OpenTaiko.Skin.Game_UIMove_5P[0] * this.st状態[i].nPlayer);
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_5P[1] + (OpenTaiko.Skin.Game_UIMove_5P[1] * this.st状態[i].nPlayer);
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 4 || OpenTaiko.ConfigIni.nPlayerCount == 3) {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[0] + (OpenTaiko.Skin.Game_UIMove_4P[0] * this.st状態[i].nPlayer);
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_4P[1] + (OpenTaiko.Skin.Game_UIMove_4P[1] * this.st状態[i].nPlayer);
|
||||
} else {
|
||||
x = OpenTaiko.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
|
||||
y = OpenTaiko.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
|
||||
}
|
||||
x += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
|
||||
y += OpenTaiko.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
|
||||
|
||||
x -= (OpenTaiko.Tx.Effects_Hit_Explosion_Big.szTextureSize.Width * (f倍率 - 1.0f) / 2.0f);
|
||||
y -= (OpenTaiko.Tx.Effects_Hit_Explosion_Big.szTextureSize.Height * (f倍率 - 1.0f) / 2.0f);
|
||||
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.X = f倍率;
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.vcScaleRatio.Y = f倍率;
|
||||
OpenTaiko.Tx.Effects_Hit_Explosion_Big.t2D描画(x, y);
|
||||
}
|
||||
break;
|
||||
|
||||
case ENoteJudge.Good:
|
||||
break;
|
||||
|
||||
case ENoteJudge.Miss:
|
||||
case ENoteJudge.Bad:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 45; i++) {
|
||||
if (OpenTaiko.Skin.nScrollFieldX[0] != 414)
|
||||
break;
|
||||
|
||||
if (this.st大音符花火[i].b使用中) {
|
||||
this.st大音符花火[i].n前回のValue = this.st大音符花火[i].ct進行.CurrentValue;
|
||||
this.st大音符花火[i].ct進行.Tick();
|
||||
if (this.st大音符花火[i].ct進行.IsEnded) {
|
||||
this.st大音符花火[i].ct進行.Stop();
|
||||
this.st大音符花火[i].b使用中 = false;
|
||||
}
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
|
||||
mat *= Matrix.Translation(this.st大音符花火[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st大音符花火[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
|
||||
*/
|
||||
float fX = this.st大音符花火[i].fX - (192 / 2);
|
||||
float fY = this.st大音符花火[i].fY - (192 / 2);
|
||||
|
||||
//if(CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ] != null && this.st大音符花火[ i ].nColor == 0 )
|
||||
//{
|
||||
// if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
|
||||
// {
|
||||
// //this.tx大音符花火[ 0 ].t3D描画(CDTXMania.app.Device, mat, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ));
|
||||
// //this.tx大音符花火[ 0 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// CDTXMania.Tx.Effects_Hit_FireWorks[ 0 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// }
|
||||
//}
|
||||
////if(CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ] != null && this.st大音符花火[ i ].nColor == 1 )
|
||||
//{
|
||||
// if( this.st大音符花火[ i ].n開始フレーム <= this.st大音符花火[ i ].ct進行.n現在の値 && this.st大音符花火[ i ].n終了フレーム > this.st大音符花火[ i ].ct進行.n現在の値 )
|
||||
// {
|
||||
// //this.tx大音符花火[ 1 ].t3D描画( CDTXMania.app.Device, mat, fX, fY, );
|
||||
// //CDTXMania.Tx.Effects_Hit_FireWorks[ 1 ].t2D描画( CDTXMania.app.Device, (int)fX, (int)fY, new Rectangle( ( this.st大音符花火[i].ct進行.n現在の値 - this.st大音符花火[ i ].n開始フレーム ) * 192, 0, 192, 192 ) );
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
if (this.st紙吹雪[i].b使用中) {
|
||||
this.st紙吹雪[i].n前回のValue = this.st紙吹雪[i].ct進行.CurrentValue;
|
||||
this.st紙吹雪[i].ct進行.Tick();
|
||||
if (this.st紙吹雪[i].ct進行.IsEnded) {
|
||||
this.st紙吹雪[i].ct進行.Stop();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
} else if (this.st紙吹雪[i].fX > 1300 || this.st紙吹雪[i].fX < -20) {
|
||||
this.st紙吹雪[i].ct進行.Stop();
|
||||
this.st紙吹雪[i].b使用中 = false;
|
||||
}
|
||||
for (int n = this.st紙吹雪[i].n前回のValue; n < this.st紙吹雪[i].ct進行.CurrentValue; n++) {
|
||||
this.st紙吹雪[i].fX -= this.st紙吹雪[i].f加速度X;
|
||||
this.st紙吹雪[i].fY -= this.st紙吹雪[i].f加速度Y;
|
||||
this.st紙吹雪[i].f加速度X *= this.st紙吹雪[i].f加速度の加速度X;
|
||||
this.st紙吹雪[i].f加速度Y *= this.st紙吹雪[i].f加速度の加速度Y;
|
||||
this.st紙吹雪[i].f加速度Y -= this.st紙吹雪[i].f重力加速度;
|
||||
}
|
||||
/*
|
||||
Matrix mat = Matrix.Identity;
|
||||
|
||||
float x = (float)(this.st紙吹雪[i].f半径 * Math.Cos((Math.PI / 2 * this.st紙吹雪[i].ct進行.n現在の値) / 100.0)) * 2.3f;
|
||||
mat *= Matrix.Scaling(x, x, 1f);
|
||||
mat *= Matrix.Translation(this.st紙吹雪[i].fX - SampleFramework.GameWindowSize.Width / 2, -(this.st紙吹雪[i].fY - SampleFramework.GameWindowSize.Height / 2), 0f);
|
||||
*/
|
||||
|
||||
/*if (this.tx紙吹雪 != null)
|
||||
{
|
||||
this.tx紙吹雪.t3D描画(CDTXMania.app.Device, mat, new Rectangle( 32 * this.st紙吹雪[ i ].nGraphic, 32 * this.st紙吹雪[ i ].nColor, 32, 32 ));
|
||||
|
||||
} */
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
//private CTextureAf txアタックエフェクトUpper;
|
||||
//private CTexture txアタックエフェクトUpper_big;
|
||||
//private CTextureAf[] tx大音符花火 = new CTextureAf[2];
|
||||
//private CTexture tx紙吹雪;
|
||||
|
||||
protected STSTATUS[] st状態 = new STSTATUS[3 * 4];
|
||||
protected STSTATUS_B[] st状態_大 = new STSTATUS_B[3 * 4];
|
||||
private ST大音符花火[] st大音符花火 = new ST大音符花火[45];
|
||||
|
||||
protected int[] nX座標 = new int[] { 450, 521, 596, 686, 778, 863, 970, 1070, 1150 };
|
||||
protected int[] nY座標 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
|
||||
protected int[] nY座標P2 = new int[] { 172, 108, 50, 8, -10, -60, -5, 30, 90 };
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
protected struct STSTATUS {
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public ENoteJudge judge;
|
||||
public int nIsBig;
|
||||
public int n透明度;
|
||||
public int nPlayer;
|
||||
}
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
protected struct STSTATUS_B {
|
||||
public CCounter ct進行;
|
||||
public ENoteJudge judge;
|
||||
public int nIsBig;
|
||||
public int n透明度;
|
||||
public int nPlayer;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct ST大音符花火 {
|
||||
public int nColor;
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public int n前回のValue;
|
||||
public float fX;
|
||||
public float fY;
|
||||
public int n開始フレーム;
|
||||
public int n終了フレーム;
|
||||
}
|
||||
|
||||
private ST紙吹雪[] st紙吹雪 = new ST紙吹雪[256];
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct ST紙吹雪 {
|
||||
public int nGraphic;
|
||||
public int nColor;
|
||||
public bool b使用中;
|
||||
public CCounter ct進行;
|
||||
public int n前回のValue;
|
||||
public float fX;
|
||||
public float fY;
|
||||
public float f加速度X;
|
||||
public float f加速度Y;
|
||||
public float f加速度の加速度X;
|
||||
public float f加速度の加速度Y;
|
||||
public float f重力加速度;
|
||||
public float f半径;
|
||||
public float f角度;
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,49 +288,21 @@ namespace OpenTaiko {
|
||||
// their drum sound effects with the sounds of the input calibration file.
|
||||
// Instead, we want them focused on the sounds of their keyboard, tatacon,
|
||||
// other controller, etc. and the sounds of the input calibration audio file.
|
||||
if (!OpenTaiko.IsPerformingCalibration) {
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
int actual = OpenTaiko.GetActualPlayer(i);
|
||||
|
||||
var hs = OpenTaiko.Skin.hsHitSoundsInformations;
|
||||
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {
|
||||
int actual = OpenTaiko.GetActualPlayer(i);
|
||||
|
||||
//this.soundRed[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(hs.don[actual]), ESoundGroup.SoundEffect);
|
||||
//this.soundBlue[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(hs.ka[actual]), ESoundGroup.SoundEffect);
|
||||
//this.soundAdlib[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(hs.adlib[actual]), ESoundGroup.SoundEffect);
|
||||
//this.soundClap[i] = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(hs.clap[actual]), ESoundGroup.SoundEffect);
|
||||
var hs = OpenTaiko.Skin.hsHitSoundsInformations;
|
||||
|
||||
this.soundRed[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.don[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundBlue[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.ka[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundAdlib[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.adlib[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundClap[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.clap[actual]), ESoundGroup.SoundEffect);
|
||||
|
||||
int _panning = OpenTaiko.ConfigIni.nPanning[OpenTaiko.ConfigIni.nPlayerCount - 1][i];
|
||||
if (this.soundRed[i] != null) this.soundRed[i].SoundPosition = _panning;
|
||||
if (this.soundBlue[i] != null) this.soundBlue[i].SoundPosition = _panning;
|
||||
if (this.soundAdlib[i] != null) this.soundAdlib[i].SoundPosition = _panning;
|
||||
if (this.soundClap[i] != null) this.soundClap[i].SoundPosition = _panning;
|
||||
}
|
||||
/*
|
||||
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 );
|
||||
|
||||
this.soundRed2 = TJAPlayer3.Sound管理.tサウンドを生成する(CSkin.Path(@"Sounds\Taiko\dong.ogg"), ESoundGroup.SoundEffect);
|
||||
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);
|
||||
*/
|
||||
this.soundRed[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.don[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundBlue[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.ka[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundAdlib[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.adlib[actual]), ESoundGroup.SoundEffect);
|
||||
this.soundClap[i] = OpenTaiko.SoundManager.tCreateSound((@$"Global{Path.DirectorySeparatorChar}HitSounds{Path.DirectorySeparatorChar}" + hs.clap[actual]), ESoundGroup.SoundEffect);
|
||||
|
||||
/*
|
||||
if (TJAPlayer3.ConfigIni.nPlayerCount == 2)//2020.05.06 Mr-Ojii左右に出したかったから、追加。
|
||||
{
|
||||
this.soundRed[0].n位置 = -100;
|
||||
this.soundBlue[0].n位置 = -100;
|
||||
this.soundAdlib[0].n位置 = -100;
|
||||
this.soundRed[1].n位置 = 100;
|
||||
this.soundBlue[1].n位置 = 100;
|
||||
this.soundAdlib[1].n位置 = 100;
|
||||
}
|
||||
*/
|
||||
int _panning = OpenTaiko.ConfigIni.nPanning[OpenTaiko.ConfigIni.nPlayerCount - 1][i];
|
||||
if (this.soundRed[i] != null) this.soundRed[i].SoundPosition = _panning;
|
||||
if (this.soundBlue[i] != null) this.soundBlue[i].SoundPosition = _panning;
|
||||
if (this.soundAdlib[i] != null) this.soundAdlib[i].SoundPosition = _panning;
|
||||
if (this.soundClap[i] != null) this.soundClap[i].SoundPosition = _panning;
|
||||
}
|
||||
}
|
||||
public override void DeActivate() {
|
||||
@ -352,20 +324,6 @@ namespace OpenTaiko {
|
||||
LoudnessMetadataScanner.StartBackgroundScanning();
|
||||
}
|
||||
public override void CreateManagedResource() {
|
||||
//this.t背景テクスチャの生成();
|
||||
//this.tx太鼓ノーツ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_taiko_notes.png" ) );
|
||||
//this.txHand = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_taiko_notes_arm.png" ) );
|
||||
//this.txSenotes = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_senotes.png" ) );
|
||||
//this.tx小節線 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_bar_line.png" ) );
|
||||
//this.tx小節線_branch = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_bar_line_branch.png" ) );
|
||||
// this.tx判定数小文字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Result_number_s.png" ) );
|
||||
// this.txNamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_NamePlate.png" ) );
|
||||
// if (CDTXMania.stage演奏ドラム画面.bDoublePlay)
|
||||
// this.txNamePlate2P = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_NamePlate2P.png" ) );
|
||||
// this.txPlayerNumber = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\7_PlayerNumber.png"));
|
||||
|
||||
// this.tx判定数表示パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Paramater Panel.png" ) );
|
||||
|
||||
base.CreateManagedResource();
|
||||
}
|
||||
public override void ReleaseManagedResource() {
|
||||
|
@ -20,14 +20,7 @@ namespace OpenTaiko {
|
||||
|
||||
public override void Activate() {
|
||||
|
||||
// After performing calibration, inform the player that
|
||||
// calibration has been completed, rather than
|
||||
// displaying the song title as usual.
|
||||
|
||||
|
||||
var title = OpenTaiko.IsPerformingCalibration
|
||||
? $"Calibration complete. InputAdjustTime is now {OpenTaiko.ConfigIni.nInputAdjustTimeMs}ms (Note : InputAdjust is deprecated, please transfer the value to GlobalOffset and reload the songs"
|
||||
: OpenTaiko.DTX.TITLE.GetString("");
|
||||
var title = OpenTaiko.DTX.TITLE.GetString("");
|
||||
|
||||
using (var bmpSongTitle = pfMusicName.DrawText(title, OpenTaiko.Skin.Result_MusicName_ForeColor, OpenTaiko.Skin.Result_MusicName_BackColor, null, 30)) {
|
||||
this.txMusicName = OpenTaiko.tテクスチャの生成(bmpSongTitle, false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user