OSDN Git Service

Merge branch 'feature/37178_プロジェクトとソリューションファイルの英語化' into develop
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CAct演奏DrumsチップファイアD.cs
diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs
deleted file mode 100644 (file)
index b3bc292..0000000
+++ /dev/null
@@ -1,452 +0,0 @@
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Diagnostics;\r
-using SharpDX;\r
-using FDK;\r
-\r
-namespace DTXMania\r
-{\r
-       internal class CAct演奏DrumsチップファイアD : CActivity\r
-       {\r
-               public CAct演奏DrumsチップファイアD()\r
-               {\r
-               }\r
-\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               struct ST火花\r
-               {\r
-                       public int nLane;\r
-                       public bool b使用中;\r
-                       public CCounter ct進行;\r
-                       public float f回転単位;\r
-                       public float f回転方向;\r
-                       public float fサイズ;\r
-               }\r
-\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               struct ST細波\r
-               {\r
-                       public int nLane;\r
-                       public bool b使用中;\r
-                       public CCounter ct進行;\r
-                       public float f角度X;\r
-                       public float f角度Y;\r
-                       public float f半径;\r
-                       public int n進行速度ms;\r
-               }\r
-\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               struct ST青い星\r
-               {\r
-                       public int nLane;\r
-                       public bool b使用中;\r
-                       public CCounter ct進行;\r
-                       public int n前回のValue;\r
-                       public float fX;\r
-                       public float fY;\r
-                       public float f加速度X;\r
-                       public float f加速度Y;\r
-                       public float f加速度の加速度X;\r
-                       public float f加速度の加速度Y;\r
-                       public float f重力加速度;\r
-                       public float f半径;\r
-               }\r
-\r
-               [StructLayout(LayoutKind.Sequential)]\r
-               struct ST大波\r
-               {\r
-                       public int nLane;\r
-                       public bool b使用中;\r
-                       public CCounter ct進行;\r
-                       public float f角度X;\r
-                       public float f角度Y;\r
-                       public float f半径;\r
-                       public int n進行速度ms;\r
-                       public float f回転単位;\r
-                       public float f回転方向;\r
-               }\r
-\r
-               const int BIGWAVE_MAX = 20;\r
-               bool b細波Balance;\r
-               bool b大波Balance;\r
-               const int FIRE_MAX = 8 * 8;\r
-               readonly float[] fY波の最小仰角 = new float[] { -130f, -126f, -120f, -118f, -110f, -108f, -103f, -97f };\r
-               readonly float[] fY波の最大仰角 = new float[] { 70f, 72f, 77f, 84f, 89f, 91f, 99f, 107f };\r
-               private int nレーンの中央X座標(int l)\r
-               {\r
-                       return CDTXMania.Instance.ConfigIni.GetLaneX( (ELane)l ) + CDTXMania.Instance.ConfigIni.GetLaneW( (ELane)l ) / 2;\r
-               }\r
-               const int STAR_MAX = 0x100;\r
-               ST火花[] st火花 = new ST火花[FIRE_MAX];\r
-               ST大波[] st大波 = new ST大波[BIGWAVE_MAX];\r
-               ST細波[] st細波 = new ST細波[BIGWAVE_MAX];\r
-               ST青い星[] st青い星 = new ST青い星[STAR_MAX];\r
-               CTexture tx火花;\r
-               CTexture tx細波;\r
-               CTexture tx青い星;\r
-               CTexture tx大波;\r
-               int posY;\r
-\r
-               public void Start(ELane lane, bool bフィルイン = false, bool b大波 = false, bool b細波 = false)\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある.Drums)\r
-                       {\r
-                               if (this.tx火花 != null)\r
-                               {\r
-                                       for (int j = 0; j < FIRE_MAX; j++)\r
-                                       {\r
-                                               // yyagi 負荷軽減のつもり・・・だが、あまり効果なさげ\r
-                                               if (this.st火花[j].b使用中 && this.st火花[j].nLane == (int)lane)\r
-                                               {\r
-                                                       this.st火花[j].ct進行.t停止();\r
-                                                       this.st火花[j].b使用中 = false;\r
-                                               }\r
-                                       }\r
-                                       float n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
-                                       for (int i = 0; i < 8; i++)\r
-                                       {\r
-                                               for (int j = 0; j < FIRE_MAX; j++)\r
-                                               {\r
-                                                       if (!this.st火花[j].b使用中)\r
-                                                       {\r
-                                                               this.st火花[j].b使用中 = true;\r
-                                                               this.st火花[j].nLane = (int)lane;\r
-                                                               this.st火花[j].ct進行 = new CCounter(0, 70, 3, CDTXMania.Instance.Timer);\r
-                                                               this.st火花[j].f回転単位 = C変換.DegreeToRadian((float)(n回転初期値 + (i * 90f)));\r
-                                                               this.st火花[j].f回転方向 = (i < 4) ? 1f : -2f;\r
-                                                               this.st火花[j].fサイズ = (i < 4) ? 1f : 0.5f;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (bフィルイン && (this.tx青い星 != null))\r
-                               {\r
-                                       for (int i = 0; i < 0x10; i++)\r
-                                       {\r
-                                               for (int j = 0; j < STAR_MAX; j++)\r
-                                               {\r
-                                                       if (!this.st青い星[j].b使用中)\r
-                                                       {\r
-                                                               this.st青い星[j].b使用中 = true;\r
-                                                               int n回転初期値 = CDTXMania.Instance.Random.Next(360);\r
-                                                               double num7 = 0.9 + (((double)CDTXMania.Instance.Random.Next(40)) / 100.0);\r
-                                                               this.st青い星[j].nLane = (int)lane;\r
-                                                               this.st青い星[j].ct進行 = new CCounter(0, 100, 7, CDTXMania.Instance.Timer);\r
-                                                               this.st青い星[j].fX = nレーンの中央X座標( (int)lane );       // this.nレーンの中央X座標[ (int) lane ];\r
-                                                               this.st青い星[j].fY = posY;\r
-                                                               this.st青い星[j].f加速度X = (float)(num7 * Math.Cos((Math.PI * 2 * n回転初期値) / 360.0));\r
-                                                               this.st青い星[j].f加速度Y = (float)(num7 * (Math.Sin((Math.PI * 2 * n回転初期値) / 360.0) - 0.2));\r
-                                                               this.st青い星[j].f加速度の加速度X = 0.995f;\r
-                                                               this.st青い星[j].f加速度の加速度Y = 0.995f;\r
-                                                               this.st青い星[j].f重力加速度 = 0.00355f;\r
-                                                               this.st青い星[j].f半径 = (float)(0.5 + (((double)CDTXMania.Instance.Random.Next(30)) / 100.0));\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (b大波 && (this.tx大波 != null))\r
-                               {\r
-                                       for (int i = 0; i < 4; i++)\r
-                                       {\r
-                                               for (int j = 0; j < BIGWAVE_MAX; j++)\r
-                                               {\r
-                                                       if (!this.st大波[j].b使用中)\r
-                                                       {\r
-                                                               this.st大波[j].b使用中 = true;\r
-                                                               this.st大波[j].nLane = (int)lane;\r
-                                                               this.st大波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
-                                                               this.st大波[j].n進行速度ms = 10;\r
-                                                               this.st大波[j].ct進行 = new CCounter(0, 100, this.st大波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
-                                                               this.st大波[j].ct進行.n現在の値 = i * 10;\r
-                                                               this.st大波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
-                                                               this.st大波[j].f角度Y = C変換.DegreeToRadian(this.b大波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
-                                                               this.st大波[j].f回転単位 = C変換.DegreeToRadian((float)0f);\r
-                                                               this.st大波[j].f回転方向 = 1f;\r
-                                                               this.b大波Balance = !this.b大波Balance;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (b細波 && (this.tx細波 != null))\r
-                               {\r
-                                       for (int i = 0; i < 1; i++)\r
-                                       {\r
-                                               for (int j = 0; j < BIGWAVE_MAX; j++)\r
-                                               {\r
-                                                       if (!this.st細波[j].b使用中)\r
-                                                       {\r
-                                                               this.st細波[j].b使用中 = true;\r
-                                                               this.st細波[j].nLane = (int)lane;\r
-                                                               this.st細波[j].f半径 = ((float)((20 - CDTXMania.Instance.Random.Next(40)) + 100)) / 100f;\r
-                                                               this.st細波[j].n進行速度ms = 8;\r
-                                                               this.st細波[j].ct進行 = new CCounter(0, 100, this.st細波[j].n進行速度ms, CDTXMania.Instance.Timer);\r
-                                                               this.st細波[j].ct進行.n現在の値 = 0;\r
-                                                               this.st細波[j].f角度X = C変換.DegreeToRadian((float)((((double)(CDTXMania.Instance.Random.Next(100) * 50)) / 100.0) + 30.0));\r
-                                                               this.st細波[j].f角度Y = C変換.DegreeToRadian(this.b細波Balance ? (this.fY波の最小仰角[(int)lane] + CDTXMania.Instance.Random.Next(30)) : (this.fY波の最大仰角[(int)lane] - CDTXMania.Instance.Random.Next(30)));\r
-                                                               this.b細波Balance = !this.b細波Balance;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public override void On活性化()\r
-               {\r
-                       if (b活性化してない)\r
-                       {\r
-                               for (int i = 0; i < FIRE_MAX; i++)\r
-                               {\r
-                                       this.st火花[i] = new ST火花();\r
-                                       this.st火花[i].b使用中 = false;\r
-                                       this.st火花[i].ct進行 = new CCounter();\r
-                               }\r
-                               for (int i = 0; i < STAR_MAX; i++)\r
-                               {\r
-                                       this.st青い星[i] = new ST青い星();\r
-                                       this.st青い星[i].b使用中 = false;\r
-                                       this.st青い星[i].ct進行 = new CCounter();\r
-                               }\r
-                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
-                               {\r
-                                       this.st大波[i] = new ST大波();\r
-                                       this.st大波[i].b使用中 = false;\r
-                                       this.st大波[i].ct進行 = new CCounter();\r
-                                       this.st細波[i] = new ST細波();\r
-                                       this.st細波[i].b使用中 = false;\r
-                                       this.st細波[i].ct進行 = new CCounter();\r
-                               }\r
-\r
-                               posY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Drums, false, CDTXMania.Instance.ConfigIni.bReverse.Drums );\r
-                               int offsety = CDTXMania.Instance.Coordinates.ImgJudgeLine.H / 2;\r
-                               posY += offsety;\r
-\r
-                               base.On活性化();\r
-                       }\r
-               }\r
-\r
-               public override void On非活性化()\r
-               {\r
-                       if (b活性化してる)\r
-                       {\r
-                               for (int i = 0; i < FIRE_MAX; i++)\r
-                               {\r
-                                       this.st火花[i].ct進行 = null;\r
-                               }\r
-                               for (int i = 0; i < STAR_MAX; i++)\r
-                               {\r
-                                       this.st青い星[i].ct進行 = null;\r
-                               }\r
-                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
-                               {\r
-                                       this.st大波[i].ct進行 = null;\r
-                                       this.st細波[i].ct進行 = null;\r
-                               }\r
-                               base.On非活性化();\r
-                       }\r
-               }\r
-\r
-               public override void OnManagedリソースの作成()\r
-               {\r
-                       if (b活性化してる)\r
-                       {\r
-                               this.tx火花 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chip fire.png"));\r
-                               if (this.tx火花 != null)\r
-                               {\r
-                                       this.tx火花.b加算合成 = true;\r
-                               }\r
-                               this.tx青い星 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chip star.png"));\r
-                               if (this.tx青い星 != null)\r
-                               {\r
-                                       this.tx青い星.b加算合成 = true;\r
-                               }\r
-                               this.tx大波 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chip wave.png"));\r
-                               if (this.tx大波 != null)\r
-                               {\r
-                                       this.tx大波.b加算合成 = true;\r
-                               }\r
-                               this.tx細波 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chip wave2.png"));\r
-                               if (this.tx細波 != null)\r
-                               {\r
-                                       this.tx細波.b加算合成 = true;\r
-                               }\r
-                               base.OnManagedリソースの作成();\r
-                       }\r
-               }\r
-\r
-               public override void OnManagedリソースの解放()\r
-               {\r
-                       if (b活性化してる)\r
-                       {\r
-                               TextureFactory.tテクスチャの解放(ref this.tx火花);\r
-                               TextureFactory.tテクスチャの解放(ref this.tx青い星);\r
-                               TextureFactory.tテクスチャの解放(ref this.tx大波);\r
-                               TextureFactory.tテクスチャの解放(ref this.tx細波);\r
-                               base.OnManagedリソースの解放();\r
-                       }\r
-               }\r
-\r
-               public override int On進行描画()\r
-               {\r
-                       if (b活性化してる && CDTXMania.Instance.ConfigIni.bDrums有効 && CDTXMania.Instance.DTX.bチップがある.Drums)\r
-                       {\r
-                               for (int i = 0; i < FIRE_MAX; i++)\r
-                               {\r
-                                       if (this.st火花[i].b使用中)\r
-                                       {\r
-                                               this.st火花[i].ct進行.t進行();\r
-                                               if (this.st火花[i].ct進行.b終了値に達した)\r
-                                               {\r
-                                                       this.st火花[i].ct進行.t停止();\r
-                                                       this.st火花[i].b使用中 = false;\r
-                                               }\r
-                                               Matrix identity = Matrix.Identity;\r
-                                               float num2 = ((float)this.st火花[i].ct進行.n現在の値) / 70f;\r
-                                               float num3 = this.st火花[i].f回転単位 + (this.st火花[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num2)));\r
-                                               float num4 = ((float)(0.2 + (0.8 * Math.Cos((((double)this.st火花[i].ct進行.n現在の値) / 50.0) * Math.PI / 2)))) * this.st火花[i].fサイズ;\r
-                                               identity *= Matrix.Scaling(0.2f + num4, 0.2f + this.st火花[i].fサイズ, 1f);\r
-                                               identity *= Matrix.RotationZ(num3 + ((float)Math.PI / 2));\r
-                                               float num5 = ((float)(0.8 * Math.Sin(num2 * Math.PI / 2))) * this.st火花[i].fサイズ;\r
-\r
-                                               float dx = (nレーンの中央X座標(this.st火花[i].nLane) + (((float)Math.Cos((double)num3)) * num5) - SampleFramework.GameWindowSize.Width / 2);\r
-                                               float dy = -(posY + (((float)Math.Sin((double)num3)) * num5) - SampleFramework.GameWindowSize.Height / 2f);\r
-                                               identity *= Matrix.Translation(dx, dy, 0f);\r
-                                               if (this.tx火花 != null)\r
-                                               {\r
-                                                       this.tx火花.t3D描画(CDTXMania.Instance.Device, identity);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               for (int i = 0; i < STAR_MAX; i++)\r
-                               {\r
-                                       if (this.st青い星[i].b使用中)\r
-                                       {\r
-                                               this.st青い星[i].n前回のValue = this.st青い星[i].ct進行.n現在の値;\r
-                                               this.st青い星[i].ct進行.t進行();\r
-                                               if (this.st青い星[i].ct進行.b終了値に達した)\r
-                                               {\r
-                                                       this.st青い星[i].ct進行.t停止();\r
-                                                       this.st青い星[i].b使用中 = false;\r
-                                               }\r
-                                               for (int n = this.st青い星[i].n前回のValue; n < this.st青い星[i].ct進行.n現在の値; n++)\r
-                                               {\r
-                                                       this.st青い星[i].fX += this.st青い星[i].f加速度X;\r
-                                                       this.st青い星[i].fY -= this.st青い星[i].f加速度Y;\r
-                                                       this.st青い星[i].f加速度X *= this.st青い星[i].f加速度の加速度X;\r
-                                                       this.st青い星[i].f加速度Y *= this.st青い星[i].f加速度の加速度Y;\r
-                                                       this.st青い星[i].f加速度Y -= this.st青い星[i].f重力加速度;\r
-                                               }\r
-                                               Matrix mat = Matrix.Identity;\r
-                                               float x = (float)(this.st青い星[i].f半径 * Math.Cos((Math.PI / 2 * this.st青い星[i].ct進行.n現在の値) / 100.0));\r
-                                               mat *= Matrix.Scaling(x, x, 1f);\r
-                                               mat *= Matrix.Translation(\r
-                                                       this.st青い星[i].fX - SampleFramework.GameWindowSize.Width / 2,\r
-                                                       -(this.st青い星[i].fY - SampleFramework.GameWindowSize.Height / 2),\r
-                                                       0f\r
-                                               );\r
-                                               if (this.tx青い星 != null)\r
-                                               {\r
-                                                       this.tx青い星.t3D描画(CDTXMania.Instance.Device, mat);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
-                               {\r
-                                       if (this.st大波[i].b使用中)\r
-                                       {\r
-                                               this.st大波[i].ct進行.t進行();\r
-                                               if (this.st大波[i].ct進行.b終了値に達した)\r
-                                               {\r
-                                                       this.st大波[i].ct進行.t停止();\r
-                                                       this.st大波[i].b使用中 = false;\r
-                                               }\r
-                                               if (this.st大波[i].ct進行.n現在の値 >= 0)\r
-                                               {\r
-                                                       Matrix matrix3 = Matrix.Identity;\r
-                                                       float num10 = ((float)this.st大波[i].ct進行.n現在の値) / 100f;\r
-                                                       float angle = this.st大波[i].f回転単位 + (this.st大波[i].f回転方向 * C変換.DegreeToRadian((float)(60f * num10)));\r
-                                                       float num12 = 1f;\r
-                                                       if (num10 < 0.4f)\r
-                                                       {\r
-                                                               num12 = 2.5f * num10;\r
-                                                       }\r
-                                                       else if (num10 < 0.8f)\r
-                                                       {\r
-                                                               num12 = (float)(1.0 + (10.1 * (1.0 - Math.Cos((Math.PI / 2 * (num10 - 0.4)) * 2.5))));\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               num12 = 11.1f + (12.5f * (num10 - 0.8f));\r
-                                                       }\r
-                                                       int num13 = 0xff;\r
-                                                       if (num10 < 0.75f)\r
-                                                       {\r
-                                                               num13 = 0x37;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               num13 = (int)((55f * (1f - num10)) / 0.25f);\r
-                                                       }\r
-                                                       matrix3 *= Matrix.Scaling(num12 * this.st大波[i].f半径, num12 * this.st大波[i].f半径, 1f);\r
-                                                       matrix3 *= Matrix.RotationZ(angle);\r
-                                                       matrix3 *= Matrix.RotationX(this.st大波[i].f角度X);\r
-                                                       matrix3 *= Matrix.RotationY(this.st大波[i].f角度Y);\r
-\r
-                                                       float dx = nレーンの中央X座標(this.st大波[i].nLane) - SampleFramework.GameWindowSize.Width / 2;\r
-                                                       float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
-                                                       matrix3 *= Matrix.Translation(dx, dy, 0f);\r
-                                                       if (this.tx大波 != null)\r
-                                                       {\r
-                                                               this.tx大波.n透明度 = num13;\r
-                                                               this.tx大波.t3D描画(CDTXMania.Instance.Device, matrix3);\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               for (int i = 0; i < BIGWAVE_MAX; i++)\r
-                               {\r
-                                       if (this.st細波[i].b使用中)\r
-                                       {\r
-                                               this.st細波[i].ct進行.t進行();\r
-                                               if (this.st細波[i].ct進行.b終了値に達した)\r
-                                               {\r
-                                                       this.st細波[i].ct進行.t停止();\r
-                                                       this.st細波[i].b使用中 = false;\r
-                                               }\r
-                                               if (this.st細波[i].ct進行.n現在の値 >= 0)\r
-                                               {\r
-                                                       Matrix matrix4 = Matrix.Identity;\r
-                                                       float num15 = ((float)this.st細波[i].ct進行.n現在の値) / 100f;\r
-                                                       float num16 = 14f * num15;\r
-                                                       int num17 = (num15 < 0.5f) ? 155 : ((int)((155f * (1f - num15)) / 1f));\r
-                                                       matrix4 *= Matrix.Scaling(\r
-                                                                                       num16 * this.st細波[i].f半径,\r
-                                                                                       num16 * this.st細波[i].f半径,\r
-                                                                                       1f\r
-                                                       );\r
-                                                       matrix4 *= Matrix.RotationX(this.st細波[i].f角度X);\r
-                                                       matrix4 *= Matrix.RotationY(this.st細波[i].f角度Y);\r
-\r
-                                                       float dx = nレーンの中央X座標(this.st細波[i].nLane) - SampleFramework.GameWindowSize.Width / 2;\r
-                                                       float dy = -(posY - SampleFramework.GameWindowSize.Height / 2);\r
-                                                       matrix4 *= Matrix.Translation(dx, dy, 0f);\r
-                                                       if (this.tx細波 != null)\r
-                                                       {\r
-                                                               this.tx細波.n透明度 = num17;\r
-                                                               this.tx細波.t3D描画(CDTXMania.Instance.Device, matrix4);\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                       }\r
-                       return 0;\r
-               }\r
-       }\r
-}\r