OSDN Git Service

#xxxxx matixx風FIFOの追加。現状パズル型のみ完成。
authorkairera0467 <gennsou76573@gmail.com>
Sun, 7 Aug 2022 14:49:57 +0000 (23:49 +0900)
committerkairera0467 <gennsou76573@gmail.com>
Sun, 7 Aug 2022 14:49:57 +0000 (23:49 +0900)
#xxxxx matixx風表示の場合、タイトル画面とコンフィグ画面のFIFOにパズル型FIFOを使うよう変更。

16 files changed:
DTXManiaプロジェクト/DTXManiaプロジェクト.csproj
DTXManiaプロジェクト/コード/ステージ/02.タイトル/CStageタイトル.cs
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CStageコンフィグ.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/GITADORA/CActSelectFO曲決定.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/GITADORA/CActSelect曲リストGITADORA.cs
DTXManiaプロジェクト/コード/ステージ/05.選曲/GITADORA/CStage選曲GITADORA.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/GITADORA/ドラム画面/CAct演奏DrumsステータスパネルGD.cs
DTXManiaプロジェクト/コード/ステージ/CActFIFOFade.cs [new file with mode: 0644]
DTXManiaプロジェクト/コード/ステージ/CActFIFOPuzzle.cs
DTXManiaプロジェクト/コード/ステージ/CActFIFOSpin.cs [new file with mode: 0644]
FDK17プロジェクト/コード/04.グラフィック/CTexture.cs
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/System/Default/Graphics/9_background.png [new file with mode: 0644]
実行時フォルダ/System/DefaultMat/Graphics/7_score numbersGD.png [new file with mode: 0644]
実行時フォルダ/dll/FDK.dll
実行時フォルダ/readme.txt

index 4a43e80..84afc1f 100644 (file)
     <Compile Include="コード\ステージ\08.結果\GITADORA\CActResultRankGD.cs" />
     <Compile Include="コード\ステージ\08.結果\XG\CActResultParameterPanelXG.cs" />
     <Compile Include="コード\ステージ\08.結果\XG\CActResultRankXG.cs" />
+    <Compile Include="コード\ステージ\CActFIFOSpin.cs" />
+    <Compile Include="コード\ステージ\CActFIFOFade.cs" />
     <Compile Include="コード\ステージ\CActFIFOPuzzle.cs" />
     <Compile Include="コード\アイテム\CItemBase.cs" />
     <Compile Include="コード\アイテム\CItemInteger.cs" />
index 835d26d..6e3183b 100644 (file)
@@ -22,6 +22,7 @@ namespace DTXMania
                        base.list子Activities.Add( this.actFIfromSetup = new CActFIFOWhite() );
                        base.list子Activities.Add( this.actFI = new CActFIFOWhite() );
                        base.list子Activities.Add( this.actFO = new CActFIFOWhite() );
+                       base.list子Activities.Add( this.actFOpuzzle = new CActFIFOPuzzle() );
                }
 
 
@@ -102,6 +103,11 @@ namespace DTXMania
                                                this.actFIfromSetup.tフェードイン開始();
                                                base.eフェーズID = CStage.Eフェーズ.タイトル_起動画面からのフェードイン;
                                        }
+                                       else if ( CDTXMania.r直前のステージ == CDTXMania.stageコンフィグ && !CDTXMania.bXGRelease )
+                    {
+                                               this.actFOpuzzle.tフェードイン開始WAM();
+                                               base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
+                                       }
                                        else
                                        {
                                                this.actFI.tフェードイン開始();
@@ -177,7 +183,15 @@ namespace DTXMania
                                                {
                                                        return (int) E戻り値.EXIT;
                                                }
-                                               this.actFO.tフェードアウト開始();
+
+                                               if ( this.n現在のカーソル行 == (int) E戻り値.CONFIG - 1 && !CDTXMania.bXGRelease )
+                        {
+                                                       this.actFOpuzzle.tフェードアウト開始WAM();
+                        }
+                                               else
+                        {
+                                                       this.actFO.tフェードアウト開始();
+                        }
                                                base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
                                        }
                                        //                                      if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) Key.Space ) )
@@ -242,18 +256,43 @@ namespace DTXMania
                                switch ( eフェーズid )
                                {
                                        case CStage.Eフェーズ.共通_フェードイン:
-                                               if ( this.actFI.On進行描画() != 0 )
-                                               {
-                                                       CDTXMania.Skin.soundタイトル音.t再生する();
-                                                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
-                                               }
+                                               if ( CDTXMania.r直前のステージ.eステージID == Eステージ.コンフィグ )
+                        {
+                                                       if (this.actFOpuzzle.On進行描画() != 0)
+                                                       {
+                                                               CDTXMania.Skin.soundタイトル音.t再生する();
+                                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                                       }
+                        }
+                                               else
+                        {
+                                                       if ( this.actFI.On進行描画() != 0 )
+                                                       {
+                                                               CDTXMania.Skin.soundタイトル音.t再生する();
+                                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                                       }
+                        }
                                                break;
 
                                        case CStage.Eフェーズ.共通_フェードアウト:
-                                               if ( this.actFO.On進行描画() == 0 )
-                                               {
-                                                       break;
-                                               }
+                                               if (CDTXMania.bXGRelease)
+                        {
+                                                       if ( this.actFO.On進行描画() == 0 )
+                                                       {
+                                                               break;
+                                                       }
+                        }
+                                               else
+                        {
+                                                       if ( this.n現在のカーソル行 != (int)E戻り値.CONFIG - 1 && this.actFO.On進行描画() == 0 )
+                                                       {
+                                                               break;
+                                                       }
+                                                       else if ( this.n現在のカーソル行 == (int)E戻り値.CONFIG - 1 && this.actFOpuzzle.On進行描画() == 0 )
+                                                       {
+                                                               break;
+                                                       }
+                        }
                                                base.eフェーズID = CStage.Eフェーズ.共通_終了状態;
                                                switch ( this.n現在のカーソル行 )
                                                {
@@ -350,6 +389,7 @@ namespace DTXMania
                private CActFIFOWhite actFI;
                private CActFIFOWhite actFIfromSetup;
                private CActFIFOWhite actFO;
+               private CActFIFOPuzzle actFOpuzzle;
                private CCounter ctカーソルフラッシュ用;
                private STキー反復用カウンタ ctキー反復用;
                private CCounter ct下移動用;
index 4dbedb6..cc70813 100644 (file)
@@ -30,6 +30,7 @@ namespace DTXMania
                        //this.actFont = font = new CActDFPFont();
                        //base.list子Activities.Add( font );
                        base.list子Activities.Add( this.actFIFO = new CActFIFOWhite() );
+                       base.list子Activities.Add( this.actFIFOpuzzle = new CActFIFOPuzzle() );
                        base.list子Activities.Add( this.actKeyAssign = new CActConfigKeyAssign() );
                        base.list子Activities.Add( this.actオプションパネル = new CActオプションパネル() );
                        base.b活性化してない = true;
@@ -161,7 +162,22 @@ namespace DTXMania
                        if( base.b初めての進行描画 )
                        {
                                base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
-                               this.actFIFO.tフェードイン開始();
+                               if( CDTXMania.bXGRelease )
+                {
+                                       this.actFIFO.tフェードイン開始();
+                }
+                               else
+                {
+                                       if( CDTXMania.r直前のステージ.eステージID == Eステージ.タイトル )
+                    {
+                                               this.actFIFOpuzzle.tフェードイン開始WAM();
+                    }
+                                       else
+                    {
+                                               this.actFIFO.tフェードイン開始();
+                    }
+                }
+
                                base.b初めての進行描画 = false;
                        }
 
@@ -252,18 +268,60 @@ namespace DTXMania
                        switch( base.eフェーズID )
                        {
                                case CStage.Eフェーズ.共通_フェードイン:
-                                       if( this.actFIFO.On進行描画() != 0 )
-                                       {
-                                               CDTXMania.Skin.bgmコンフィグ画面.t再生する();
-                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                       if( CDTXMania.bXGRelease )
+                    {
+                                               if (this.actFIFO.On進行描画() != 0)
+                                               {
+                                                       CDTXMania.Skin.bgmコンフィグ画面.t再生する();
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                               }
                                        }
+                                       else
+                    {
+                                               if ( CDTXMania.r直前のステージ.eステージID == Eステージ.タイトル )
+                        {
+                                                       if( this.actFIFOpuzzle.On進行描画() != 0 )
+                                                       {
+                                                               CDTXMania.Skin.bgmコンフィグ画面.t再生する();
+                                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                                       }
+                        }
+                                               else
+                        {
+                                                       if( this.actFIFO.On進行描画() != 0 )
+                                                       {
+                                                               CDTXMania.Skin.bgmコンフィグ画面.t再生する();
+                                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
+                                                       }
+                        }
+                    }
                                        break;
 
                                case CStage.Eフェーズ.共通_フェードアウト:
-                                       if( this.actFIFO.On進行描画() == 0 )
-                                       {
-                                               break;
+                                       if( CDTXMania.bXGRelease )
+                    {
+                                               if (this.actFIFO.On進行描画() != 0)
+                                               {
+                                                       break;
+                                               }
                                        }
+                                       else
+                    {
+                                               if ( CDTXMania.r直前のステージ.eステージID == Eステージ.タイトル )
+                        {
+                                                       if( this.actFIFOpuzzle.On進行描画() == 0 )
+                                                       {
+                                                               break;
+                                                       }
+                        }
+                                               else
+                        {
+                                                       if( this.actFIFO.On進行描画() != 0 )
+                                                       {
+                                                               break;
+                                                       }
+                        }
+                    }
                                        return 1;
                        }
                        //---------------------
@@ -302,8 +360,16 @@ namespace DTXMania
                                        }
                                        else
                                        {
-                                               this.actFIFO.tフェードアウト開始();
-                                               base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
+                                               if ( CDTXMania.bXGRelease || CDTXMania.r直前のステージ.eステージID != Eステージ.タイトル )
+                        {
+                                                       this.actFIFO.tフェードアウト開始();
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
+                        }
+                                               else if ( CDTXMania.r直前のステージ.eステージID == Eステージ.タイトル )
+                        {
+                                                       this.actFIFOpuzzle.tフェードアウト開始WAM();
+                                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
+                                               }
                                        }
                                }
                                #region [ ← ]
@@ -337,7 +403,14 @@ namespace DTXMania
                                        if ( this.n現在のメニュー番号 == 4 )
                                        {
                                                CDTXMania.Skin.sound決定音.t再生する();
-                                               this.actFIFO.tフェードアウト開始();
+                                               if ( CDTXMania.bXGRelease || CDTXMania.r直前のステージ.eステージID != Eステージ.タイトル )
+                        {
+                                                       this.actFIFO.tフェードアウト開始();
+                                               }
+                                               else
+                        {
+                                                       this.actFIFOpuzzle.tフェードアウト開始WAM();
+                        }
                                                base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
                                        }
                                        #endregion
@@ -468,6 +541,7 @@ namespace DTXMania
                }
 
                private CActFIFOWhite actFIFO;
+               private CActFIFOPuzzle actFIFOpuzzle;
                private CActConfigKeyAssign actKeyAssign;
         private CActConfigList共通 actList;
                private CActオプションパネル actオプションパネル;
index ec9c091..bda8416 100644 (file)
@@ -74,7 +74,7 @@ namespace DTXMania
                                        }
                                }
                        }
-
+            return 0;
 
                        if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F3 ) )
                        {
@@ -214,9 +214,9 @@ namespace DTXMania
                 }
 
             }
-            this.counter.t進行();
+            //this.counter.t進行();
 
-            CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, this.counter.n現在の値.ToString() );
+            //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, this.counter.n現在の値.ToString() );
 
             if ( this.counter.n現在の値 != 100 )
                        {
index be18b21..7c8c37e 100644 (file)
@@ -121,11 +121,6 @@ namespace DTXMania
                 this.txジャケットパネル背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_JacketPanel Background.png" ) );
                 this.txジャケットパネル枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_Jacket sensor.png" ) );
 
-                this.tx水色 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile lightblue.png" ) );
-                this.tx黒 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile black.png" ) );
-                this.tx青色 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile blue.png" ) );
-                this.tx群青 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile darkblue.png" ) );
-
                 this.txクリアランプ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_Clearlamp.png" ) );
 
                 //this.tx曲名バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score.png" ), false );
@@ -229,11 +224,6 @@ namespace DTXMania
             CDTXMania.tテクスチャの解放( ref this.txジャケットパネル枠 );
             CDTXMania.tテクスチャの解放( ref this.tx選択中のアーティスト名テクスチャ );
 
-            CDTXMania.tテクスチャの解放( ref this.tx水色 );
-            CDTXMania.tテクスチャの解放( ref this.tx黒 );
-            CDTXMania.tテクスチャの解放( ref this.tx青色 );
-            CDTXMania.tテクスチャの解放( ref this.tx群青 );
-
             CDTXMania.tテクスチャの解放( ref this.txクリアランプ );
 
 
@@ -551,10 +541,10 @@ namespace DTXMania
                                //-----------------
                                #endregion
 
-                if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F8 ) )
-                {
-                    this.tTextureCacheClear();
-                }
+                //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F8 ) )
+                //{
+                //    this.tTextureCacheClear();
+                //}
                        }
 
 
@@ -921,12 +911,6 @@ namespace DTXMania
                        #region [ アイテム数の描画 #27648 ]
                        tアイテム数の描画();
             #endregion
-
-            if( CDTXMania.Input管理.Keyboard.bキーが押されている( (int)SlimDXKey.F7 ) )
-            {
-                this.tPuzzleFIFOTest();
-            }
-
             #region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ]
             int py;
                        double d = 0;
@@ -1003,78 +987,7 @@ namespace DTXMania
         //protected Dictionary<string, CTexture> dicThumbnail = new Dictionary<string, CTexture>();
         protected Dictionary<string, CTexture> dicMusicName = new Dictionary<string, CTexture>();
         #endregion
-
-        #region[ 図形描画用 ]
-        CTexture tx水色;
-        CTexture tx青色;
-        CTexture tx群青;
-        CTexture tx黒;
-        #endregion
-
         #region[ 描画サブ ]
-        private void tPuzzleFIFOTest()
-        {
-            if( this.tx水色 != null && this.tx黒 != null )
-            {
-                //14 群青(右)
-                this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                this.tx群青.t2D描画( CDTXMania.app.Device, 401, 206 );
-
-                //13 青(左)
-                this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                this.tx青色.t2D描画( CDTXMania.app.Device, 79, 206 );
-
-                //12 水色(左上)
-                this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                this.tx水色.t2D描画( CDTXMania.app.Device, 0, 48 );
-
-                //11 黒(左下)
-                this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                this.tx黒.t2D描画( CDTXMania.app.Device, -10, 422 );
-
-                //10 青(上)
-                this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 0 );
-                this.tx青色.t2D描画( CDTXMania.app.Device, 0, -224 );
-
-                //9 黒(下)
-                this.tx黒.fZ軸中心回転 = 0;
-                this.tx黒.t2D描画( CDTXMania.app.Device, 300, 609 );
-
-                //8 黒(右上)
-                this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                this.tx黒.t2D描画( CDTXMania.app.Device, 465, -23 );
-
-                //7 水色(右下)
-                this.tx水色.t2D描画( CDTXMania.app.Device, 646, 416 );
-
-                //6 黒(右)
-                this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                this.tx黒.t2D描画( CDTXMania.app.Device, 820, 206 );
-
-                //5 群青(左)
-                this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                this.tx群青.t2D描画( CDTXMania.app.Device, -223, 196 );
-
-                //4 青(右下)
-                this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                this.tx青色.t2D描画( CDTXMania.app.Device, 836, 422 );
-
-                //3 黒(左上)
-                this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                this.tx黒.t2D描画( CDTXMania.app.Device, -309, -23 );
-
-                //2 群青(右上)
-                this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                this.tx群青.t2D描画( CDTXMania.app.Device, 854, -24 );
-
-                //1 水色(左下)
-                this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                this.tx水色.t2D描画( CDTXMania.app.Device, -306, 416 );
-            }
-        }
-
-
-        //なんとなくメソッド化してみる
         protected void tSongNotFound()
         {
                        if( this.bIsEnumeratingSongs )
index 9bc2608..2a01176 100644 (file)
@@ -21,7 +21,11 @@ namespace DTXMania
             base.list子Activities.Add( this.act曲リスト = new CActSelect曲リストGITADORA() );
             base.list子Activities.Add( this.actShowCurrentPosition = new CActSelectShowCurrentPositionGITADORA() );
             base.list子Activities.Add( this.actSelectFO決定 = new CActSelectFO曲決定() );
-        }
+#if DEBUG
+                       base.list子Activities.Add( this.actFIFOPuzzle = new CActFIFOPuzzle() );
+                       base.list子Activities.Add( this.actFIFOFade = new CActFIFOFade() );
+#endif
+               }
         
         public override void OnManagedリソースの作成()
         {
@@ -469,13 +473,14 @@ namespace DTXMania
                         //        CDTXMania.Skin.sound変更音.t再生する();
                         //        CDTXMania.Skin.CreateShutterList();
                         //}
-                                               this.actFIFOPuzzle.On進行描画();
+                                               this.actFIFOFade.On進行描画();
+                        if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F8 ) )
+                        {
+                                                       //this.actFIFOFade.tフェードアウト開始WAM();
+                        }
                         if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F9 ) )
                         {
-                            //Debug.WriteLine( "[Test]シャッター画像のリスト生成&呼び出し" );
-                            //CDTXMania.Skin.sound変更音.t再生する();
-                            //CDTXMania.Skin.arGetShutterName();
-                                                       this.actFIFOPuzzle.tフェードアウト開始WAM();
+                                                       this.actFIFOFade.tフェードアウト開始WAM();
                         }
                     }
 #endif
@@ -493,5 +498,6 @@ namespace DTXMania
         protected CActSelectFO曲決定 actSelectFO決定;
 
                protected CActFIFOPuzzle actFIFOPuzzle;
-    }
+               protected CActFIFOFade actFIFOFade;
+       }
 }
index 6ab3be6..0af0005 100644 (file)
@@ -29,8 +29,8 @@ namespace DTXMania
         {
             if( !base.b活性化してない )
             {
-                string strSongName = "";
-                string strArtistName = "";
+                string strSongName;
+                string strArtistName;
 
                 if ( string.IsNullOrEmpty( CDTXMania.DTX.TITLE ) || ( !CDTXMania.bコンパクトモード && CDTXMania.ConfigIni.b曲名表示をdefのものにする ) )
                     strSongName = CDTXMania.stage選曲GITADORA.r確定された曲.strタイトル;
@@ -444,6 +444,9 @@ namespace DTXMania
                     this.t判定率文字描画( -435, 17,  nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor / (float)nowtotal) * 100.0f )  );
                     this.t判定率文字描画( -435, -13, nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss / (float)nowtotal) * 100.0f )  );
                     this.t判定率文字描画( -435, -43, nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.actCombo.n現在のコンボ数.Drums最高値 / (float)nowtotal) * 100.0f )  );
+
+                    // 達成率
+
                 }
 #endregion
 
@@ -499,66 +502,66 @@ namespace DTXMania
                                 }
                 #endregion
                 #region[ スコア表示 ]
-                                this.n表示スコア.Drums = (long)CDTXMania.stage演奏ドラム画面GITADORA.actScore.n現在表示中のスコア.Drums;
-                                if( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
-                                {
-                                    //string str = this.n表示スコア.Drums.ToString("0000000000");
-                                    //for (int i = 0; i < 10; i++)
-                                    //{
-                                    //    Rectangle rectangle;
-                                    //    char ch = str[i];
-                                    //    if (ch.Equals(' '))
-                                    //    {
-                                    //        rectangle = new Rectangle(0, 0, 32, 36);
-                                    //    }
-                                    //    else
-                                    //    {
-                                    //        int num3 = int.Parse(str.Substring(i, 1));
-                                    //        rectangle = new Rectangle((num3 * 36), 0, 36, 50);
-                                    //    }
-                                    //    if (this.txScore != null)
-                                    //    {
-                                    //        SlimDX.Matrix matScoreXG = SlimDX.Matrix.Identity;
-                                    //        matScoreXG *= SlimDX.Matrix.Translation(-1370 + (i * 30), 50 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, 0);
-                                    //        matScoreXG *= SlimDX.Matrix.Scaling(0.3f, 0.62f, 1f);
-                                    //        matScoreXG *= SlimDX.Matrix.RotationY(-0.8f);
-                                    //        this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
-                                    //    }
-                                    //}
-                                }
-                                else if( CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
-                                {
-                                    // 2019.1.12 kairera0467
-                                    // とりあえずXGスコア計算時のみ表示
-                                    if( this.txScore != null )
-                                    {
-                                        string str = string.Format("{0,7:######0}", this.n表示スコア.Drums);
-                                        for( int i = 0; i < 7; i++ )
-                                        {
-                                            Rectangle rectangle;
-                                            char ch = str[i];
-                                            if (ch.Equals(' '))
-                                            {
-                                                rectangle = new Rectangle(0, 0, 0, 0);
-                                            }
-                                            else
-                                            {
-                                                int num3 = int.Parse(str.Substring(i, 1));
-                                                rectangle = new Rectangle((num3 * 36), 0, 36, 50);
-                                            }
-                                            Matrix matScoreXG = Matrix.Identity;
-                                            matScoreXG *= Matrix.Scaling(0.6f, 1.1f, 1f);
-                                            matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
-                                            matScoreXG *= Matrix.Translation(-522 + (i * 14), 237 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, i * 14);
-                                            this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
-                                        }
-                                        Matrix matScoreTxt = Matrix.Identity;
-                                        matScoreTxt *= Matrix.Scaling(0.6f, 1.5f, 1f);
-                                        matScoreTxt *= Matrix.RotationY(C変換.DegreeToRadian(-40));
-                                        matScoreTxt *= Matrix.Translation(-494f, 282f, 0);
-                                        this.txScore.t3D描画(CDTXMania.app.Device, matScoreTxt, new Rectangle( 0, 50, 88, 28 ));
-                                    }
-                                }
+                this.n表示スコア.Drums = (long)CDTXMania.stage演奏ドラム画面GITADORA.actScore.n現在表示中のスコア.Drums;
+                if( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
+                {
+                    //string str = this.n表示スコア.Drums.ToString("0000000000");
+                    //for (int i = 0; i < 10; i++)
+                    //{
+                    //    Rectangle rectangle;
+                    //    char ch = str[i];
+                    //    if (ch.Equals(' '))
+                    //    {
+                    //        rectangle = new Rectangle(0, 0, 32, 36);
+                    //    }
+                    //    else
+                    //    {
+                    //        int num3 = int.Parse(str.Substring(i, 1));
+                    //        rectangle = new Rectangle((num3 * 36), 0, 36, 50);
+                    //    }
+                    //    if (this.txScore != null)
+                    //    {
+                    //        SlimDX.Matrix matScoreXG = SlimDX.Matrix.Identity;
+                    //        matScoreXG *= SlimDX.Matrix.Translation(-1370 + (i * 30), 50 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, 0);
+                    //        matScoreXG *= SlimDX.Matrix.Scaling(0.3f, 0.62f, 1f);
+                    //        matScoreXG *= SlimDX.Matrix.RotationY(-0.8f);
+                    //        this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
+                    //    }
+                    //}
+                }
+                else if( CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
+                {
+                    // 2019.1.12 kairera0467
+                    // とりあえずXGスコア計算時のみ表示
+                    if( this.txScore != null )
+                    {
+                        string str = string.Format("{0,7:######0}", this.n表示スコア.Drums);
+                        for( int i = 0; i < 7; i++ )
+                        {
+                            Rectangle rectangle;
+                            char ch = str[i];
+                            if (ch.Equals(' '))
+                            {
+                                rectangle = new Rectangle(0, 0, 0, 0);
+                            }
+                            else
+                            {
+                                int num3 = int.Parse(str.Substring(i, 1));
+                                rectangle = new Rectangle((num3 * 36), 0, 36, 50);
+                            }
+                            Matrix matScoreXG = Matrix.Identity;
+                            matScoreXG *= Matrix.Scaling(0.6f, 1.1f, 1f);
+                            matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
+                            matScoreXG *= Matrix.Translation(-522 + (i * 14), 237 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, i * 14);
+                            this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
+                        }
+                        Matrix matScoreTxt = Matrix.Identity;
+                        matScoreTxt *= Matrix.Scaling(0.6f, 1.5f, 1f);
+                        matScoreTxt *= Matrix.RotationY(C変換.DegreeToRadian(-40));
+                        matScoreTxt *= Matrix.Translation(-494f, 282f, 0);
+                        this.txScore.t3D描画(CDTXMania.app.Device, matScoreTxt, new Rectangle( 0, 50, 88, 28 ));
+                    }
+                }
                 #endregion
             }
             return 0;
@@ -568,7 +571,7 @@ namespace DTXMania
 
         // その他
 
-#region [ private ]
+        #region [ private ]
         //-----------------
         private Bitmap b4font;
         private Bitmap bNamePlate;
@@ -684,6 +687,34 @@ namespace DTXMania
                 this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
             }
         }
-#endregion
+
+        private void t達成率文字描画(float x, float y, string str)
+        {
+            // TODO: MAX表記
+            for (int i = 0; i < 7; i++)
+            {
+                Rectangle rectangle;
+                char ch = str[i];
+                if (ch.Equals(' '))
+                {
+                    rectangle = new Rectangle(0, 0, 0, 0);
+                }
+                else if (ch.Equals('.'))
+                {
+                    rectangle = new Rectangle(0, 0, 0, 0);
+                }
+                else
+                {
+                    int num3 = int.Parse(str.Substring(i, 1));
+                    rectangle = new Rectangle((num3 * 20), 0, 20, 26);
+                }
+                Matrix matScoreXG = Matrix.Identity;
+                matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f);
+                matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
+                matScoreXG *= Matrix.Translation(x + (i * 6), y, 28 + i * 6);
+                this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/DTXManiaプロジェクト/コード/ステージ/CActFIFOFade.cs b/DTXManiaプロジェクト/コード/ステージ/CActFIFOFade.cs
new file mode 100644 (file)
index 0000000..52f076d
--- /dev/null
@@ -0,0 +1,361 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Drawing;
+using SharpDX.Animation;
+using FDK;
+
+using SlimDXKey = SlimDX.DirectInput.Key;
+using SharpDX;
+
+namespace DTXMania
+{
+    // 未完成
+
+       internal class CActFIFOFade : CActivity
+       {
+               // メソッド
+        public void tフェードアウト開始WAM()
+        {
+            this.mode = EFIFOモード.フェードアウト;
+
+            #region[ Storyboardの構築 ]
+            float f速度倍率 = 0.3f;
+            double dコマ秒 = 0.016;
+            double 秒(double v) => ( v / f速度倍率 );
+            var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
+
+            C図形 図形 = this._図形[ 0 ];
+            図形._ストーリーボード = new Storyboard( animation.Manager );
+            図形.var画像Z軸回転度 = new Variable( animation.Manager, -135 );
+            図形.var画像中心位置X = new Variable( animation.Manager, -1280 );
+            図形.var画像中心位置Y = new Variable( animation.Manager, -180);
+
+            // 初期50度 -> 180度
+
+            using (var Z回転 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 20), 0))
+            using (var X移動1 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 20), 0))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像Z軸回転度, Z回転);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動1);
+            }
+            this._図形[0]._ストーリーボード?.Schedule( start );
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[ 1 ];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 568);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 662);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 226, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[1]._ストーリーボード?.Schedule(start);
+
+
+            // タイトルロゴ
+            start = basetime + 秒(dコマ秒 * 8);
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 0);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 268);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -240);
+
+            // 8コマ待機
+            // 不透明度変化 12コマ
+            // X座標移動 20コマ 268 -> 388 (70%/30%)
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 20), 388, 0.1, 0.9))
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 12), 255))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像中心位置X, X移動);
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(start);
+
+            #endregion
+        }
+
+        public void tフェードイン開始WAM()
+        {
+            this.mode = EFIFOモード.フェードイン;
+
+            #region[ Storyboardの構築 ]
+            float f速度倍率 = 1.0f;
+            double dコマ秒 = 0.016;
+            double 秒(double v) => ( v / f速度倍率 );
+            var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
+
+            // タイトルロゴ
+            start = basetime + 秒(dコマ秒 * 8);
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 255);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 390);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -220);
+
+            // 8コマ待機
+            // 不透明度変化 12コマ
+            // X座標移動 20コマ 268 -> 388 (70%/30%)
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 20), 388, 0.7, 0.3))
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 12), 0))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像中心位置X, X移動);
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(start);
+            #endregion
+        }
+
+        // CActivity 実装
+        public override void On活性化()
+        {
+            this._図形 = new C図形[2];
+            for (int i = 0; i < this._図形.Length; i++)
+            {
+                this._図形[i] = new C図形();
+            }
+            this._タイトルロゴ = new Cタイトルロゴ();
+
+            base.On活性化();
+        }
+
+        public override void On非活性化()
+               {
+                       if( !base.b活性化してない )
+                       {
+                foreach (C図形 s in this._図形)
+                {
+                    s?.Dispose();
+                }
+                this._図形 = null;
+
+                this._タイトルロゴ?.Dispose();
+                this._タイトルロゴ = null;
+
+                               base.On非活性化();
+                       }
+               }
+               public override void OnManagedリソースの作成()
+               {
+                       if( !base.b活性化してない )
+                       {
+                // テクスチャ生成
+                // 黒幕、マスクのテクスチャを生成する。
+                // マスク
+                int textureSizeW = SampleFramework.GameWindowSize.Width;
+                int textureSizeH = SampleFramework.GameWindowSize.Height;
+
+                Bitmap bmp = new Bitmap(textureSizeW, textureSizeH);
+                Graphics graphic = Graphics.FromImage(bmp);
+                graphic?.FillRectangle(Brushes.Black, 0, 0, textureSizeW, textureSizeH);
+                graphic?.Dispose();
+
+                this.txマスク = CDTXMania.tテクスチャの生成(bmp);
+                bmp?.Dispose();
+
+                // 黒幕
+                textureSizeW = (int)(SampleFramework.GameWindowSize.Width * 1.5f);
+                textureSizeH = (int)(SampleFramework.GameWindowSize.Height / 2.0f * 1.5f);
+
+                bmp = new Bitmap(textureSizeW, textureSizeH);
+                graphic = Graphics.FromImage(bmp);
+                graphic?.FillRectangle(Brushes.Black, 0, 0, textureSizeW, textureSizeH);
+                graphic?.Dispose();
+
+                this.tx黒幕 = CDTXMania.tテクスチャの生成(bmp);
+                bmp?.Dispose();
+
+                this.txロゴ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO logo.png" ) );
+                               base.OnManagedリソースの作成();
+                       }
+               }
+               public override int On進行描画()
+               {
+                       if( base.b活性化してない || ( this._図形[ 0 ]._ストーリーボード == null ) )
+                       {
+                               return 0;
+                       }
+            
+            if( this.tx黒幕 != null )
+            {
+#if DEBUG
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F3 ) )
+                           {
+                    ret--;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F4 ) )
+                           {
+                    ret++;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F5 ) )
+                           {
+                    ret = ret - 10;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F6 ) )
+                           {
+                    ret = ret + 10;
+                           }
+
+                if( this.b座標デバッグモード )
+                {
+                    this.tx黒幕.n透明度 = 128;
+                }
+#endif
+
+                if ( this.mode == EFIFOモード.フェードアウト )
+                {
+                    Matrix mat;
+
+                    // 黒幕(右)
+                    //mat = Matrix.Identity;
+                    //mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    //mat *= Matrix.RotationZ((float)this._図形[0].var画像Z軸回転度.Value);
+                    //mat *= Matrix.Translation((float)this._図形[1].var画像中心位置X.Value, (float)this._図形[1].var画像中心位置Y.Value, 0);
+                    //this.tx黒幕.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 黒幕(左)
+                    // 上辺中央座標
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ(C変換.DegreeToRadian((float)this._図形[0].var画像Z軸回転度.Value));
+                    mat *= Matrix.Translation((float)this._図形[0].var画像中心位置X.Value, (float)this._図形[0].var画像中心位置Y.Value, 0);
+                    //mat *= Matrix.RotationZ(C変換.DegreeToRadian(0));
+                    //mat *= Matrix.Translation(0, 0, 0);
+                    //this.tx黒幕.t3D描画(CDTXMania.app.Device, mat, new Vector3(0, -this.tx黒幕.szテクスチャサイズ.Height / 2f, 0));
+                    this.tx黒幕.t3D描画(CDTXMania.app.Device, mat);
+
+                    // マスク
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ(0);
+                    mat *= Matrix.Translation(0, 0, 0);
+                    this.txマスク.n透明度 = 0;
+                    //this.txマスク.t3D描画(CDTXMania.app.Device, mat);
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
+                }
+                else
+                {
+                    Matrix mat;
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
+                }
+#if DEBUG
+                if( this.b座標デバッグモード )
+                    CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, $"ret:{ret.ToString()}");
+#endif
+            }
+
+            if ( this._タイトルロゴ._ストーリーボード.Status != StoryboardStatus.Ready )
+            {
+                return 0;
+            }
+
+                       return 1;
+               }
+
+
+               // その他
+               #region [ private ]
+               //-----------------
+               private EFIFOモード mode;
+        private CTexture txロゴ;
+        private CTexture tx水色;
+        private CTexture tx青色;
+        private CTexture tx群青;
+
+        private CTexture txマスク;
+        private CTexture tx黒幕;
+#if DEBUG
+        private int ret;
+        private readonly bool b座標デバッグモード = true;
+#endif
+        //-----------------
+        #endregion
+
+        #region[ 図形描画用 ]
+        protected C図形[] _図形 = new C図形[ 2 ];
+        protected Cマスク _マスク;
+        protected Cタイトルロゴ _タイトルロゴ;
+        protected class C図形 : IDisposable
+        {
+            public Variable var表示;
+            public Variable var画像中心位置X;
+            public Variable var画像中心位置Y;
+            public Variable var画像Z軸回転度;
+            public Storyboard _ストーリーボード;
+            
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var表示?.Dispose();
+                this.var表示 = null;
+
+                this.var画像中心位置X?.Dispose();
+                this.var画像中心位置X = null;
+
+                this.var画像中心位置Y?.Dispose();
+                this.var画像中心位置Y = null;
+
+                this.var画像Z軸回転度?.Dispose();
+                this.var画像Z軸回転度 = null;
+            }
+        }
+
+        protected class Cマスク : IDisposable
+        {
+            public Variable var画像不透明度;
+            public Storyboard _ストーリーボード;
+
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var画像不透明度?.Dispose();
+                this.var画像不透明度 = null;
+            }
+        }
+
+        protected class Cタイトルロゴ : IDisposable
+        {
+            public Variable var画像中心位置X;
+            public Variable var画像中心位置Y;
+            public Variable var画像不透明度;
+            public Storyboard _ストーリーボード;
+
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var画像中心位置X?.Dispose();
+                this.var画像中心位置X = null;
+
+                this.var画像中心位置Y?.Dispose();
+                this.var画像中心位置Y = null;
+
+                this.var画像不透明度?.Dispose();
+                this.var画像不透明度 = null;
+            }
+        }
+        #endregion
+    }
+}
index 5e0ea17..f5a8ce5 100644 (file)
@@ -6,28 +6,13 @@ using SharpDX.Animation;
 using FDK;
 
 using SlimDXKey = SlimDX.DirectInput.Key;
+using SharpDX;
 
 namespace DTXMania
 {
        internal class CActFIFOPuzzle : CActivity
        {
                // メソッド
-
-               public void tフェードアウト開始()
-               {
-                       this.mode = EFIFOモード.フェードアウト;
-                       this.counter = new CCounter( 0, 100, 5, CDTXMania.Timer );
-               }
-               public void tフェードイン開始()
-               {
-                       this.mode = EFIFOモード.フェードイン;
-                       this.counter = new CCounter( 0, 100, 5, CDTXMania.Timer );
-               }
-               public void tフェードイン完了()         // #25406 2011.6.9 yyagi
-               {
-                       this.counter.n現在の値 = this.counter.n終了値;
-               }
-
         public void tフェードアウト開始WAM()
         {
             this.mode = EFIFOモード.フェードアウト;
@@ -37,26 +22,563 @@ namespace DTXMania
             double dコマ秒 = 0.016;
             double 秒(double v) => ( v / f速度倍率 );
             var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
 
             C図形 図形 = this._図形[ 0 ];
+            図形._ストーリーボード = new Storyboard( animation.Manager );
+            図形.var画像Z軸回転度 = new Variable( animation.Manager, C変換.DegreeToRadian( -45 ) );
+            図形.var画像中心位置X = new Variable( animation.Manager, -584 );
+            図形.var画像中心位置Y = new Variable( animation.Manager, -645 );
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -219, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[0]._ストーリーボード?.Schedule( start );
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[ 1 ];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 568);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 662);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 226, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[1]._ストーリーボード?.Schedule(start);
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[2];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -531);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 682);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 270, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[2]._ストーリーボード?.Schedule(start);
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[3];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 500);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -728);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -286, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[3]._ストーリーボード?.Schedule(start);
 
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[4];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, -848);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
 
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -498, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[4]._ストーリーボード?.Schedule(start);
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[5];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, 804);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 544, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[5]._ストーリーボード?.Schedule(start);
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[6];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 1004);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -226);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 364, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[6]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 2);
+            図形 = this._図形[7];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 568);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 662);
+
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 10)))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 230, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 2)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 2)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 172, 0.1, 0.9))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 234, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[7]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 18);
+            図形 = this._図形[8];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, 0);
+            図形.var画像中心位置X = new Variable(animation.Manager, 0);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -534);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 9), -413, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[8]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 20);
+            図形 = this._図形[9];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, 0);
+            図形.var画像中心位置X = new Variable(animation.Manager, 0);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 524);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), 419, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[9]._ストーリーボード?.Schedule(start);
+
+            start = basetime;
+            図形 = this._図形[10];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -584);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -645);
+
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 10)))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -219, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 12)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 12)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), -398, 0.1, 0.9))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), -115, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[10]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 4);
+            図形 = this._図形[11];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -531);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 682);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -531, 0.1, 0.9))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 270, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 8)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 8)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -369, 0.1, 0.9))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 71, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[11]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 8);
+            図形 = this._図形[12];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, -848);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -498, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 5)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -197, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[12]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 10);
+            図形 = this._図形[13];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, 804);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 544, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 3)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 13), 125, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[13]._ストーリーボード?.Schedule(start);
+
+            // タイトルロゴ
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 0);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 390);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -220);
+
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 38), 255))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(basetime);
 
             #endregion
         }
 
+        public void tフェードイン開始WAM()
+        {
+            this.mode = EFIFOモード.フェードイン;
+
+            #region[ Storyboardの構築 ]
+            float f速度倍率 = 1.0f;
+            double dコマ秒 = 0.016;
+            double 秒(double v) => ( v / f速度倍率 );
+            var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
+
+            C図形 図形 = this._図形[13];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, 125);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 9), 544, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 6)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 804, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[13]._ストーリーボード?.Schedule(start);
+
+
+            start = basetime + 秒(dコマ秒 * 2);
+            図形 = this._図形[12];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, -197);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -498, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 5)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -848, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[12]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 4);
+            図形 = this._図形[11];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -369);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 71);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -531, 0.9, 0.1))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 270, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 7)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 7)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -531, 0.9, 0.1))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 720, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[11]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 6);
+            図形 = this._図形[10];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -398);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -115);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), -584, 0.9, 0.1))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), -219, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 14)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 14)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 10)))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -645, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[10]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 8);
+            図形 = this._図形[9];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, 0);
+            図形.var画像中心位置X = new Variable(animation.Manager, 0);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 419);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 8), 524, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[9]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 10);
+            図形 = this._図形[8];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, 0);
+            図形.var画像中心位置X = new Variable(animation.Manager, 0);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -413);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 9), -534, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[8]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 12);
+            図形 = this._図形[7];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 172);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 234);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 568, 0.9, 0.1))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 230, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 2)))
+            using (var Y移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 2)))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            using (var X移動 = animation.TrasitionLibrary.Constant(秒(dコマ秒 * 11)))
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 662, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[7]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 14);
+            図形 = this._図形[6];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 364);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -226);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 1004, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[6]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 16);
+            図形 = this._図形[5];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, 544);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), 804, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[5]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 18);
+            図形 = this._図形[4];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(90));
+            図形.var画像中心位置X = new Variable(animation.Manager, -498);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 0);
+
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -848, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動);
+            }
+            this._図形[4]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 20);
+            図形 = this._図形[3];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 500);
+            図形.var画像中心位置Y = new Variable(animation.Manager, -286);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 11), -728, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[3]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 22);
+            図形 = this._図形[2];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, -531);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 270);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 720, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[2]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 24);
+            図形 = this._図形[1];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 568);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 226);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 662, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[1]._ストーリーボード?.Schedule(start);
+
+            start = basetime + 秒(dコマ秒 * 26);
+            図形 = this._図形[ 0 ];
+            図形._ストーリーボード = new Storyboard( animation.Manager );
+            図形.var画像Z軸回転度 = new Variable( animation.Manager, C変換.DegreeToRadian( -45 ) );
+            図形.var画像中心位置X = new Variable( animation.Manager, -584 );
+            図形.var画像中心位置Y = new Variable( animation.Manager, -219 );
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), -645, 0.9, 0.1))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[0]._ストーリーボード?.Schedule( start );
+
+
+            // タイトルロゴ
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 255);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 390);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -220);
+
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 38), 0))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(basetime);
+            #endregion
+        }
+
         // CActivity 実装
+        public override void On活性化()
+        {
+            this._図形 = new C図形[14];
+            for (int i = 0; i < this._図形.Length; i++)
+            {
+                this._図形[i] = new C図形();
+            }
+            this._タイトルロゴ = new Cタイトルロゴ();
+
+            base.On活性化();
+        }
 
         public override void On非活性化()
                {
                        if( !base.b活性化してない )
                        {
-                               CDTXMania.tテクスチャの解放( ref this.tx白タイル64x64 );
-
                 CDTXMania.tテクスチャの解放( ref this.tx水色 );
                 CDTXMania.tテクスチャの解放( ref this.tx黒 );
                 CDTXMania.tテクスチャの解放( ref this.tx青色 );
                 CDTXMania.tテクスチャの解放( ref this.tx群青 );
+
+                CDTXMania.tテクスチャの解放( ref this.txロゴ );
+
+                foreach (C図形 s in this._図形)
+                {
+                    s?.Dispose();
+                }
+                this._図形 = null;
+
+                this._タイトルロゴ?.Dispose();
+                this._タイトルロゴ = null;
+
                                base.On非活性化();
                        }
                }
@@ -64,207 +586,302 @@ namespace DTXMania
                {
                        if( !base.b活性化してない )
                        {
-                               this.tx白タイル64x64 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\Tile white 64x64.png" ), false );
-
                 this.tx水色 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile lightblue.png" ) );
                 this.tx黒 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile black.png" ) );
                 this.tx青色 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile blue.png" ) );
                 this.tx群青 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO Tile darkblue.png" ) );
+
+                this.txロゴ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO logo.png" ) );
                                base.OnManagedリソースの作成();
                        }
                }
                public override int On進行描画()
                {
-                       if( base.b活性化してない || ( this.counter == null ) )
+                       if( base.b活性化してない || ( this._図形[ 0 ]._ストーリーボード == null ) )
                        {
                                return 0;
                        }
-                       //this.counter.t進行();
-            
-                       if (this.tx白タイル64x64 != null)
-                       {
-                               this.tx白タイル64x64.n透明度 = ( this.mode == EFIFOモード.フェードイン ) ? ( ( ( 100 - this.counter.n現在の値 ) * 0xff ) / 100 ) : ( ( this.counter.n現在の値 * 0xff ) / 100 );
-                               for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++)          // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size
-                               {
-                                       for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size
-                                       {
-                                               //this.tx白タイル64x64.t2D描画( CDTXMania.app.Device, i * 64, j * 64 );
-                                       }
-                               }
-                       }
-
-
-                       if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F3 ) )
-                       {
-                this.counter.n現在の値--;
-                       }
-                       if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F4 ) )
-                       {
-                this.counter.n現在の値++;
-                       }
-                       if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F5 ) )
-                       {
-                this.counter.n現在の値 = 0;
-                       }
-                       if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F6 ) )
-                       {
-                this.counter.n現在の値 = 50;
-                       }
             
             if( this.tx水色 != null && this.tx群青 != null && this.tx青色 != null && this.tx黒 != null )
             {
-                //横方向(90):304、斜め方向(45 or -45):427
-                if( this.mode == EFIFOモード.フェードアウト )
+#if DEBUG
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F3 ) )
+                           {
+                    ret--;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F4 ) )
+                           {
+                    ret++;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F5 ) )
+                           {
+                    ret = ret - 10;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F6 ) )
+                           {
+                    ret = ret + 10;
+                           }
+
+                if( this.b座標デバッグモード )
                 {
-                    //14 群青(右)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 88 ? ( 703 - ( ( ( this.counter.n現在の値 - 68 ) * 302 ) / 20 ) ) : 401, 206 ); //最終:401
-
-                    //13 青(左)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 86 ? ( -223 + ( ( ( this.counter.n現在の値 - 66 ) * 302 ) / 20 ) ) : 79, 206 ); //最終:79
-
-                    //12 水色(左上)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, 0, this.counter.n現在の値 <= 84 ? ( -256 + ( ( ( this.counter.n現在の値 - 64 ) * 304 ) / 20 ) ) : 48 ); //最終:48
-
-                    //11 黒(左下)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, -10, this.counter.n現在の値 <= 80 ? ( 726 - ( ( ( this.counter.n現在の値 - 60 ) * 304 ) / 20 ) ) : 422 ); //最終:422
-
-                    //10 青(上)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 0 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, 0, this.counter.n現在の値 <= 69 ? ( -528 + ( ( ( this.counter.n現在の値 - 49 ) * 304 ) / 20 ) ) : -224 ); //最終:-224
-
-                    //9 黒(下)
-                    this.tx黒.fZ軸中心回転 = 0;
-                    this.tx黒.t2D描画( CDTXMania.app.Device, 300, this.counter.n現在の値 <= 68 ? ( 913 - ( ( ( this.counter.n現在の値 - 48 ) * 304 ) / 20 ) ) : 609 ); //最終:609
-
-                    //8 黒(右上)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 66 ? ( 892 - ( ( ( this.counter.n現在の値 - 46 ) * 427 ) / 20 ) ) : 465, -23 ); //最終:465
-
-                    //7 水色(右下)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, 646, this.counter.n現在の値 <= 61 ? ( 843 - ( ( ( this.counter.n現在の値 - 41 ) * 427 ) / 20 ) ) : 416 ); //最終:416
-
-                    //6 黒(右)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 55 ? ( 1124 - ( ( ( this.counter.n現在の値 - 35 ) * 304 ) / 20 ) ) : 820, 206 ); //1079 最終:820
-
-                    //5 群青(左)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 48 ? ( -527 + ( ( ( this.counter.n現在の値 - 28 ) * 304 ) / 20 ) ) : -223, 196 ); //-527 最終:-223
-
-                    //4 青(右下)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, 836, this.counter.n現在の値 <= 41 ? ( 866 - ( ( ( this.counter.n現在の値 - 21 ) * 427 ) / 20 ) ) : 422 ); //最終座標:422
-
-                    //3 黒(左上)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, -309, this.counter.n現在の値 <= 34 ? ( -457 + ( ( ( this.counter.n現在の値 - 14 ) * 427 ) / 20 ) ) : -23 ); //最終座標:-23
-
-                    //2 群青(右上)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, 854, this.counter.n現在の値 <= 27 ? ( -457 + ( ( (this.counter.n現在の値 - 7 ) * 427 ) / 20 ) ) : -24 ); //-457 最終座標:-24
-                
-                    //1 水色(左下)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, -306, this.counter.n現在の値 <= 20 ? ( 843 - ( ( this.counter.n現在の値 * 427 ) / 20 ) ) : 416 ); //427 最終座標:416
+                    this.tx水色.n透明度 = 128;
+                    this.tx群青.n透明度 = 128;
+                    this.tx青色.n透明度 = 128;
+                    this.tx黒.n透明度 = 128;
+                }
+#endif
+
+                if ( this.mode == EFIFOモード.フェードアウト )
+                {
+                    Matrix mat;
+
+                    // 14 群青(右)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[13].var画像中心位置X.Value, (float)this._図形[13].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 13 青(左)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[12].var画像中心位置X.Value, (float)this._図形[12].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 12 水色(左上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[11].var画像中心位置X.Value, (float)this._図形[11].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画( CDTXMania.app.Device, mat);
+
+                    // 11 黒(左下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[10].var画像中心位置X.Value, (float)this._図形[10].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画( CDTXMania.app.Device, mat);
+
+                    // 10 青(上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._図形[9].var画像中心位置X.Value, (float)this._図形[9].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画( CDTXMania.app.Device, mat);
+
+                    // 9 黒(下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._図形[8].var画像中心位置X.Value, (float)this._図形[8].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 8 黒(右上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[7].var画像中心位置X.Value, (float)this._図形[7].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 7 水色(右下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[6].var画像中心位置X.Value, (float)this._図形[6].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 6 黒(右)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[5].var画像中心位置X.Value, (float)this._図形[5].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 5 群青(左)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[4].var画像中心位置X.Value, (float)this._図形[4].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 4 青(右下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[3].var画像中心位置X.Value, (float)this._図形[3].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 3 黒(左上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[2].var画像中心位置X.Value, (float)this._図形[2].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 2 群青(右上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[1].var画像中心位置X.Value, (float)this._図形[1].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 1 水色(左下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[0].var画像中心位置X.Value, (float)this._図形[0].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画( CDTXMania.app.Device, mat );
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
                 }
                 else
                 {
-                    //14 群青(右)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 88 ? ( 703 - ( ( ( this.counter.n現在の値 - 68 ) * 302 ) / 20 ) ) : 401, 206 ); //最終:401
-
-                    //13 青(左)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 86 ? ( -223 + ( ( ( this.counter.n現在の値 - 66 ) * 302 ) / 20 ) ) : 79, 206 ); //最終:79
-
-                    //12 水色(左上)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, 0, this.counter.n現在の値 <= 84 ? ( -256 + ( ( ( this.counter.n現在の値 - 64 ) * 304 ) / 20 ) ) : 48 ); //最終:48
-
-                    //11 黒(左下)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, -10, this.counter.n現在の値 <= 80 ? ( 726 - ( ( ( this.counter.n現在の値 - 60 ) * 304 ) / 20 ) ) : 422 ); //最終:422
-
-                    //10 青(上)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 0 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, 0, this.counter.n現在の値 <= 69 ? ( -528 + ( ( ( this.counter.n現在の値 - 49 ) * 304 ) / 20 ) ) : -224 ); //最終:-224
-
-                    //9 黒(下)
-                    this.tx黒.fZ軸中心回転 = 0;
-                    this.tx黒.t2D描画( CDTXMania.app.Device, 300, this.counter.n現在の値 <= 68 ? ( 913 - ( ( ( this.counter.n現在の値 - 48 ) * 304 ) / 20 ) ) : 609 ); //最終:609
-
-                    //8 黒(右上)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 66 ? ( 892 - ( ( ( this.counter.n現在の値 - 46 ) * 427 ) / 20 ) ) : 465, -23 ); //最終:465
-
-                    //7 水色(右下)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, 646, this.counter.n現在の値 <= 61 ? ( 843 - ( ( ( this.counter.n現在の値 - 41 ) * 427 ) / 20 ) ) : 416 ); //最終:416
-
-                    //6 黒(右)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 55 ? ( 1124 - ( ( ( this.counter.n現在の値 - 35 ) * 304 ) / 20 ) ) : 820, 206 ); //1079 最終:820
-
-                    //5 群青(左)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( 90 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, this.counter.n現在の値 <= 48 ? ( -527 + ( ( ( this.counter.n現在の値 - 28 ) * 304 ) / 20 ) ) : -223, 196 ); //-527 最終:-223
-
-                    //4 青(右下)
-                    this.tx青色.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx青色.t2D描画( CDTXMania.app.Device, 836, this.counter.n現在の値 <= 41 ? ( 866 - ( ( ( this.counter.n現在の値 - 21 ) * 427 ) / 20 ) ) : 422 ); //最終座標:422
-
-                    //3 黒(左上)
-                    this.tx黒.fZ軸中心回転 = C変換.DegreeToRadian( 45 );
-                    this.tx黒.t2D描画( CDTXMania.app.Device, -309, this.counter.n現在の値 <= 34 ? ( -457 + ( ( ( this.counter.n現在の値 - 14 ) * 427 ) / 20 ) ) : -23 ); //最終座標:-23
-
-                    //2 群青(右上)
-                    this.tx群青.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx群青.t2D描画( CDTXMania.app.Device, 854, this.counter.n現在の値 <= 27 ? ( -457 + ( ( (this.counter.n現在の値 - 7 ) * 427 ) / 20 ) ) : -24 ); //-457 最終座標:-24
-                
-                    //1 水色(左下)
-                    this.tx水色.fZ軸中心回転 = C変換.DegreeToRadian( -45 );
-                    this.tx水色.t2D描画( CDTXMania.app.Device, -306, this.counter.n現在の値 <= 20 ? ( 843 - ( ( this.counter.n現在の値 * 427 ) / 20 ) ) : 416 ); //427 最終座標:416
+                    Matrix mat;
+
+                    // 14 群青(右)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[13].var画像中心位置X.Value, (float)this._図形[13].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 13 青(左)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[12].var画像中心位置X.Value, (float)this._図形[12].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 12 水色(左上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[11].var画像中心位置X.Value, (float)this._図形[11].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 11 黒(左下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[10].var画像中心位置X.Value, (float)this._図形[10].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 10 青(上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._図形[9].var画像中心位置X.Value, (float)this._図形[9].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 9 黒(下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._図形[8].var画像中心位置X.Value, (float)this._図形[8].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 8 黒(右上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[7].var画像中心位置X.Value, (float)this._図形[7].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 7 水色(右下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[6].var画像中心位置X.Value, (float)this._図形[6].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 6 黒(右)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[5].var画像中心位置X.Value, (float)this._図形[5].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 5 群青(左)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(90));
+                    mat *= Matrix.Translation((float)this._図形[4].var画像中心位置X.Value, (float)this._図形[4].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 4 青(右下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[3].var画像中心位置X.Value, (float)this._図形[3].var画像中心位置Y.Value, 0);
+                    this.tx青色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 3 黒(左上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(45));
+                    mat *= Matrix.Translation((float)this._図形[2].var画像中心位置X.Value, (float)this._図形[2].var画像中心位置Y.Value, 0);
+                    this.tx黒.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 2 群青(右上)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[1].var画像中心位置X.Value, (float)this._図形[1].var画像中心位置Y.Value, 0);
+                    this.tx群青.t3D描画(CDTXMania.app.Device, mat);
+
+                    // 1 水色(左下)
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ((float)C変換.DegreeToRadian(-45));
+                    mat *= Matrix.Translation((float)this._図形[0].var画像中心位置X.Value, (float)this._図形[0].var画像中心位置Y.Value, 0);
+                    this.tx水色.t3D描画(CDTXMania.app.Device, mat);
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
                 }
-
+#if DEBUG
+                if( this.b座標デバッグモード )
+                    CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, $"ret:{ret.ToString()}");
+#endif
             }
-            this.counter.t進行();
 
-            CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, this.counter.n現在の値.ToString() );
+            if ( this._タイトルロゴ._ストーリーボード.Status != StoryboardStatus.Ready )
+            {
+                return 0;
+            }
 
-            if ( this.counter.n現在の値 != 100 )
-                       {
-                               return 0;
-                       }
                        return 1;
                }
 
 
                // その他
-
                #region [ private ]
                //-----------------
-               private CCounter counter;
                private EFIFOモード mode;
-               private CTexture tx白タイル64x64;
         private CTexture txロゴ;
+        private CTexture tx水色;
+        private CTexture tx青色;
+        private CTexture tx群青;
+        private CTexture tx黒;
+#if DEBUG
+        private int ret;
+        private readonly bool b座標デバッグモード = false;
+#endif
         //-----------------
         #endregion
 
         #region[ 図形描画用 ]
-        CTexture tx水色;
-        CTexture tx青色;
-        CTexture tx群青;
-        CTexture tx黒;
-
         protected C図形[] _図形 = new C図形[ 14 ];
-
+        protected Cタイトルロゴ _タイトルロゴ;
         protected class C図形 : IDisposable
         {
+            public Variable var表示;
             public Variable var画像中心位置X;
             public Variable var画像中心位置Y;
             public Variable var画像Z軸回転度;
@@ -275,6 +892,9 @@ namespace DTXMania
                 this._ストーリーボード?.Abandon();
                 this._ストーリーボード = null;
 
+                this.var表示?.Dispose();
+                this.var表示 = null;
+
                 this.var画像中心位置X?.Dispose();
                 this.var画像中心位置X = null;
 
diff --git a/DTXManiaプロジェクト/コード/ステージ/CActFIFOSpin.cs b/DTXManiaプロジェクト/コード/ステージ/CActFIFOSpin.cs
new file mode 100644 (file)
index 0000000..f18e3cf
--- /dev/null
@@ -0,0 +1,357 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Drawing;
+using SharpDX.Animation;
+using FDK;
+
+using SlimDXKey = SlimDX.DirectInput.Key;
+using SharpDX;
+
+namespace DTXMania
+{
+    // 未完成
+    // - 黒幕
+    // 長辺:1280px 短辺(一番短い時):70~72px
+    //   - 短辺は最大で360px
+    // 
+    // - 背景画像
+    // 黒幕が画面を覆い尽くしたタイミングで出現or消滅する制御があるのでStoryBoardが要る
+
+    internal class CActFIFOSpin : CActivity
+       {
+               // メソッド
+        public void tフェードアウト開始WAM()
+        {
+            this.mode = EFIFOモード.フェードアウト;
+
+            #region[ Storyboardの構築 ]
+            float f速度倍率 = 0.3f;
+            double dコマ秒 = 0.016;
+            double 秒(double v) => ( v / f速度倍率 );
+            var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
+
+            C図形 図形 = this._図形[ 0 ];
+            図形._ストーリーボード = new Storyboard( animation.Manager );
+            図形.var画像Z軸回転度 = new Variable( animation.Manager, -135 );
+            図形.var画像中心位置X = new Variable( animation.Manager, -1280 );
+            図形.var画像中心位置Y = new Variable( animation.Manager, -180);
+
+            // 初期50度 -> 180度
+
+            using (var Z回転 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 20), 0))
+            using (var X移動1 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 20), 0))
+            //using (var X移動2 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 16), 0))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像Z軸回転度, Z回転);
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動1);
+                //図形._ストーリーボード.AddTransition(図形.var画像中心位置X, X移動2);
+            }
+            this._図形[0]._ストーリーボード?.Schedule( start );
+
+            start += 秒(dコマ秒 * 2);
+            図形 = this._図形[ 1 ];
+            図形._ストーリーボード = new Storyboard(animation.Manager);
+            図形.var画像Z軸回転度 = new Variable(animation.Manager, C変換.DegreeToRadian(-45));
+            図形.var画像中心位置X = new Variable(animation.Manager, 568);
+            図形.var画像中心位置Y = new Variable(animation.Manager, 662);
+
+            using (var Y移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 10), 226, 0.1, 0.9))
+            {
+                図形._ストーリーボード.AddTransition(図形.var画像中心位置Y, Y移動);
+            }
+            this._図形[1]._ストーリーボード?.Schedule(start);
+
+
+            // タイトルロゴ
+            start = basetime + 秒(dコマ秒 * 8);
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 0);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 268);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -240);
+
+            // 8コマ待機
+            // 不透明度変化 12コマ
+            // X座標移動 20コマ 268 -> 388 (70%/30%)
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 20), 388, 0.1, 0.9))
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 12), 255))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像中心位置X, X移動);
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(start);
+
+            #endregion
+        }
+
+        public void tフェードイン開始WAM()
+        {
+            this.mode = EFIFOモード.フェードイン;
+
+            #region[ Storyboardの構築 ]
+            float f速度倍率 = 1.0f;
+            double dコマ秒 = 0.016;
+            double 秒(double v) => ( v / f速度倍率 );
+            var animation = CDTXMania.AnimationManager;
+            var basetime = animation.Timer.Time;
+            var start = basetime;
+
+            // タイトルロゴ
+            start = basetime + 秒(dコマ秒 * 8);
+            _タイトルロゴ._ストーリーボード = new Storyboard(animation.Manager);
+            _タイトルロゴ.var画像不透明度 = new Variable(animation.Manager, 255);
+            _タイトルロゴ.var画像中心位置X = new Variable(animation.Manager, 390);
+            _タイトルロゴ.var画像中心位置Y = new Variable(animation.Manager, -220);
+
+            // 8コマ待機
+            // 不透明度変化 12コマ
+            // X座標移動 20コマ 268 -> 388 (70%/30%)
+            using (var X移動 = animation.TrasitionLibrary.AccelerateDecelerate(秒(dコマ秒 * 20), 388, 0.7, 0.3))
+            using (var 不透明度 = animation.TrasitionLibrary.Linear(秒(dコマ秒 * 12), 0))
+            {
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像中心位置X, X移動);
+                _タイトルロゴ._ストーリーボード.AddTransition(_タイトルロゴ.var画像不透明度, 不透明度);
+            }
+            _タイトルロゴ._ストーリーボード?.Schedule(start);
+            #endregion
+        }
+
+        // CActivity 実装
+        public override void On活性化()
+        {
+            this._図形 = new C図形[2];
+            for (int i = 0; i < this._図形.Length; i++)
+            {
+                this._図形[i] = new C図形();
+            }
+            this._タイトルロゴ = new Cタイトルロゴ();
+
+            base.On活性化();
+        }
+
+        public override void On非活性化()
+               {
+                       if( !base.b活性化してない )
+                       {
+                foreach (C図形 s in this._図形)
+                {
+                    s?.Dispose();
+                }
+                this._図形 = null;
+
+                this._タイトルロゴ?.Dispose();
+                this._タイトルロゴ = null;
+
+                               base.On非活性化();
+                       }
+               }
+               public override void OnManagedリソースの作成()
+               {
+                       if( !base.b活性化してない )
+                       {
+                // テクスチャ生成
+                // 黒幕、マスクのテクスチャを生成する。
+                int textureSizeW = SampleFramework.GameWindowSize.Width;
+                int textureSizeH = 70;
+
+                // 黒幕
+                Bitmap bmp = new Bitmap(textureSizeW, textureSizeH);
+                Graphics graphic = Graphics.FromImage(bmp);
+                graphic?.FillRectangle(Brushes.Black, 0, 0, textureSizeW, textureSizeH);
+                graphic?.Dispose();
+
+                this.tx黒幕 = CDTXMania.tテクスチャの生成(bmp);
+                bmp?.Dispose();
+
+                this.tx背景画像 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO bg.png" ) );
+
+                this.txロゴ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\FIFO logo.png" ) );
+                               base.OnManagedリソースの作成();
+                       }
+               }
+               public override int On進行描画()
+               {
+                       if( base.b活性化してない || ( this._図形[ 0 ]._ストーリーボード == null ) )
+                       {
+                               return 0;
+                       }
+            
+            if( this.tx黒幕 != null )
+            {
+#if DEBUG
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F3 ) )
+                           {
+                    ret--;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F4 ) )
+                           {
+                    ret++;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F5 ) )
+                           {
+                    ret = ret - 10;
+                           }
+                           if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.F6 ) )
+                           {
+                    ret = ret + 10;
+                           }
+
+                if( this.b座標デバッグモード )
+                {
+                    this.tx黒幕.n透明度 = 128;
+                }
+#endif
+
+                if ( this.mode == EFIFOモード.フェードアウト )
+                {
+                    Matrix mat;
+
+                    // 黒幕(右)
+                    //mat = Matrix.Identity;
+                    //mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    //mat *= Matrix.RotationZ((float)this._図形[0].var画像Z軸回転度.Value);
+                    //mat *= Matrix.Translation((float)this._図形[1].var画像中心位置X.Value, (float)this._図形[1].var画像中心位置Y.Value, 0);
+                    //this.tx黒幕.t3D描画( CDTXMania.app.Device, mat );
+
+                    // 黒幕(左)
+                    // 上辺中央座標
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.RotationZ(C変換.DegreeToRadian((float)this._図形[0].var画像Z軸回転度.Value));
+                    mat *= Matrix.Translation((float)this._図形[0].var画像中心位置X.Value, (float)this._図形[0].var画像中心位置Y.Value, 0);
+                    //mat *= Matrix.RotationZ(C変換.DegreeToRadian(0));
+                    //mat *= Matrix.Translation(0, 0, 0);
+                    //this.tx黒幕.t3D描画(CDTXMania.app.Device, mat, new Vector3(0, -this.tx黒幕.szテクスチャサイズ.Height / 2f, 0));
+                    this.tx黒幕.t3D描画(CDTXMania.app.Device, mat);
+
+                    //mat = Matrix.Identity;
+                    //mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    //mat *= Matrix.RotationZ(C変換.DegreeToRadian(50));
+                    //mat *= Matrix.Translation(ret, (float)this._図形[0].var画像中心位置Y.Value, 0);
+                    //this.tx黒幕.t3D描画( CDTXMania.app.Device, mat );
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
+                }
+                else
+                {
+                    Matrix mat;
+
+                    // タイトルロゴ
+                    mat = Matrix.Identity;
+                    mat *= Matrix.Scaling(1.0f, 1.0f, 1.0f);
+                    mat *= Matrix.Translation((float)this._タイトルロゴ.var画像中心位置X.Value, (float)this._タイトルロゴ.var画像中心位置Y.Value, 0);
+                    this.txロゴ.n透明度 = (int)this._タイトルロゴ.var画像不透明度.Value;
+                    this.txロゴ.t3D描画(CDTXMania.app.Device, mat);
+                }
+#if DEBUG
+                if( this.b座標デバッグモード )
+                    CDTXMania.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, $"ret:{ret.ToString()}");
+#endif
+            }
+
+            if ( this._タイトルロゴ._ストーリーボード.Status != StoryboardStatus.Ready )
+            {
+                return 0;
+            }
+
+                       return 1;
+               }
+
+
+               // その他
+               #region [ private ]
+               //-----------------
+               private EFIFOモード mode;
+        private CTexture txロゴ;
+        private CTexture tx背景画像;
+        private CTexture tx黒幕;
+#if DEBUG
+        private int ret;
+        private readonly bool b座標デバッグモード = true;
+#endif
+        //-----------------
+        #endregion
+
+        #region[ 図形描画用 ]
+        protected C図形[] _図形 = new C図形[ 2 ];
+        protected C背景 _背景;
+        protected Cタイトルロゴ _タイトルロゴ;
+        protected class C図形 : IDisposable
+        {
+            public Variable var表示;
+            public Variable var画像中心位置X;
+            public Variable var画像中心位置Y;
+            public Variable var画像Z軸回転度;
+            public Variable var画像X拡大率;
+            public Storyboard _ストーリーボード;
+            
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var表示?.Dispose();
+                this.var表示 = null;
+
+                this.var画像中心位置X?.Dispose();
+                this.var画像中心位置X = null;
+
+                this.var画像中心位置Y?.Dispose();
+                this.var画像中心位置Y = null;
+
+                this.var画像Z軸回転度?.Dispose();
+                this.var画像Z軸回転度 = null;
+
+                this.var画像X拡大率?.Dispose();
+                this.var画像X拡大率 = null;
+            }
+        }
+
+        protected class C背景 : IDisposable
+        {
+            public Variable var画像拡大率;
+            public Storyboard _ストーリーボード;
+
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var画像拡大率?.Dispose();
+                this.var画像拡大率 = null;
+            }
+        }
+
+        protected class Cタイトルロゴ : IDisposable
+        {
+            public Variable var画像中心位置X;
+            public Variable var画像中心位置Y;
+            public Variable var画像不透明度;
+            public Storyboard _ストーリーボード;
+
+            public void Dispose()
+            {
+                this._ストーリーボード?.Abandon();
+                this._ストーリーボード = null;
+
+                this.var画像中心位置X?.Dispose();
+                this.var画像中心位置X = null;
+
+                this.var画像中心位置Y?.Dispose();
+                this.var画像中心位置Y = null;
+
+                this.var画像不透明度?.Dispose();
+                this.var画像不透明度 = null;
+            }
+        }
+        #endregion
+    }
+}
index 51eee11..b7228b0 100644 (file)
@@ -677,9 +677,68 @@ namespace FDK
                        device.VertexFormat = PositionColoredTexturedVertex.Format;
                        device.DrawUserPrimitives( PrimitiveType.TriangleStrip, 2, this.cvPositionColoredVertexies );
                }
+               // 2022.02.16 kairera0467 基準位置指定
+               public void t3D描画(Device device, Matrix mat, Vector3 center)
+               {
+                       this.t3D描画(device, mat, center, this.rc全画像);
+               }
+               public void t3D描画(Device device, Matrix mat, Vector3 center, Rectangle rc画像内の描画領域)
+               {
+                       if (this.texture == null)
+                               return;
+
+                       float x = (((float)rc画像内の描画領域.Width) / 2f) + center.X;
+                       float y = (((float)rc画像内の描画領域.Height) / 2f) + center.Y;
+                       float z = center.Z;
+                       float f左U値 = ((float)rc画像内の描画領域.Left) / ((float)this.szテクスチャサイズ.Width);
+                       float f右U値 = ((float)rc画像内の描画領域.Right) / ((float)this.szテクスチャサイズ.Width);
+                       float f上V値 = ((float)rc画像内の描画領域.Top) / ((float)this.szテクスチャサイズ.Height);
+                       float f下V値 = ((float)rc画像内の描画領域.Bottom) / ((float)this.szテクスチャサイズ.Height);
+                       this.color4.Alpha = ((float)this._透明度) / 255f;
+                       int color = this.color4.ToRgba();
 
+                       if (this.cvPositionColoredVertexies == null)
+                               this.cvPositionColoredVertexies = new PositionColoredTexturedVertex[4];
+
+                       // #27122 2012.1.13 from: 以下、マネージドオブジェクト(=ガベージ)の量産を抑えるため、new は使わず、メンバに値を1つずつ直接上書きする。
+
+                       this.cvPositionColoredVertexies[0].Position.X = -x;
+                       this.cvPositionColoredVertexies[0].Position.Y = y;
+                       this.cvPositionColoredVertexies[0].Position.Z = z;
+                       this.cvPositionColoredVertexies[0].Color = color;
+                       this.cvPositionColoredVertexies[0].TextureCoordinates.X = f左U値;
+                       this.cvPositionColoredVertexies[0].TextureCoordinates.Y = f上V値;
+
+                       this.cvPositionColoredVertexies[1].Position.X = x;
+                       this.cvPositionColoredVertexies[1].Position.Y = y;
+                       this.cvPositionColoredVertexies[1].Position.Z = z;
+                       this.cvPositionColoredVertexies[1].Color = color;
+                       this.cvPositionColoredVertexies[1].TextureCoordinates.X = f右U値;
+                       this.cvPositionColoredVertexies[1].TextureCoordinates.Y = f上V値;
+
+                       this.cvPositionColoredVertexies[2].Position.X = -x;
+                       this.cvPositionColoredVertexies[2].Position.Y = -y;
+                       this.cvPositionColoredVertexies[2].Position.Z = z;
+                       this.cvPositionColoredVertexies[2].Color = color;
+                       this.cvPositionColoredVertexies[2].TextureCoordinates.X = f左U値;
+                       this.cvPositionColoredVertexies[2].TextureCoordinates.Y = f下V値;
+
+                       this.cvPositionColoredVertexies[3].Position.X = x;
+                       this.cvPositionColoredVertexies[3].Position.Y = -y;
+                       this.cvPositionColoredVertexies[3].Position.Z = z;
+                       this.cvPositionColoredVertexies[3].Color = color;
+                       this.cvPositionColoredVertexies[3].TextureCoordinates.X = f右U値;
+                       this.cvPositionColoredVertexies[3].TextureCoordinates.Y = f下V値;
+
+                       this.tレンダリングステートの設定(device);
+
+                       device.SetTransform(TransformState.World, mat);
+                       device.SetTexture(0, this.texture);
+                       device.VertexFormat = PositionColoredTexturedVertex.Format;
+                       device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, this.cvPositionColoredVertexies);
+               }
 
-        public void t3D上下反転描画( Device device, Matrix mat )
+               public void t3D上下反転描画( Device device, Matrix mat )
         {
             this.t3D上下反転描画( device, mat, this.rc全画像 );
         }
index 6245691..8d0c43e 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
diff --git a/実行時フォルダ/System/Default/Graphics/9_background.png b/実行時フォルダ/System/Default/Graphics/9_background.png
new file mode 100644 (file)
index 0000000..365ba94
Binary files /dev/null and b/実行時フォルダ/System/Default/Graphics/9_background.png differ
diff --git a/実行時フォルダ/System/DefaultMat/Graphics/7_score numbersGD.png b/実行時フォルダ/System/DefaultMat/Graphics/7_score numbersGD.png
new file mode 100644 (file)
index 0000000..bfbe080
Binary files /dev/null and b/実行時フォルダ/System/DefaultMat/Graphics/7_score numbersGD.png differ
index 22c69de..b8444ab 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ
index 51838de..c284892 100644 (file)
@@ -17,7 +17,7 @@ DTXManiaXG(Ver.K)
 \81E\83X\83L\83\93\82ð\8aÜ\82ß\82Ä\91å\82«\82È\95Ï\8dX\82ª\8bN\82±\82Á\82Ä\82¢\82é\82½\82ß\81AVer3.61\82Ü\82Å\82Ì\8aÂ\8b«\82É\8fã\8f\91\82«\82·\82é\82Ì\82Í\91å\95Ï\8aë\8c¯\82Å\82·\81B
 
 \81\9bVer3.61\82Ü\82Å\82Æ\82Ì\91å\82«\82È\95Ï\8dX\93_
-\81E64bit\91Î\89\9e
+\81E64bit\91Î\89\9e(32bit\8aÂ\8b«\82Å\82Ì\8bN\93®\82à\89Â\94\\82Å\82·)
 \81E\83X\83N\83\8d\81[\83\8b\8aî\8f\80\91¬\93x\82Ì\95Ï\8dX
 \81E\83t\83\8b\83X\83N\83\8a\81[\83\93\8e\9e\82Ì\8f\88\97\9d\95Ï\8dX
 \81E\83t\83H\83\8b\83_\8d\\90¬\82Ì\95Ï\8dX
@@ -43,6 +43,7 @@ DTXManiaXG(Ver.K)
 \81E[\8b¤\92Ê]KONMAI\8e®\83\\83t\83g\83o\81[\83W\83\87\83\93\95\\8e¦\82ð\8dÌ\97p\81B\83A\83b\83v\83f\81[\83g\82ª\93K\97p\82³\82ê\82Ä\82¢\82é\82©\82Ì\8am\94F\81A\83r\83\8b\83h\90Ý\92è(DEBUG\94Å\82©\94Û\82©)\82Ì\8am\94F\82ª\97e\88Õ\82É\82Å\82«\82é\82æ\82¤\82É\82È\82Á\82½\81B(\8eå\82É\8dì\8eÒ\82ª\93¾\82·\82é)
 \81E[\8b¤\92Ê]\8eÀ\8ds\8e\9e\83t\83H\83\8b\83_\82ðDTXMania\82ÆDTXCreater\82Å\93\9d\88ê\81B4.00\82©\82ç\82ÍDTXMania\82ÆDTXCreater\82Ì\93¯\88ê\83\8a\83\8a\81[\83X\82É\82È\82è\82Ü\82·\81B
 \81E[\8b¤\92Ê]\83\8c\81[\83\93\83t\83\89\83b\83V\83\85\82Ì\83e\83N\83X\83`\83\83\8d\\91¢\82ð\8c©\92¼\82·\82±\82Æ\82Å\89æ\91\9c\96\87\90\94\82Ì\91å\95\9d\8dí\8c¸\82É\90¬\8c÷\81B
+\81E[\8b¤\92Ê]\83A\83j\83\81\81[\83V\83\87\83\93\95â\8f\95\83V\83X\83e\83\80\82ÉWindowsAnimationManager\82ð\93±\93ü\81B(SharpDX.Animation)
 \81E[XG]\88ê\95\94\89æ\91\9c\82ð\91å\95\9d\8dì\82è\92¼\82µ\81B
 \81E[XG]\8bÈ\8c\88\92è\82©\82ç\89\89\91t\8aJ\8en\82Ü\82Å\82Ì\97¬\82ê\82ð\95Ï\8dX\81B(\8bÈ\8c\88\92è\89\89\8fo\81¨\8bÈ\93Ç\82Ý\8d\9e\82Ý\81¨\89\89\91t\8aJ\8en)
 \81E[XG]\8aÈ\88Õ\93I\82É\91I\8bÈ\89æ\96Ê\82Å\8bÈ\95Ê\83X\83L\83\8b\82ð\95\\8e¦\82Å\82«\82é\82æ\82¤\82É\82µ\82½\81B