OSDN Git Service

SlimDX から SharpDX へ機械的に移行。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CActConfigKeyAssign.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 FDK;\r
7 using SharpDX;\r
8 \r
9 using Rectangle = System.Drawing.Rectangle;\r
10 using Color = System.Drawing.Color;\r
11 \r
12 namespace DTXMania\r
13 {\r
14         internal class CActConfigKeyAssign : CActivity\r
15         {\r
16                 public bool bキー入力待ちの最中である\r
17                 {\r
18                         get\r
19                         {\r
20                                 return this.bキー入力待ち;\r
21                         }\r
22                 }\r
23 \r
24                 public void t開始(EPad pad, string strパッド名)\r
25                 {\r
26                         this.pad = pad;\r
27                         this.strパッド名 = strパッド名;\r
28                         for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
29                         {\r
30                                 this.structReset用KeyAssign[i].InputDevice = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].入力デバイス;\r
31                                 this.structReset用KeyAssign[i].ID = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].ID;\r
32                                 this.structReset用KeyAssign[i].Code = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].コード;\r
33                         }\r
34                 }\r
35 \r
36                 public void tEnter押下()\r
37                 {\r
38                         if (!this.bキー入力待ち)\r
39                         {\r
40                                 CDTXMania.Instance.Skin.sound決定音.t再生する();\r
41                                 if (ptr == CConfigXml.AssignableCodes - 2)\r
42                                 {\r
43                                         for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
44                                         {\r
45                                                 CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].CopyFrom(this.structReset用KeyAssign[i]);\r
46                                         }\r
47                                         return;\r
48                                 }\r
49                                 else if (ptr == CConfigXml.AssignableCodes - 1)\r
50                                 {\r
51 \r
52                                         CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
53                                         return;\r
54                                 }\r
55                                 this.bキー入力待ち = true;\r
56                         }\r
57                 }\r
58 \r
59                 public void OnNext()\r
60                 {\r
61                         if (!this.bキー入力待ち)\r
62                         {\r
63                                 CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
64                                 ptr++;\r
65                                 ptr %= CConfigXml.AssignableCodes;\r
66                         }\r
67                 }\r
68 \r
69                 public void OnPrevious()\r
70                 {\r
71                         if (!this.bキー入力待ち)\r
72                         {\r
73                                 CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
74                                 --ptr;\r
75                                 ptr += CConfigXml.AssignableCodes;\r
76                                 ptr %= CConfigXml.AssignableCodes;\r
77                         }\r
78                 }\r
79 \r
80                 public override void On活性化()\r
81                 {\r
82                         if (base.b活性化してない)\r
83                         {\r
84                                 this.pad = EPad.Unknown;\r
85                                 this.strパッド名 = "";\r
86                                 this.ptr = 0;\r
87                                 this.bキー入力待ち = false;\r
88                                 this.structReset用KeyAssign = new CKeyAssign[CConfigXml.AssignableCodes - 2];\r
89                                 for (int i = 0; i < this.structReset用KeyAssign.Length; ++i)\r
90                                 {\r
91                                         structReset用KeyAssign[i] = new CKeyAssign(EInputDevice.Unknown, 0, 0);\r
92                                 }\r
93 \r
94                                 base.On活性化();\r
95                         }\r
96                 }\r
97 \r
98                 public override void On非活性化()\r
99                 {\r
100                         if (base.b活性化してる)\r
101                         {\r
102                                 TextureFactory.tテクスチャの解放(ref this.txカーソル);\r
103                                 TextureFactory.tテクスチャの解放(ref this.txHitKeyダイアログ);\r
104                                 base.On非活性化();\r
105                         }\r
106                 }\r
107 \r
108                 public override void OnManagedリソースの作成()\r
109                 {\r
110                         if (base.b活性化してる)\r
111                         {\r
112                                 this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y)); // t項目リストの設定 の前に必要\r
113                                 this.txカーソル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"), false);\r
114                                 this.txHitKeyダイアログ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig hit key to assign dialog.png"), false);\r
115                                 base.OnManagedリソースの作成();\r
116                         }\r
117                 }\r
118 \r
119                 public override void OnManagedリソースの解放()\r
120                 {\r
121                         if (base.b活性化してる)\r
122                         {\r
123                                 TextureFactory.t安全にDisposeする(ref prvFont);\r
124                         }\r
125                 }\r
126 \r
127                 public override int On進行描画()\r
128                 {\r
129                         if (base.b活性化してる)\r
130                         {\r
131                                 if (this.bキー入力待ち)\r
132                                 {\r
133                                         if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SharpDX.DirectInput.Key.Escape))\r
134                                         {\r
135                                                 CDTXMania.Instance.Skin.sound取消音.t再生する();\r
136                                                 this.bキー入力待ち = false;\r
137                                                 CDTXMania.Instance.Input管理.tポーリング(CDTXMania.Instance.bApplicationActive, false);\r
138                                         }\r
139                                         else if ((this.tキーチェックとアサイン_Keyboard() || this.tキーチェックとアサイン_MidiIn()) || (this.tキーチェックとアサイン_Joypad() || this.tキーチェックとアサイン_Mouse()))\r
140                                         {\r
141                                                 this.bキー入力待ち = false;\r
142                                                 CDTXMania.Instance.Input管理.tポーリング(CDTXMania.Instance.bApplicationActive, false);\r
143                                         }\r
144                                 }\r
145                                 else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SharpDX.DirectInput.Key.Delete))\r
146                                 {\r
147                                         CDTXMania.Instance.Skin.sound決定音.t再生する();\r
148                                         CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][ptr].Reset();\r
149                                 }\r
150 \r
151                                 if (this.txカーソル != null)\r
152                                 {\r
153                                         int num = 20;\r
154                                         int num2 = 0x144;\r
155                                         int num3 = 0x3e + (num * (ptr + 1));\r
156                                         this.txカーソル.vc拡大縮小倍率 = new Vector3(1f, 0.75f, 1f);\r
157                                         this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
158                                         num2 += 0x10;\r
159                                         Rectangle rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
160                                         for (int j = 0; j < 14; j++)\r
161                                         {\r
162                                                 this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, rectangle);\r
163                                                 num2 += 0x10;\r
164                                         }\r
165                                         this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
166                                 }\r
167 \r
168                                 int num5 = 20;\r
169                                 int x = 0x134;\r
170                                 int y = 0x40;\r
171                                 using (Bitmap bmpStr = prvFont.DrawPrivateFont(this.strパッド名, Color.White, Color.Black))\r
172                                 {\r
173                                         CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr);\r
174                                         txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
175                                         txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
176                                         TextureFactory.tテクスチャの解放(ref txStr);\r
177                                 }\r
178 \r
179                                 y += num5;\r
180                                 string strParam;\r
181                                 bool b強調;\r
182                                 for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
183                                 {\r
184                                         COptionKeyAssign stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][i];\r
185                                         switch (stkeyassignArray.入力デバイス)\r
186                                         {\r
187                                                 case EInputDevice.Keyboard:\r
188                                                         this.tアサインコードの描画_Keyboard(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
189                                                         break;\r
190 \r
191                                                 case EInputDevice.MIDIIn:\r
192                                                         this.tアサインコードの描画_MidiIn(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
193                                                         break;\r
194 \r
195                                                 case EInputDevice.JoyPad:\r
196                                                         this.tアサインコードの描画_Joypad(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
197                                                         break;\r
198 \r
199                                                 case EInputDevice.Mouse:\r
200                                                         this.tアサインコードの描画_Mouse(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
201                                                         break;\r
202 \r
203                                                 default:\r
204                                                         strParam = string.Format("{0,2}.", i + 1);\r
205                                                         b強調 = (ptr == i);\r
206                                                         using (Bitmap bmpStr = b強調 ?\r
207                                                                         prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
208                                                                         prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
209                                                         {\r
210                                                                 CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
211                                                                 txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
212                                                                 txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
213                                                                 TextureFactory.tテクスチャの解放(ref txStr);\r
214                                                         }\r
215                                                         break;\r
216                                         }\r
217                                         y += num5;\r
218                                 }\r
219 \r
220                                 strParam = "Reset All Assign";\r
221                                 b強調 = (ptr == CConfigXml.AssignableCodes - 2);\r
222                                 using (Bitmap bmpStr = b強調 ?\r
223                                                 prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
224                                                 prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
225                                 {\r
226                                         CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
227                                         txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
228                                         txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
229                                         TextureFactory.tテクスチャの解放(ref txStr);\r
230                                 }\r
231 \r
232                                 y += num5;\r
233                                 strParam = "<< Returnto List";\r
234                                 b強調 = (ptr == CConfigXml.AssignableCodes - 1);\r
235                                 using (Bitmap bmpStr = b強調 ?\r
236                                                 prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
237                                                 prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
238                                 {\r
239                                         CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
240                                         txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
241                                         txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
242                                         TextureFactory.tテクスチャの解放(ref txStr);\r
243                                 }\r
244 \r
245                                 if (this.bキー入力待ち && (this.txHitKeyダイアログ != null))\r
246                                 {\r
247                                         this.txHitKeyダイアログ.t2D描画(CDTXMania.Instance.Device, 0x185 * Scale.X, 0xd7 * Scale.Y);\r
248                                 }\r
249                         }\r
250                         return 0;\r
251                 }\r
252 \r
253 \r
254                 // その他\r
255                 [StructLayout(LayoutKind.Sequential)]\r
256                 private struct STKEYLABEL\r
257                 {\r
258                         public int nCode;\r
259                         public string strLabel;\r
260                         public STKEYLABEL(int nCode, string strLabel)\r
261                         {\r
262                                 this.nCode = nCode;\r
263                                 this.strLabel = strLabel;\r
264                         }\r
265                 }\r
266 \r
267                 private bool bキー入力待ち;\r
268                 private STKEYLABEL[] KeyLabel = new STKEYLABEL[] {\r
269                         new STKEYLABEL(0x35, "[ESC]"), new STKEYLABEL(1, "[ 1 ]"), new STKEYLABEL(2, "[ 2 ]"), new STKEYLABEL(3, "[ 3 ]"), new STKEYLABEL(4, "[ 4 ]"), new STKEYLABEL(5, "[ 5 ]"), new STKEYLABEL(6, "[ 6 ]"), new STKEYLABEL(7, "[ 7 ]"), new STKEYLABEL(8, "[ 8 ]"), new STKEYLABEL(9, "[ 9 ]"), new STKEYLABEL(0, "[ 0 ]"), new STKEYLABEL(0x53, "[ - ]"), new STKEYLABEL(0x34, "[ = ]"), new STKEYLABEL(0x2a, "[BSC]"), new STKEYLABEL(0x81, "[TAB]"), new STKEYLABEL(0x1a, "[ Q ]"),\r
270                         new STKEYLABEL(0x20, "[ W ]"), new STKEYLABEL(14, "[ E ]"), new STKEYLABEL(0x1b, "[ R ]"), new STKEYLABEL(0x1d, "[ T ]"), new STKEYLABEL(0x22, "[ Y ]"), new STKEYLABEL(30, "[ U ]"), new STKEYLABEL(0x12, "[ I ]"), new STKEYLABEL(0x18, "[ O ]"), new STKEYLABEL(0x19, "[ P ]"), new STKEYLABEL(0x4a, "[ [ ]"), new STKEYLABEL(0x73, "[ ] ]"), new STKEYLABEL(0x75, "[Enter]"), new STKEYLABEL(0x4b, "[L-Ctrl]"), new STKEYLABEL(10, "[ A ]"), new STKEYLABEL(0x1c, "[ S ]"), new STKEYLABEL(13, "[ D ]"),\r
271                         new STKEYLABEL(15, "[ F ]"), new STKEYLABEL(0x10, "[ G ]"), new STKEYLABEL(0x11, "[ H ]"), new STKEYLABEL(0x13, "[ J ]"), new STKEYLABEL(20, "[ K ]"), new STKEYLABEL(0x15, "[ L ]"), new STKEYLABEL(0x7b, "[ ; ]"), new STKEYLABEL(0x26, "[ ' ]"), new STKEYLABEL(0x45, "[ ` ]"), new STKEYLABEL(0x4e, "[L-Shift]"), new STKEYLABEL(0x2b, @"[ \]"), new STKEYLABEL(0x23, "[ Z ]"), new STKEYLABEL(0x21, "[ X ]"), new STKEYLABEL(12, "[ C ]"), new STKEYLABEL(0x1f, "[ V ]"), new STKEYLABEL(11, "[ B ]"),\r
272                         new STKEYLABEL(0x17, "[ N ]"), new STKEYLABEL(0x16, "[ M ]"), new STKEYLABEL(0x2f, "[ , ]"), new STKEYLABEL(0x6f, "[ . ]"), new STKEYLABEL(0x7c, "[ / ]"), new STKEYLABEL(120, "[R-Shift]"), new STKEYLABEL(0x6a, "[ * ]"), new STKEYLABEL(0x4d, "[L-Alt]"), new STKEYLABEL(0x7e, "[Space]"), new STKEYLABEL(0x2d, "[CAPS]"), new STKEYLABEL(0x36, "[F1]"), new STKEYLABEL(0x37, "[F2]"), new STKEYLABEL(0x38, "[F3]"), new STKEYLABEL(0x39, "[F4]"), new STKEYLABEL(0x3a, "[F5]"), new STKEYLABEL(0x3b, "[F6]"),\r
273                         new STKEYLABEL(60, "[F7]"), new STKEYLABEL(0x3d, "[F8]"), new STKEYLABEL(0x3e, "[F9]"), new STKEYLABEL(0x3f, "[F10]"), new STKEYLABEL(0x58, "[NumLock]"), new STKEYLABEL(0x7a, "[Scroll]"), new STKEYLABEL(0x60, "[NPad7]"), new STKEYLABEL(0x61, "[NPad8]"), new STKEYLABEL(0x62, "[NPad9]"), new STKEYLABEL(0x66, "[NPad-]"), new STKEYLABEL(0x5d, "[NPad4]"), new STKEYLABEL(0x5e, "[NPad5]"), new STKEYLABEL(0x5f, "[NPad6]"), new STKEYLABEL(0x68, "[NPad+]"), new STKEYLABEL(90, "[NPad1]"), new STKEYLABEL(0x5b, "[NPad2]"),\r
274                         new STKEYLABEL(0x5c, "[NPad3]"), new STKEYLABEL(0x59, "[NPad0]"), new STKEYLABEL(0x67, "[NPad.]"), new STKEYLABEL(0x40, "[F11]"), new STKEYLABEL(0x41, "[F12]"), new STKEYLABEL(0x42, "[F13]"), new STKEYLABEL(0x43, "[F14]"), new STKEYLABEL(0x44, "[F15]"), new STKEYLABEL(0x48, "[Kana]"), new STKEYLABEL(0x24, "[ ? ]"), new STKEYLABEL(0x30, "[Henkan]"), new STKEYLABEL(0x57, "[MuHenkan]"), new STKEYLABEL(0x8f, @"[ \ ]"), new STKEYLABEL(0x25, "[NPad.]"), new STKEYLABEL(0x65, "[NPad=]"), new STKEYLABEL(0x72, "[ ^ ]"),\r
275                         new STKEYLABEL(40, "[ @ ]"), new STKEYLABEL(0x2e, "[ : ]"), new STKEYLABEL(130, "[ _ ]"), new STKEYLABEL(0x49, "[Kanji]"), new STKEYLABEL(0x7f, "[Stop]"), new STKEYLABEL(0x29, "[AX]"), new STKEYLABEL(100, "[NPEnter]"), new STKEYLABEL(0x74, "[R-Ctrl]"), new STKEYLABEL(0x54, "[Mute]"), new STKEYLABEL(0x2c, "[Calc]"), new STKEYLABEL(0x70, "[PlayPause]"), new STKEYLABEL(0x52, "[MediaStop]"), new STKEYLABEL(0x85, "[Volume-]"), new STKEYLABEL(0x86, "[Volume+]"), new STKEYLABEL(0x8b, "[WebHome]"), new STKEYLABEL(0x63, "[NPad,]"),\r
276                         new STKEYLABEL(0x69, "[ / ]"), new STKEYLABEL(0x80, "[PrtScn]"), new STKEYLABEL(0x77, "[R-Alt]"), new STKEYLABEL(110, "[Pause]"), new STKEYLABEL(70, "[Home]"), new STKEYLABEL(0x84, "[Up]"), new STKEYLABEL(0x6d, "[PageUp]"), new STKEYLABEL(0x4c, "[Left]"), new STKEYLABEL(0x76, "[Right]"), new STKEYLABEL(0x33, "[End]"), new STKEYLABEL(50, "[Down]"), new STKEYLABEL(0x6c, "[PageDown]"), new STKEYLABEL(0x47, "[Insert]"), new STKEYLABEL(0x31, "[Delete]"), new STKEYLABEL(0x4f, "[L-Win]"), new STKEYLABEL(0x79, "[R-Win]"),\r
277                         new STKEYLABEL(0x27, "[APP]"), new STKEYLABEL(0x71, "[Power]"), new STKEYLABEL(0x7d, "[Sleep]"), new STKEYLABEL(0x87, "[Wake]")\r
278                 };\r
279 \r
280                 private EPad pad;\r
281                 int ptr;\r
282                 private CKeyAssign[] structReset用KeyAssign;\r
283                 private string strパッド名;\r
284                 private CTexture txHitKeyダイアログ;\r
285                 private CTexture txカーソル;\r
286                 private CPrivateFastFont prvFont;\r
287 \r
288                 private void tアサインコードの描画_Joypad(int line, int x, int y, int nID, int nCode, bool b強調)\r
289                 {\r
290                         string str = "";\r
291                         switch (nCode)\r
292                         {\r
293                                 case 0:\r
294                                         str = "Left";\r
295                                         break;\r
296 \r
297                                 case 1:\r
298                                         str = "Right";\r
299                                         break;\r
300 \r
301                                 case 2:\r
302                                         str = "Up";\r
303                                         break;\r
304 \r
305                                 case 3:\r
306                                         str = "Down";\r
307                                         break;\r
308 \r
309                                 case 4:\r
310                                         str = "Forward";\r
311                                         break;\r
312 \r
313                                 case 5:\r
314                                         str = "Back";\r
315                                         break;\r
316 \r
317                                 default:\r
318                                         if ((6 <= nCode) && (nCode < 6 + 128))              // other buttons (128 types)\r
319                                         {\r
320                                                 str = string.Format("Button{0}", nCode - 5);\r
321                                         }\r
322                                         else if ((6 + 128 <= nCode) && (nCode < 6 + 128 + 8))       // POV HAT ( 8 types; 45 degrees per HATs)\r
323                                         {\r
324                                                 str = string.Format("POV {0}", (nCode - 6 - 128) * 45);\r
325                                         }\r
326                                         else\r
327                                         {\r
328                                                 str = string.Format("Code{0}", nCode);\r
329                                         }\r
330                                         break;\r
331                         }\r
332                         using (Bitmap bmpStr = b強調 ?\r
333                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
334                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
335                         {\r
336                                 CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
337                                 txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
338                                 txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
339                                 TextureFactory.tテクスチャの解放(ref txStr);\r
340                         }\r
341                 }\r
342 \r
343                 private void tアサインコードの描画_Keyboard(int line, int x, int y, int nID, int nCode, bool b強調)\r
344                 {\r
345                         string str = null;\r
346                         foreach (STKEYLABEL stkeylabel in this.KeyLabel)\r
347                         {\r
348                                 if (stkeylabel.nCode == nCode)\r
349                                 {\r
350                                         str = string.Format("{0,2}. Key {1}", line, stkeylabel.strLabel);\r
351                                         break;\r
352                                 }\r
353                         }\r
354                         if (str == null)\r
355                         {\r
356                                 str = string.Format("{0,2}. Key 0x{1:X2}", line, nCode);\r
357                         }\r
358 \r
359                         using (Bitmap bmpStr = b強調 ?\r
360                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
361                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
362                         {\r
363                                 CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
364                                 txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
365                                 txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
366                                 TextureFactory.tテクスチャの解放(ref txStr);\r
367                         }\r
368                 }\r
369 \r
370                 private void tアサインコードの描画_MidiIn(int line, int x, int y, int nID, int nCode, bool b強調)\r
371                 {\r
372                         string str = string.Format("{0,2}. MidiIn #{1} code.{2}", line, nID, nCode);\r
373                         using (Bitmap bmpStr = b強調 ?\r
374                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
375                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
376                         {\r
377                                 CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
378                                 txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
379                                 txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
380                                 TextureFactory.tテクスチャの解放(ref txStr);\r
381                         }\r
382                 }\r
383 \r
384                 private void tアサインコードの描画_Mouse(int line, int x, int y, int nID, int nCode, bool b強調)\r
385                 {\r
386                         string str = string.Format("{0,2}. Mouse Button{1}", line, nCode);\r
387                         using (Bitmap bmpStr = b強調 ?\r
388                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
389                                         prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
390                         {\r
391                                 CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
392                                 txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
393                                 txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
394                                 TextureFactory.tテクスチャの解放(ref txStr);\r
395                         }\r
396                 }\r
397 \r
398                 private bool tキーチェックとアサイン_Joypad()\r
399                 {\r
400                         foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
401                         {\r
402                                 if (device.e入力デバイス種別 == E入力デバイス種別.Joystick)\r
403                                 {\r
404                                         for (int i = 0; i < 6 + 0x80 + 8; i++)      // +6 for Axis, +8 for HAT\r
405                                         {\r
406                                                 if (device.bキーが押された(i))\r
407                                                 {\r
408                                                         CDTXMania.Instance.Skin.sound決定音.t再生する();\r
409                                                         CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.JoyPad, device.ID, i);\r
410                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.JoyPad;\r
411                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
412                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
413                                                         return true;\r
414                                                 }\r
415                                         }\r
416                                 }\r
417                         }\r
418                         return false;\r
419                 }\r
420 \r
421                 private bool tキーチェックとアサイン_Keyboard()\r
422                 {\r
423                         for (int i = 0; i < 0x100; i++)\r
424                         {\r
425                                 if (i != (int)SharpDX.DirectInput.Key.Escape &&\r
426                                         i != (int)SharpDX.DirectInput.Key.Up &&\r
427                                         i != (int)SharpDX.DirectInput.Key.Down &&\r
428                                         i != (int)SharpDX.DirectInput.Key.Left &&\r
429                                         i != (int)SharpDX.DirectInput.Key.Right &&\r
430                                         i != (int)SharpDX.DirectInput.Key.Delete &&\r
431                                          CDTXMania.Instance.Input管理.Keyboard.bキーが押された(i))\r
432                                 {\r
433                                         CDTXMania.Instance.Skin.sound決定音.t再生する();\r
434                                         CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Keyboard, 0, i);\r
435                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.Keyboard;\r
436                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = 0;\r
437                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
438                                         return true;\r
439                                 }\r
440                         }\r
441                         return false;\r
442                 }\r
443 \r
444                 private bool tキーチェックとアサイン_MidiIn()\r
445                 {\r
446                         foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
447                         {\r
448                                 if (device.e入力デバイス種別 == E入力デバイス種別.MidiIn)\r
449                                 {\r
450                                         for (int i = 0; i < 0x100; i++)\r
451                                         {\r
452                                                 if (device.bキーが押された(i))\r
453                                                 {\r
454                                                         CDTXMania.Instance.Skin.sound決定音.t再生する();\r
455                                                         CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.MIDIIn, device.ID, i);\r
456                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.MIDIIn;\r
457                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
458                                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
459                                                         return true;\r
460                                                 }\r
461                                         }\r
462                                 }\r
463                         }\r
464                         return false;\r
465                 }\r
466 \r
467                 private bool tキーチェックとアサイン_Mouse()\r
468                 {\r
469                         for (int i = 0; i < 8; i++)\r
470                         {\r
471                                 if (CDTXMania.Instance.Input管理.Mouse.bキーが押された(i))\r
472                                 {\r
473                                         CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Mouse, 0, i);\r
474                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.Mouse;\r
475                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = 0;\r
476                                         CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
477                                 }\r
478                         }\r
479                         return false;\r
480                 }\r
481         }\r
482 }\r