/// <summary> /// 点数を加える(各種AUTO補正つき) /// </summary> /// <param name="part"></param> /// <param name="bAutoPlay"></param> /// <param name="delta"></param> public void Add(E楽器パート part, STAUTOPLAY bAutoPlay, long delta, int player) { double rev = 1.0; switch (part) { #region [ Unknown ] case E楽器パート.UNKNOWN: throw new ArgumentException(); #endregion } this.ctTimer = new CCounter(0, 400, 1, TJAPlayer3.Timer); for (int sc = 0; sc < 1; sc++) { for (int i = 0; i < 256; i++) { if (this.stScore[i].b使用中 == false) { this.stScore[i].b使用中 = true; this.stScore[i].b表示中 = true; this.stScore[i].nAddScore = (int)delta; this.stScore[i].ctTimer = new CCounter(0, 500, 1, TJAPlayer3.Timer); this.stScore[i].bBonusScore = false; this.stScore[i].nPlayer = player; this.n現在表示中のAddScore++; break; } } } this.Set(part, this.Get(part, player) + delta * rev, player); }
public bool b押された(E楽器パート part, Eパッド pad) { if (part != E楽器パート.UNKNOWN) { CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad]; for (int i = 0; i < stkeyassignArray.Length; i++) { switch (stkeyassignArray[i].入力デバイス) { case E入力デバイス.キーボード: if (!this.rInput管理.Keyboard.bキーが押された(stkeyassignArray[i].コード)) { break; } this.st検知したデバイス.Keyboard = true; return(true); case E入力デバイス.MIDI入力: { IInputDevice device2 = this.rInput管理.MidiIn(stkeyassignArray[i].ID); if ((device2 == null) || !device2.bキーが押された(stkeyassignArray[i].コード)) { break; } this.st検知したデバイス.MIDIIN = true; return(true); } case E入力デバイス.ジョイパッド: { if (!this.rConfigIni.dicJoystick.ContainsKey(stkeyassignArray[i].ID)) { break; } IInputDevice device = this.rInput管理.Joystick(stkeyassignArray[i].ID); if ((device == null) || !device.bキーが押された(stkeyassignArray[i].コード)) { break; } this.st検知したデバイス.Joypad = true; return(true); } case E入力デバイス.マウス: if (!this.rInput管理.Mouse.bキーが押された(stkeyassignArray[i].コード)) { break; } this.st検知したデバイス.Mouse = true; return(true); } } } return(false); }
// メソッド public override void tActivatePopupMenu(E楽器パート einst) { this.CAct演奏PauseMenuMain(); CActSelectPopupMenu.b選択した = false; this.bやり直しを選択した = false; base.tActivatePopupMenu(einst); }
public void Set( E楽器パート part, double nScore, int player ) { //現状、TAIKOパートでの演奏記録を結果ステージに持っていけないので、ドラムパートにも加算することでお茶を濁している。 if( part == E楽器パート.TAIKO ) part = E楽器パート.DRUMS; int nPart = (int) part; if( this.n現在の本当のスコア[ player ][ nPart ] != nScore ) { this.n現在の本当のスコア[ player ][ nPart ] = nScore; this.nスコアの増分[ player ][ nPart ] = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) / 20.0 ); this.nスコアの増分[ player ].Guitar = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) ); if( this.nスコアの増分[ player ][ nPart ] < 1L ) { this.nスコアの増分[ player ][ nPart ] = 1L; } } if( part == E楽器パート.DRUMS ) part = E楽器パート.TAIKO; nPart = (int) part; if( this.n現在の本当のスコア[ player ][ nPart ] != nScore ) { this.n現在の本当のスコア[ player ][ nPart ] = nScore; this.nスコアの増分[ player ][ nPart ] = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) / 20.0 ); this.nスコアの増分[ player ].Guitar = (long) ( ( (double) ( this.n現在の本当のスコア[ player ][ nPart ] - this.n現在表示中のスコア[ player ][ nPart ] ) ) ); if( this.nスコアの増分[ player ][ nPart ] < 1L ) { this.nスコアの増分[ player ][ nPart ] = 1L; } } }
/// <summary> /// コマンド入力に成功しているか調べる /// </summary> /// <param name="_ePad">入力が成功したか調べたいコマンド</param> /// <param name="_eInst">対象楽器</param> /// <returns>コマンド入力成功時true</returns> public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst) { int targetCount = _ePad.Length; int stciCount = stct.Count; if (stciCount < targetCount) { return(false); } long curTime = TJAPlayer3.Timer.n現在時刻; for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--) { if (_ePad[i] != stct[j].ePad) { return(false); } if (stct[j].eInst != _eInst) { return(false); } if (curTime - stct[j].time > 500) { return(false); } curTime = stct[j].time; } stct.Clear(); // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command return(true); }
public virtual void tActivatePopupMenu(E楽器パート einst) { nItemSelecting = -1; // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu. this.eInst = einst; this.bIsActivePopupMenu = true; this.bIsSelectingIntItem = false; this.bGotoDetailConfig = false; }
public bool IsFailed(E楽器パート part) // 閉店状態になったかどうか { if (bRisky) { return(nRiskyTimes <= 0); } return(this.db現在のゲージ値[(int)part] <= GAUGE_MIN); }
// メソッド public List <STInputEvent> GetEvents(Eパッド pad) { E楽器パート part = E楽器パート.DRUMS; CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = this.rConfigIni.KeyAssign[(int)part][(int)pad]; List <STInputEvent> list = new List <STInputEvent>(); // すべての入力デバイスについて… foreach (IInputDevice device in this.rInput管理.list入力デバイス) { if ((device.list入力イベント != null) && (device.list入力イベント.Count != 0)) { foreach (STInputEvent event2 in device.list入力イベント) { for (int i = 0; i < stkeyassignArray.Length; i++) { switch (stkeyassignArray[i].入力デバイス) { case E入力デバイス.キーボード: if ((device.e入力デバイス種別 == E入力デバイス種別.Keyboard) && (event2.nKey == stkeyassignArray[i].コード)) { list.Add(event2); this.st検知したデバイス.Keyboard = true; } break; case E入力デバイス.MIDI入力: if (((device.e入力デバイス種別 == E入力デバイス種別.MidiIn) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード)) { list.Add(event2); this.st検知したデバイス.MIDIIN = true; } break; case E入力デバイス.ジョイパッド: if (((device.e入力デバイス種別 == E入力デバイス種別.Joystick) && (device.ID == stkeyassignArray[i].ID)) && (event2.nKey == stkeyassignArray[i].コード)) { list.Add(event2); this.st検知したデバイス.Joypad = true; } break; case E入力デバイス.マウス: if ((device.e入力デバイス種別 == E入力デバイス種別.Mouse) && (event2.nKey == stkeyassignArray[i].コード)) { list.Add(event2); this.st検知したデバイス.Mouse = true; } break; } } } continue; } } return(list); }
public virtual void tActivatePopupMenu(E楽器パート einst) { this.bキー入力待ち = false; this.ctbキー入力待ち.t開始(0, 100, 1, TJAPlayer3.Timer); nItemSelecting = -1; // #24757 2011.4.1 yyagi: Clear sorting status in each stating menu. this.eInst = einst; this.bIsActivePopupMenu = true; this.bIsSelectingIntItem = false; this.bGotoDetailConfig = false; }
/// <summary> /// まだSemi-Invisibleを開始していなければ、開始する /// </summary> /// <param name="eInst"></param> public void StartSemiInvisible(E楽器パート eInst) { int nInst = (int)eInst; if (!b演奏チップが1つでもバーを通過した[nInst]) { b演奏チップが1つでもバーを通過した[nInst] = true; if (this.eInvisibleMode[nInst] == EInvisible.SEMI) { ShowChipTemporally(eInst); ccounter[nInst].n現在の値 = nDisplayTimeMs; } } }
/// <summary> /// コマンド入力履歴へのコマンド追加 /// </summary> /// <param name="_eInst">楽器の種類</param> /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param> public void Add(E楽器パート _eInst, EパッドFlag _ePad) { STCommandTime _stct = new STCommandTime { eInst = _eInst, ePad = _ePad, time = TJAPlayer3.Timer.n現在時刻 }; if (stct.Count >= buffersize) { stct.RemoveAt(0); } stct.Add(_stct); }
/// <summary> /// コマンド入力履歴へのコマンド追加 /// </summary> /// <param name="_eInst">楽器の種類</param> /// <param name="_ePad">入力コマンド(同時押しはOR演算で列挙すること)</param> public void Add(E楽器パート _eInst, EパッドFlag _ePad) { STCommandTime _stct = new STCommandTime { eInst = _eInst, ePad = _ePad, time = TJAPlayer3.Timer.n現在時刻 }; if (stct.Count >= buffersize) { stct.RemoveAt(0); } stct.Add(_stct); //Debug.WriteLine( "CMDHIS: 楽器=" + _stct.eInst + ", CMD=" + _stct.ePad + ", time=" + _stct.time ); }
public bool IsDanger(E楽器パート part) // DANGERかどうか { if (bRisky) { switch (nRiskyTimes_Initial) { case 1: return(false); case 2: case 3: return(nRiskyTimes <= 1); default: return(nRiskyTimes <= 2); } } return(this.db現在のゲージ値[(int)part] <= GAUGE_DANGER); }
/// <summary> /// コマンド入力に成功しているか調べる /// </summary> /// <param name="_ePad">入力が成功したか調べたいコマンド</param> /// <param name="_eInst">対象楽器</param> /// <returns>コマンド入力成功時true</returns> public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst) { int targetCount = _ePad.Length; int stciCount = stct.Count; if (stciCount < targetCount) { //Debug.WriteLine("NOT start checking...stciCount=" + stciCount + ", targetCount=" + targetCount); return(false); } long curTime = TJAPlayer3.Timer.n現在時刻; //Debug.WriteLine("Start checking...targetCount=" + targetCount); for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--) { if (_ePad[i] != stct[j].ePad) { //Debug.WriteLine( "CMD解析: false targetCount=" + targetCount + ", i=" + i + ", j=" + j + ": ePad[]=" + _ePad[i] + ", stci[j] = " + stct[j].ePad ); return(false); } if (stct[j].eInst != _eInst) { //Debug.WriteLine( "CMD解析: false " + i ); return(false); } if (curTime - stct[j].time > 500) { //Debug.WriteLine( "CMD解析: false " + i + "; over 500ms" ); return(false); } curTime = stct[j].time; } //Debug.Write( "CMD解析: 成功!(" + _ePad.Length + ") " ); //for ( int i = 0; i < _ePad.Length; i++ ) Debug.Write( _ePad[ i ] + ", " ); //Debug.WriteLine( "" ); //stct.RemoveRange( 0, targetCount ); // #24396 2011.2.13 yyagi stct.Clear(); // #24396 2011.2.13 yyagi Clear all command input history in case you succeeded inputting some command return(true); }
/// <summary> /// 判定ラインのY座標を返す。とりあえずGuitar/Bassのみ対応。 /// </summary> /// <param name="eInst">E楽器パート</param> /// <param name="bGRmode">GRmodeか否か</param> /// <param name="bReverse">Reverseか否か</param> /// <param name="bWailingFrame">Wailing枠の座標か、判定ラインの座標か</param> /// <param name="b補正あり">プレーヤーのライン表示位置補正情報を加えるかどうか</param> /// <returns></returns> public int n判定ラインY座標(E楽器パート eInst, bool bGRmode, bool bReverse, bool bWailingFrame, bool b補正あり) { if (eInst == E楽器パート.DRUMS) { throw new NotImplementedException(); } else if (eInst == E楽器パート.UNKNOWN) { throw new ArgumentOutOfRangeException(); } else { int nReverse = bReverse ? 1 : 0; int nGRmode = bGRmode ? 1 : 0; int nWailing = bWailingFrame ? 1 : 0; int nInst = (int)eInst; int ret = this.n判定ラインY座標元データ[nReverse, nGRmode, nWailing][nInst]; // 補正無しの値 if (bReverse) { if (n判定位置[nInst] == E判定位置.Lower) { ret += 13; } if (b補正あり) { ret += nJudgeLinePosY_delta[nInst]; } } else { if (n判定位置[nInst] == E判定位置.Lower) { ret += 52; } if (b補正あり) { ret -= nJudgeLinePosY_delta[nInst]; } } return(ret); } }
public int n演奏RGBボタンY座標(E楽器パート eInst, bool bGRmode, bool bReverse) { if (eInst == E楽器パート.DRUMS) { throw new NotImplementedException(); } else if (eInst == E楽器パート.UNKNOWN) { throw new ArgumentOutOfRangeException(); } else { int nInst = (int)eInst; int nGRmode = bGRmode ? 1 : 0; int nReverse = bReverse ? 1 : 0; int nVseries = (int)n判定位置[nInst]; int ret = n演奏RGBボタンY座標元データ[nReverse, nGRmode, nVseries][nInst]; // 補正無しの値 return(ret); } }
/// <summary> /// コマンド入力に成功しているか調べる /// </summary> /// <param name="_ePad">入力が成功したか調べたいコマンド</param> /// <param name="_eInst">対象楽器</param> /// <returns>コマンド入力成功時true</returns> public bool CheckCommand(EパッドFlag[] _ePad, E楽器パート _eInst) { int targetCount = _ePad.Length; int stciCount = stct.Count; if (stciCount < targetCount) { //Debug.WriteLine("NOT start checking...stciCount=" + stciCount + ", targetCount=" + targetCount); return(false); } long curTime = TJAPlayer3.Timer.n現在時刻; //Debug.WriteLine("Start checking...targetCount=" + targetCount); for (int i = targetCount - 1, j = stciCount - 1; i >= 0; i--, j--) { if (_ePad[i] != stct[j].ePad) { //Debug.WriteLine( "CMD解析: false targetCount=" + targetCount + ", i=" + i + ", j=" + j + ": ePad[]=" + _ePad[i] + ", stci[j] = " + stct[j].ePad ); return(false); } if (stct[j].eInst != _eInst) { //Debug.WriteLine( "CMD解析: false " + i ); return(false); } if (curTime - stct[j].time > 500) { //Debug.WriteLine( "CMD解析: false " + i + "; over 500ms" ); return(false); } curTime = stct[j].time; } return(true); }
}; //おおよその値。 // ---------------------------------- #endregion #endif public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player) { float fDamage; int nコース = CDTXMania.stage演奏ドラム画面.n現在のコース[player]; switch (e今回の判定) { case E判定.Perfect: case E判定.Great: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } break; case E判定.Good: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 1]; } else { fDamage = this.dbゲージ増加量[1]; } } break; case E判定.Poor: case E判定.Miss: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 2]; } else { fDamage = this.dbゲージ増加量[2]; } if (this.db現在のゲージ値[player] < 30.0f && CDTXMania.ConfigIni.eGaugeMode == Eゲージモード.HARD) { //HARDの場合30%補正 fDamage = 4.5f; } if (fDamage >= 0) { fDamage = -fDamage; } } break; default: { if (player == 0 ? CDTXMania.ConfigIni.b太鼓パートAutoPlay : CDTXMania.ConfigIni.b太鼓パートAutoPlay2P) { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } else { fDamage = 0; } break; } } if (this.db現在のゲージ値[player] > 100.0) { this.db現在のゲージ値[player] = 100.0; } else if (this.db現在のゲージ値[player] < 0.0) { this.db現在のゲージ値[player] = 0.0; } this.db現在のゲージ値[player] = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven); CDTXMania.stage演奏ドラム画面.nGauge = fDamage; switch (e今回の判定) { case E判定.Poor: case E判定.Miss: if (this.bRisky) { this.nRiskyTimes--; } break; } }
}; //おおよその値。 // ---------------------------------- #endregion #endif public void Damage(CDTX.ECourse eHitCourse, E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player) { float fDamage; //現在のコースを当てるのではなくヒットしたノーツのコースを当ててあげる.2020.04.21.akasoko26 var nコース = eHitCourse; #if true // DAMAGELEVELTUNING switch (e今回の判定) { case E判定.Perfect: case E判定.Great: { if (TJAPlayer3.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[(int)nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } break; case E判定.Good: { if (TJAPlayer3.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[(int)nコース, 1]; } else { fDamage = this.dbゲージ増加量[1]; } } break; case E判定.Poor: case E判定.Miss: { if (TJAPlayer3.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[(int)nコース, 2]; } else { fDamage = this.dbゲージ増加量[2]; } if (fDamage >= 0) { fDamage = -fDamage; } if (this.bRisky) { this.nRiskyTimes--; } } break; default: { if (player == 0 ? TJAPlayer3.ConfigIni.b太鼓パートAutoPlay : TJAPlayer3.ConfigIni.b太鼓パートAutoPlay2P) { if (TJAPlayer3.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[(int)nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } else { fDamage = 0; } break; } } #else // before applying #23625 modifications switch (e今回の判定) { case E判定.Perfect: fDamage = (part == E楽器パート.DRUMS) ? 0.01 : 0.015; break; case E判定.Great: fDamage = (part == E楽器パート.DRUMS) ? 0.006 : 0.009; break; case E判定.Good: fDamage = (part == E楽器パート.DRUMS) ? 0.002 : 0.003; break; case E判定.Poor: fDamage = (part == E楽器パート.DRUMS) ? 0.0 : 0.0; break; case E判定.Miss: fDamage = (part == E楽器パート.DRUMS) ? -0.035 : -0.035; switch (CDTXMania.ConfigIni.eダメージレベル) { case Eダメージレベル.少ない: fDamage *= 0.6; break; case Eダメージレベル.普通: fDamage *= 1.0; break; case Eダメージレベル.大きい: fDamage *= 1.6; break; } break; default: fDamage = 0.0; break; } #endif this.db現在のゲージ値[player] = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven); if (this.db現在のゲージ値[player] >= 100.0) { this.db現在のゲージ値[player] = 100.0; } else if (this.db現在のゲージ値[player] <= 0.0) { this.db現在のゲージ値[player] = 0.0; } //CDTXMania.stage演奏ドラム画面.nGauge = fDamage; }
// メソッド public override void tActivatePopupMenu(E楽器パート einst, int nPlayer) { this.CActSelectQuickConfigMain(nPlayer); base.tActivatePopupMenu(einst, nPlayer); }
// メソッド public override void tActivatePopupMenu(E楽器パート einst) { this.CActSelectQuickConfigMain(); base.tActivatePopupMenu(einst); }
// メソッド public override void tActivatePopupMenu(E楽器パート einst, int nPlayer) { this.CAct演奏PauseMenuMain(); this.bやり直しを選択した = false; base.tActivatePopupMenu(einst, 0); }
}; //おおよその値。 // ---------------------------------- #endregion #endif public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int player) { float fDamage; int nコース = CDTXMania.stage演奏ドラム画面.n現在のコース[player]; #if true // DAMAGELEVELTUNING switch (e今回の判定) { case E判定.Perfect: case E判定.Great: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } break; case E判定.Good: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 1]; } else { fDamage = this.dbゲージ増加量[1]; } } break; case E判定.Poor: case E判定.Miss: { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 2]; } else { fDamage = this.dbゲージ増加量[2]; } if (fDamage >= 0) { fDamage = -fDamage * 3; } if (this.bRisky) { this.nRiskyTimes--; } } break; default: { if (player == 0 ? CDTXMania.ConfigIni.b太鼓パートAutoPlay : CDTXMania.ConfigIni.b太鼓パートAutoPlay2P) { if (CDTXMania.DTX.bチップがある.Branch) { fDamage = this.dbゲージ増加量_Branch[nコース, 0]; } else { fDamage = this.dbゲージ増加量[0]; } } else { fDamage = 0; } break; } } #else // before applying #23625 modifications switch (e今回の判定) { case E判定.Perfect: fDamage = (part == E楽器パート.DRUMS) ? 0.01 : 0.015; break; case E判定.Great: fDamage = (part == E楽器パート.DRUMS) ? 0.006 : 0.009; break; case E判定.Good: fDamage = (part == E楽器パート.DRUMS) ? 0.002 : 0.003; break; case E判定.Poor: fDamage = (part == E楽器パート.DRUMS) ? 0.0 : 0.0; break; case E判定.Miss: fDamage = (part == E楽器パート.DRUMS) ? -0.035 : -0.035; switch (CDTXMania.ConfigIni.eダメージレベル) { case Eダメージレベル.少ない: fDamage *= 0.6; break; case Eダメージレベル.普通: fDamage *= 1.0; break; case Eダメージレベル.大きい: fDamage *= 1.6; break; } break; default: fDamage = 0.0; break; } #endif if (this.db現在のゲージ値[player] > 100.0) { this.db現在のゲージ値[player] = 100.0; } else if (this.db現在のゲージ値[player] < 0.0) { this.db現在のゲージ値[player] = 0.0; } this.db現在のゲージ値[player] = Math.Round(this.db現在のゲージ値[player] + fDamage, 5, MidpointRounding.ToEven); CDTXMania.stage演奏ドラム画面.nGauge = fDamage; }
internal static double t演奏型スキルを計算して返す(int nTotal, int nPerfect, int nGreat, int nGood, int nPoor, int nMiss, E楽器パート inst) { if (nTotal == 0) { return(0.0); } int nAuto = nTotal - (nPerfect + nGreat + nGood + nPoor + nMiss); double y = ((nPerfect * 1.0 + nGreat * 0.8 + nGood * 0.5 + nPoor * 0.2 + nMiss * 0.0 + nAuto * 0.0) * 100.0) / ((double)nTotal); double ret = (100.0 * ((Math.Pow(1.03, y) - 1.0) / (Math.Pow(1.03, 100.0) - 1.0))); ret *= dbCalcReviseValForDrGtBsAutoLanes(inst); return(ret); }
protected override void t進行描画_チップ_ギターベース(CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip, E楽器パート inst) { int instIndex = (int)inst; if (configIni.bGuitar有効) { if (configIni.bSudden[instIndex]) { pChip.b可視 = pChip.nバーからの距離dot[instIndex] < 200; } if (configIni.bHidden[instIndex] && (pChip.nバーからの距離dot[instIndex] < 100)) { pChip.b可視 = false; } bool bChipHasR = ((pChip.nチャンネル番号 & 4) > 0); bool bChipHasG = ((pChip.nチャンネル番号 & 2) > 0); bool bChipHasB = ((pChip.nチャンネル番号 & 1) > 0); bool bChipHasW = ((pChip.nチャンネル番号 & 0x0F) == 0x08); bool bChipIsO = ((pChip.nチャンネル番号 & 0x0F) == 0x00); int OPEN = (inst == E楽器パート.GUITAR) ? 0x20 : 0xA0; if (!pChip.bHit && pChip.b可視) { int y = configIni.bReverse[instIndex] ? (369 - pChip.nバーからの距離dot[instIndex]) : (40 + pChip.nバーからの距離dot[instIndex]); if ((y > 0) && (y < 409)) { if (this.txチップ != null) { int nアニメカウンタ現在の値 = this.ctチップ模様アニメ[instIndex].n現在の値; if (pChip.nチャンネル番号 == OPEN) { { int xo = (inst == E楽器パート.GUITAR) ? 26 : 480; this.txチップ.t2D描画(CDTXMania.app.Device, xo, y - 4, new Rectangle(0, 192 + ((nアニメカウンタ現在の値 % 5) * 8), 103, 8)); } } Rectangle rc = new Rectangle(0, nアニメカウンタ現在の値 * 8, 32, 8); int x; if (inst == E楽器パート.GUITAR) { x = (configIni.bLeft.Guitar) ? 98 : 26; } else { x = (configIni.bLeft.Bass) ? 552 : 480; } int deltaX = (configIni.bLeft[instIndex]) ? -36 : +36; if (bChipHasR) { this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc); } rc.X += 32; if (bChipHasG) { this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc); } rc.X += 32; if (bChipHasB) { this.txチップ.t2D描画(CDTXMania.app.Device, x, y - 4, rc); } } } } // if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) ) if ((!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0)) { int lo = (inst == E楽器パート.GUITAR) ? 0 : 3; // lane offset bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR; bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG; bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB; if ((bChipHasR || bChipIsO) && autoR) { this.actChipFireGB.Start(0 + lo); } if ((bChipHasG || bChipIsO) && autoG) { this.actChipFireGB.Start(1 + lo); } if ((bChipHasB || bChipIsO) && autoB) { this.actChipFireGB.Start(2 + lo); } if ((inst == E楽器パート.GUITAR && bIsAutoPlay.GtPick) || (inst == E楽器パート.BASS && bIsAutoPlay.BsPick)) { bool pushingR = CDTXMania.Pad.b押されている(inst, Eパッド.R); bool pushingG = CDTXMania.Pad.b押されている(inst, Eパッド.G); bool pushingB = CDTXMania.Pad.b押されている(inst, Eパッド.B); bool bMiss = true; if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB)) || ((bChipHasR == (pushingR | autoR)) && (bChipHasG == (pushingG | autoG)) && (bChipHasB == (pushingB | autoB))) ) { bMiss = false; } pChip.bHit = true; this.tサウンド再生(pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst)); this.r次にくるギターChip = null; this.tチップのヒット処理(pChip.n発声時刻ms, pChip); } } // break; return; } if (!pChip.bHit && (pChip.nバーからの距離dot[instIndex] < 0)) { pChip.bHit = true; this.tサウンド再生(pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, dTX.nモニタを考慮した音量(inst)); } }
public double Get(E楽器パート part, int player) { return(this.n現在の本当のスコア[player][(int)part]); }
/// <summary> /// 一時的にチップを表示するモードを開始する /// </summary> /// <param name="eInst">楽器パート</param> public void ShowChipTemporally(E楽器パート eInst) { ccounter[(int)eInst].t開始(0, nDisplayTimeMs + nFadeoutTimeMs + 1, 1, TJAPlayer3.Timer); }
public int n判定ラインY座標(E楽器パート eInst, bool bGRmode, bool bReverse, bool bWailingFrame) { return(n判定ラインY座標(eInst, bGRmode, bReverse, bWailingFrame, false)); }
// メソッド public void tActivatePopupMenu(E楽器パート einst, ref CActSelect曲リスト ca) { this.act曲リスト = ca; base.tActivatePopupMenu(einst); }
internal static double tゲーム型スキルを計算して返す(int nLevel, int nTotal, int nPerfect, int nCombo, E楽器パート inst) { double ret; if ((nTotal == 0) || ((nPerfect == 0) && (nCombo == 0))) { ret = 0.0; } ret = ((nLevel * ((nPerfect * 0.8 + nCombo * 0.2) / ((double)nTotal))) / 2.0); ret *= dbCalcReviseValForDrGtBsAutoLanes(inst); return(ret); }