public void ヒットアニメ開始(表示レーン種別 lane) { this._振動パラメータ[lane] = new 振動パラメータ { カウンタ = new Counter(0, 100, 3), 振動幅 = 0f, }; }
private void _アニメチップを1つ描画する(DeviceContext d2ddc, 表示レーン種別 lane, RectangleF 転送元矩形, float Y, Size2F 大きさ0to1, float 消滅割合) { float X倍率 = 大きさ0to1.Width; float Y倍率 = 大きさ0to1.Height; // Bass は縦方向に少し大きめに。 if (lane == 表示レーン種別.Bass) { Y倍率 *= 1.2f; } X倍率 *= (1f - 消滅割合) * _チップの最終調整倍率; Y倍率 *= (1f - 消滅割合) * _チップの最終調整倍率; const float チップ1枚の高さ = 18f; 転送元矩形.Offset(0f, this._ドラムチップアニメ.現在値 * 15f); // 下端3pxは下のチップと共有する前提のデザインなので、18f-3f = 15f。 転送元矩形.Height = チップ1枚の高さ; this._ドラムチップ画像.描画する( d2ddc, 左位置: レーンフレーム.レーン中央位置X[lane] - (転送元矩形.Width * X倍率 / 2f), 位置: Y - (チップ1枚の高さ * Y倍率 / 2f), 転送元矩形: 転送元矩形, X方向拡大率: X倍率, Y方向拡大率: Y倍率); }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 this.表示中央位置dpx = new Vector2(レーンフレーム.レーン中央位置X[lane], 演奏ステージ.ヒット判定位置Ydpx); }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 float x = レーンフレーム.領域.Left + レーンフレーム.レーンtoチップの左端位置dpx[lane] + レーンフレーム.レーンtoレーン幅dpx[lane] / 2f; switch (lane) { case 表示レーン種別.LeftCrash: this.表示中央位置dpx = new Vector2(x, 530f); break; case 表示レーン種別.HiHat: this.表示中央位置dpx = new Vector2(x, 597f); break; case 表示レーン種別.Foot: this.表示中央位置dpx = new Vector2(x, 636f); break; case 表示レーン種別.Snare: this.表示中央位置dpx = new Vector2(x, 597f); break; case 表示レーン種別.Bass: this.表示中央位置dpx = new Vector2(x, 635f); break; case 表示レーン種別.Tom1: this.表示中央位置dpx = new Vector2(x, 561f); break; case 表示レーン種別.Tom2: this.表示中央位置dpx = new Vector2(x, 561f); break; case 表示レーン種別.Tom3: this.表示中央位置dpx = new Vector2(x, 600f); break; case 表示レーン種別.RightCrash: this.表示中央位置dpx = new Vector2(x, 533f); break; default: this.表示中央位置dpx = new Vector2(x, -100f); break; } }
// 表示開始 public void 表示を開始する(表示レーン種別 lane, 判定種別 judge) { var status = this._レーンtoステータス[lane]; status.判定種別 = judge; status.現在の状態 = 表示レーンステータス.状態.表示開始; // 描画スレッドへ通知。 }
// 表示開始 public void 表示を開始する(表示レーン種別 lane, 判定種別 judge, double fastSlowSec) { var status = this._レーンtoステータス[lane]; status.判定種別 = judge; status.FastSlow値sec = fastSlowSec; status.現在の状態 = 表示レーンステータス.状態.表示開始; }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 this.表示中央位置dpx = new Vector2( レーンフレーム.領域.Left + レーンフレーム.現在のレーン配置.表示レーンの左端位置dpx[lane] + レーンフレーム.現在のレーン配置.表示レーンの幅dpx[lane] / 2f, 演奏ステージ.ヒット判定位置Ydpx); }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 this.表示中央位置dpx = new Vector2( レーンフレーム.領域.Left + レーンフレーム.レーンtoチップの左端位置dpx[lane] + レーンフレーム.レーンtoレーン幅dpx[lane] / 2f, 演奏ステージ.ヒット判定バーの中央Y座標dpx); }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 if (App.ユーザ管理.ログオン中のユーザ.演奏モード == 設定.PlayMode.BASIC) { this.表示中央位置dpx = new Vector2( BASIC.レーンフレーム.領域.Left + BASIC.レーンフレーム.現在のレーン配置.表示レーンの左端位置dpx[lane] + BASIC.レーンフレーム.現在のレーン配置.表示レーンの幅dpx[lane] / 2f, 演奏ステージ.ヒット判定位置Ydpx); } if (App.ユーザ管理.ログオン中のユーザ.演奏モード == 設定.PlayMode.EXPERT) { this.表示中央位置dpx = new Vector2( EXPERT.レーンフレーム.レーン中央位置X[lane], 演奏ステージ.ヒット判定位置Ydpx); } }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; float x = レーンフレーム.レーン中央位置X[lane]; this.表示中央位置dpx = lane switch { 表示レーン種別.LeftCymbal => new Vector2(x, 530f), 表示レーン種別.HiHat => new Vector2(x, 597f), 表示レーン種別.Foot => new Vector2(x, 636f), 表示レーン種別.Snare => new Vector2(x, 597f), 表示レーン種別.Bass => new Vector2(x, 635f), 表示レーン種別.Tom1 => new Vector2(x, 561f), 表示レーン種別.Tom2 => new Vector2(x, 561f), 表示レーン種別.Tom3 => new Vector2(x, 600f), 表示レーン種別.RightCymbal => new Vector2(x, 533f), _ => new Vector2(x, -100f), }; }
private void _アニメチップを1つ描画する(表示レーン種別 lane, RectangleF 転送元矩形, float Y, float 大きさ0to1) { float X倍率 = 1f * _チップの最終調整倍率; float Y倍率 = 大きさ0to1 * _チップの最終調整倍率; if (lane == 表示レーン種別.Bass) { Y倍率 *= 1.2f; // Bass は縦方向に少し大きめに。 } const float チップ1枚の高さ = 18f; 転送元矩形.Offset(0f, this._ドラムチップアニメ.現在値 * 15f); // 下端3pxは下のチップと共有する前提のデザインなので、18f-3f = 15f。 転送元矩形.Height = チップ1枚の高さ; this._ドラムチップ画像.描画する( 左位置: レーンフレーム.レーン中央位置X[lane] - (転送元矩形.Width * X倍率 / 2f), 位置: Y - (チップ1枚の高さ * Y倍率 / 2f), 転送元矩形: 転送元矩形, X方向拡大率: X倍率, Y方向拡大率: Y倍率); }
public 表示レーンステータス(表示レーン種別 lane) { this.現在の状態 = 状態.非表示; // 表示中央位置は、レーンごとに固定。 float x = 0f; if (App進行描画.ユーザ管理.ログオン中のユーザ.演奏モード == PlayMode.BASIC) { x = BASIC.レーンフレーム.領域.Left + BASIC.レーンフレーム.現在のレーン配置.表示レーンの左端位置dpx[lane] + BASIC.レーンフレーム.現在のレーン配置.表示レーンの幅dpx[lane] / 2f; } if (App進行描画.ユーザ管理.ログオン中のユーザ.演奏モード == PlayMode.EXPERT) { x = EXPERT.レーンフレーム.レーン中央位置X[lane]; } switch (lane) { case 表示レーン種別.LeftCymbal: this.表示中央位置dpx = new Vector2(x, 530f); break; case 表示レーン種別.HiHat: this.表示中央位置dpx = new Vector2(x, 597f); break; case 表示レーン種別.Foot: this.表示中央位置dpx = new Vector2(x, 636f); break; case 表示レーン種別.Snare: this.表示中央位置dpx = new Vector2(x, 597f); break; case 表示レーン種別.Bass: this.表示中央位置dpx = new Vector2(x, 635f); break; case 表示レーン種別.Tom1: this.表示中央位置dpx = new Vector2(x, 561f); break; case 表示レーン種別.Tom2: this.表示中央位置dpx = new Vector2(x, 561f); break; case 表示レーン種別.Tom3: this.表示中央位置dpx = new Vector2(x, 600f); break; case 表示レーン種別.RightCymbal: this.表示中央位置dpx = new Vector2(x, 533f); break; default: this.表示中央位置dpx = new Vector2(x, -100f); break; } }
private void _単画チップを1つ描画する(表示レーン種別 lane, RectangleF 転送元矩形, float 位置, float 大きさ0to1) { float X倍率 = 1f; float Y倍率 = 大きさ0to1; if (lane == 表示レーン種別.LeftCymbal || lane == 表示レーン種別.RightCymbal) { // シンバルレーンは大きさの変化をより少なく、さらにX倍率もY倍率と同じにする。 X倍率 = MathUtil.Clamp(大きさ0to1 * 2f, 0f, 1f); Y倍率 = MathUtil.Clamp(大きさ0to1 * 2f, 0f, 1f); } X倍率 *= _チップの最終調整倍率; Y倍率 *= _チップの最終調整倍率; this._ドラムチップ画像.描画する( 左位置: レーンフレーム.レーン中央位置X[lane] - (転送元矩形.Width * X倍率 / 2f), 位置: 位置 - (転送元矩形.Height * Y倍率 / 2f), 転送元矩形: 転送元矩形, X方向拡大率: X倍率, Y方向拡大率: Y倍率); }
private const float _チップの最終調整倍率 = 1.2f; // 見た感じで決めた主観的な値。 private void _単画チップを1つ描画する(DeviceContext d2ddc, 表示レーン種別 lane, RectangleF 転送元矩形, float 位置, Size2F 大きさ0to1, float 消滅割合) { float X倍率 = 大きさ0to1.Width; float Y倍率 = 大きさ0to1.Height; // シンバルレーンは大きさの変化をより少なく、さらにX倍率もY倍率と同じにする。 if (lane == 表示レーン種別.LeftCymbal || lane == 表示レーン種別.RightCymbal) { X倍率 = MathUtil.Clamp(大きさ0to1.Width * 2f, min: 0f, max: 1f); Y倍率 = MathUtil.Clamp(大きさ0to1.Height * 2f, min: 0f, max: 1f); } X倍率 *= (1f - 消滅割合) * _チップの最終調整倍率; Y倍率 *= (1f - 消滅割合) * _チップの最終調整倍率; this._ドラムチップ画像.描画する( d2ddc, 左位置: レーンフレーム.レーン中央位置X[lane] - (転送元矩形.Width * X倍率 / 2f), 位置: 位置 - (転送元矩形.Height * Y倍率 / 2f), 転送元矩形: 転送元矩形, X方向拡大率: X倍率, Y方向拡大率: Y倍率); }
public void 開始する(表示レーン種別 laneType) { this._フラッシュ情報[laneType].開始する(0, 10, 15); }
// ヒット public void ヒットする(表示レーン種別 lane) { this._レーンtoパッドContext[lane].アニメカウンタ.開始する(0, 100, 1); }
public void 開始する(表示レーン種別 lane) { this._レーンtoレーンContext[lane].アニメカウンタ.開始する(0, 250, 1); }
// 表示開始 public void 表示を開始する(表示レーン種別 lane) { this._レーンtoステータス[lane].現在の状態 = 表示レーンステータス.状態.表示開始; }