OSDN Git Service

b0e7a855477a5fd556f213347dd0d4764ab5272d
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏Danger共通.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 using SharpDX;\r
7 \r
8 using Color = System.Drawing.Color;\r
9 \r
10 namespace DTXMania\r
11 {\r
12         internal class CAct演奏Danger共通 : CActivity\r
13         {\r
14                 private CTextureAf txDANGER;\r
15                 private CTexture txRedScreen;\r
16                 private bool bDanger中;\r
17                 // = { false, false, false };\r
18                 private CCounter ct移動用;\r
19                 private CCounter ct透明度用;\r
20                 private const int n波長 = 40;\r
21                 private const int n透明度MAX = 180;\r
22                 private const int n透明度MIN = 20;\r
23 \r
24                 public override void On活性化()\r
25                 {\r
26                         if (b活性化してない)\r
27                         {\r
28                                 bDanger中 = false;\r
29                                 ct移動用 = null;\r
30                                 ct透明度用 = null;\r
31                                 base.On活性化();\r
32                         }\r
33                 }\r
34 \r
35                 public override void On非活性化()\r
36                 {\r
37                         if (b活性化してる)\r
38                         {\r
39                                 this.ct移動用 = null;\r
40                                 this.ct透明度用 = null;\r
41                                 base.On非活性化();\r
42                         }\r
43                 }\r
44 \r
45                 public override void OnManagedリソースの作成()\r
46                 {\r
47                         if (b活性化してる)\r
48                         {\r
49                                 this.txDANGER = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlayDrums danger.png"), false);\r
50 \r
51                                 using ( Bitmap bmp = new Bitmap( SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height ) )\r
52                                 {\r
53                                         using ( var g = Graphics.FromImage( bmp ) )\r
54                                         {\r
55                                                 using ( var brush = new SolidBrush( Color.Red ) )\r
56                                                 {\r
57                                                         g.FillRectangle( brush, 0, 0, bmp.Width, bmp.Height );\r
58                                                 }\r
59                                         }\r
60                                         this.txRedScreen = TextureFactory.tテクスチャの生成( bmp );\r
61                                 }\r
62  \r
63 \r
64                                 base.OnManagedリソースの作成();\r
65                         }\r
66                 }\r
67 \r
68                 public override void OnManagedリソースの解放()\r
69                 {\r
70                         if (b活性化してる)\r
71                         {\r
72                                 TextureFactory.tテクスチャの解放(ref this.txRedScreen);\r
73                                 TextureFactory.tテクスチャの解放(ref this.txDANGER);\r
74                                 base.OnManagedリソースの解放();\r
75                         }\r
76                 }\r
77 \r
78                 /// <summary>\r
79                 /// DANGER描画\r
80                 /// </summary>\r
81                 /// <param name="bIsDangerDrums">DrumsがDangerならtrue</param>\r
82                 /// <param name="bIsDamgerGuitar">GuitarがDangerならtrue</param>\r
83                 /// <param name="bIsDangerBass">BassがDangerならtrue</param>\r
84                 /// <returns></returns>\r
85                 public int t進行描画(bool isDanger)\r
86                 {\r
87                         if (b活性化してる)\r
88                         {\r
89                                 if (!isDanger)\r
90                                 {\r
91                                         bDanger中 = false;\r
92                                         return 0;\r
93                                 }\r
94                                 if (!bDanger中)\r
95                                 {\r
96                                         this.ct移動用 = new CCounter(0, 0x7f, 7, CDTXMania.Instance.Timer);\r
97                                         this.ct透明度用 = new CCounter(0, 0x167, 4, CDTXMania.Instance.Timer);\r
98                                 }\r
99                                 bDanger中 = isDanger;\r
100                                 this.ct移動用.t進行Loop();\r
101                                 this.ct透明度用.t進行Loop();\r
102                                 if (!bDanger中)\r
103                                 {\r
104                                         return 0;\r
105                                 }\r
106                                 int num = this.ct透明度用.n現在の値;\r
107                                 if ( txRedScreen != null )\r
108                                 {\r
109                                         this.txRedScreen.n透明度 = ( ( ( num < 180 ) ? num : ( 360 - num ) ) * 256 / 180) / 3 ;\r
110                                         this.txRedScreen.t2D描画( CDTXMania.Instance.Device, 0, 0 );\r
111                                 }\r
112                                 if ( this.txDANGER != null )\r
113                                 {\r
114                                         this.txDANGER.n透明度 = 60 + ((num < 180) ? num : (360 - num));\r
115                                 }\r
116                                 num = this.ct移動用.n現在の値;\r
117                                 int num2 = CDTXMania.Instance.ConfigIni.bReverse.Drums ? (0x7f - num) : num;\r
118                                 for (int i = -1; i < 4; i++)\r
119                                 {\r
120                                         if (this.txDANGER != null)\r
121                                         {\r
122                                                 //float d = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1.0f : 0.75f;\r
123                                                 //this.txDANGER.vc拡大縮小倍率 = new Vector3(d, d, d);\r
124                                                 int y = (int)(((i * 0x80) + num2) * Scale.Y);\r
125                                                 this.txDANGER.t2D描画(CDTXMania.Instance.Device,\r
126                                                         CDTXMania.Instance.Coordinates.Danger.Min, y);\r
127                                                 this.txDANGER.t2D描画(CDTXMania.Instance.Device,\r
128                                                         CDTXMania.Instance.Coordinates.Danger.Max, y);\r
129                                         }\r
130                                 }\r
131                         }\r
132                         return 0;\r
133                 }\r
134 \r
135         }\r
136 }\r