OSDN Git Service

軽微なコード修正。
authorくまかみ工房 <kumakamikoubou@gmail.com>
Sat, 29 Apr 2017 06:04:38 +0000 (15:04 +0900)
committerくまかみ工房 <kumakamikoubou@gmail.com>
Sat, 29 Apr 2017 06:04:38 +0000 (15:04 +0900)
28 files changed:
FDK/Extensions.cs
FDK/Utilities.cs
FDK/フォルダ.cs
FDK/メディア/サウンド/WASAPI/Device.cs
FDK/メディア/サウンド/WASAPI/Mixer.cs
FDK/メディア/サウンド/WASAPI/Sound.cs
FDK/メディア/テクスチャ.cs
SSTFEditor/モード/編集モード.cs
SSTFEditor/譜面/C譜面.cs
SSTFormat/v1/スコア.cs
SSTFormat/v2/スコア.cs
StrokeStyleT/App.cs
StrokeStyleT/IO/Folder.cs
StrokeStyleT/ステージ/曲読込/曲読込ステージ.cs
StrokeStyleT/ステージ/演奏/コンボ.cs
StrokeStyleT/ステージ/演奏/ドラムサウンド.cs
StrokeStyleT/ステージ/演奏/ヒットランク.cs
StrokeStyleT/ステージ/演奏/回転羽.cs
StrokeStyleT/ステージ/演奏/演奏ステージ.cs
StrokeStyleT/ステージ/選曲/選曲ステージ.cs
StrokeStyleT/入力/入力管理.cs
StrokeStyleT/曲/Node.cs
StrokeStyleT/設定/オプション設定.cs
StrokeStyleT/設定/システム設定.cs
StrokeStyleT/設定/ドラムとチップと入力の対応表.cs
StrokeStyleT/設定/ユーザ.cs
StrokeStyleT/設定/ユーザプロパティ.cs
StrokeStyleT/設定/ユーザ管理.cs

index 9d021f5..de460f4 100644 (file)
@@ -8,20 +8,6 @@ namespace FDK
 {
        public static class Extensions
        {
-               // System.WeakReference<>
-
-               /// <summary>
-               ///             弱参照から実参照を取得する。
-               /// </summary>
-               /// <typeparam name="T">弱参照で使用する型。</typeparam>
-               /// <param name="wr">弱参照インスタンス。</param>
-               /// <returns>実参照。null、または取得に失敗すれば null 。</returns>
-               public static T GetTarget<T>( this WeakReference<T> wr ) where T : class
-               {
-                       return wr.TryGetTarget( out T target ) ? target : null;
-               }
-
-
                // SharpDX.IUnknown 
 
                /// <summary>
@@ -51,7 +37,7 @@ namespace FDK
                ///             文字列が Null でも空でもないなら true を返す。
                /// </summary>
                public static bool Nullでも空でもない( this string 検査対象 )
-                       => !string.IsNullOrEmpty( 検査対象 );
+                       => !( string.IsNullOrEmpty( 検査対象 ) );
                
                /// <summary>
                ///             文字列が Null または空なら true を返す。
index 3d79ade..759dbc3 100644 (file)
@@ -92,7 +92,7 @@ namespace FDK
 
                public static long 変換_sec単位から100ns単位へ( double 数値sec )
                {
-                       return ( long ) ( 数値sec * 10_000_000.0 + 0.5 ); // +0.5 で四捨五入できる。
+                       return (long) ( 数値sec * 10_000_000.0 + 0.5 ); // +0.5 で四捨五入できる。
                }
 
                /// <summary>
index 399f6aa..dccf13e 100644 (file)
@@ -60,7 +60,8 @@ namespace FDK
                }
 
                /// <summary>
-               ///             フォルダ変数が未登録なら null を返す。
+               ///             フォルダ変数の内容を返す。
+               ///             変数が未登録なら null を返す。
                /// </summary>
                /// <param name="変数名">フォルダ変数名。</param>
                /// <returns>フォルダ変数の登録値。未登録なら null。</returns>
index 3b8f413..ffcc272 100644 (file)
@@ -716,10 +716,6 @@ namespace FDK.メディア.サウンド.WASAPI
                        {
                                this._AudioClock.GetFrequencyNative( out Pu64Frequency );
 
-                               // IAudioClock::GetPosition() は、S_FALSE を返すことがある。
-                               // これは、WASAPI排他モードにおいて、GetPosition 時に優先度の高いイベントが発生しており
-                               // 既定時間内にデバイス位置を取得できなかった場合に返される。(MSDNより)
-
                                int hr = 0;
                                long pos = 0;
                                long qpcPos = 0;
@@ -728,6 +724,10 @@ namespace FDK.メディア.サウンド.WASAPI
                                {
                                        hr = this._AudioClock.GetPositionNative( out pos, out qpcPos );
 
+                                       // ※IAudioClock::GetPosition() は、S_FALSE を返すことがある。
+                                       //  これは、WASAPI排他モードにおいて、GetPosition 時に優先度の高いイベントが発生しており
+                                       //  規定時間内にデバイス位置を取得できなかった場合に返される。(MSDNより)
+
                                        if( ( (int) HResult.S_OK ) == hr )
                                        {
                                                break;      // OK
index a702904..dd85d51 100644 (file)
@@ -21,12 +21,10 @@ namespace FDK.メディア.サウンド.WASAPI
                                => this._Volume;
 
                        set
-                       {
-                               if( ( 0.0f > value ) && ( 1.0f < value ) )
-                                       throw new ArgumentOutOfRangeException();
-
-                               this._Volume = value;
-                       }
+                               => this._Volume =
+                                       ( 0.0f > value ) ? throw new ArgumentOutOfRangeException() :
+                                       ( 1.0f < value ) ? throw new ArgumentOutOfRangeException() :
+                                       value;
                }
 
                /// <summary>
index 3c131b3..89e735a 100644 (file)
@@ -81,17 +81,15 @@ namespace FDK.メディア.サウンド.WASAPI
                                => this._Volume;
 
                        set
-                       {
-                               if( ( 0.0f > value ) || ( 1.0f < value ) )
-                                       throw new ArgumentOutOfRangeException();
-
-                               this._Volume = value;
-                       }
+                               => this._Volume =
+                                       ( 0.0f > value ) ? throw new ArgumentOutOfRangeException() :
+                                       ( 1.0f < value ) ? throw new ArgumentOutOfRangeException() :
+                                       value;
                }
 
 
                /// <summary>
-               ///             Sound の生成は、コンストラクタではなく Device.CreateSound() で行うこと。
+               ///             Sound の生成は、コンストラクタではなく <see cref="Device.サウンドを生成する(string)"/> で行うこと。
                ///             (Device 内部で持っている Mixer への参照が必要なため。)
                /// </summary>
                /// <param name="path">
@@ -181,6 +179,10 @@ namespace FDK.メディア.サウンド.WASAPI
 
                private ISampleSource _SampleSource = null;
 
+               /// <summary>
+               ///             この Sound が登録されているミキサーへの弱参照。
+               ///             循環参照を避けるため、強参照は持たない。
+               /// </summary>
                private WeakReference<Mixer> _MixerRef = null;
 
                private float _Volume = 1.0f;
index de3776b..b94b64b 100644 (file)
@@ -60,59 +60,58 @@ namespace FDK.メディア
 
                protected override void Onデバイス依存リソースの作成( デバイスリソース dr )
                {
-                       using( var d3dLock = new AutoD3DDeviceLock( dr.DXGIDeviceManager, out Device d3dDevice ) )
-                       using( d3dDevice )
-                       {
-                               _定数バッファを生成する();
-
-                               _テクスチャとシェーダーリソースビューを生成する();
-
-                               // 以下、ローカル関数。
-
-                               void _定数バッファを生成する()
-                               {
-                                       var cBufferDesc = new BufferDescription() {
-                                               Usage = ResourceUsage.Dynamic,   // 動的使用法
-                                               BindFlags = BindFlags.ConstantBuffer,    // 定数バッファ
-                                               CpuAccessFlags = CpuAccessFlags.Write,   // CPUから書き込む
-                                               OptionFlags = ResourceOptionFlags.None,
-                                               SizeInBytes = SharpDX.Utilities.SizeOf<ST定数バッファの転送元データ>(),   // バッファサイズ
-                                               StructureByteStride = 0,
-                                       };
-                                       this._ConstantBuffer = new Buffer( d3dDevice, cBufferDesc );
-                               }
-                               void _テクスチャとシェーダーリソースビューを生成する()
-                               {
-                                       if( this._画像ファイルパス.Nullでも空でもない() )
-                                       {
-                                               // (A) 画像ファイルから生成する場合。
-                                               var 戻り値 = Utilities.CreateShaderResourceViewFromFile(
-                                                       d3dDevice,
-                                                       this._bindFlags,
-                                                       フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( this._画像ファイルパス ) );
-                                               this._ShaderResourceView = 戻り値.srv;
-                                               this._ShaderResourceViewSize = 戻り値.viewSize;
-                                               this.Texture = 戻り値.texture;
-                                       }
-                                       else if( this.ユーザ指定サイズdpx != Size2.Empty )
-                                       {
-                                               // (B) サイズを指定して生成する場合。
-                                               var 戻り値 = Utilities.CreateShaderResourceView(
-                                                       d3dDevice,
-                                                       this._bindFlags,
-                                                       this.ユーザ指定サイズdpx );
-                                               this._ShaderResourceView = 戻り値.srv;
-                                               this.Texture = 戻り値.texture;
-
-                                               this._ShaderResourceViewSize = new Size2F( this.ユーザ指定サイズdpx.Width, this.ユーザ指定サイズdpx.Height );
-                                       }
-                                       else
-                                       {
-                                               throw new InvalidOperationException();
-                                       }
-                               }
-                       }
-               }
+            using( var d3dLock = new AutoD3DDeviceLock( dr.DXGIDeviceManager, out Device d3dDevice ) )
+            using( d3dDevice )
+            {
+                #region " 定数バッファを生成する。"
+                //----------------
+                {
+                    var cBufferDesc = new BufferDescription() {
+                        Usage = ResourceUsage.Dynamic,   // 動的使用法
+                        BindFlags = BindFlags.ConstantBuffer,    // 定数バッファ
+                        CpuAccessFlags = CpuAccessFlags.Write,   // CPUから書き込む
+                        OptionFlags = ResourceOptionFlags.None,
+                        SizeInBytes = SharpDX.Utilities.SizeOf<ST定数バッファの転送元データ>(),   // バッファサイズ
+                        StructureByteStride = 0,
+                    };
+                    this._ConstantBuffer = new Buffer( d3dDevice, cBufferDesc );
+                }
+                //----------------
+                #endregion
+
+                #region " テクスチャとシェーダーリソースビューを生成する。"
+                //----------------
+                if( this._画像ファイルパス.Nullでも空でもない() )
+                {
+                    // (A) 画像ファイルから生成する場合。
+                    var 戻り値 = Utilities.CreateShaderResourceViewFromFile(
+                        d3dDevice,
+                        this._bindFlags,
+                        フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( this._画像ファイルパス ) );
+                    this._ShaderResourceView = 戻り値.srv;
+                    this._ShaderResourceViewSize = 戻り値.viewSize;
+                    this.Texture = 戻り値.texture;
+                }
+                else if( this.ユーザ指定サイズdpx != Size2.Empty )
+                {
+                    // (B) サイズを指定して生成する場合。
+                    var 戻り値 = Utilities.CreateShaderResourceView(
+                        d3dDevice,
+                        this._bindFlags,
+                        this.ユーザ指定サイズdpx );
+                    this._ShaderResourceView = 戻り値.srv;
+                    this.Texture = 戻り値.texture;
+
+                    this._ShaderResourceViewSize = new Size2F( this.ユーザ指定サイズdpx.Width, this.ユーザ指定サイズdpx.Height );
+                }
+                else
+                {
+                    throw new InvalidOperationException();
+                }
+                //----------------
+                #endregion
+            }
+        }
 
                protected override void Onデバイス依存リソースの解放( デバイスリソース dr )
                {
@@ -230,7 +229,7 @@ namespace FDK.メディア
 
 
                protected Size2 ユーザ指定サイズdpx;
-
+               
                protected Texture2D Texture = null;
 
 
@@ -270,9 +269,9 @@ namespace FDK.メディア
                        using( var d3dLock = new AutoD3DDeviceLock( dr.DXGIDeviceManager, out Device d3dDevice ) )
                        using( d3dDevice )
                        {
-                               var シェーダコンパイルのオプション =
-                                       ShaderFlags.Debug |
-                                       ShaderFlags.SkipOptimization |
+                var シェーダコンパイルのオプション = 
+                    ShaderFlags.Debug |
+                    ShaderFlags.SkipOptimization |
                                        ShaderFlags.EnableStrictness |
                                        ShaderFlags.PackMatrixColumnMajor;
 
index 2822dfb..e77053b 100644 (file)
@@ -23,11 +23,10 @@ namespace SSTFEditor
                        this.dicレーン別現在のチップ種別番号 = new Dictionary<編集レーン種別, int>();
                        this.dicレーン別チップ種別バックアップ = new Dictionary<編集レーン種別, int>();
 
-                       foreach( var obj in Enum.GetValues(typeof(編集レーン種別)))
+                       foreach( 編集レーン種別 editLaneType in Enum.GetValues(typeof(編集レーン種別)))
                        {
-                               var e = (編集レーン種別) obj;
-                               this.dicレーン別現在のチップ種別番号[ e ] = 0;
-                               this.dicレーン別チップ種別バックアップ[ e ] = 0;
+                               this.dicレーン別現在のチップ種別番号[ editLaneType ] = 0;
+                               this.dicレーン別チップ種別バックアップ[ editLaneType ] = 0;
                        }
 
 
@@ -36,8 +35,8 @@ namespace SSTFEditor
 
                        this.dicレーン別チップ種別対応表 = new Dictionary<編集レーン種別, List<チップ種別>>();
 
-                       foreach( var obj in Enum.GetValues( typeof( 編集レーン種別 ) ) )
-                               this.dicレーン別チップ種別対応表[ (編集レーン種別) obj ] = new List<チップ種別>();
+                       foreach( 編集レーン種別 editLaneType in Enum.GetValues( typeof( 編集レーン種別 ) ) )
+                               this.dicレーン別チップ種別対応表[ editLaneType ] = new List<チップ種別>();
                        
                        foreach( var kvp in this.Form.譜面.dicチップ編集レーン対応表 )
                                this.dicレーン別チップ種別対応表[ kvp.Value ].Add( kvp.Key );
index caf835d..b70f5cf 100644 (file)
@@ -444,20 +444,18 @@ namespace SSTFEditor
                        // レーン名を描画。
                        var レーン名描画領域 = new Rectangle( 0, 0, 0, 0 );
 
-                       foreach( var obj in Enum.GetValues( typeof( 編集レーン種別 ) ) )
+                       foreach( 編集レーン種別 editLaneType in Enum.GetValues( typeof( 編集レーン種別 ) ) )
                        {
-                               var e編集レーン = (編集レーン種別) obj;
-
-                               if( e編集レーン == 編集レーン種別.Unknown )
+                               if( editLaneType == 編集レーン種別.Unknown )
                                        break;
 
-                               レーン名描画領域.X = レーン名描画領域下側.X + ( this.dicレーン番号[ e編集レーン ] * this.チップサイズpx.Width ) + 2;
+                               レーン名描画領域.X = レーン名描画領域下側.X + ( this.dicレーン番号[ editLaneType ] * this.チップサイズpx.Width ) + 2;
                                レーン名描画領域.Y = レーン名描画領域下側.Y + 2;
                                レーン名描画領域.Width = this.チップサイズpx.Width;
                                レーン名描画領域.Height = 24;
 
                                g.DrawString(
-                                       this.レーンto名前[ e編集レーン ],
+                                       this.レーンto名前[ editLaneType ],
                                        this.レーン名文字フォント,
                                        this.レーン名文字影ブラシ,
                                        レーン名描画領域,
@@ -467,7 +465,7 @@ namespace SSTFEditor
                                レーン名描画領域.Y -= 2;
 
                                g.DrawString(
-                                       this.レーンto名前[ e編集レーン ],
+                                       this.レーンto名前[ editLaneType ],
                                        this.レーン名文字フォント,
                                        this.レーン名文字ブラシ,
                                        レーン名描画領域,
index e9a8ce5..a02f8a3 100644 (file)
@@ -1337,8 +1337,8 @@ namespace SSTFormat.v1
                                        //-----------------
                                        var dicレーン別チップリスト = new Dictionary<レーン種別, List<チップ>>();
 
-                                       foreach( var lane in Enum.GetValues( typeof( レーン種別 ) ) )
-                                               dicレーン別チップリスト[ (レーン種別) lane ] = new List<チップ>();
+                                       foreach( レーン種別 laneType in Enum.GetValues( typeof( レーン種別 ) ) )
+                                               dicレーン別チップリスト[ laneType ] = new List<チップ>();
                                        //-----------------
                                        #endregion
                                        #region " dicレーン別チップリストの構築; 小節番号 の小節に存在するチップのみをレーン別に振り分けて格納する。"
@@ -1394,24 +1394,22 @@ namespace SSTFormat.v1
                                        #endregion
                                        #region " Lane, Resolution, Chip 行 出力。"
                                        //-----------------
-                                       foreach( var laneObj in Enum.GetValues( typeof( レーン種別 ) ) )
+                                       foreach( レーン種別 laneType in Enum.GetValues( typeof( レーン種別 ) ) )
                                        {
-                                               var lane = (レーン種別) laneObj;
-
-                                               if( 0 < dicレーン別チップリスト[ lane ].Count )
+                                               if( 0 < dicレーン別チップリスト[ laneType ].Count )
                                                {
-                                                       sw.Write( $"Lane={lane.ToString()}; " );
+                                                       sw.Write( $"Lane={laneType.ToString()}; " );
 
                                                        #region " 新しい解像度を求める。"
                                                        //-----------------
                                                        int 新しい解像度 = 1;
-                                                       foreach( var cc in dicレーン別チップリスト[ lane ] )
+                                                       foreach( var cc in dicレーン別チップリスト[ laneType ] )
                                                                新しい解像度 = this._最小公倍数を返す( 新しい解像度, cc.小節解像度 );
                                                        //-----------------
                                                        #endregion
                                                        #region " dicレーン別チップリスト[ lane ] 要素の 小節解像度 と 小節内位置 を 新しい解像度 に合わせて修正する。 "
                                                        //-----------------
-                                                       foreach( var cc in dicレーン別チップリスト[ lane ] )
+                                                       foreach( var cc in dicレーン別チップリスト[ laneType ] )
                                                        {
                                                                int 倍率 = 新しい解像度 / cc.小節解像度;      // 新しい解像度 は 小節解像度 の最小公倍数なので常に割り切れる。
 
@@ -1424,9 +1422,9 @@ namespace SSTFormat.v1
                                                        sw.Write( $"Resolution = {新しい解像度}; " );
                                                        sw.Write( "Chips = " );
 
-                                                       for( int i = 0; i < dicレーン別チップリスト[ lane ].Count; i++ )
+                                                       for( int i = 0; i < dicレーン別チップリスト[ laneType ].Count; i++ )
                                                        {
-                                                               チップ cc = dicレーン別チップリスト[ lane ][ i ];
+                                                               チップ cc = dicレーン別チップリスト[ laneType ][ i ];
 
                                                                // 位置を出力。
                                                                sw.Write( cc.小節内位置.ToString() );
@@ -1499,7 +1497,7 @@ namespace SSTFormat.v1
                                                                #endregion
 
                                                                // 区切り文字 または 終端文字 を出力
-                                                               sw.Write( ( i == dicレーン別チップリスト[ lane ].Count - 1 ) ? ";" : "," );
+                                                               sw.Write( ( i == dicレーン別チップリスト[ laneType ].Count - 1 ) ? ";" : "," );
                                                        }
 
                                                        sw.WriteLine( "" ); // 改行
index 8d204a9..36a1607 100644 (file)
@@ -1329,8 +1329,8 @@ namespace SSTFormat.v2
                                        //-----------------
                                        var dicレーン別チップリスト = new Dictionary<レーン種別, List<チップ>>();
 
-                                       foreach( var lane in Enum.GetValues( typeof( レーン種別 ) ) )
-                                               dicレーン別チップリスト[ (レーン種別) lane ] = new List<チップ>();
+                                       foreach( レーン種別 laneType in Enum.GetValues( typeof( レーン種別 ) ) )
+                                               dicレーン別チップリスト[ laneType ] = new List<チップ>();
                                        //-----------------
                                        #endregion
                                        #region " dicレーン別チップリストの構築; 小節番号 の小節に存在するチップのみをレーン別に振り分けて格納する。"
@@ -1386,24 +1386,22 @@ namespace SSTFormat.v2
                                        #endregion
                                        #region " Lane, Resolution, Chip 行 出力。"
                                        //-----------------
-                                       foreach( var laneObj in Enum.GetValues( typeof( レーン種別 ) ) )
+                                       foreach( レーン種別 laneType in Enum.GetValues( typeof( レーン種別 ) ) )
                                        {
-                                               var lane = (レーン種別) laneObj;
-
-                                               if( 0 < dicレーン別チップリスト[ lane ].Count )
+                                               if( 0 < dicレーン別チップリスト[ laneType ].Count )
                                                {
-                                                       sw.Write( $"Lane={lane.ToString()}; " );
+                                                       sw.Write( $"Lane={laneType.ToString()}; " );
 
                                                        #region " 新しい解像度を求める。"
                                                        //-----------------
                                                        int 新しい解像度 = 1;
-                                                       foreach( var cc in dicレーン別チップリスト[ lane ] )
+                                                       foreach( var cc in dicレーン別チップリスト[ laneType ] )
                                                                新しい解像度 = this._最小公倍数を返す( 新しい解像度, cc.小節解像度 );
                                                        //-----------------
                                                        #endregion
                                                        #region " dicレーン別チップリスト[ lane ] 要素の 小節解像度 と 小節内位置 を 新しい解像度 に合わせて修正する。 "
                                                        //-----------------
-                                                       foreach( var cc in dicレーン別チップリスト[ lane ] )
+                                                       foreach( var cc in dicレーン別チップリスト[ laneType ] )
                                                        {
                                                                int 倍率 = 新しい解像度 / cc.小節解像度;      // 新しい解像度 は 小節解像度 の最小公倍数なので常に割り切れる。
 
@@ -1416,9 +1414,9 @@ namespace SSTFormat.v2
                                                        sw.Write( $"Resolution = {新しい解像度}; " );
                                                        sw.Write( "Chips = " );
 
-                                                       for( int i = 0; i < dicレーン別チップリスト[ lane ].Count; i++ )
+                                                       for( int i = 0; i < dicレーン別チップリスト[ laneType ].Count; i++ )
                                                        {
-                                                               チップ cc = dicレーン別チップリスト[ lane ][ i ];
+                                                               チップ cc = dicレーン別チップリスト[ laneType ][ i ];
 
                                                                // 位置を出力。
                                                                sw.Write( cc.小節内位置.ToString() );
@@ -1491,7 +1489,7 @@ namespace SSTFormat.v2
                                                                #endregion
 
                                                                // 区切り文字 または 終端文字 を出力
-                                                               sw.Write( ( i == dicレーン別チップリスト[ lane ].Count - 1 ) ? ";" : "," );
+                                                               sw.Write( ( i == dicレーン別チップリスト[ laneType ].Count - 1 ) ? ";" : "," );
                                                        }
 
                                                        sw.WriteLine( "" ); // 改行
index 36e01a1..38e4630 100644 (file)
@@ -686,7 +686,10 @@ namespace SST
                {
                        using( Log.Block( Utilities.現在のメソッド名 ) )
                        {
+                               // グローバルリソースのうち、デバイス依存リソースを持つものが対象。
+
                                App.ステージ管理.現在のステージ?.デバイス依存リソースを解放する( App.デバイスリソース );
+
                                App.ユーザ管理.デバイス依存リソースを解放する( App.デバイスリソース );
                        }
                }
@@ -695,7 +698,10 @@ namespace SST
                {
                        using( Log.Block( Utilities.現在のメソッド名 ) )
                        {
+                               // グローバルリソースのうち、デバイス依存リソースを持つものが対象。
+
                                App.ユーザ管理.デバイス依存リソースを作成する( App.デバイスリソース );
+
                                App.ステージ管理.現在のステージ?.デバイス依存リソースを作成する( App.デバイスリソース );
                        }
                }
index 43bddf4..d8ff76e 100644 (file)
@@ -60,7 +60,7 @@ namespace SST.IO
                        Folder.フォルダ変数を追加または更新する( "AppData", Folder.AppData );
                        Folder.フォルダ変数を追加または更新する( "UserRoot", Folder.UserRoot );
 
-                       if (false == Directory.Exists( Folder.AppData ))
+                       if( false == Directory.Exists( Folder.AppData ) )
                                Directory.CreateDirectory( Folder.AppData );
                }
 
index b61fc33..957053d 100644 (file)
@@ -54,8 +54,8 @@ namespace SST.ステージ.曲読込
                        if( this.現在のフェーズ != フェーズ.開始 )
                                return;
 
-                       var node = (App.ビュアーモードではない) ?
-                               (MusicNode) App.ユーザ管理.選択されているユーザ.曲ツリー.フォーカスノード :          // (A) 通常モード
+                       var node = ( App.ビュアーモードではない ) ?
+                               (MusicNode) App.ユーザ管理.選択されているユーザ.曲ツリー.フォーカスノード :        // (A) 通常モード
                                App.ビュアー用ノード;                                                        // (B) ビュアーモード時
 
                        string 選択曲ファイルパス = node.曲ファイルパス;
index 92d8eb6..ca45335 100644 (file)
@@ -361,20 +361,20 @@ namespace SST.ステージ.演奏
 
                        private readonly List<RectangleF> _文字矩形dpx = new List<RectangleF>() {
                                #region " [0]~[9]: '0'~'9', [10]:'COMBO' "
-                       //----------------
-                       new RectangleF( 0, 0, 45, 70 ),
-                       new RectangleF( 45, 0, 45, 70 ),
-                       new RectangleF( 90, 0, 45, 70 ),
-                       new RectangleF( 135, 0, 45, 70 ),
-                       new RectangleF( 180, 0, 45, 70 ),
-                       new RectangleF( 0, 70, 45, 70 ),
-                       new RectangleF( 45, 70, 45, 70 ),
-                       new RectangleF( 90, 70, 45, 70 ),
-                       new RectangleF( 135, 70, 45, 70 ),
-                       new RectangleF( 180, 70, 45, 70 ),
-                       new RectangleF( 0, 140, 90, 32 ),
-                       //----------------
-                       #endregion
+                               //----------------
+                               new RectangleF( 0, 0, 45, 70 ),
+                               new RectangleF( 45, 0, 45, 70 ),
+                               new RectangleF( 90, 0, 45, 70 ),
+                               new RectangleF( 135, 0, 45, 70 ),
+                               new RectangleF( 180, 0, 45, 70 ),
+                               new RectangleF( 0, 70, 45, 70 ),
+                               new RectangleF( 45, 70, 45, 70 ),
+                               new RectangleF( 90, 70, 45, 70 ),
+                               new RectangleF( 135, 70, 45, 70 ),
+                               new RectangleF( 180, 70, 45, 70 ),
+                               new RectangleF( 0, 140, 90, 32 ),
+                               //----------------
+                               #endregion
                        };
 
                        private const int _桁ごとのジャンプの遅れ = 50;   // 1桁につき 50 インデックス遅れる
index f82b4b5..0dd0956 100644 (file)
@@ -12,7 +12,7 @@ using SSTFormat.v2;
 namespace SST.ステージ.演奏
 {
        /// <summary>
-       ///             AutoPlay用のドラムサウンド。
+       ///             AutoPlayer用のドラムサウンド。
        /// </summary>
        class ドラムサウンド : Activity
        {
@@ -35,7 +35,7 @@ namespace SST.ステージ.演奏
                        lock( this._スレッド間同期 )
                        {
                                if( false == this._チップtoコンテキスト.ContainsKey( chipType ) )
-                                       return; // ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88æ\9cªç\99»é\8c²ã\81®ã\83\81ã\83\83ã\83\97ã\81ªã\82\89何もしない。
+                                       return; // ã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88æ\9cªç\99»é\8c²ã\81®ã\83\81ã\83\83ã\83\97ã\81ªã\81®ã\81§何もしない。
 
                                var context = this._チップtoコンテキスト[ chipType ];
 
index 723187e..3f58e82 100644 (file)
@@ -50,7 +50,7 @@ namespace SST.ステージ.演奏
                {
                        lock( this._スレッド間同期 )
                        {
-                               var laneType = App.ユーザ管理.選択されているユーザ.オプション設定.ドラムとチップと入力の対応表.対応表[ chipType ].表示レーン種別;
+                               var laneType = App.ユーザ管理.選択されているユーザ.オプション設定.ドラムとチップと入力の対応表[ chipType ].表示レーン種別;
 
                                if( laneType != 表示レーン種別.Unknown )
                                        this.表示開始( laneType, hitRankType );
@@ -61,8 +61,8 @@ namespace SST.ステージ.演奏
                {
                        // すべての表示レーンについて、進行描画コンテキストを生成する。
                        this._表示レーンto進行描画コンテキスト = new Dictionary<表示レーン種別, 進行描画コンテキスト>();
-                       foreach( var laneType in typeof( 表示レーン種別 ).GetEnumValues() )
-                               this._表示レーンto進行描画コンテキスト.Add( ( 表示レーン種別 ) laneType, new 進行描画コンテキスト() );
+                       foreach( 表示レーン種別 laneType in Enum.GetValues(typeof( 表示レーン種別 ) ) )
+                               this._表示レーンto進行描画コンテキスト.Add( laneType, new 進行描画コンテキスト() );
                }
 
                protected override void On非活性化( デバイスリソース dr )
@@ -75,9 +75,8 @@ namespace SST.ステージ.演奏
                        lock( this._スレッド間同期 )
                        {
                                // すべての表示レーン種別について、進行描画する。
-                               foreach( var lane_object in typeof( 表示レーン種別 ).GetEnumValues() )
+                               foreach( 表示レーン種別 lane in Enum.GetValues( typeof( 表示レーン種別 ) ) )
                                {
-                                       var lane = (表示レーン種別) lane_object;
                                        var context = this._表示レーンto進行描画コンテキスト[ lane ];
 
                                        if( context.進行カウンタ.停止中である )
@@ -85,15 +84,15 @@ namespace SST.ステージ.演奏
 
                                        // 進行。
 
-                                       #region " 進行カウンタが終了値に達したら停止 → 表示完了。"
-                                       //----------------
                                        if( context.進行カウンタ.終了値に達した )
                                        {
+                                               #region " 進行カウンタが終了値に達したら停止 → 表示完了。"
+                                               //----------------
                                                context.進行カウンタ.一時停止する();
                                                continue;
+                                               //----------------
+                                               #endregion
                                        }
-                                       //----------------
-                                       #endregion
 
                                        if( context.ヒットランク種別 != ヒットランク種別.MISS )
                                        {
index 0592558..515fb2d 100644 (file)
@@ -6,7 +6,6 @@ using SharpDX;
 using FDK;
 using FDK.メディア;
 using FDK.カウンタ;
-using SSTFormat.v2;
 
 using Utilities = FDK.Utilities;
 
index debb695..9b20068 100644 (file)
@@ -78,8 +78,8 @@ namespace SST.ステージ.演奏
                                        this._チップ画像の矩形リスト = new 矩形リスト( @"$(System)\images\Chips Rectangle List.xml" );      // デバイスリソースは持たないので、子Activityではない。
 
                                        this.ヒットランク別ヒット回数.Clear();
-                                       foreach( var hitRankType in typeof( ヒットランク種別 ).GetEnumValues() )
-                                               this.ヒットランク別ヒット回数[ ( ヒットランク種別 ) hitRankType ] = 0;
+                                       foreach( ヒットランク種別 hitRankType in Enum.GetValues( typeof( ヒットランク種別 ) ) )
+                                               this.ヒットランク別ヒット回数[ hitRankType ] = 0;
 
                                        #region " 背景動画とBGMを生成する。"
                                        //----------------
@@ -370,7 +370,7 @@ namespace SST.ステージ.演奏
                private double _現在進行描画中の譜面スクロール速度の倍率 = 1.0;
 
                /// <summary>
-               ///             演奏スコア.チップリスト[] のうち、描画を始めるチップのインデックス番号。
+               ///             <see cref="スコア.チップリスト"/> のうち、描画を始めるチップのインデックス番号。
                ///             未演奏時・演奏終了時は -1 。
                /// </summary>
                /// <remarks>
@@ -814,7 +814,7 @@ namespace SST.ステージ.演奏
                                        this._描画範囲のチップに処理を適用する( 現在の演奏時刻sec, ( chip, index, ヒット判定バーとの時間sec, ヒット判定バーとの距離dpx ) => {
 
                                                var オプション設定 = App.ユーザ管理.選択されているユーザ.オプション設定;
-                                               var 対応表 = オプション設定.ドラムとチップと入力の対応表.対応表[ chip.チップ種別 ];
+                                               var 対応表 = オプション設定.ドラムとチップと入力の対応表[ chip.チップ種別 ];
                                                var AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ];
 
                                                bool チップはヒット済みである = chip.ヒット済みである;
@@ -926,7 +926,7 @@ namespace SST.ステージ.演奏
                                        this._描画範囲のチップに処理を適用する( 現在の演奏時刻sec, ( chip, index, ヒット判定バーとの時間sec, ヒット判定バーとの距離dpx ) => {
 
                                                var オプション設定 = App.ユーザ管理.選択されているユーザ.オプション設定;
-                                               var 対応表 = オプション設定.ドラムとチップと入力の対応表.対応表[ chip.チップ種別 ];
+                                               var 対応表 = オプション設定.ドラムとチップと入力の対応表[ chip.チップ種別 ];
                                                bool AutoPlay = オプション設定.AutoPlay[ 対応表.AutoPlay種別 ];
                                                double ヒット判定バーとの時間の絶対値sec = Math.Abs( ヒット判定バーとの時間sec );
                                                bool チップはヒット済みである = chip.ヒット済みである;
@@ -1070,7 +1070,7 @@ namespace SST.ステージ.演奏
                                                this._コンボ.COMBO値++;
                                                this._回転羽.発火する( 
                                                        new Vector2(
-                                                               レーンフレームの左端位置dpx + レーンフレーム.レーンto横中央相対位置dpx[ App.ユーザ管理.選択されているユーザ.オプション設定.ドラムとチップと入力の対応表.対応表[ chip.チップ種別 ].表示レーン種別 ],
+                                                               レーンフレームの左端位置dpx + レーンフレーム.レーンto横中央相対位置dpx[ App.ユーザ管理.選択されているユーザ.オプション設定.ドラムとチップと入力の対応表[ chip.チップ種別 ].表示レーン種別 ],
                                                                ヒット判定バーの中央Y座標dpx ) );
                                                this._ヒットランク.表示開始( chip.チップ種別, hitRankType );
                                                this.ヒットランク別ヒット回数[ hitRankType ]++;
index 33ad3bc..6749b6b 100644 (file)
@@ -76,19 +76,19 @@ namespace SST.ステージ.選曲
 
                        App.入力管理.すべての入力デバイスをポーリングする();
 
-                       #region " ESC → キャンセル "
-                       //----------------
                        if( App.入力管理.キーボードデバイス.キーが押された( 0, Key.Escape ) )
                        {
+                               #region " ESC → キャンセル "
+                               //----------------
                                this.現在のフェーズ = フェーズ.キャンセル;
                                return;
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
-                       #region " シンバル → 曲決定 "
-                       //----------------
                        if( App.入力管理.シンバルが入力された() )
                        {
+                               #region " シンバル → 曲決定 "
+                               //----------------
                                if( null != App.ユーザ管理.選択されているユーザ.曲ツリー.フォーカスノード )
                                {
                                        this.現在のフェーズ = フェーズ.曲決定;
@@ -99,51 +99,51 @@ namespace SST.ステージ.選曲
                                {
                                        Log.WARNING( "演奏する曲が選択されていません。" );
                                }
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
 
-                       #region " 上, Tom2 → 曲カーソル上移動 "
-                       //----------------
                        if( App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom2 ) ||
                                App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom2_Rim ) ||
                                App.入力管理.キーボードデバイス.キーが押された( 0, Key.Up ) )
                        {
+                               #region " 上, Tom2 → 曲カーソル上移動 "
+                               //----------------
                                this._曲パネルビュー.カーソルを上に移動する();
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
-                       #region " 下, Snare → 曲カーソル下移動 "
-                       //----------------
                        if( App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Snare ) ||
                                App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Snare_ClosedRim ) ||
                                App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Snare_OpenRim ) ||
                                App.入力管理.キーボードデバイス.キーが押された( 0, Key.Down ) )
                        {
+                               #region " 下, Snare → 曲カーソル下移動 "
+                               //----------------
                                this._曲パネルビュー.カーソルを下に移動する();
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
-                       #region " 左, Tom1 → 曲カーソル左移動 "
-                       //----------------
                        if( App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom1 ) ||
                                App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom1_Rim ) ||
                                App.入力管理.キーボードデバイス.キーが押された( 0, Key.Left ) )
                        {
+                               #region " 左, Tom1 → 曲カーソル左移動 "
+                               //----------------
                                this._曲パネルビュー.カーソルを左に移動する();
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
-                       #region " 右, Tom3 → 曲カーソル右移動 "
-                       //----------------
                        if( App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom3 ) ||
                                App.入力管理.ドラムが入力された( 入力.ドラム入力種別.Tom3_Rim ) ||
                                App.入力管理.キーボードデバイス.キーが押された( 0, Key.Right ) )
                        {
+                               #region " 右, Tom3 → 曲カーソル右移動 "
+                               //----------------
                                this._曲パネルビュー.カーソルを右に移動する();
+                               //----------------
+                               #endregion
                        }
-                       //----------------
-                       #endregion
                }
 
 
index 5c6e838..d142d8b 100644 (file)
@@ -264,7 +264,7 @@ namespace SST.入力
                        // ポーリングされた入力イベントのうち、キーバインディングに登録されているイベントだけを ポーリング結果 に追加する。
                        foreach( var ev in 入力デバイス.入力イベントリスト )
                        {
-                               // ã\83\87ã\83\90ã\82¤ã\82¹toã\83\89ã\83©ã\83 å¯¾å¿\9c表 ã\82\92使ã\81£ã\81¦ã\80\81å\85¥å\8a\9bã\82¤ã\83\99ã\83³ã\83\88 ev ã\82\92ã\83\89ã\83©ã\83 å\85¥å\8a\9bにマッピングする。
+                               // ã\82­ã\83¼ã\83\90ã\82¤ã\83³ã\83\87ã\82£ã\83³ã\82°ã\82\92使ã\81£ã\81¦ã\80\81å\85¥å\8a\9bã\82¤ã\83\99ã\83³ã\83\88 ev ã\82\92ã\83\89ã\83©ã\83 å\85¥å\8a\9b evKey にマッピングする。
                                var evKey = new キーバインディング.IdKey( ev );
 
                                if( false == デバイスtoドラム対応表.ContainsKey( evKey ) )
index b4f742e..1b053ca 100644 (file)
@@ -94,7 +94,10 @@ namespace SST.曲
                ///             すべてのノードで同一、固定値。
                /// </summary>
                public static Size2F 全体サイズdpx
-                       => new Size2F( 314f, 220f );
+               {
+                       get
+                               => new Size2F( 314f, 220f );
+               }
 
 
                public Node()
index 0c65036..d168f50 100644 (file)
@@ -106,7 +106,7 @@ namespace SST.設定
                {
                        using( Log.Block( Utilities.現在のメソッド名 ) )
                        {
-                               if( !Directory.Exists( ユーザフォルダパス ) )
+                               if( false == Directory.Exists( ユーザフォルダパス ) )
                                        Directory.CreateDirectory( ユーザフォルダパス ); // 失敗したら例外発生。
 
                                var xmlPath = Path.Combine( ユーザフォルダパス, _OptionXmlファイル名 );
@@ -173,12 +173,12 @@ namespace SST.設定
                                };
 
                                this.最大ヒット距離sec = new Dictionary<ヒットランク種別, double>();
-                               foreach( ヒットランク種別 hr in Enum.GetValues( typeof( ヒットランク種別 ) ) )
-                                       this.最大ヒット距離sec[ hr ] = this._最大ヒット距離secの既定値[ hr ];
+                               foreach( ヒットランク種別 hitRankType in Enum.GetValues( typeof( ヒットランク種別 ) ) )
+                                       this.最大ヒット距離sec[ hitRankType ] = this._最大ヒット距離secの既定値[ hitRankType ];
 
                                this.AutoPlay = new Dictionary<AutoPlay種別, bool>();
-                               foreach( AutoPlay種別 apt in Enum.GetValues( typeof( AutoPlay種別 ) ) )
-                                       this.AutoPlay[ apt ] = false;
+                               foreach( AutoPlay種別 autoPlayType in Enum.GetValues( typeof( AutoPlay種別 ) ) )
+                                       this.AutoPlay[ autoPlayType ] = false;
 
                                this.譜面スクロール速度の倍率 = 1.0;
                                this.動画表示パターン種別 = 動画表示パターン種別.中央表示;
index 614598e..b45d178 100644 (file)
@@ -27,11 +27,11 @@ namespace SST.設定
                public SharpDX.Size2 物理画面サイズpx { get; set; }
 
                /// <summary>
-               ///             スワップチェーンの表示をディスプレイの垂直帰線中に行う場合は true。
+               ///             スワップチェーンの表示切替をディスプレイの垂直帰線中に行う場合は true。
                /// </summary>
                /// <remarks>
                ///             false にすると、ティアリングや、ビデオカードの不要な発熱が生じる可能性がある。
-               ///             なお、入出力や発声など高精度なタイミング制御が必要なアクションは常に垂直帰線を待たずに行われるため、ここで設定される値とは無関係。
+               ///             なお、演奏時の入出力や発声など高精度なタイミング制御が必要なアクションは常に垂直帰線を待たずに行われるため、ここで設定される値とは無関係。
                /// </remarks>
                [DataMember]
                public bool 垂直帰線待ちを行う { get; set; }
index 364f863..0a79cc7 100644 (file)
@@ -73,6 +73,12 @@ namespace SST.設定
                        protected set;
                }
 
+               public Column this[ チップ種別 chipType ]
+               {
+                       get
+                               => this.対応表[ chipType ];
+               }
+
                /// <summary>
                ///             コンストラクタ。対応表を生成する。
                /// </summary>
index e65ef46..4629f28 100644 (file)
@@ -76,7 +76,7 @@ namespace SST.設定
                        {
                                var ユーザフォルダパス = SST.IO.Folder.User( this.プロパティ.名前 );
 
-                               if( !Directory.Exists( ユーザフォルダパス ) )
+                               if( false == Directory.Exists( ユーザフォルダパス ) )
                                        Directory.CreateDirectory( ユーザフォルダパス ); // 失敗したら例外発生。
 
                                // プロパティを保存。
index 2230f79..d59f083 100644 (file)
@@ -13,7 +13,6 @@ namespace SST.設定
        /// <remarks>
        ///             ユーザクラスを <see cref="FDK.Activity"/> から派生可能にするため、DataContract 部分をこのクラスに抽出。
        /// </remarks>
-
        [DataContract( Name = "Properties", Namespace = "" )]
        class ユーザプロパティ : IExtensibleDataObject
        {
index ad2477b..0fb5351 100644 (file)
@@ -239,7 +239,7 @@ namespace SST.設定
                                var userManager = new ユーザ管理();
 
                                // ユーザルートフォルダがなければ作成する。
-                               if( !Directory.Exists( SST.IO.Folder.UserRoot ) )
+                               if( false == Directory.Exists( SST.IO.Folder.UserRoot ) )
                                        Directory.CreateDirectory( SST.IO.Folder.UserRoot );
 
                                // 条件に適合するフォルダをユーザフォルダとみなし、そのパスを列挙する。
@@ -303,13 +303,11 @@ namespace SST.設定
 
                                try
                                {
-                                       var 新ユーザ = ユーザ.復元する( SST.IO.Folder.User( ユーザ名 ) );
-                                       var 旧ユーザ = this.ユーザリスト[ index ];
-
                                        // 既存のユーザを削除して、
                                        this.ユーザを削除する( index );
 
                                        // 同じ位置に新ユーザを挿入して。
+                                       var 新ユーザ = ユーザ.復元する( SST.IO.Folder.User( ユーザ名 ) );
                                        this.ユーザを追加する( 新ユーザ, index );
 
                                        // 削除した際に選択ユーザが変更されているので、再選択する。