using System;
using System.Collections.Generic;
using System.Text;
+using SSTFormat.v1;
namespace SSTFEditor
{
{
public bool 貼り付け済み = false;
public int グループID = 0;
- public SSTFormat.チップ チップ = null;
+ public チップ チップ = null;
}
// プロパティ
if( chip.選択が確定している )
{
this.セルリスト.Add(
- new Cセル() { チップ = new SSTFormat.チップ( chip ) } );
+ new Cセル() { チップ = new チップ( chip ) } );
}
}
}
using System.ServiceModel.Channels;
using System.Text.RegularExpressions;
using System.Windows.Forms;
-using FDK; // for string拡張
+using FDK;
+using SSTFormat.v1;
namespace SSTFEditor
{
public UndoRedo.管理 UndoRedo管理;
public クリップボード クリップボード;
public Size 譜面パネルサイズ => ( this.pictureBox譜面パネル.ClientSize );
- public SSTFormat.チップ種別 現在のチップ種別
+ public チップ種別 現在のチップ種別
{
get
{
private bool _未保存である = false;
- private readonly Dictionary<SSTFormat.チップ種別, string> _チップto名前
+ private readonly Dictionary<チップ種別, string> _チップto名前
#region " *** "
//-----------------
- = new Dictionary<SSTFormat.チップ種別, string>() {
- { SSTFormat.チップ種別.Bass, "BassDrum" },
- { SSTFormat.チップ種別.BPM, "BPM" },
- { SSTFormat.チップ種別.China, "China" },
- { SSTFormat.チップ種別.HiHat_Close, "HiHat(Close)" },
- { SSTFormat.チップ種別.HiHat_Foot, "FootPedal" },
- { SSTFormat.チップ種別.HiHat_HalfOpen, "HiHat(HarfOpen)" },
- { SSTFormat.チップ種別.HiHat_Open, "HiHat(Open)" },
- { SSTFormat.チップ種別.LeftCrash, "Crash" },
- { SSTFormat.チップ種別.Ride, "Ride" },
- { SSTFormat.チップ種別.Ride_Cup, "Ride(Cup)" },
- { SSTFormat.チップ種別.RightCrash, "Crash" },
- { SSTFormat.チップ種別.Snare, "Snare" },
- { SSTFormat.チップ種別.Snare_ClosedRim, "Snare(CloseRimShot)" },
- { SSTFormat.チップ種別.Snare_Ghost, "Snare(Ghost)" },
- { SSTFormat.チップ種別.Snare_OpenRim, "Snare(OpenRimShot)" },
- { SSTFormat.チップ種別.Splash, "Splash" },
- { SSTFormat.チップ種別.Tom1, "HighTom" },
- { SSTFormat.チップ種別.Tom1_Rim, "HighTom(RimShot)" },
- { SSTFormat.チップ種別.Tom2, "LowTom" },
- { SSTFormat.チップ種別.Tom2_Rim, "LowTom(RimShot)" },
- { SSTFormat.チップ種別.Tom3, "FloorTom" },
- { SSTFormat.チップ種別.Tom3_Rim, "FloorTom(RimShot)" },
- { SSTFormat.チップ種別.LeftCymbal_Mute, "Mute" },
- { SSTFormat.チップ種別.RightCymbal_Mute, "Mute" },
- { SSTFormat.チップ種別.Unknown, "" },
- { SSTFormat.チップ種別.小節線, "" },
- { SSTFormat.チップ種別.背景動画, "" },
- { SSTFormat.チップ種別.拍線, "" },
- { SSTFormat.チップ種別.小節メモ, "" },
+ = new Dictionary<チップ種別, string>() {
+ { チップ種別.Bass, "BassDrum" },
+ { チップ種別.BPM, "BPM" },
+ { チップ種別.China, "China" },
+ { チップ種別.HiHat_Close, "HiHat(Close)" },
+ { チップ種別.HiHat_Foot, "FootPedal" },
+ { チップ種別.HiHat_HalfOpen, "HiHat(HarfOpen)" },
+ { チップ種別.HiHat_Open, "HiHat(Open)" },
+ { チップ種別.LeftCrash, "Crash" },
+ { チップ種別.Ride, "Ride" },
+ { チップ種別.Ride_Cup, "Ride(Cup)" },
+ { チップ種別.RightCrash, "Crash" },
+ { チップ種別.Snare, "Snare" },
+ { チップ種別.Snare_ClosedRim, "Snare(CloseRimShot)" },
+ { チップ種別.Snare_Ghost, "Snare(Ghost)" },
+ { チップ種別.Snare_OpenRim, "Snare(OpenRimShot)" },
+ { チップ種別.Splash, "Splash" },
+ { チップ種別.Tom1, "HighTom" },
+ { チップ種別.Tom1_Rim, "HighTom(RimShot)" },
+ { チップ種別.Tom2, "LowTom" },
+ { チップ種別.Tom2_Rim, "LowTom(RimShot)" },
+ { チップ種別.Tom3, "FloorTom" },
+ { チップ種別.Tom3_Rim, "FloorTom(RimShot)" },
+ { チップ種別.LeftCymbal_Mute, "Mute" },
+ { チップ種別.RightCymbal_Mute, "Mute" },
+ { チップ種別.Unknown, "" },
+ { チップ種別.小節線, "" },
+ { チップ種別.背景動画, "" },
+ { チップ種別.拍線, "" },
+ { チップ種別.小節メモ, "" },
};
//-----------------
#endregion
private Point _選択モードでコンテクストメニューを開いたときのマウスの位置;
- private SSTFormat.チップ種別 _現在のチップ種別 = SSTFormat.チップ種別.Unknown;
+ private チップ種別 _現在のチップ種別 = チップ種別.Unknown;
#region " フォルダ、ファイルパス "
// 出力するパス内の背景動画を検索し、背景動画テキストボックスに設定する。
this.textBox背景動画.Text =
( from ファイル名 in Directory.GetFiles( Path.GetDirectoryName( ファイルの絶対パス ) )
- where SSTFormat.スコア.背景動画のデフォルト拡張子s.Any( 拡張子名 => ( Path.GetExtension( ファイル名 ).ToLower() == 拡張子名 ) )
+ where スコア.背景動画のデフォルト拡張子s.Any( 拡張子名 => ( Path.GetExtension( ファイル名 ).ToLower() == 拡張子名 ) )
select ファイル名 ).FirstOrDefault();
// SSTFファイルを出力する。
if( chip.選択が確定している )
{
- var chip変更前 = new SSTFormat.チップ( chip );
+ var chip変更前 = new チップ( chip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
if( 次小節の先頭位置grid <= chip.譜面内絶対位置grid )
{
- var chip変更前 = new SSTFormat.チップ( chip );
+ var chip変更前 = new チップ( chip );
- var cc = new UndoRedo.セル<SSTFormat.チップ>(
+ var cc = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
{
#region " チップを _変化量grid ぶん移動する。"
//-----------------
- var cc = new UndoRedo.セル<SSTFormat.チップ>(
+ var cc = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, _変化量grid, 任意2 ) => {
変更対象.譜面内絶対位置grid -= (int) _変化量grid;
{
if( 挿入前小節番号 <= chip.小節番号 )
{
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, _挿入に伴う増加量grid, 任意2 ) => {
変更対象.小節番号--;
if( 削除する小節番号 == chip.小節番号 )
{
- var chip変更前 = new SSTFormat.チップ( chip );
+ var chip変更前 = new チップ( chip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
{
if( 削除する小節番号 < chip.小節番号 )
{
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, _削除に伴う減少量grid, 任意2 ) => {
変更対象.小節番号++;
// 基本情報タブを設定する。
譜面.SSTFormatScore.背景動画ファイル名 =
( from file in Directory.GetFiles( Path.GetDirectoryName( this._作業フォルダパス ) )
- where SSTFormat.スコア.背景動画のデフォルト拡張子s.Any( 拡張子名 => ( Path.GetExtension( file ).ToLower() == 拡張子名 ) )
+ where スコア.背景動画のデフォルト拡張子s.Any( 拡張子名 => ( Path.GetExtension( file ).ToLower() == 拡張子名 ) )
select file ).FirstOrDefault(); // 複数あったら、最初に見つけたほうを採用。1つも見つからなければ null。
this._次のプロパティ変更がUndoRedoリストに載らないようにする();
this.textBox曲名.Text = 譜面.SSTFormatScore.Header.曲名;
using System.Diagnostics;
using System.Linq;
using System.Windows.Forms;
-using FDK; // for string 拡張
+using FDK;
+using SSTFormat.v1;
namespace SSTFEditor
{
var key = this.dic行と編集レーン対応表.First( ( kvp ) => ( kvp.Value == laneType ) ).Key;
return ( this.checkedListBoxレーン選択リスト.GetItemCheckState( key ) == CheckState.Checked );
}
- public bool 選択されている( SSTFormat.チップ種別 chipType )
+ public bool 選択されている( チップ種別 chipType )
{
// First() で要素が見つからなかったらバグなので、そのまま System.InvalidOperationException を放出させる。
var key = this.dic行とチップ種別対応表.First( ( kvp ) => ( kvp.Value == chipType ) ).Key;
};
//-----------------
#endregion
- protected readonly Dictionary<int, SSTFormat.チップ種別> dic行とチップ種別対応表
+ protected readonly Dictionary<int, チップ種別> dic行とチップ種別対応表
#region " *** "
//-----------------
- = new Dictionary<int, SSTFormat.チップ種別>() {
- { 0, SSTFormat.チップ種別.BPM },
- { 1, SSTFormat.チップ種別.LeftCrash },
- { 2, SSTFormat.チップ種別.HiHat_Close },
- { 3, SSTFormat.チップ種別.HiHat_HalfOpen },
- { 4, SSTFormat.チップ種別.HiHat_Open },
- { 5, SSTFormat.チップ種別.HiHat_Foot },
- { 6, SSTFormat.チップ種別.Snare },
- { 7, SSTFormat.チップ種別.Snare_Ghost },
- { 8, SSTFormat.チップ種別.Snare_ClosedRim },
- { 9, SSTFormat.チップ種別.Snare_OpenRim },
- { 10, SSTFormat.チップ種別.Tom1 },
- { 11, SSTFormat.チップ種別.Tom1_Rim },
- { 12, SSTFormat.チップ種別.Bass },
- { 13, SSTFormat.チップ種別.Tom2 },
- { 14, SSTFormat.チップ種別.Tom2_Rim },
- { 15, SSTFormat.チップ種別.Tom3 },
- { 16, SSTFormat.チップ種別.Tom3_Rim },
- { 17, SSTFormat.チップ種別.RightCrash },
- { 18, SSTFormat.チップ種別.Ride },
- { 19, SSTFormat.チップ種別.Ride_Cup },
- { 20, SSTFormat.チップ種別.China },
- { 21, SSTFormat.チップ種別.Splash },
- { 22, SSTFormat.チップ種別.背景動画 },
+ = new Dictionary<int, チップ種別>() {
+ { 0, チップ種別.BPM },
+ { 1, チップ種別.LeftCrash },
+ { 2, チップ種別.HiHat_Close },
+ { 3, チップ種別.HiHat_HalfOpen },
+ { 4, チップ種別.HiHat_Open },
+ { 5, チップ種別.HiHat_Foot },
+ { 6, チップ種別.Snare },
+ { 7, チップ種別.Snare_Ghost },
+ { 8, チップ種別.Snare_ClosedRim },
+ { 9, チップ種別.Snare_OpenRim },
+ { 10, チップ種別.Tom1 },
+ { 11, チップ種別.Tom1_Rim },
+ { 12, チップ種別.Bass },
+ { 13, チップ種別.Tom2 },
+ { 14, チップ種別.Tom2_Rim },
+ { 15, チップ種別.Tom3 },
+ { 16, チップ種別.Tom3_Rim },
+ { 17, チップ種別.RightCrash },
+ { 18, チップ種別.Ride },
+ { 19, チップ種別.Ride_Cup },
+ { 20, チップ種別.China },
+ { 21, チップ種別.Splash },
+ { 22, チップ種別.背景動画 },
};
//-----------------
#endregion
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
+using SSTFormat.v1;
namespace SSTFEditor
{
// レーン別チップ種別対応表の初期化。
// C譜面.dicチップ編集レーン対応表 を元にするので、譜面を先に生成してから編集モードを生成すること。
- this.dicレーン別チップ種別対応表 = new Dictionary<編集レーン種別, List<SSTFormat.チップ種別>>();
+ this.dicレーン別チップ種別対応表 = new Dictionary<編集レーン種別, List<チップ種別>>();
foreach( var obj in Enum.GetValues( typeof( 編集レーン種別 ) ) )
- this.dicレーン別チップ種別対応表[ (編集レーン種別) obj ] = new List<SSTFormat.チップ種別>();
+ this.dicレーン別チップ種別対応表[ (編集レーン種別) obj ] = new List<チップ種別>();
foreach( var kvp in this.Form.譜面.dicチップ編集レーン対応表 )
this.dicレーン別チップ種別対応表[ kvp.Value ].Add( kvp.Key );
protected bool 強制種別使用中 = false;
protected Dictionary<編集レーン種別, int> dicレーン別チップ種別バックアップ;
protected Dictionary<編集レーン種別, int> dicレーン別現在のチップ種別番号;
- protected Dictionary<編集レーン種別, List<SSTFormat.チップ種別>> dicレーン別チップ種別対応表;
+ protected Dictionary<編集レーン種別, List<チップ種別>> dicレーン別チップ種別対応表;
- protected void チップカーソルを描画する( Graphics g, SSTFormat.チップ種別 eチップ )
+ protected void チップカーソルを描画する( Graphics g, チップ種別 eチップ )
{
#region " 事前チェック。"
//-----------------
if( ( 0 >= this.現在のチップカーソル領域.Width ) ||
( 0 >= this.現在のチップカーソル領域.Height ) ||
( this.現在チップカーソルがある編集レーン == 編集レーン種別.Unknown ) ||
- ( eチップ == SSTFormat.チップ種別.Unknown ) ||
- ( eチップ == SSTFormat.チップ種別.小節線 ) ||
- ( eチップ == SSTFormat.チップ種別.拍線 ) ||
- ( eチップ == SSTFormat.チップ種別.小節メモ ) )
+ ( eチップ == チップ種別.Unknown ) ||
+ ( eチップ == チップ種別.小節線 ) ||
+ ( eチップ == チップ種別.拍線 ) ||
+ ( eチップ == チップ種別.小節メモ ) )
{
return; // 描画しない。
}
//-----------------
string チップ内文字列 = null;
- if( this.Form.現在のチップ種別 == SSTFormat.チップ種別.China )
+ if( this.Form.現在のチップ種別 == チップ種別.China )
チップ内文字列 = "C N";
- if( this.Form.現在のチップ種別 == SSTFormat.チップ種別.Splash )
+ if( this.Form.現在のチップ種別 == チップ種別.Splash )
チップ内文字列 = "S P";
this.Form.譜面.チップを配置または置換する(
this.Form.譜面.チップを配置または置換する(
e編集レーン: 編集レーン種別.BPM,
- eチップ: SSTFormat.チップ種別.BPM,
+ eチップ: チップ種別.BPM,
譜面内絶対位置grid: this.現在のチップカーソルの譜面先頭からのガイド単位の位置grid,
チップ文字列: bpm.ToString( "###.##" ),
音量: メインフォーム.最大音量, // BPM チップは常に最大音量枠
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
+using SSTFormat.v1;
namespace SSTFEditor
{
FDK.Utilities.解放する( ref this.選択領域用のペン );
this.Form = null;
}
- public void 個別選択を解除する( SSTFormat.チップ chip )
+ public void 個別選択を解除する( チップ chip )
{
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.選択が確定している = true;
// 選択されていないすべてのチップを選択する。
if( chip.選択が確定していない )
{
- var 変更前のチップ = new SSTFormat.チップ( chip );
- var 変更後のチップ = new SSTFormat.チップ( chip ) {
+ var 変更前のチップ = new チップ( chip );
+ var 変更後のチップ = new チップ( chip ) {
ドラッグ操作により選択中である = false,
選択が確定している = true,
};
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
//-----------------
var chip変更前 = this.移動開始時のチップ状態[ chip ];
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( chip変更前 );
{
#region " チップの選択を解除する。"
//-----------------
- var chip変更前 = new SSTFormat.チップ( chip );
+ var chip変更前 = new チップ( chip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
if( dialog.選択されている( e編集レーン ) || dialog.選択されている( chip.チップ種別 ) )
{
// チップを選択する。
- var chip変更前 = new SSTFormat.チップ( chip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var chip変更前 = new チップ( chip );
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.選択が確定している = 変更前.選択が確定している; },
Redoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.選択が確定している = true; },
protected bool 移動のためにドラッグ中である = false;
protected Point 現在の移動用ドラッグ開始位置px = new Point( 0, 0 );
protected Point 現在の移動用ドラッグ終了位置px = new Point( 0, 0 );
- protected Dictionary<SSTFormat.チップ, SSTFormat.チップ> 移動開始時のチップ状態 = new Dictionary<SSTFormat.チップ, SSTFormat.チップ>();
+ protected Dictionary<チップ, チップ> 移動開始時のチップ状態 = new Dictionary<チップ, チップ>();
protected struct STレーングリッド座標
{
public int 編集レーン番号; // X座標に相当。
foreach( var chip in this.Form.譜面.SSTFormatScore.チップリスト )
{
if( chip.選択が確定している )
- this.移動開始時のチップ状態.Add( chip, new SSTFormat.チップ( chip ) );
+ this.移動開始時のチップ状態.Add( chip, new チップ( chip ) );
}
}
protected void 移動の継続処理( MouseEventArgs e )
var chip変更前 = this.移動開始時のチップ状態[ chip ];
int 小節先頭位置grid = 0;
int 小節番号 = this.Form.譜面.譜面内絶対位置gridにおける小節の番号と小節先頭の位置gridを返す( chip.譜面内絶対位置grid, out 小節先頭位置grid );
- var chip変更後 = new SSTFormat.チップ( chip ) {
+ var chip変更後 = new チップ( chip ) {
小節番号 = 小節番号,
小節解像度 = (int) ( this.Form.GRID_PER_PART * this.Form.譜面.SSTFormatScore.小節長倍率を取得する( 小節番号 ) ),
小節内位置 = chip.譜面内絶対位置grid - 小節先頭位置grid,
};
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.CopyFrom( 変更前 ); },
Redoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.CopyFrom( 変更後 ); },
// ドラッグ選択範囲内にあって既に選択が確定されているものについては何もしない。
if( chip.ドラッグ操作により選択中である && ( false == chip.選択が確定している ) )
{
- var chip変更前 = new SSTFormat.チップ( chip );
- var chip変更後 = new SSTFormat.チップ( chip ) {
+ var chip変更前 = new チップ( chip );
+ var chip変更後 = new チップ( chip ) {
ドラッグ操作により選択中である = false,
選択が確定している = true,
};
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.CopyFrom( 変更前 ); },
Redoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => { 変更対象.CopyFrom( 変更後 ); },
using System.IO;
using System.Linq;
using System.Windows.Forms;
-using FDK; // for string 拡張
+using FDK;
+using SSTFormat.v1;
namespace SSTFEditor
{
/// <para>C編集モードのコンストラクタでも参照されるので、登録ルールに注意すること。</para>
/// <para>登録ルール → 同一レーンについて、最初によく使うチップを、2番目にトグルで2番目によく使うチップを登録する。</para>
/// </summary>
- public readonly Dictionary<SSTFormat.チップ種別, 編集レーン種別> dicチップ編集レーン対応表
+ public readonly Dictionary<チップ種別, 編集レーン種別> dicチップ編集レーン対応表
#region " *** "
//-----------------
- = new Dictionary<SSTFormat.チップ種別, 編集レーン種別>() {
- { SSTFormat.チップ種別.BPM, 編集レーン種別.BPM },
- { SSTFormat.チップ種別.LeftCrash, 編集レーン種別.左シンバル },
- { SSTFormat.チップ種別.HiHat_Close, 編集レーン種別.ハイハット },
- { SSTFormat.チップ種別.HiHat_Open, 編集レーン種別.ハイハット },
- { SSTFormat.チップ種別.HiHat_HalfOpen, 編集レーン種別.ハイハット },
- { SSTFormat.チップ種別.HiHat_Foot, 編集レーン種別.ハイハット },
- { SSTFormat.チップ種別.Snare, 編集レーン種別.スネア },
- { SSTFormat.チップ種別.Snare_Ghost, 編集レーン種別.スネア },
- { SSTFormat.チップ種別.Snare_ClosedRim, 編集レーン種別.スネア },
- { SSTFormat.チップ種別.Snare_OpenRim, 編集レーン種別.スネア },
- { SSTFormat.チップ種別.Tom1, 編集レーン種別.ハイタム },
- { SSTFormat.チップ種別.Tom1_Rim, 編集レーン種別.ハイタム },
- { SSTFormat.チップ種別.Bass, 編集レーン種別.バス },
- { SSTFormat.チップ種別.Tom2, 編集レーン種別.ロータム },
- { SSTFormat.チップ種別.Tom2_Rim, 編集レーン種別.ロータム },
- { SSTFormat.チップ種別.Tom3, 編集レーン種別.フロアタム },
- { SSTFormat.チップ種別.Tom3_Rim, 編集レーン種別.フロアタム },
- { SSTFormat.チップ種別.RightCrash, 編集レーン種別.右シンバル },
- { SSTFormat.チップ種別.Ride, 編集レーン種別.右シンバル }, // 右側で固定とする
- { SSTFormat.チップ種別.Ride_Cup, 編集レーン種別.右シンバル }, //
- { SSTFormat.チップ種別.China, 編集レーン種別.右シンバル }, //
- { SSTFormat.チップ種別.Splash, 編集レーン種別.右シンバル }, //
- { SSTFormat.チップ種別.LeftCymbal_Mute, 編集レーン種別.左シンバル },
- { SSTFormat.チップ種別.RightCymbal_Mute, 編集レーン種別.右シンバル },
- { SSTFormat.チップ種別.背景動画, 編集レーン種別.背景動画 },
- { SSTFormat.チップ種別.小節線, 編集レーン種別.Unknown },
- { SSTFormat.チップ種別.拍線, 編集レーン種別.Unknown },
- { SSTFormat.チップ種別.小節メモ, 編集レーン種別.Unknown },
- { SSTFormat.チップ種別.小節の先頭, 編集レーン種別.Unknown },
- { SSTFormat.チップ種別.Unknown, 編集レーン種別.Unknown },
+ = new Dictionary<チップ種別, 編集レーン種別>() {
+ { チップ種別.BPM, 編集レーン種別.BPM },
+ { チップ種別.LeftCrash, 編集レーン種別.左シンバル },
+ { チップ種別.HiHat_Close, 編集レーン種別.ハイハット },
+ { チップ種別.HiHat_Open, 編集レーン種別.ハイハット },
+ { チップ種別.HiHat_HalfOpen, 編集レーン種別.ハイハット },
+ { チップ種別.HiHat_Foot, 編集レーン種別.ハイハット },
+ { チップ種別.Snare, 編集レーン種別.スネア },
+ { チップ種別.Snare_Ghost, 編集レーン種別.スネア },
+ { チップ種別.Snare_ClosedRim, 編集レーン種別.スネア },
+ { チップ種別.Snare_OpenRim, 編集レーン種別.スネア },
+ { チップ種別.Tom1, 編集レーン種別.ハイタム },
+ { チップ種別.Tom1_Rim, 編集レーン種別.ハイタム },
+ { チップ種別.Bass, 編集レーン種別.バス },
+ { チップ種別.Tom2, 編集レーン種別.ロータム },
+ { チップ種別.Tom2_Rim, 編集レーン種別.ロータム },
+ { チップ種別.Tom3, 編集レーン種別.フロアタム },
+ { チップ種別.Tom3_Rim, 編集レーン種別.フロアタム },
+ { チップ種別.RightCrash, 編集レーン種別.右シンバル },
+ { チップ種別.Ride, 編集レーン種別.右シンバル }, // 右側で固定とする
+ { チップ種別.Ride_Cup, 編集レーン種別.右シンバル }, //
+ { チップ種別.China, 編集レーン種別.右シンバル }, //
+ { チップ種別.Splash, 編集レーン種別.右シンバル }, //
+ { チップ種別.LeftCymbal_Mute, 編集レーン種別.左シンバル },
+ { チップ種別.RightCymbal_Mute, 編集レーン種別.右シンバル },
+ { チップ種別.背景動画, 編集レーン種別.背景動画 },
+ { チップ種別.小節線, 編集レーン種別.Unknown },
+ { チップ種別.拍線, 編集レーン種別.Unknown },
+ { チップ種別.小節メモ, 編集レーン種別.Unknown },
+ { チップ種別.小節の先頭, 編集レーン種別.Unknown },
+ { チップ種別.Unknown, 編集レーン種別.Unknown },
};
//-----------------
#endregion
// プロパティ
- public SSTFormat.スコア SSTFormatScore;
+ public スコア SSTFormatScore;
public int 譜面表示下辺の譜面内絶対位置grid { get; set; }
public int カレントラインの譜面内絶対位置grid
{
// 初期化
- this.SSTFormatScore = new SSTFormat.スコア();
+ this.SSTFormatScore = new スコア();
this.譜面表示下辺の譜面内絶対位置grid = 0;
foreach( var kvp in this.dicレーン番号 )
this.dicレーン番号逆引き.Add( kvp.Value, kvp.Key );
#region " 最初は10小節ほど用意しておく → 10小節目の先頭に Unknown チップを置くことで実現。"
//-----------------
this.SSTFormatScore.チップリスト.Add(
- new SSTFormat.チップ() {
- チップ種別 = SSTFormat.チップ種別.Unknown,
+ new チップ() {
+ チップ種別 = チップ種別.Unknown,
小節番号 = 9, // 0から数えて10番目の小節 = 009
小節解像度 = 1,
小節内位置 = 0,
if( 拡張子 == ".sstf" )
{
- this.SSTFormatScore = new SSTFormat.スコア();
+ this.SSTFormatScore = new スコア();
this.SSTFormatScore.曲データファイルを読み込む( ファイル名 );
}
//else if( str拡張子 == ".dtx" )
#region " 小節線・拍線チップをすべて削除する。"
//-----------------
- this.SSTFormatScore.チップリスト.RemoveAll( ( chip ) => { return chip.チップ種別 == SSTFormat.チップ種別.小節線 || chip.チップ種別 == SSTFormat.チップ種別.拍線 || chip.チップ種別 == SSTFormat.チップ種別.Unknown; } );
+ this.SSTFormatScore.チップリスト.RemoveAll( ( chip ) => { return chip.チップ種別 == チップ種別.小節線 || chip.チップ種別 == チップ種別.拍線 || chip.チップ種別 == チップ種別.Unknown; } );
//-----------------
#endregion
#region " 全チップに対して「譜面内絶対位置grid」を設定する。"
//-----------------
int チップが存在する小節の先頭grid = 0;
int 現在の小節番号 = 0;
- foreach( SSTFormat.チップ chip in this.SSTFormatScore.チップリスト )
+ foreach( チップ chip in this.SSTFormatScore.チップリスト )
{
// チップの小節番号が現在の小節番号よりも大きい場合、チップが存在する小節に至るまで、「nチップが存在する小節の先頭grid」を更新する。
while( 現在の小節番号 < chip.小節番号 )
{
#region " クリッピング。"
//-----------------
- if( chip.チップ種別 == SSTFormat.チップ種別.Unknown )
+ if( chip.チップ種別 == チップ種別.Unknown )
continue; // 描画対象外
if( 0 != chip.枠外レーン数 )
if( chip.譜面内絶対位置grid >= パネル上辺の譜面内絶対位置grid )
break; // 描画範囲外(ここで終了)
- //-----------------
+ //-----------------
#endregion
int レーン番号 = this.dicレーン番号[ this.dicチップ編集レーン対応表[ chip.チップ種別 ] ];
//-----------------
#endregion
}
- public void チップを指定領域へ描画する( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ public void チップを指定領域へ描画する( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
// ※SSTFormat.チップ の描画以外の目的でも呼ばれるため、本メソッドの引数には SSTFormat.チップ を入れていない。
switch( eチップ )
{
- case SSTFormat.チップ種別.BPM:
- case SSTFormat.チップ種別.LeftCrash:
- case SSTFormat.チップ種別.HiHat_Close:
- case SSTFormat.チップ種別.Snare:
- case SSTFormat.チップ種別.Tom1:
- case SSTFormat.チップ種別.Bass:
- case SSTFormat.チップ種別.Tom2:
- case SSTFormat.チップ種別.Tom3:
- case SSTFormat.チップ種別.RightCrash:
- case SSTFormat.チップ種別.China:
- case SSTFormat.チップ種別.Splash:
- case SSTFormat.チップ種別.背景動画:
+ case チップ種別.BPM:
+ case チップ種別.LeftCrash:
+ case チップ種別.HiHat_Close:
+ case チップ種別.Snare:
+ case チップ種別.Tom1:
+ case チップ種別.Bass:
+ case チップ種別.Tom2:
+ case チップ種別.Tom3:
+ case チップ種別.RightCrash:
+ case チップ種別.China:
+ case チップ種別.Splash:
+ case チップ種別.背景動画:
this.チップを描画する_通常( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
- case SSTFormat.チップ種別.Snare_Ghost:
+ case チップ種別.Snare_Ghost:
this.チップを描画する_小丸( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
- case SSTFormat.チップ種別.Ride:
+ case チップ種別.Ride:
this.チップを描画する_幅狭( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
- case SSTFormat.チップ種別.Snare_OpenRim:
- case SSTFormat.チップ種別.HiHat_Open:
+ case チップ種別.Snare_OpenRim:
+ case チップ種別.HiHat_Open:
this.チップを描画する_幅狭白丸( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
- case SSTFormat.チップ種別.HiHat_HalfOpen:
- case SSTFormat.チップ種別.Ride_Cup:
+ case チップ種別.HiHat_HalfOpen:
+ case チップ種別.Ride_Cup:
this.チップを描画する_幅狭白狭丸( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
- case SSTFormat.チップ種別.HiHat_Foot:
- case SSTFormat.チップ種別.Snare_ClosedRim:
- case SSTFormat.チップ種別.Tom1_Rim:
- case SSTFormat.チップ種別.Tom2_Rim:
- case SSTFormat.チップ種別.Tom3_Rim:
- case SSTFormat.チップ種別.LeftCymbal_Mute:
- case SSTFormat.チップ種別.RightCymbal_Mute:
+ case チップ種別.HiHat_Foot:
+ case チップ種別.Snare_ClosedRim:
+ case チップ種別.Tom1_Rim:
+ case チップ種別.Tom2_Rim:
+ case チップ種別.Tom3_Rim:
+ case チップ種別.LeftCymbal_Mute:
+ case チップ種別.RightCymbal_Mute:
this.チップを描画する_幅狭白バツ( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
break;
}
}
public double 譜面内絶対位置gridにおけるBPMを返す( int 譜面内絶対位置grid )
{
- double bpm = SSTFormat.スコア.初期BPM;
+ double bpm = スコア.初期BPM;
foreach( var chip in this.SSTFormatScore.チップリスト )
{
if( chip.譜面内絶対位置grid > 譜面内絶対位置grid )
break;
- if( chip.チップ種別 == SSTFormat.チップ種別.BPM )
+ if( chip.チップ種別 == チップ種別.BPM )
bpm = chip.BPM;
}
return bpm;
}
- public SSTFormat.チップ 譜面パネル内座標pxに存在するチップがあれば返す( int x, int y )
+ public チップ 譜面パネル内座標pxに存在するチップがあれば返す( int x, int y )
{
var 座標の編集レーン = this.譜面パネル内X座標pxにある編集レーンを返す( x );
if( 座標の編集レーン == 編集レーン種別.Unknown )
{
this.ガイド間隔grid = ( n分 == 0 ) ? 1 : ( this.Form.GRID_PER_PART / n分 );
}
- public void チップを配置または置換する( 編集レーン種別 e編集レーン, SSTFormat.チップ種別 eチップ, int 譜面内絶対位置grid, string チップ文字列, int 音量, double BPM, bool 選択確定中 )
+ public void チップを配置または置換する( 編集レーン種別 e編集レーン, チップ種別 eチップ, int 譜面内絶対位置grid, string チップ文字列, int 音量, double BPM, bool 選択確定中 )
{
try
{
int 小節番号 = this.譜面内絶対位置gridにおける小節の番号と小節先頭の位置gridを返す( 譜面内絶対位置grid, out 小節先頭位置grid );
int 小節の長さgrid = this.小節長をグリッドで返す( 小節番号 );
- var chip = new SSTFormat.チップ() {
+ var chip = new チップ() {
ヒット済みである = false, // SSTFEditorでは使わない
可視 = true, // SSTFEditorでは使わない
選択が確定している = 選択確定中,
};
// チップを譜面に追加。
- var 変更前チップ = new SSTFormat.チップ( chip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var 変更前チップ = new チップ( chip );
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
this.SSTFormatScore.チップリスト.Remove( 変更対象 );
if( null != 削除チップ )
{
// UndoRedo セルを登録。
- var 変更前チップ = new SSTFormat.チップ( 削除チップ );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var 変更前チップ = new チップ( 削除チップ );
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 任意1, 任意2 ) => {
変更対象.CopyFrom( 変更前 );
this.チップを削除する( 編集レーン種別.Unknown, 小節先頭位置grid );
// 新しくダミーの Unknown チップを、最終小節番号の控え+4の小節の先頭に置く。
- var dummyChip = new SSTFormat.チップ() {
- チップ種別 = SSTFormat.チップ種別.Unknown,
+ var dummyChip = new チップ() {
+ チップ種別 = チップ種別.Unknown,
小節番号 = 最大小節番号の控え + 4,
小節解像度 = 1,
小節内位置 = 0,
譜面内絶対位置grid = 小節先頭位置grid + 小節の長さgrid + ( this.Form.GRID_PER_PART * 3 ),
};
- var 変更後チップ = new SSTFormat.チップ( dummyChip );
- var cell = new UndoRedo.セル<SSTFormat.チップ>(
+ var 変更後チップ = new チップ( dummyChip );
+ var cell = new UndoRedo.セル<チップ>(
所有者ID: null,
Undoアクション: ( 変更対象, 変更前, 変更後, 小節長倍率, 任意2 ) => {
this.SSTFormatScore.チップリスト.Remove( 変更対象 );
//-----------------
#endregion
- protected readonly Dictionary<SSTFormat.チップ種別, Color> チップto色
+ protected readonly Dictionary<チップ種別, Color> チップto色
#region " *** "
//-----------------
- = new Dictionary<SSTFormat.チップ種別, Color>() {
- { SSTFormat.チップ種別.BPM, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
- { SSTFormat.チップ種別.LeftCrash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.LeftCymbal_Mute, Color.FromArgb( チップ背景色透明度, Color.Gray ) },
- { SSTFormat.チップ種別.HiHat_Close, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
- { SSTFormat.チップ種別.HiHat_Foot, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
- { SSTFormat.チップ種別.HiHat_HalfOpen, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
- { SSTFormat.チップ種別.HiHat_Open, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
- { SSTFormat.チップ種別.Snare, Color.FromArgb( チップ背景色透明度, Color.Orange ) },
- { SSTFormat.チップ種別.Snare_ClosedRim, Color.FromArgb( チップ背景色透明度, Color.OrangeRed ) },
- { SSTFormat.チップ種別.Snare_Ghost, Color.FromArgb( チップ背景色透明度, Color.DeepPink ) },
- { SSTFormat.チップ種別.Snare_OpenRim, Color.FromArgb( チップ背景色透明度, Color.Orange ) },
- { SSTFormat.チップ種別.Tom1, Color.FromArgb( チップ背景色透明度, Color.Lime ) },
- { SSTFormat.チップ種別.Tom1_Rim, Color.FromArgb( チップ背景色透明度, Color.Lime ) },
- { SSTFormat.チップ種別.Bass, Color.FromArgb( チップ背景色透明度, Color.Gainsboro ) },
- { SSTFormat.チップ種別.Tom2, Color.FromArgb( チップ背景色透明度, Color.Red ) },
- { SSTFormat.チップ種別.Tom2_Rim, Color.FromArgb( チップ背景色透明度, Color.Red ) },
- { SSTFormat.チップ種別.Tom3, Color.FromArgb( チップ背景色透明度, Color.Magenta ) },
- { SSTFormat.チップ種別.Tom3_Rim, Color.FromArgb( チップ背景色透明度, Color.Magenta ) },
- { SSTFormat.チップ種別.RightCrash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.RightCymbal_Mute, Color.FromArgb( チップ背景色透明度, Color.Gray ) },
- { SSTFormat.チップ種別.Ride, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.Ride_Cup, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.China, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.Splash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
- { SSTFormat.チップ種別.背景動画, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ = new Dictionary<チップ種別, Color>() {
+ { チップ種別.BPM, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ { チップ種別.LeftCrash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.LeftCymbal_Mute, Color.FromArgb( チップ背景色透明度, Color.Gray ) },
+ { チップ種別.HiHat_Close, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ { チップ種別.HiHat_Foot, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ { チップ種別.HiHat_HalfOpen, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ { チップ種別.HiHat_Open, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
+ { チップ種別.Snare, Color.FromArgb( チップ背景色透明度, Color.Orange ) },
+ { チップ種別.Snare_ClosedRim, Color.FromArgb( チップ背景色透明度, Color.OrangeRed ) },
+ { チップ種別.Snare_Ghost, Color.FromArgb( チップ背景色透明度, Color.DeepPink ) },
+ { チップ種別.Snare_OpenRim, Color.FromArgb( チップ背景色透明度, Color.Orange ) },
+ { チップ種別.Tom1, Color.FromArgb( チップ背景色透明度, Color.Lime ) },
+ { チップ種別.Tom1_Rim, Color.FromArgb( チップ背景色透明度, Color.Lime ) },
+ { チップ種別.Bass, Color.FromArgb( チップ背景色透明度, Color.Gainsboro ) },
+ { チップ種別.Tom2, Color.FromArgb( チップ背景色透明度, Color.Red ) },
+ { チップ種別.Tom2_Rim, Color.FromArgb( チップ背景色透明度, Color.Red ) },
+ { チップ種別.Tom3, Color.FromArgb( チップ背景色透明度, Color.Magenta ) },
+ { チップ種別.Tom3_Rim, Color.FromArgb( チップ背景色透明度, Color.Magenta ) },
+ { チップ種別.RightCrash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.RightCymbal_Mute, Color.FromArgb( チップ背景色透明度, Color.Gray ) },
+ { チップ種別.Ride, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.Ride_Cup, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.China, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.Splash, Color.FromArgb( チップ背景色透明度, Color.WhiteSmoke ) },
+ { チップ種別.背景動画, Color.FromArgb( チップ背景色透明度, Color.SkyBlue ) },
};
//-----------------
#endregion
}
}
}
- protected void チップを描画する_通常( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列, Color 描画色 )
+ protected void チップを描画する_通常( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列, Color 描画色 )
{
using( var 背景ブラシ = new SolidBrush( 描画色 ) )
using( var 明るいペン = new Pen( Color.FromArgb( チップ明影透明度, 描画色 ) ) )
}
}
}
- protected void チップを描画する_通常( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_通常( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
this.チップを描画する_通常( g, eチップ, 音量, チップ描画領域, チップ内文字列, this.チップto色[ eチップ ] );
}
- protected void チップを描画する_幅狭( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列, Color 描画色 )
+ protected void チップを描画する_幅狭( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列, Color 描画色 )
{
// チップの幅を半分にする。
int w = チップ描画領域.Width;
this.チップを描画する_通常( g, eチップ, 音量, チップ描画領域, チップ内文字列, 描画色 );
}
- protected void チップを描画する_幅狭( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_幅狭( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
this.チップを描画する_幅狭( g, eチップ, 音量, チップ描画領域, チップ内文字列, this.チップto色[eチップ]);
}
- protected void チップを描画する_幅狭白丸( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_幅狭白丸( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
// 幅狭チップを描画。
this.チップを描画する_幅狭( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
this.チップ音量に合わせてチップ描画領域を縮小する( 音量, ref チップ描画領域 );
g.DrawEllipse( this.白丸白バツペン, チップ描画領域 );
}
- protected void チップを描画する_幅狭白狭丸( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_幅狭白狭丸( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
// 幅狭チップを描画。
this.チップを描画する_幅狭( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
チップ描画領域.X += w / 3 - 1; // -1 は見た目のバランス(直感)
g.DrawEllipse( this.白丸白バツペン, チップ描画領域 );
}
- protected void チップを描画する_幅狭白バツ( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_幅狭白バツ( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
// 幅狭チップを描画。
this.チップを描画する_幅狭( g, eチップ, 音量, チップ描画領域, チップ内文字列 );
g.DrawLine( this.白丸白バツペン, new Point( チップ描画領域.Left, チップ描画領域.Top ), new Point( チップ描画領域.Right, チップ描画領域.Bottom ) );
g.DrawLine( this.白丸白バツペン, new Point( チップ描画領域.Left, チップ描画領域.Bottom ), new Point( チップ描画領域.Right, チップ描画領域.Top ) );
}
- protected void チップを描画する_小丸( Graphics g, SSTFormat.チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
+ protected void チップを描画する_小丸( Graphics g, チップ種別 eチップ, int 音量, Rectangle チップ描画領域, string チップ内文字列 )
{
this.チップ音量に合わせてチップ描画領域を縮小する( 音量, ref チップ描画領域 );
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="スコア.cs" />
- <Compile Include="チップ.cs" />
- <Compile Include="チップ種別.cs" />
- <Compile Include="レーン種別.cs" />
+ <Compile Include="v1\スコア.cs" />
+ <Compile Include="v1\チップ.cs" />
+ <Compile Include="v1\チップ種別.cs" />
+ <Compile Include="v1\レーン種別.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FDK24\FDK24.csproj">
using System.Text.RegularExpressions;
using FDK;
-namespace SSTFormat
+namespace SSTFormat.v1
{
public class スコア : IDisposable
{
using System.Diagnostics;
using System.Linq;
-namespace SSTFormat
+namespace SSTFormat.v1
{
public class チップ : IComparable
{
using System;
-namespace SSTFormat
+namespace SSTFormat.v1
{
/// <summary>
/// チップの種別を表す整数値。
using System;
-namespace SSTFormat
+namespace SSTFormat.v1
{
public enum レーン種別
{
</Choose>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="スコアTests.cs" />
+ <Compile Include="v1\スコアTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SSTFormat\SSTFormat.csproj">
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using SSTFormat.v1;
-namespace SSTFormat.Tests
+namespace SSTFormat.v1.Tests
{
[TestClass()]
public class スコアTests
#region " 基本形。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE: 曲名",
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " 大文字小文字は区別しない。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#titLE: 曲名", // 大文字小文字が混在
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
expected: @"曲名",
ignoreCase: true );
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#titLE: 曲名",
コマンド名: @"TITle", // 大文字小文字が混在
パラメータ文字列: out パラメータ ) );
#endregion
#region " コロンは省略可能。ただし空白文字で区切ること。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE 曲名", // コロンの代わりに空白文字を使える。
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " 全角空白文字で区切ってもOK。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE 曲名", // ← 全角空白文字で区切ってる
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#region " ; 以降はコメントとして無視される。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE: 曲名;コメントです。",
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " ; の前後の半角空白は無視される。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE: 曲名 ; コメントです。",
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " ; の前後のTABは無視される。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE: 曲名 ; コメントです。", // ← TAB で区切ってる
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " ; の前の全角空白は無視されない。"
- Assert.IsTrue( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す(
+ Assert.IsTrue( スコア.コマンドのパラメータ文字列部分を返す(
対象文字列: @"#TITLE: 曲名 ;コメントです。", // "曲名" + 全角空白×3個
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#region " コロンなしでくっつけたら別のコマンド扱いになる。"
- Assert.IsFalse( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す( // false が返される。
+ Assert.IsFalse( スコア.コマンドのパラメータ文字列部分を返す( // false が返される。
対象文字列: @"#TITLE曲名",
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
#endregion
#region " # とコマンド名は分離不可。"
- Assert.IsFalse( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す( // false が返される。
+ Assert.IsFalse( スコア.コマンドのパラメータ文字列部分を返す( // false が返される。
対象文字列: @"# TITLE: 曲名",
コマンド名: @"TITLE",
パラメータ文字列: out パラメータ ) );
using System.ServiceModel;
using System.Windows.Forms;
using FDK;
+using SSTFormat.v1;
namespace SST
{
get { return StrokeStyleT._曲ツリー管理; }
}
- public static SSTFormat.スコア 演奏スコア
+ public static スコア 演奏スコア
{
get;
set;
using System.Linq;
using FDK;
using FDK.メディア;
+using SSTFormat.v1;
namespace SST.ステージ.曲読込
{
{
var user = StrokeStyleT.ユーザ管理.現在選択されているユーザ;
- StrokeStyleT.演奏スコア = new SSTFormat.スコア(
+ StrokeStyleT.演奏スコア = new スコア(
SST.フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( 選択曲ファイルパス ),
user.Rideは左,
user.Chinaは左,
using FDK.メディア;
using FDK.同期;
using FDK.カウンタ;
-using SSTFormat;
+using SSTFormat.v1;
namespace SST.ステージ.演奏
{
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
-using SSTFormat;
+using SSTFormat.v1;
namespace SST.ステージ.演奏
{
using FDK;
using FDK.メディア;
using FDK.メディア.サウンド.WASAPI;
-using SSTFormat;
+using SSTFormat.v1;
namespace SST.ステージ.演奏
{
case nameof( XML.Sound ):
// Name="..." 属性の値は、SSTFormat.チップ種別 の各メンバの名前に等しいものとする。
var Sound要素のName属性 = DrumKitの子要素.Attribute( nameof( XML.Name ) );
- var チップ種別 = SSTFormat.チップ種別.Unknown;
- if( Enum.TryParse( Sound要素のName属性.Value, out チップ種別 ) )
+ var chipType = チップ種別.Unknown;
+ if( Enum.TryParse( Sound要素のName属性.Value, out chipType ) )
{
string サウンドファイルパス = Path.Combine( StrokeStyleT.フォルダ.StaticFolder + @"\sounds\", DrumKitの子要素.Value );
if( File.Exists( サウンドファイルパス ) )
{
// すでに辞書に存在してるなら、解放して削除する。
- if( this._チップtoコンテキスト.ContainsKey( チップ種別 ) )
+ if( this._チップtoコンテキスト.ContainsKey( chipType ) )
{
- this._チップtoコンテキスト[ チップ種別 ]?.Dispose();
- this._チップtoコンテキスト.Remove( チップ種別 );
+ this._チップtoコンテキスト[ chipType ]?.Dispose();
+ this._チップtoコンテキスト.Remove( chipType );
}
// コンテキストを作成する。
context.Sounds[ i ] = StrokeStyleT.サウンドデバイス.CreateSound( サウンドファイルパス );
// コンテキストを辞書に追加する。
- this._チップtoコンテキスト.Add( チップ種別, context );
+ this._チップtoコンテキスト.Add( chipType, context );
}
else
{
using FDK;
using FDK.メディア;
using FDK.カウンタ;
-using SSTFormat;
+using SSTFormat.v1;
namespace SST.ステージ.演奏
{
using FDK;
using FDK.メディア;
using FDK.カウンタ;
-using SSTFormat;
+using SSTFormat.v1;
namespace SST.ステージ.演奏
{
using System.IO;
using System.Linq;
using System.Xml.Linq;
+using SSTFormat.v1;
namespace SST.ユーザ
{
/// AutoPlay はチップ単位ではなくレーン単位の指定である。
/// このメソッドは、指定されたチップが表示されるレーンを調べ、そのレーンの AutoPlay 設定値を返す。
/// </remarks>
- public bool チップが自動演奏である( SSTFormat.チップ種別 chipType )
+ public bool チップが自動演奏である( チップ種別 chipType )
{
// チップの種別に対応するレーンの AutoPlay 設定値を返す。
switch( chipType )
{
- case SSTFormat.チップ種別.LeftCrash:
- case SSTFormat.チップ種別.LeftCymbal_Mute:
+ case チップ種別.LeftCrash:
+ case チップ種別.LeftCymbal_Mute:
return this.AutoPlay.LeftCrash;
- case SSTFormat.チップ種別.Ride:
- case SSTFormat.チップ種別.Ride_Cup:
+ case チップ種別.Ride:
+ case チップ種別.Ride_Cup:
return ( this.Rideは左 ) ? this.AutoPlay.LeftCrash : this.AutoPlay.RightCrash;
- case SSTFormat.チップ種別.China:
+ case チップ種別.China:
return ( this.Chinaは左 ) ? this.AutoPlay.LeftCrash : this.AutoPlay.RightCrash;
- case SSTFormat.チップ種別.Splash:
+ case チップ種別.Splash:
return ( this.Splashは左 ) ? this.AutoPlay.LeftCrash : this.AutoPlay.RightCrash;
- case SSTFormat.チップ種別.HiHat_Open:
- case SSTFormat.チップ種別.HiHat_HalfOpen:
- case SSTFormat.チップ種別.HiHat_Close:
- case SSTFormat.チップ種別.HiHat_Foot:
+ case チップ種別.HiHat_Open:
+ case チップ種別.HiHat_HalfOpen:
+ case チップ種別.HiHat_Close:
+ case チップ種別.HiHat_Foot:
return this.AutoPlay.HiHat;
- case SSTFormat.チップ種別.Snare:
- case SSTFormat.チップ種別.Snare_OpenRim:
- case SSTFormat.チップ種別.Snare_ClosedRim:
- case SSTFormat.チップ種別.Snare_Ghost:
+ case チップ種別.Snare:
+ case チップ種別.Snare_OpenRim:
+ case チップ種別.Snare_ClosedRim:
+ case チップ種別.Snare_Ghost:
return this.AutoPlay.Snare;
- case SSTFormat.チップ種別.Bass:
+ case チップ種別.Bass:
return this.AutoPlay.Bass;
- case SSTFormat.チップ種別.Tom1:
- case SSTFormat.チップ種別.Tom1_Rim:
+ case チップ種別.Tom1:
+ case チップ種別.Tom1_Rim:
return this.AutoPlay.Tom1;
- case SSTFormat.チップ種別.Tom2:
- case SSTFormat.チップ種別.Tom2_Rim:
+ case チップ種別.Tom2:
+ case チップ種別.Tom2_Rim:
return this.AutoPlay.Tom2;
- case SSTFormat.チップ種別.Tom3:
- case SSTFormat.チップ種別.Tom3_Rim:
+ case チップ種別.Tom3:
+ case チップ種別.Tom3_Rim:
return this.AutoPlay.Tom3;
- case SSTFormat.チップ種別.RightCrash:
- case SSTFormat.チップ種別.RightCymbal_Mute:
+ case チップ種別.RightCrash:
+ case チップ種別.RightCymbal_Mute:
return this.AutoPlay.RightCrash;
- case SSTFormat.チップ種別.背景動画:
+ case チップ種別.背景動画:
return true; // 常にAutoPlay
}
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
+using SSTFormat.v1;
namespace SST.曲
{
#region " TITLE コマンド "
//---------------------
- if( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す( 行, @"TITLE", out パラメータ ) )
+ if( スコア.コマンドのパラメータ文字列部分を返す( 行, @"TITLE", out パラメータ ) )
{
this.Title = パラメータ;
continue;
#endregion
#region " ARTIST コマンド "
//---------------------
- if( SSTFormat.スコア.コマンドのパラメータ文字列部分を返す( 行, @"ARTIST", out パラメータ ) )
+ if( スコア.コマンドのパラメータ文字列部分を返す( 行, @"ARTIST", out パラメータ ) )
{
this.Artist = パラメータ;
continue;
using System.IO;
using System.Linq;
using FDK.メディア;
+using SSTFormat.v1;
namespace SST.曲
{
this.親ノード = 親ノード;
// sstf ファイルから情報を取得する。
- using( var score = new SSTFormat.スコア() )
+ using( var score = new スコア() )
{
score.曲データファイルを読み込む_ヘッダだけ( this.sstfファイルパス );
this.タイトル = score.Header.曲名;