2 using System.Collections.Generic;
\r
5 using System.Runtime.Serialization;
\r
11 /// DataContract はフィールドまたはプロパティを XML にシリアライズできます。
\r
12 /// DataMember が付いているメンバだけがシリアライズされます。シリアライズ可能な型については MSDN を参照してください。
\r
13 /// DataMember が付いていないメンバはデシリアライズ時に別途指定される既定値になります。
\r
14 /// これらは OnDeserialized 属性がついたメソッドで処理します。
\r
24 [DataMember(Name = "X")]
\r
35 [DataMember(Name = "Y")]
\r
40 public class STXY : STX
\r
42 public STXY(int x, int y)
\r
48 [DataMember(Name = "Y")]
\r
53 public class STXW : STX
\r
55 public STXW(int x, int w)
\r
61 [DataMember(Name = "Width")]
\r
66 public class STXYW : STXY
\r
68 public STXYW(int x, int y, int w)
\r
74 [DataMember(Name = "Width")]
\r
79 public class STRange
\r
81 public STRange(int min, int max)
\r
87 [DataMember(Name = "Min")]
\r
89 [DataMember(Name = "Max")]
\r
94 public class STRect : STXY
\r
96 public System.Drawing.Rectangle rc;
\r
97 public System.Drawing.Rectangle rcTmp;
\r
99 public STRect(int x, int y, int w, int h)
\r
104 rc = new System.Drawing.Rectangle(X, Y, W, H);
\r
105 rcTmp = new System.Drawing.Rectangle(X, Y, W, H);
\r
108 public static implicit operator System.Drawing.Rectangle(STRect x)
\r
113 public System.Drawing.Rectangle ApplyCounterY(int counter, int overlap)
\r
115 rcTmp.Y = rc.Y + (rc.Height - overlap) * counter;
\r
118 public System.Drawing.Rectangle ApplyCounterX(int counter, int overlap)
\r
120 rcTmp.X = rc.X + (rc.Width - overlap) * counter;
\r
123 public System.Drawing.Rectangle ApplyCounterXY(int counterX, int counterY, int overlapX, int overlapY)
\r
125 rcTmp.X = rc.X + (rc.Width - overlapX) * counterX;
\r
126 rcTmp.Y = rc.Y + (rc.Height - overlapY) * counterY;
\r
130 [DataMember(Name = "Width")]
\r
132 [DataMember(Name = "Height")]
\r
139 [DataMember(Name = "LeftCymbal")]
\r
141 [DataMember(Name = "HiHatClose")]
\r
143 [DataMember(Name = "HiHatOpen")]
\r
145 [DataMember(Name = "SnareDrum")]
\r
147 [DataMember(Name = "BassDrum")]
\r
149 [DataMember(Name = "HighTom")]
\r
151 [DataMember(Name = "LowTom")]
\r
153 [DataMember(Name = "FloorTom")]
\r
155 [DataMember(Name = "Cymbal")]
\r
157 [DataMember(Name = "RideCymbal")]
\r
160 [DataMember(Name = "GuitarOpen")]
\r
162 [DataMember(Name = "GuitarR")]
\r
164 [DataMember(Name = "GuitarG")]
\r
166 [DataMember(Name = "GuitarB")]
\r
168 [DataMember(Name = "GuitarWailing")]
\r
171 [DataMember(Name = "BassOpen")]
\r
173 [DataMember(Name = "BassR")]
\r
175 [DataMember(Name = "BassG")]
\r
177 [DataMember(Name = "BassB")]
\r
179 [DataMember(Name = "BassWailing")]
\r
186 [DataMember(Name = "LeftCymbal")]
\r
188 [DataMember(Name = "HiHatClose")]
\r
190 [DataMember(Name = "SnareDrum")]
\r
192 [DataMember(Name = "BassDrum")]
\r
194 [DataMember(Name = "HighTom")]
\r
196 [DataMember(Name = "LowTom")]
\r
198 [DataMember(Name = "FloorTom")]
\r
200 [DataMember(Name = "Cymbal")]
\r
203 [DataMember(Name = "Guitar")]
\r
206 [DataMember(Name = "Bass")]
\r
211 public class Coordinates
\r
213 [DataMember(Name = "Lane")]
\r
216 [DataMember(Name = "Combo")]
\r
217 public STDGBVALUE<STXY> Combo;
\r
219 [DataMember(Name = "MovieBGAGuitarsOnly")]
\r
220 public STRect GtMovie;
\r
222 [DataMember(Name = "MovieBGADrumsOnly")]
\r
223 public STRect DrMovie;
\r
225 [DataMember(Name = "MovieBGACommon")]
\r
226 public STRect Movie;
\r
228 [DataMember(Name = "Judge")]
\r
229 public Judge Judge;
\r
231 [DataMember(Name = "JudgeLine")]
\r
232 public STDGBVALUE<STXYW> JudgeLine;
\r
234 [DataMember(Name = "Score")]
\r
235 public STDGBVALUE<STXY> Score;
\r
237 [DataMember(Name = "Gauge")]
\r
240 [DataMember(Name = "GaugeMax")]
\r
241 public int GaugeMax;
\r
243 [DataMember(Name = "StatusPanel")]
\r
244 public STDGBVALUE<STXY> StatusPanel;
\r
246 [DataMember(Name = "Graph")]
\r
247 public STDGBVALUE<STRect> Graph;
\r
249 [DataMember(Name = "Danger")]
\r
250 public STRange Danger;
\r
252 [DataMember(Name = "Panel")]
\r
253 public STRect Panel;
\r
255 [DataMember(Name = "Debug")]
\r
258 [DataMember(Name = "BarLine")]
\r
259 public STDGBVALUE<STX> BarLine;
\r
261 [DataMember(Name = "SuddenFrom")]
\r
262 public STDGBVALUE<STY> SuddenFrom;
\r
263 [DataMember(Name = "HiddenFrom")]
\r
264 public STDGBVALUE<STY> HiddenFrom;
\r
265 [DataMember(Name = "SuddenFadeInFrom")]
\r
266 public STDGBVALUE<STY> SuddenFadeInFrom;
\r
267 [DataMember(Name = "HiddenFadeOutFrom")]
\r
268 public STDGBVALUE<STY> HiddenFadeOutFrom;
\r
269 [DataMember(Name = "LaneFlash")]
\r
270 public STDGBVALUE<STY> LaneFlash;
\r
272 [DataMember(Name = "DrumsPad")]
\r
274 [DataMember(Name = "DrumsPadOffsetLCY")]
\r
275 public STY DrPadOffsetLCY;
\r
276 [DataMember(Name = "DrumsPadOffsetHH")]
\r
277 public STY DrPadOffsetHH;
\r
278 [DataMember(Name = "DrumsPadOffsetSD")]
\r
279 public STY DrPadOffsetSD;
\r
280 [DataMember(Name = "DrumsPadOffsetBD")]
\r
281 public STY DrPadOffsetBD;
\r
282 [DataMember(Name = "DrumsPadOffsetHT")]
\r
283 public STY DrPadOffsetHT;
\r
284 [DataMember(Name = "DrumsPadOffsetLT")]
\r
285 public STY DrPadOffsetLT;
\r
286 [DataMember(Name = "DrumsPadOffsetFT")]
\r
287 public STY DrPadOffsetFT;
\r
288 [DataMember(Name = "DrumsPadOffsetCY")]
\r
289 public STY DrPadOffsetCY;
\r
290 [DataMember(Name = "DrumsPadOffsetRCY")]
\r
291 public STXY DrPadOffsetRCY;
\r
293 public STRect ImgGtChipOpen;
\r
294 public int ImgGtCountOpenChip;
\r
295 public STRect ImgGtRGBButton;
\r
296 public int ImgGtCountRGBChip;
\r
297 public int ImgGtCountWailingChip;
\r
298 public STRect ImgGtWailingBonus;
\r
299 public STRect ImgGtLaneFlash;
\r
300 public STRect ImgGtWailingChip;
\r
301 public STRect ImgGtWailingFrame;
\r
302 public STRect ImgGtButtonR;
\r
303 public STRect ImgGtButtonG;
\r
304 public STRect ImgGtButtonB;
\r
305 public STRect ImgGtPressingButtonR;
\r
306 public STRect ImgGtPressingButtonG;
\r
307 public STRect ImgGtPressingButtonB;
\r
308 public STRect ImgDrLaneFlash;
\r
309 public STRect ImgDrChipHHC;
\r
310 public STRect ImgDrChipSD;
\r
311 public STRect ImgDrChipBD;
\r
312 public STRect ImgDrChipHT;
\r
313 public STRect ImgDrChipLT;
\r
314 public STRect ImgDrChipCY;
\r
315 public STRect ImgDrChipCYDeco;
\r
316 public STRect ImgDrChipFT;
\r
317 public STRect ImgDrChipHHO;
\r
318 public STRect ImgDrChipHHODeco;
\r
319 public STRect ImgDrChipRCY;
\r
320 public int ImgDrCountChip;
\r
321 public STRect ImgDrPadLCY;
\r
322 public STRect ImgDrPadHH;
\r
323 public STRect ImgDrPadSD;
\r
324 public STRect ImgDrPadBD;
\r
325 public STRect ImgDrPadHT;
\r
326 public STRect ImgDrPadLT;
\r
327 public STRect ImgDrPadFT;
\r
328 public STRect ImgDrPadCY;
\r
329 public STRect ImgDrPadRCY;
\r
330 public STRect ImgJudgeLine;
\r
331 public STRect ImgBarLine;
\r
332 public STRect ImgBeatLine;
\r
333 public STRect ImgComboCombo;
\r
334 public STRect ImgComboOneDigit;
\r
335 public STRect ImgGaugeOrange;
\r
336 public STRect ImgGaugeNormal;
\r
337 public STRect ImgGaugeLight;
\r
338 public STRect ImgGaugeTopLight;
\r
339 public STRect ImgGaugeStar;
\r
340 public STRect ImgScoreOneDigit;
\r
341 public STRect ImgSpeedPanel;
\r
342 public STRect ImgConsoleFont;
\r
343 public STRect ImgJudgeString;
\r
344 public STRect ImgDanger;
\r
346 public STDGBVALUE<STY>[] OffsetGuitarBassSwap;
\r
347 public STDGBVALUE<STXY> PointFullCombo;
\r
351 /// デシリアライズが終了したとき呼び出されます。
\r
352 /// シリアル化非対象メンバはここで初期値を与えます。
\r
354 /// <param name="sc">ストリーミングコンテキスト。使用されません。</param>
\r
356 public void DefaultDeserializer(StreamingContext sc)
\r
358 ImgJudgeLine = new STRect(0, 0, 64, 16);
\r
360 ImgGtChipOpen = new STRect(72 * 3, 0, 72 * 3, 14);
\r
361 ImgGtRGBButton = new STRect(0, 0, 72, 14);
\r
362 ImgGtWailingChip = new STRect(0, 590, 60, 120);
\r
363 ImgGtCountWailingChip = 5;
\r
364 ImgGtCountRGBChip = 48;
\r
365 ImgGtCountOpenChip = 48;
\r
367 ImgDanger = new STRect(0, 0, 64, 256);
\r
369 ImgGtButtonR = new STRect(0, 0, 72, 72);
\r
370 ImgGtButtonG = new STRect(72, 0, 72, 72);
\r
371 ImgGtButtonB = new STRect(144, 0, 72, 72);
\r
372 ImgGtPressingButtonR = new STRect(0, 72, 72, 72);
\r
373 ImgGtPressingButtonG = new STRect(72, 72, 72, 72);
\r
374 ImgGtPressingButtonB = new STRect(144, 72, 72, 72);
\r
375 ImgGtWailingBonus = new STRect(0, 0, 78, 549);
\r
377 ImgComboCombo = new STRect(100, 140, 110, 30);
\r
378 ImgComboOneDigit = new STRect(0, 0, 50, 70);
\r
380 ImgGtWailingFrame = new STRect(0, 0, 66, 113);
\r
381 ImgSpeedPanel = new STRect(0, 0, 45, 164);
\r
383 ImgConsoleFont = new STRect(0, 0, 16, 32);
\r
384 ImgJudgeString = new STRect(0, 0, 256, 36);
\r
386 ImgDrCountChip = 48;
\r
387 ImgDrChipBD = new STRect(0, 20, 99, 22);
\r
388 ImgDrChipHHC = new STRect(99, 16, 72, 18);
\r
389 ImgDrChipSD = new STRect(99 + 72, 16, 72, 18);
\r
390 ImgDrChipHT = new STRect(99 + 72 * 2, 16, 72, 18);
\r
391 ImgDrChipLT = new STRect(99 + 72 * 3, 16, 72, 18);
\r
392 ImgDrChipFT = new STRect(99 + 72 * 4, 16, 72, 18);
\r
393 ImgDrChipCY = new STRect(99 + 72 * 5, 16, 85, 18);
\r
394 ImgDrChipCYDeco = new STRect(99 + 72 * 5, 786, 85, 64);
\r
395 ImgDrChipRCY = new STRect(99 + 72 * 5 + 85, 16, 58, 18);
\r
396 ImgDrChipHHO = new STRect(99 + 72 * 5 + 85, 16, 58, 18);
\r
397 ImgDrChipHHODeco = new STRect(99 + 72 * 5 + 85, 791, 58, 30);
\r
399 ImgDrPadLCY = new STRect(0, 0, 170, 130);
\r
400 ImgDrPadHH = new STRect(170, 0, 170, 130);
\r
401 ImgDrPadSD = new STRect(340, 0, 170, 130);
\r
402 ImgDrPadBD = new STRect(0, 130, 170, 130);
\r
403 ImgDrPadHT = new STRect(170, 130, 170, 130);
\r
404 ImgDrPadLT = new STRect(340, 130, 170, 130);
\r
405 ImgDrPadFT = new STRect(0, 260, 170, 130);
\r
406 ImgDrPadCY = new STRect(170, 260, 170, 130);
\r
407 ImgDrPadRCY = new STRect(340, 260, 170, 130);
\r
409 ImgBarLine = new STRect(0, 982, 480, 3);
\r
410 ImgBeatLine = new STRect(0, 985, 480, 2);
\r
412 ImgGaugeOrange = new STRect(48, 0, 48, 61);
\r
413 ImgGaugeNormal = new STRect(0, 0, 48, 61);
\r
414 ImgGaugeLight = new STRect(0, 0, 48, 576);
\r
415 ImgGaugeTopLight = new STRect(144, 0, 48, 36);
\r
416 ImgGaugeStar = new STRect(0, 72, 96, 72);
\r
418 ImgScoreOneDigit = new STRect(0, 0, 30, 38);
\r
420 ImgGtLaneFlash = new STRect(0, 0, -1, 512); // w無効
\r
421 ImgDrLaneFlash = new STRect(0, 0, -1, 768); // w無効
\r
423 OffsetGuitarBassSwap = new STDGBVALUE<STY>[2];// #24063 2011.1.27 yyagi
\r
424 OffsetGuitarBassSwap[0] = new STDGBVALUE<STY>();
\r
425 OffsetGuitarBassSwap[0].Drums = new STY(0);
\r
426 OffsetGuitarBassSwap[0].Guitar = new STY((int)(21 * Scale.Y));
\r
427 OffsetGuitarBassSwap[0].Bass = new STY((int)(42 * Scale.Y));
\r
428 OffsetGuitarBassSwap[1].Drums = new STY(0);
\r
429 OffsetGuitarBassSwap[1].Guitar = new STY((int)(42 * Scale.Y));
\r
430 OffsetGuitarBassSwap[1].Bass = new STY((int)(21 * Scale.Y));
\r
432 PointFullCombo = new STDGBVALUE<STXY>();
\r
433 PointFullCombo.Drums = new STXY((int)(0x80 * Scale.X), (int)(0xed * Scale.Y));
\r
434 PointFullCombo.Guitar = new STXY((int)(0xdf * Scale.X), (int)(0xed * Scale.Y));
\r
435 PointFullCombo.Bass = new STXY((int)(0x141 * Scale.X), (int)(0xed * Scale.Y));
\r
439 /// デシリアライズを開始しようとする前に呼ばれます。
\r
440 /// シリアル化対象メンバを初期化します。
\r
441 /// 該当要素がXMLにすでに存在する場合、ここで指定したその要素に対する値は無効です。
\r
443 /// <param name="sc">ストリーミングコンテキスト。使用しません。</param>
\r
445 public void DefaultDeserializing(StreamingContext sc)
\r
449 int x = 480 - 72 * 4;
\r
450 Lane.GtO = new STXW(x, 72);
\r
451 Lane.GtR = new STXW(x, 72);
\r
453 Lane.GtG = new STXW(x, 72);
\r
455 Lane.GtB = new STXW(x, 72);
\r
457 Lane.GtW = new STXW(x, 72);
\r
460 Lane.BsO = new STXW(x, 72);
\r
461 Lane.BsR = new STXW(x, 72);
\r
463 Lane.BsG = new STXW(x, 72);
\r
465 Lane.BsB = new STXW(x, 72);
\r
467 Lane.BsW = new STXW(x, 72);
\r
469 x = 1920 / 2 - 314;
\r
470 Lane.LCY = new STXW(x, 85);
\r
472 Lane.HHC = new STXW(x, 72);
\r
473 Lane.HHO = new STXW(x, 72);
\r
475 Lane.SD = new STXW(x, 72);
\r
477 Lane.BD = new STXW(x, 99);
\r
479 Lane.HT = new STXW(x, 72);
\r
481 Lane.LT = new STXW(x, 72);
\r
483 Lane.FT = new STXW(x, 72);
\r
485 Lane.CY = new STXW(x, 85);
\r
486 Lane.RCY = new STXW(x, 85);
\r
488 LaneFlash = new STDGBVALUE<STY>();
\r
489 LaneFlash.Drums = new STY(SampleFramework.GameWindowSize.Height - 768);
\r
490 LaneFlash.Guitar = new STY(0);
\r
491 LaneFlash.Bass = new STY(0);
\r
493 JudgeLine = new STDGBVALUE<STXYW>();
\r
494 JudgeLine.Drums = new STXYW(Lane.LCY.X, 942, Lane.CY.X + Lane.CY.W - Lane.LCY.X);
\r
495 JudgeLine.Guitar = new STXYW(Lane.GtR.X, 138, Lane.GtB.X + Lane.GtB.W - Lane.GtR.X);
\r
496 JudgeLine.Bass = new STXYW(Lane.BsR.X, 138, Lane.BsB.X + Lane.BsB.W - Lane.BsR.X);
\r
498 // Graph = new STDGBVALUE<STXY>();
\r
500 Gauge = new STXY(0, 1080);
\r
503 Graph = new STDGBVALUE<STRect>();
\r
504 Graph.Drums = new STRect(SampleFramework.GameWindowSize.Width / 2 + 314, 0, 60, 400);
\r
505 Graph.Guitar = new STRect(480, 0, 60, 400);
\r
506 Graph.Bass = new STRect(SampleFramework.GameWindowSize.Width - 480 + 72 * 4, 0, 60, 400);
\r
508 Debug = new STXY(450 * 3, 128); // 要修正 actPlayInfo.t進行描画
\r
509 Movie = new STRect(619 + 682, 128, 556, 710);
\r
511 Combo = new STDGBVALUE<STXY>();
\r
512 Combo.Drums = new STXY(JudgeLine.Drums.W / 2 + JudgeLine.Drums.X, 80);
\r
513 Combo.Guitar = new STXY((JudgeLine.Guitar.W + 72) / 2 + JudgeLine.Guitar.X, 800);
\r
514 Combo.Bass = new STXY((JudgeLine.Bass.W + 72) / 2 + JudgeLine.Bass.X, 800);
\r
516 Score = new STDGBVALUE<STXY>();
\r
517 Score.Drums = new STXY(JudgeLine.Drums.X + JudgeLine.Drums.W / 2, 10);
\r
518 Score.Guitar = new STXY(JudgeLine.Guitar.X + JudgeLine.Guitar.W / 2, 10);
\r
519 Score.Bass = new STXY(JudgeLine.Bass.X + JudgeLine.Bass.W / 2, 10);
\r
521 Judge = new Judge();
\r
522 Judge.LCY = new STXY(Lane.LCY.X + Lane.LCY.W / 2, 350);
\r
523 Judge.HH = new STXY(Lane.HHC.X + Lane.HHC.W / 2, 420);
\r
524 Judge.SD = new STXY(Lane.SD.X + Lane.SD.W / 2, 350);
\r
525 Judge.BD = new STXY(Lane.BD.X + Lane.BD.W / 2, 420);
\r
526 Judge.HT = new STXY(Lane.HT.X + Lane.HT.W / 2, 350);
\r
527 Judge.LT = new STXY(Lane.LT.X + Lane.LT.W / 2, 420);
\r
528 Judge.FT = new STXY(Lane.FT.X + Lane.FT.W / 2, 350);
\r
529 Judge.CY = new STXY(Lane.CY.X + Lane.CY.W / 2, 420);
\r
530 Judge.Gt = new STXY(Combo.Guitar.X, 600);
\r
531 Judge.Bs = new STXY(Combo.Bass.X, 600);
\r
533 DrMovie = new STRect(619 + 682, 128, 556, 710);
\r
534 GtMovie = new STRect(682, 112, 556, 710);
\r
535 Movie = new STRect(1153, 128, 556, 710);
\r
537 Panel = new STRect(SampleFramework.GameWindowSize.Width, 0, 0, 0);
\r
538 StatusPanel = new STDGBVALUE<STXY>();
\r
539 StatusPanel.Drums = new STXY(Lane.LCY.X - 45, 0);
\r
540 StatusPanel.Guitar = new STXY(Lane.GtR.X - 45, 0);
\r
541 StatusPanel.Bass = new STXY(Lane.BsR.X - 45, 0);
\r
543 BarLine = new STDGBVALUE<STX>();
\r
544 BarLine.Drums = new STX(619);
\r
545 BarLine.Guitar = new STX(78);
\r
546 BarLine.Bass = new STX(480 * 3);
\r
548 DrPadOffsetLCY = new STY(0);
\r
549 DrPadOffsetHH = new STY(10);
\r
550 DrPadOffsetSD = new STY(22);
\r
551 DrPadOffsetBD = new STY(30);
\r
552 DrPadOffsetHT = new STY(0);
\r
553 DrPadOffsetLT = new STY(15);
\r
554 DrPadOffsetFT = new STY(30);
\r
555 DrPadOffsetCY = new STY(15);
\r
556 DrPadOffsetRCY = new STXY(80, 0);
\r
557 DrPad = new STY(930);
\r
559 SuddenFrom = new STDGBVALUE<STY>();
\r
560 SuddenFrom.Drums = new STY(450);
\r
561 SuddenFrom.Guitar = new STY(450);
\r
562 SuddenFrom.Bass = new STY(450);
\r
563 HiddenFrom = new STDGBVALUE<STY>();
\r
564 HiddenFrom.Drums = new STY(225);
\r
565 HiddenFrom.Guitar = new STY(225);
\r
566 HiddenFrom.Bass = new STY(225);
\r
567 SuddenFadeInFrom.Drums = new STY(562);
\r
568 HiddenFadeOutFrom.Drums = new STY(337);
\r
570 Danger = new STRange(0, SampleFramework.GameWindowSize.Width - 64);
\r
574 /// シリアル化対象メンバはここで初期値を与えます。XMLが存在しない場合一度これらの値が書きだされ、
\r
575 /// もう一度デシリアライズされます。XMLが存在する場合、これらの値は全て無効になります。
\r
577 public Coordinates()
\r
579 StreamingContext sc = new StreamingContext();
\r
580 DefaultDeserializing(sc);
\r