private void tチップを縦に移動する(CChip cc, int n移動量grid, CMeasure csチップのある小節) { cc.b移動済 = true; int num = cc.n位置grid + n移動量grid; if (num < 0) { int num2 = csチップのある小節.n小節番号0to3599; CMeasure c小節 = null; while (num < 0) { num2--; c小節 = this.mgr譜面管理者ref.p小節を返す(num2); if (c小節 == null) { return; } num += c小節.n小節長倍率を考慮した現在の小節の高さgrid; } CChip item = new CChip(); item.tコピーfrom(cc); item.n位置grid = num; csチップのある小節.listチップ.Remove(cc); c小節.listチップ.Add(item); } else if (num >= csチップのある小節.n小節長倍率を考慮した現在の小節の高さgrid) { int num3 = csチップのある小節.n小節番号0to3599; CMeasure c小節2 = csチップのある小節; while (num >= c小節2.n小節長倍率を考慮した現在の小節の高さgrid) { num -= c小節2.n小節長倍率を考慮した現在の小節の高さgrid; num3++; c小節2 = this.mgr譜面管理者ref.p小節を返す(num3); if (c小節2 == null) { c小節2 = new CMeasure(num3); this.mgr譜面管理者ref.dic小節.Add(num3, c小節2); } } CChip cチップ2 = new CChip(); cチップ2.tコピーfrom(cc); cチップ2.n位置grid = num; csチップのある小節.listチップ.Remove(cc); c小節2.listチップ.Add(cチップ2); } else { cc.n位置grid = num; } this._Form.b未保存 = true; }
public void t全チップの選択を解除する() { this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する(); foreach (KeyValuePair <int, CMeasure> pair in this.mgr譜面管理者ref.dic小節) { CMeasure c小節 = pair.Value; for (int j = 0; j < c小節.listチップ.Count; j++) { CChip cチップ = c小節.listチップ[j]; if (cチップ.n枠外レーン数 != 0) { CChip cc = new CChip(); cc.tコピーfrom(cチップ); CChipLocationUndoRedo redo = new CChipLocationUndoRedo(c小節.n小節番号0to3599, cc); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CChipLocationUndoRedo>(null, new DGUndoを実行する <CChipLocationUndoRedo>(this.mgr譜面管理者ref.tチップ削除のUndo), new DGRedoを実行する <CChipLocationUndoRedo>(this.mgr譜面管理者ref.tチップ削除のRedo), redo, redo)); c小節.listチップ.Remove(cチップ); j = -1; } } } for (int i = 0; i < this.mgr譜面管理者ref.dic小節.Count; i++) { CMeasure c小節2 = this.mgr譜面管理者ref.dic小節[i]; for (int k = 0; k < c小節2.listチップ.Count; k++) { CChip cチップ3 = c小節2.listチップ[k]; if (cチップ3.b確定選択中 || cチップ3.bドラッグで選択中) { this.mgr譜面管理者ref.bOPENチップである(cチップ3); for (int m = 0; m < c小節2.listチップ.Count; m++) { CChip cチップ4 = c小節2.listチップ[m]; if (((k != m) && (cチップ3.nレーン番号0to == cチップ4.nレーン番号0to)) && ((cチップ3.n位置grid == cチップ4.n位置grid) && !cチップ4.b確定選択中)) { CChip cチップ5 = new CChip(); cチップ5.tコピーfrom(cチップ4); CChipLocationUndoRedo redo2 = new CChipLocationUndoRedo(c小節2.n小節番号0to3599, cチップ5); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CChipLocationUndoRedo>(null, new DGUndoを実行する <CChipLocationUndoRedo>(this.mgr譜面管理者ref.tチップ削除のUndo), new DGRedoを実行する <CChipLocationUndoRedo>(this.mgr譜面管理者ref.tチップ削除のRedo), redo2, redo2)); c小節2.listチップ.RemoveAt(m); k = -1; break; } } } } } foreach (KeyValuePair <int, CMeasure> pair2 in this.mgr譜面管理者ref.dic小節) { CMeasure c小節3 = pair2.Value; for (int n = 0; n < c小節3.listチップ.Count; n++) { CChip cチップ6 = c小節3.listチップ[n]; if (cチップ6.b確定選択中) { CChipPositionUndoRedo redo3 = new CChipPositionUndoRedo(c小節3.n小節番号0to3599, cチップ6.nレーン番号0to, cチップ6.n位置grid, cチップ6.n値_整数1to1295); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CChipPositionUndoRedo>(null, new DGUndoを実行する <CChipPositionUndoRedo>(this.mgr譜面管理者ref.tチップ選択解除のUndo), new DGRedoを実行する <CChipPositionUndoRedo>(this.mgr譜面管理者ref.tチップ選択解除のRedo), redo3, redo3)); cチップ6.b移動済 = false; cチップ6.bドラッグで選択中 = false; cチップ6.b確定選択中 = false; } } } this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する(); this._Form.tUndoRedo用GUIの有効_無効を設定する(); }
public void tチップを指定位置から貼り付ける(CMeasure cs配置開始小節, int n貼り付け先頭grid) { if (this.cbボード.Count != 0) { List <CClipCell> list = new List <CClipCell>(); foreach (CClipCell cクリップセル in this.cbボード) { CClipCell item = new CClipCell(); item.pチップ = new CChip(); item.pチップ.tコピーfrom(cクリップセル.pチップ); item.nレーン番号 = cクリップセル.nレーン番号; item.n位置grid = cクリップセル.n位置grid; item.b貼り付け済 = false; list.Add(item); } int num = list[0].n位置grid; foreach (CClipCell cクリップセル3 in list) { if (cクリップセル3.n位置grid < num) { num = cクリップセル3.n位置grid; } } for (int i = 0; i < list.Count; i++) { CClipCell local1 = list[i]; local1.n位置grid -= num; CClipCell local2 = list[i]; local2.n位置grid += n貼り付け先頭grid; } this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する(); CMeasure c小節 = cs配置開始小節; for (int j = 0; j < list.Count; j++) { int num4 = list[j].n位置grid; if ((num4 >= 0) && (num4 < c小節.n小節長倍率を考慮した現在の小節の高さgrid)) { CChip cチップ = new CChip(); cチップ.tコピーfrom(list[j].pチップ); cチップ.n位置grid = num4; cチップ.bドラッグで選択中 = false; cチップ.b確定選択中 = true; c小節.listチップ.Add(cチップ); CChip cc = new CChip(); cc.tコピーfrom(cチップ); CChipLocationUndoRedo redo = new CChipLocationUndoRedo(c小節.n小節番号0to3599, cc); this._Form.mgrUndoRedo管理者.tノードを追加する(new CUndoRedoCell <CChipLocationUndoRedo>(null, new DGUndoを実行する <CChipLocationUndoRedo>(this._Form.mgr譜面管理者.tチップ配置のUndo), new DGRedoを実行する <CChipLocationUndoRedo>(this._Form.mgr譜面管理者.tチップ配置のRedo), redo, redo)); c小節 = cs配置開始小節; } else { CClipCell local3 = list[j]; local3.n位置grid -= c小節.n小節長倍率を考慮した現在の小節の高さgrid; int num5 = c小節.n小節番号0to3599 + 1; c小節 = this._Form.mgr譜面管理者.p小節を返す(num5); if (c小節 == null) { c小節 = new CMeasure(num5); this._Form.mgr譜面管理者.dic小節.Add(num5, c小節); } j--; } } this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する(); this._Form.tUndoRedo用GUIの有効_無効を設定する(); list.Clear(); } }