OSDN Git Service

17514fe740e7922c02c26795775f81f69a16198f
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / C演奏判定ライン座標共通.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Diagnostics;\r
5 \r
6 namespace DTXMania\r
7 {\r
8         /// <summary>\r
9         /// 判定ライン関係の座標処理をまとめたクラス\r
10         /// </summary>\r
11         internal class C演奏判定ライン座標共通\r
12         {\r
13                 /// <summary>\r
14                 /// 表示位置の補正データ\r
15                 /// 初期化は外部から行うこと。\r
16                 /// </summary>\r
17                 //public STDGBVALUE<int> nJudgeLinePosYDelta;\r
18 \r
19                 public C演奏判定ライン座標共通()\r
20                 {\r
21                         // 補正値は、Normal/Reverse, Drums/GR画面共通\r
22                         //nJudgeLinePosYDelta.Drums = 0;\r
23                         //nJudgeLinePosYDelta.Guitar = 0;\r
24                         //nJudgeLinePosYDelta.Bass = 0;\r
25                 }\r
26 \r
27                 public enum Reverse\r
28                 {\r
29                         UseConfig,\r
30                         Reverse,\r
31                         NotReverse\r
32                 }\r
33 \r
34                 /// <summary>\r
35                 /// 判定ラインのY座標を返す。\r
36                 /// </summary>\r
37                 /// <param name="eInst">E楽器パート</param>\r
38                 /// <param name="bGRmode">GRmodeか否か</param>\r
39                 /// <param name="bReverse">Reverseか否か</param>\r
40                 /// <param name="bWailingFrame">Wailing枠の座標か、判定ラインの座標か</param>\r
41                 /// <param name="b補正あり">プレーヤーのライン表示位置補正情報を加えるかどうか</param>\r
42                 /// <returns></returns>\r
43                 public static int n判定ラインY座標(E楽器パート eInst, bool bWailingFrame = false, bool b補正あり = false, Reverse rt = Reverse.UseConfig)\r
44                 {\r
45                         if (eInst == E楽器パート.UNKNOWN)\r
46                         {\r
47                                 throw new ArgumentOutOfRangeException();\r
48                         }\r
49                         else\r
50                         {\r
51                                 int ret = CDTXMania.Instance.Coordinates.JudgeLine[eInst].Y;\r
52 \r
53                                 int delta = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[eInst];\r
54 \r
55                                 bool rev = false;\r
56                                 if (rt == Reverse.Reverse)\r
57                                 {\r
58                                         rev = true;\r
59                                 }\r
60                                 else if (rt == Reverse.UseConfig)\r
61                                 {\r
62                                         rev = CDTXMania.Instance.ConfigIni.bReverse[eInst];\r
63                                 }\r
64 \r
65                                 if (rev)\r
66                                 {\r
67                                         ret = SampleFramework.GameWindowSize.Height - ret;\r
68                                         if (bWailingFrame)\r
69                                         {\r
70                                                 ret -= CDTXMania.Instance.Coordinates.ImgGtWailingFrame.H / 2;\r
71                                         }\r
72                                         if (eInst == E楽器パート.DRUMS)\r
73                                         {\r
74                                                 delta = -delta;\r
75                                         }\r
76                                 }\r
77                                 else\r
78                                 {\r
79                                         if (bWailingFrame)\r
80                                         {\r
81                                                 ret -= CDTXMania.Instance.Coordinates.ImgGtWailingFrame.H / 2;\r
82                                         }\r
83                                         if (eInst != E楽器パート.DRUMS)\r
84                                         {\r
85                                                 delta = -delta;\r
86                                         }\r
87                                 }\r
88                                 if (!b補正あり)\r
89                                 {\r
90                                         delta = 0;\r
91                                 }\r
92                                 return ret + delta;\r
93                         }\r
94                 }\r
95 \r
96                 public static int n演奏RGBボタンY座標(E楽器パート eInst)\r
97                 {\r
98                         if (eInst == E楽器パート.DRUMS)\r
99                         {\r
100                                 throw new NotImplementedException();\r
101                         }\r
102                         else if (eInst == E楽器パート.UNKNOWN)\r
103                         {\r
104                                 throw new ArgumentOutOfRangeException();\r
105                         }\r
106                         else\r
107                         {\r
108                                 int maxButtonH = Math.Max(CDTXMania.Instance.Coordinates.ImgGtButtonR.H, CDTXMania.Instance.Coordinates.ImgGtButtonG.H);\r
109                                 maxButtonH = Math.Max(maxButtonH, CDTXMania.Instance.Coordinates.ImgGtButtonB.H);\r
110                                 int ret = n判定ラインY座標(eInst, false, true);\r
111                                 if (CDTXMania.Instance.ConfigIni.bReverse[eInst])\r
112                                 {\r
113                                         ret += CDTXMania.Instance.Coordinates.ImgJudgeLine.H;\r
114                                 }\r
115                                 else\r
116                                 {\r
117                                         ret -= maxButtonH;\r
118                                 }\r
119                                 return ret;\r
120                         }\r
121                 }\r
122         }\r
123 }\r