OSDN Git Service

#36070 Drums/Guitar 演奏画面/Actの統合(座標値未整理)
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏ステータスパネル共通.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using System.Drawing;\r
6 using System.Diagnostics;\r
7 using FDK;\r
8 \r
9 namespace DTXMania\r
10 {\r
11         internal class CAct演奏ステータスパネル共通 : CActivity\r
12         {\r
13                 // コンストラクタ\r
14                 public CAct演奏ステータスパネル共通()\r
15                 {\r
16                         this.stパネルマップ = new STATUSPANEL[12];                // yyagi: 以下、手抜きの初期化でスマン\r
17                         // { "DTXMANIA", 0 }, { "EXTREME", 1 }, ... みたいに書きたいが・・・\r
18                         string[] labels = new string[12]\r
19                         {\r
20                             "DTXMANIA", "EXTREME", "ADVANCED", "ADVANCE", "BASIC", "RAW",\r
21                             "REAL", "EASY", "EX-REAL", "ExREAL", "ExpertReal", "NORMAL"\r
22                         };\r
23                         int[] status = new int[12] \r
24                         {\r
25                             0, 1, 2, 2, 3, 4, 5, 6, 7, 7, 7, 8\r
26                         };\r
27 \r
28                         for (int i = 0; i < 12; i++)\r
29                         {\r
30                                 this.stパネルマップ[i] = new STATUSPANEL();\r
31                                 this.stパネルマップ[i].status = status[i];\r
32                                 this.stパネルマップ[i].label = labels[i];\r
33                         }\r
34 \r
35                         base.b活性化してない = true;\r
36                 }\r
37 \r
38 \r
39                 // メソッド\r
40                 public void tラベル名からステータスパネルを決定する(string strラベル名)\r
41                 {\r
42                         if (string.IsNullOrEmpty(strラベル名))\r
43                         {\r
44                                 this.nStatus = 0;\r
45                         }\r
46                         else\r
47                         {\r
48                                 foreach (STATUSPANEL statuspanel in this.stパネルマップ)\r
49                                 {\r
50                                         if (strラベル名.Equals(statuspanel.label, StringComparison.CurrentCultureIgnoreCase))       // #24482 2011.2.17 yyagi ignore case\r
51                                         {\r
52                                                 this.nStatus = statuspanel.status;\r
53                                                 return;\r
54                                         }\r
55                                 }\r
56                                 this.nStatus = 0;\r
57                         }\r
58                 }\r
59 \r
60                 // CActivity 実装\r
61 \r
62                 public override void On活性化()\r
63                 {\r
64                         this.nStatus = 0;\r
65                         base.On活性化();\r
66                 }\r
67 \r
68                 public override void OnManagedリソースの作成()\r
69                 {\r
70                         if (!base.b活性化してない)\r
71                         {\r
72                                 if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
73                                 {\r
74                                         this.txStatusPanels = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
75                                 }\r
76                                 else\r
77                                 {\r
78                                         this.tx左パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels left.png"));\r
79                                         this.tx右パネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay status panels right.png"));\r
80                                 }\r
81                                 base.OnManagedリソースの作成();\r
82                         }\r
83                 }\r
84                 public override void OnManagedリソースの解放()\r
85                 {\r
86                         if (!base.b活性化してない)\r
87                         {\r
88                                 if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
89                                 {\r
90                                         TextureFactory.tテクスチャの解放(ref this.txStatusPanels);\r
91                                 }\r
92                                 else\r
93                                 {\r
94                                         TextureFactory.tテクスチャの解放(ref this.tx左パネル);\r
95                                         TextureFactory.tテクスチャの解放(ref this.tx右パネル);\r
96                                 }\r
97                                 base.OnManagedリソースの解放();\r
98                         }\r
99                 }\r
100 \r
101                 public override int On進行描画()\r
102                 {\r
103                         if (!base.b活性化してない)\r
104                         {\r
105                                 if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
106                                 {\r
107                                         if ((this.txStatusPanels != null))\r
108                                         {\r
109                                                 this.txStatusPanels.t2D描画(\r
110                                                         CDTXMania.Instance.Device,\r
111                                                         0x26f * Scale.X,\r
112                                                         0x14f * Scale.Y,\r
113                                                         new Rectangle(\r
114                                                                 (int)(this.nStatus * 15 * Scale.X),\r
115                                                                 (int)(0xb7 * Scale.Y),\r
116                                                                 (int)(15 * Scale.X),\r
117                                                                 (int)(0x49 * Scale.Y)\r
118                                                         )\r
119                                                 );\r
120                                                 int drums = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums;\r
121                                                 if (drums < 0)\r
122                                                 {\r
123                                                         drums = 0;\r
124                                                 }\r
125                                                 if (drums > 15)\r
126                                                 {\r
127                                                         drums = 15;\r
128                                                 }\r
129                                                 this.txStatusPanels.t2D描画(CDTXMania.Instance.Device,\r
130                                                         0x26f * Scale.X,\r
131                                                         0x3b * Scale.Y,\r
132                                                         new Rectangle(\r
133                                                                 (int)(drums * 15 * Scale.X),\r
134                                                                 0,\r
135                                                                 (int)(15 * Scale.X),\r
136                                                                 (int)(0xac * Scale.Y)\r
137                                                         )\r
138                                                 );\r
139                                         }\r
140                                 }\r
141                                 else\r
142                                 {\r
143                                         if (this.tx左パネル != null)\r
144                                         {\r
145                                                 this.tx左パネル.t2D描画(\r
146                                                         CDTXMania.Instance.Device,\r
147                                                         3 * Scale.X,\r
148                                                         0x143 * Scale.Y,\r
149                                                         new Rectangle(\r
150                                                                 (int)(this.nStatus * 15 * Scale.X),\r
151                                                                 (int)(0xb7 * Scale.Y),\r
152                                                                 (int)(15 * Scale.X),\r
153                                                                 (int)(0x49 * Scale.Y)\r
154                                                         )\r
155                                                 );\r
156                                                 int guitar = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Guitar;\r
157                                                 if (guitar < 0)\r
158                                                 {\r
159                                                         guitar = 0;\r
160                                                 }\r
161                                                 if (guitar > 15)\r
162                                                 {\r
163                                                         guitar = 15;\r
164                                                 }\r
165                                                 this.tx左パネル.t2D描画(\r
166                                                         CDTXMania.Instance.Device,\r
167                                                         3 * Scale.X,\r
168                                                         0x35 * Scale.Y,\r
169                                                         new Rectangle(\r
170                                                                 (int)(guitar * 15 * Scale.X),\r
171                                                                 0,\r
172                                                                 (int)(15 * Scale.X),\r
173                                                                 (int)(0xac * Scale.Y)\r
174                                                         )\r
175                                                 );\r
176                                         }\r
177                                         if (this.tx右パネル != null)\r
178                                         {\r
179                                                 this.tx右パネル.t2D描画(\r
180                                                         CDTXMania.Instance.Device,\r
181                                                         0x26e * Scale.X,\r
182                                                         0x143 * Scale.Y,\r
183                                                         new Rectangle(\r
184                                                                 (int)(this.nStatus * 15 * Scale.X),\r
185                                                                 (int)(0xb7 * Scale.Y),\r
186                                                                 (int)(15 * Scale.X),\r
187                                                                 (int)(0x49 * Scale.Y)\r
188                                                         )\r
189                                                 );\r
190                                                 int bass = CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Bass;\r
191                                                 if (bass < 0)\r
192                                                 {\r
193                                                         bass = 0;\r
194                                                 }\r
195                                                 if (bass > 15)\r
196                                                 {\r
197                                                         bass = 15;\r
198                                                 }\r
199                                                 this.tx右パネル.t2D描画(\r
200                                                         CDTXMania.Instance.Device,\r
201                                                         0x26e * Scale.X,\r
202                                                         0x35 * Scale.Y,\r
203                                                         new Rectangle(\r
204                                                                 (int)(bass * 15 * Scale.X),\r
205                                                                 0,\r
206                                                                 (int)(15 * Scale.X),\r
207                                                                 (int)(0xac * Scale.Y)\r
208                                                         )\r
209                                                 );\r
210                                         }\r
211                                 }\r
212                         }\r
213                         return 0;\r
214                 }\r
215 \r
216                 [StructLayout(LayoutKind.Sequential)]\r
217                 protected struct STATUSPANEL\r
218                 {\r
219                         public string label;\r
220                         public int status;\r
221                 }\r
222 \r
223                 private CTexture tx右パネル;\r
224                 private CTexture tx左パネル;\r
225                 private CTexture txStatusPanels;\r
226                 protected int nStatus;\r
227                 protected STATUSPANEL[] stパネルマップ = null;\r
228         }\r
229 }\r