\82¯ã\83ªã\83\83ã\83\97ã\83\9cã\83¼ã\83\89.cs - RSS feed" href="/view?p=strokestylet/CsWin10Desktop3.git;a=rss;f=SSTFEditor/%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%AA%C3%A3%C2%83%C2%83%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%9C%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%89.cs" type="application/rss+xml" /> \82¯ã\83ªã\83\83ã\83\97ã\83\9cã\83¼ã\83\89.cs - RSS feed (no merges)" href="/view?p=strokestylet/CsWin10Desktop3.git;a=rss;f=SSTFEditor/%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%AA%C3%A3%C2%83%C2%83%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%9C%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%89.cs;opt=--no-merges" type="application/rss+xml" /> \82¯ã\83ªã\83\83ã\83\97ã\83\9cã\83¼ã\83\89.cs - Atom feed" href="/view?p=strokestylet/CsWin10Desktop3.git;a=atom;f=SSTFEditor/%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%AA%C3%A3%C2%83%C2%83%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%9C%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%89.cs" type="application/atom+xml" /> \82¯ã\83ªã\83\83ã\83\97ã\83\9cã\83¼ã\83\89.cs - Atom feed (no merges)" href="/view?p=strokestylet/CsWin10Desktop3.git;a=atom;f=SSTFEditor/%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%AA%C3%A3%C2%83%C2%83%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%9C%C3%A3%C2%83%C2%BC%C3%A3%C2%83%C2%89.cs;opt=--no-merges" type="application/atom+xml" />

OSDN Git Service

SSTFEditor で、ビュアー再生時にドラム音を発生するオプションが -h のまま変更されていなかったミスを修正。
[strokestylet/CsWin10Desktop3.git] / SSTFEditor / ã\82¯ã\83ªã\83\83ã\83\97ã\83\9cã\83¼ã\83\89.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace SSTFEditor
6 {
7         class クリップボード
8         {
9                 protected class Cセル
10                 {
11                         public bool 貼り付け済み = false;
12                         public int グループID = 0;
13                         public SSTFormat.チップ チップ = null;
14                 }
15
16                 // プロパティ
17
18                 public int セル数 => ( this.セルリスト.Count );
19
20                 // メソッド
21
22                 public クリップボード( メインフォーム form )
23                 {
24                         this.Form = form;
25                 }
26                 public void クリアする()
27                 {
28                         this.セルリスト.Clear();
29                 }
30                 public void 現在選択されているチップをボードにコピーする()
31                 {
32                         this.クリアする();
33
34                         foreach( var chip in this.Form.譜面.SSTFormatScore.チップリスト )
35                         {
36                                 if( chip.選択が確定している )
37                                 {
38                                         this.セルリスト.Add(
39                                                 new Cセル() { チップ = new SSTFormat.チップ( chip ) } );
40                                 }
41                         }
42                 }
43                 public void チップを指定位置から貼り付ける( int 貼り付け先頭の譜面内絶対位置grid )
44                 {
45                         if( 0 == this.セル数 )
46                                 return;
47
48                         try
49                         {
50                                 this.Form.UndoRedo管理.トランザクション記録を開始する();
51
52                                 // すべてのセルについて、チップ位置を、ボード内でもっとも位置が前にあるセルを 0grid とした相対値に変換する。
53                                 int 最小値grid = this.セルリスト[ 0 ].チップ.譜面内絶対位置grid;
54                                 foreach( var cell in this.セルリスト )
55                                 {
56                                         if( cell.チップ.譜面内絶対位置grid < 最小値grid )
57                                                 最小値grid = cell.チップ.譜面内絶対位置grid;
58                                 }
59                                 foreach( var cell in this.セルリスト )
60                                         cell.チップ.譜面内絶対位置grid -= 最小値grid;
61
62                                 // すべてのセルについて、チップ位置を、実際に貼り付ける位置に変換する。
63                                 foreach( var cell in this.セルリスト )
64                                         cell.チップ.譜面内絶対位置grid += 貼り付け先頭の譜面内絶対位置grid;
65
66                                 // チップを譜面に貼り付ける。
67                                 foreach( var cell in this.セルリスト )
68                                 {
69                                         this.Form.譜面.チップを配置または置換する(
70                                                 this.Form.譜面.dicチップ編集レーン対応表[ cell.チップ.チップ種別 ],
71                                                 cell.チップ.チップ種別,
72                                                 cell.チップ.譜面内絶対位置grid,
73                                                 cell.チップ.チップ内文字列,
74                                                 cell.チップ.音量,
75                                                 cell.チップ.BPM,
76                                                 選択確定中: true );
77                                 }
78                         }
79                         finally
80                         {
81                                 this.Form.UndoRedo管理.トランザクション記録を終了する();
82
83                                 this.Form.UndoRedo用GUIのEnabledを設定する();
84                                 this.Form.選択チップの有無に応じて編集用GUIのEnabledを設定する();
85                                 this.Form.譜面をリフレッシュする();
86                                 this.Form.未保存である = true;
87                         }
88                 }
89                 
90                 protected メインフォーム Form;
91                 protected readonly List<Cセル> セルリスト = new List<Cセル>();
92         }
93 }