private void tチップカーソルを描画する(Graphics g) { if ((this.rc現在のチップカーソル領域.Width > 0) && (this.rc現在のチップカーソル領域.Height > 0)) { CLane cレーン = this.mgr譜面管理者ref.listレーン[this.n現在のチップカーソルがあるレーン番号0to]; bool flag = (Control.ModifierKeys & Keys.Control) == Keys.Control; int num = -1; switch (cレーン.eレーン種別) { case CLane.E種別.GtR: case CLane.E種別.GtG: case CLane.E種別.GtB: case CLane.E種別.GtY: case CLane.E種別.GtP: case CLane.E種別.BsR: case CLane.E種別.BsG: case CLane.E種別.BsB: case CLane.E種別.BsY: case CLane.E種別.BsP: case CLane.E種別.BPM: num = -1; break; default: num = this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1; if ((Control.ModifierKeys & Keys.Shift) != Keys.Shift) { int num2 = flag ? cレーン.nレーン割付チップ_裏0or1to1295 : cレーン.nレーン割付チップ_表0or1to1295; if (num2 != 0) { num = num2; } } break; } if (!flag) { CChip.t表チップを描画する(g, this.rc現在のチップカーソル領域, num, cレーン.col背景色); } else { CChip.t裏チップを描画する(g, this.rc現在のチップカーソル領域, num, cレーン.col背景色); } CChip.tチップの周囲の太枠を描画する(g, this.rc現在のチップカーソル領域); } }
internal void MouseClick(MouseEventArgs e) { if (e.Y < (ScoreManager.nレーン割付チップ番号表示高さdot + 10)) { CLane lc = this.mgr譜面管理者ref.listレーン[this.n現在のチップカーソルがあるレーン番号0to]; if (lc.eレーン種別 == CLane.E種別.GtR || lc.eレーン種別 == CLane.E種別.GtG || lc.eレーン種別 == CLane.E種別.GtB || lc.eレーン種別 == CLane.E種別.GtY || lc.eレーン種別 == CLane.E種別.GtP || lc.eレーン種別 == CLane.E種別.BsR || lc.eレーン種別 == CLane.E種別.BsG || lc.eレーン種別 == CLane.E種別.BsB || lc.eレーン種別 == CLane.E種別.BsY || lc.eレーン種別 == CLane.E種別.BsP) { return; } if ((Control.ModifierKeys & Keys.Control) != Keys.Control) { int num = (e.Button == MouseButtons.Left) ? (this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1) : 0; if (num != lc.nレーン割付チップ_表0or1to1295) { CLaneAllocationUndoRedo redo = new CLaneAllocationUndoRedo(lc, lc.nレーン割付チップ_表0or1to1295, false); CLaneAllocationUndoRedo redo2 = new CLaneAllocationUndoRedo(lc, num, false); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CLaneAllocationUndoRedo>(null, new DGUndoを実行する <CLaneAllocationUndoRedo>(this.tレーン割付のUndo), new DGRedoを実行する <CLaneAllocationUndoRedo>(this.tレーン割付のRedo), redo, redo2)); this._Form.tUndoRedo用GUIの有効_無効を設定する(); lc.nレーン割付チップ_表0or1to1295 = num; } } else { int num2 = (e.Button == MouseButtons.Left) ? (this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1) : 0; if (num2 != lc.nレーン割付チップ_裏0or1to1295) { CLaneAllocationUndoRedo redo3 = new CLaneAllocationUndoRedo(lc, lc.nレーン割付チップ_裏0or1to1295, true); CLaneAllocationUndoRedo redo4 = new CLaneAllocationUndoRedo(lc, num2, true); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CLaneAllocationUndoRedo>(null, new DGUndoを実行する <CLaneAllocationUndoRedo>(this.tレーン割付のUndo), new DGRedoを実行する <CLaneAllocationUndoRedo>(this.tレーン割付のRedo), redo3, redo4)); this._Form.tUndoRedo用GUIの有効_無効を設定する(); lc.nレーン割付チップ_裏0or1to1295 = num2; } } } else { this.tチップの配置または削除(e); } this._Form.pictureBox譜面パネル.Refresh(); }
private void t移動終了処理(MouseEventArgs e) { this.b移動のためにドラッグ中 = false; foreach (KeyValuePair <int, CMeasure> pair in this.mgr譜面管理者ref.dic小節) { for (int i = 0; i < pair.Value.listチップ.Count; i++) { CChip cチップ = pair.Value.listチップ[i]; if (cチップ.b確定選択中 && (cチップ.n枠外レーン数 == 0)) { CLane cレーン = this.mgr譜面管理者ref.listレーン[cチップ.nレーン番号0to]; cチップ.nチャンネル番号00toFF = cチップ.b裏 ? cレーン.nチャンネル番号_裏00toFF : cレーン.nチャンネル番号_表00toFF; if ((cレーン.bパターンレーンである() && (cチップ.n値_整数1to1295 != 1)) && (cチップ.n値_整数1to1295 != 2)) { cチップ.n値_整数1to1295 = 1; } } } } this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する(); foreach (KeyValuePair <int, CMeasure> pair2 in this.mgr譜面管理者ref.dic小節) { CMeasure c小節 = pair2.Value; for (int j = 0; j < pair2.Value.listチップ.Count; j++) { CChip cチップ2 = c小節.listチップ[j]; if (cチップ2.b確定選択中 && (((cチップ2.n移動開始時の小節番号0to != c小節.n小節番号0to3599) || (cチップ2.n移動開始時のレーン番号0to != cチップ2.nレーン番号0to)) || (cチップ2.n移動開始時の小節内の位置grid != cチップ2.n位置grid))) { CChipPositionUndoRedo redo = new CChipPositionUndoRedo(cチップ2.n移動開始時の小節番号0to, cチップ2.n移動開始時のレーン番号0to, cチップ2.n移動開始時の小節内の位置grid, cチップ2.n値_整数1to1295); CChipPositionUndoRedo redo2 = new CChipPositionUndoRedo(c小節.n小節番号0to3599, cチップ2.nレーン番号0to, cチップ2.n位置grid, cチップ2.n値_整数1to1295); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CChipPositionUndoRedo>(null, new DGUndoを実行する <CChipPositionUndoRedo>(this.tチップ移動のUndo), new DGRedoを実行する <CChipPositionUndoRedo>(this.tチップ移動のRedo), redo, redo2)); } } } this._Form.tUndoRedo用GUIの有効_無効を設定する(); this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する(); }
public CLaneAllocationUndoRedo(CLane lc, int n番号0or1to1295, bool b裏) { this.lc = lc; this.n番号0or1to1295 = n番号0or1to1295; this.b裏 = b裏; }
private void tチップの配置または削除(MouseEventArgs e) { if ((this.rc現在のチップカーソル領域.Width > 0) && (this.rc現在のチップカーソル領域.Height > 0)) { if (e.Button == MouseButtons.Left) { bool flag = (Control.ModifierKeys & Keys.Control) == Keys.Control; bool flag2 = (Control.ModifierKeys & Keys.Shift) == Keys.Shift; CLane cレーン = this.mgr譜面管理者ref.listレーン[this.n現在のチップカーソルがあるレーン番号0to]; if (cレーン.eレーン種別 != CLane.E種別.BPM) { if ((cレーン.eレーン種別 == CLane.E種別.GtV) || (cレーン.eレーン種別 == CLane.E種別.BsV)) { int num5 = flag ? cレーン.nレーン割付チップ_裏0or1to1295 : cレーン.nレーン割付チップ_表0or1to1295; if ((num5 == 0) || flag2) { num5 = this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1; } this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する(); this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, num5, 0f, flag); if (this.b指定位置にRGBチップがひとつもない(this.n現在のチップカーソルの譜面先頭からの位置grid, this.n現在のチップカーソルがあるレーン番号0to + 1, this.n現在のチップカーソルがあるレーン番号0to + 2, this.n現在のチップカーソルがあるレーン番号0to + 3)) { this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to + 1, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false); } this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する(); } else if (cレーン.eレーン種別 == CLane.E種別.GtR || cレーン.eレーン種別 == CLane.E種別.GtG || cレーン.eレーン種別 == CLane.E種別.GtB || cレーン.eレーン種別 == CLane.E種別.GtY || cレーン.eレーン種別 == CLane.E種別.GtP) { if (flag) { for (int i = 0; i < this.mgr譜面管理者ref.listレーン.Count; i++) { CLane cレーン2 = this.mgr譜面管理者ref.listレーン[i]; if (cレーン2.eレーン種別 == CLane.E種別.GtR) { this.mgr譜面管理者ref.tチップを配置または置換する(i, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false); break; } } } else { this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, 1, 0f, false); } } else if (cレーン.eレーン種別 == CLane.E種別.BsR || cレーン.eレーン種別 == CLane.E種別.BsG || cレーン.eレーン種別 == CLane.E種別.BsB || cレーン.eレーン種別 == CLane.E種別.BsY || cレーン.eレーン種別 == CLane.E種別.BsP) { if (flag) { for (int j = 0; j < this.mgr譜面管理者ref.listレーン.Count; j++) { CLane cレーン3 = this.mgr譜面管理者ref.listレーン[j]; if (cレーン3.eレーン種別 == CLane.E種別.BsR) { this.mgr譜面管理者ref.tチップを配置または置換する(j, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false); break; } } } else { this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, 1, 0f, false); } } else { int num8 = flag ? cレーン.nレーン割付チップ_裏0or1to1295 : cレーン.nレーン割付チップ_表0or1to1295; if ((num8 == 0) || flag2) { num8 = this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1; } this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, num8, 0f, flag); } } else { this._Form.dlgチップパレット.t一時的に隠蔽する(); CNumericInputDialog c数値入力ダイアログ = new CNumericInputDialog(this.mgr譜面管理者ref.dc譜面先頭からの位置gridにおけるBPMを返す(this.n現在のチップカーソルの譜面先頭からの位置grid), 0.0001M, 1000M, Resources.strBPM選択ダイアログの説明文); Point point = this._Form.pictureBox譜面パネル.PointToScreen(new Point(e.X, e.Y)); c数値入力ダイアログ.Left = point.X - (c数値入力ダイアログ.Width / 2); c数値入力ダイアログ.Top = point.Y + 4; DialogResult result = c数値入力ダイアログ.ShowDialog(); this._Form.dlgチップパレット.t一時的な隠蔽を解除する(); if (result != DialogResult.OK) { return; } float num = (float)c数値入力ダイアログ.dc数値; int key = -1; foreach (KeyValuePair <int, float> pair in this.mgr譜面管理者ref.dicBPx) { if (pair.Value == num) { key = pair.Key; break; } } if (key == -1) { for (int k = 1; k < 36 * 36; k++) { if (!this.mgr譜面管理者ref.dicBPx.ContainsKey(k)) { this.mgr譜面管理者ref.dicBPx.Add(k, num); key = k; break; } } } this.mgr譜面管理者ref.tチップを配置または置換する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, key, num, false); } if (this._Form.appアプリ設定.PlaySoundOnWAVChipAllocated && (((cレーン.eレーン種別 == CLane.E種別.WAV) || (cレーン.eレーン種別 == CLane.E種別.GtV)) || (cレーン.eレーン種別 == CLane.E種別.BsV))) { int num9 = flag ? cレーン.nレーン割付チップ_裏0or1to1295 : cレーン.nレーン割付チップ_表0or1to1295; if ((num9 == 0) || flag2) { num9 = this._Form.n現在選択中のWAV_BMP_AVIリストの行番号0to1294 + 1; } CWAV wc = this._Form.mgrWAVリスト管理者.tWAVをキャッシュから検索して返す(num9); if ((wc != null) && (!this._Form.appアプリ設定.NoPreviewBGM || !wc.bBGMとして使用)) { this._Form.mgrWAVリスト管理者.tプレビュー音を再生する(wc); } } } if (e.Button == MouseButtons.Right) { this.mgr譜面管理者ref.tチップを削除する(this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid); } } }