OSDN Git Service

#36070 Drums/Guitar 演奏画面/Actの統合(座標値未整理)
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏RGB共通.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using FDK;\r
5 using System.Drawing;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏RGB共通 : CActivity\r
10         {\r
11                 // プロパティ\r
12                 protected bool[] b押下状態 = new bool[6];\r
13                 protected CTexture txRGB;\r
14 \r
15 \r
16                 // コンストラクタ\r
17 \r
18                 public CAct演奏RGB共通()\r
19                 {\r
20                         base.b活性化してない = true;\r
21                 }\r
22 \r
23                 // メソッド\r
24                 public void Push(int nLane)\r
25                 {\r
26                         this.b押下状態[nLane] = true;\r
27                 }\r
28 \r
29 \r
30                 // CActivity 実装\r
31                 public override void On活性化()\r
32                 {\r
33                         for (int i = 0; i < 6; i++)\r
34                         {\r
35                                 this.b押下状態[i] = false;\r
36                         }\r
37                         base.On活性化();\r
38                 }\r
39                 public override void OnManagedリソースの作成()\r
40                 {\r
41                         if (!base.b活性化してない)\r
42                         {\r
43                                 this.txRGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay RGB buttons.png"));\r
44                                 base.OnManagedリソースの作成();\r
45                         }\r
46                 }\r
47                 public override void OnManagedリソースの解放()\r
48                 {\r
49                         if (!base.b活性化してない)\r
50                         {\r
51                                 TextureFactory.tテクスチャの解放(ref this.txRGB);\r
52                                 base.OnManagedリソースの解放();\r
53                         }\r
54                 }\r
55 \r
56                 public virtual int t進行描画(C演奏判定ライン座標共通 演奏判定ライン座標)\r
57                 {\r
58                         if (!base.b活性化してない)\r
59                         {\r
60                                 if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
61                                 {\r
62                                         if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
63                                         {\r
64                                                 return 0;\r
65                                         }\r
66                                         if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
67                                         {\r
68                                                 for (int j = 0; j < 3; j++)\r
69                                                 {\r
70                                                         int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - j) : j;\r
71                                                         Rectangle rectangle = new Rectangle(\r
72                                                                 (int)(index * 0x18 * Scale.X),\r
73                                                                 0,\r
74                                                                 (int)(0x18 * Scale.X),\r
75                                                                 (int)(0x20 * Scale.Y)\r
76                                                         );\r
77                                                         if (b押下状態[index])\r
78                                                         {\r
79                                                                 rectangle.Y += (int)(0x20 * Scale.Y);\r
80                                                         }\r
81                                                         if (txRGB != null)\r
82                                                         {\r
83                                                                 int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, true, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
84                                                                 txRGB.t2D描画(\r
85                                                                         CDTXMania.Instance.Device,\r
86                                                                         (0x1f + (j * 0x24)) * Scale.X,\r
87                                                                         y,\r
88                                                                         rectangle\r
89                                                                 );\r
90                                                         }\r
91                                                 }\r
92                                         }\r
93                                         if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
94                                         {\r
95                                                 for (int k = 0; k < 3; k++)\r
96                                                 {\r
97                                                         int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - k) : k;\r
98                                                         Rectangle rectangle2 = new Rectangle(\r
99                                                                 (int)(index * 0x18 * Scale.X),\r
100                                                                 0,\r
101                                                                 (int)(0x18 * Scale.X),\r
102                                                                 (int)(0x20 * Scale.Y)\r
103                                                         );\r
104                                                         if (b押下状態[index + 3])\r
105                                                         {\r
106                                                                 rectangle2.Y += (int)(0x20 * Scale.Y);\r
107                                                         }\r
108                                                         if (txRGB != null)\r
109                                                         {\r
110                                                                 int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, true, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
111                                                                 txRGB.t2D描画(\r
112                                                                         CDTXMania.Instance.Device,\r
113                                                                         (0x1e5 + (k * 0x24)) * Scale.X,\r
114                                                                         y,\r
115                                                                         rectangle2\r
116                                                                 );\r
117                                                         }\r
118                                                 }\r
119                                         }\r
120                                         for (int i = 0; i < 6; i++)\r
121                                         {\r
122                                                 b押下状態[i] = false;\r
123                                         }\r
124                                 }\r
125                                 else\r
126                                 {\r
127                                         if (!CDTXMania.Instance.ConfigIni.bGuitar有効)\r
128                                         {\r
129                                                 return 0;\r
130                                         }\r
131                                         if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
132                                         {\r
133                                                 int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1527 : 1456;\r
134                                                 for (int i = 0; i < 3; i++)\r
135                                                 {\r
136                                                         int index = CDTXMania.Instance.ConfigIni.bLeft.Guitar ? (2 - i) : i;\r
137                                                         Rectangle rc = new Rectangle(\r
138                                                                 index * 72,\r
139                                                                 0,\r
140                                                                 72,\r
141                                                                 72\r
142                                                         );\r
143                                                         if (b押下状態[index])\r
144                                                         {\r
145                                                                 rc.Y += 72;\r
146                                                         }\r
147                                                         if (txRGB != null)\r
148                                                         {\r
149                                                                 int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.GUITAR, false, CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
150                                                                 txRGB.t2D描画(\r
151                                                                         CDTXMania.Instance.Device,\r
152                                                                         x + (i * 26 * 3),\r
153                                                                         y,\r
154                                                                         rc\r
155                                                                 );\r
156                                                         }\r
157                                                 }\r
158                                         }\r
159                                         if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
160                                         {\r
161                                                 for (int i = 0; i < 3; i++)\r
162                                                 {\r
163                                                         int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1200 : 206;\r
164                                                         int index = CDTXMania.Instance.ConfigIni.bLeft.Bass ? (2 - i) : i;\r
165                                                         Rectangle rc = new Rectangle(\r
166                                                                 index * 72,\r
167                                                                 0,\r
168                                                                 72,\r
169                                                                 72\r
170                                                         );\r
171                                                         if (b押下状態[index + 3])\r
172                                                         {\r
173                                                                 rc.Y += 72;\r
174                                                         }\r
175                                                         if (txRGB != null)\r
176                                                         {\r
177                                                                 int y = 演奏判定ライン座標.n演奏RGBボタンY座標(E楽器パート.BASS, false, CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
178                                                                 txRGB.t2D描画(\r
179                                                                         CDTXMania.Instance.Device,\r
180                                                                         x + (i * 26 * 3),\r
181                                                                         y,\r
182                                                                         rc\r
183                                                                 );\r
184                                                         }\r
185                                                 }\r
186                                         }\r
187                                         for (int i = 0; i < 6; i++)\r
188                                         {\r
189                                                 b押下状態[i] = false;\r
190                                         }\r
191                                 }\r
192                         }\r
193                         return 0;\r
194                 }\r
195         }\r
196 }\r