public void tチップを追加する(CChip cc, int nレーン番号, int n位置grid) { CClipCell item = new CClipCell(); item.pチップ = new CChip(); item.pチップ.tコピーfrom(cc); item.nレーン番号 = nレーン番号; item.n位置grid = n位置grid; this.cbボード.Add(item); }
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(); } }