OSDN Git Service

41ce58db964a6b1538de895b44602320de1e9694
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CAct演奏DrumsWailingBonus.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class CAct演奏DrumsWailingBonus : CAct演奏WailingBonus共通\r
10         {\r
11                 // コンストラクタ\r
12 \r
13                 public CAct演奏DrumsWailingBonus()\r
14                 {\r
15                         base.b活性化してない = true;\r
16                 }\r
17 \r
18                 // メソッド\r
19                 public override void Start(E楽器パート part, CChip r歓声Chip)\r
20                 {\r
21                         if ((part == E楽器パート.GUITAR) || (part == E楽器パート.BASS))\r
22                         {\r
23                                 int num = (int)part;\r
24                                 for (int i = 0; i < 4; i++)\r
25                                 {\r
26                                         if (this.ct進行用[num, i].b停止中)\r
27                                         {\r
28                                                 this.ct進行用[num, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
29                                                 if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
30                                                 {\r
31                                                         if (r歓声Chip != null)\r
32                                                         {\r
33                                                                 CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
34                                                                 return;\r
35                                                         }\r
36                                                         CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
37                                                         return;\r
38                                                 }\r
39                                                 break;\r
40                                         }\r
41                                 }\r
42                         }\r
43                 }\r
44 \r
45 \r
46                 // CActivity 実装\r
47 \r
48                 public override void On活性化()\r
49                 {\r
50                         for (int i = 0; i < 3; i++)\r
51                         {\r
52                                 for (int j = 0; j < 4; j++)\r
53                                 {\r
54                                         this.ct進行用[i, j] = new CCounter();\r
55                                 }\r
56                         }\r
57                         base.On活性化();\r
58                 }\r
59                 public override void On非活性化()\r
60                 {\r
61                         for (int i = 0; i < 3; i++)\r
62                         {\r
63                                 for (int j = 0; j < 4; j++)\r
64                                 {\r
65                                         this.ct進行用[i, j] = null;\r
66                                 }\r
67                         }\r
68                         base.On非活性化();\r
69                 }\r
70 \r
71                 public override int On進行描画()\r
72                 {\r
73                         if (!base.b活性化してない)\r
74                         {\r
75                                 for (int i = 0; i < 2; i++)\r
76                                 {\r
77                                         E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
78                                         for (int j = 0; j < 4; j++)\r
79                                         {\r
80                                                 if (!this.ct進行用[(int)e楽器パート, j].b停止中)\r
81                                                 {\r
82                                                         if (this.ct進行用[(int)e楽器パート, j].b終了値に達した)\r
83                                                         {\r
84                                                                 this.ct進行用[(int)e楽器パート, j].t停止();\r
85                                                         }\r
86                                                         else\r
87                                                         {\r
88                                                                 this.ct進行用[(int)e楽器パート, j].t進行();\r
89                                                                 int x = ((e楽器パート == E楽器パート.GUITAR) ? 1521 + 234 : 1194 + 234);\r
90                                                                 if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Center)\r
91                                                                 {\r
92                                                                         x -= (e楽器パート == E楽器パート.GUITAR) ? 71 : 994;\r
93                                                                 }\r
94                                                                 int num4 = 0;\r
95                                                                 int num5 = 0;\r
96                                                                 int num6 = this.ct進行用[(int)e楽器パート, j].n現在の値;\r
97                                                                 if (num6 < 100)\r
98                                                                 {\r
99                                                                         num4 = (int)(64.0 + (290.0 * Math.Cos(Math.PI / 2 * (((float)num6) / 100f))));\r
100                                                                 }\r
101                                                                 else if (num6 < 150)\r
102                                                                 {\r
103                                                                         num4 = (int)(64.0 + ((150 - num6) * Math.Sin((Math.PI * ((num6 - 100) % 0x19)) / 25.0)));\r
104                                                                 }\r
105                                                                 else if (num6 < 200)\r
106                                                                 {\r
107                                                                         num4 = 0x40;\r
108                                                                 }\r
109                                                                 else\r
110                                                                 {\r
111                                                                         num4 = (int)(64f - (((float)(290 * (num6 - 200))) / 100f));\r
112                                                                 }\r
113                                                                 if (CDTXMania.Instance.ConfigIni.bReverse[(int)e楽器パート])\r
114                                                                 {\r
115                                                                         num4 = (0x163 - num4) - 0xf4;\r
116                                                                 }\r
117                                                                 Rectangle rectangle = new Rectangle(0, 0, 0x1a, 0x7a * 2);\r
118                                                                 if ((0x163 - num4) < rectangle.Bottom)\r
119                                                                 {\r
120                                                                         rectangle.Height = (0x163 - num4) - rectangle.Top;\r
121                                                                 }\r
122                                                                 if (num4 < 0)\r
123                                                                 {\r
124                                                                         rectangle.Y = -num4;\r
125                                                                         num5 = -num4;\r
126                                                                 }\r
127                                                                 if ((rectangle.Top < rectangle.Bottom) && (this.txWailingBonus != null))\r
128                                                                 {\r
129                                                                         rectangle.X = (int)(rectangle.X * Scale.X);\r
130                                                                         rectangle.Y = (int)(rectangle.Y * Scale.Y);\r
131                                                                         rectangle.Width = (int)(rectangle.Width * Scale.X);\r
132                                                                         rectangle.Height = (int)(rectangle.Height * Scale.Y);\r
133                                                                         this.txWailingBonus.t2D描画(\r
134                                                                                 CDTXMania.Instance.Device,\r
135                                                                                 x,\r
136                                                                                 ((((e楽器パート == E楽器パート.GUITAR) ? 0x39 : 0x39) + num4) + num5) * Scale.Y,\r
137                                                                                 rectangle\r
138                                                                         );\r
139                                                                 }\r
140                                                                 //num5 = 0;\r
141                                                                 //rectangle = new Rectangle( 0x1a, 0, 0x1a, 0x7a );\r
142                                                                 //if( ( 0x163 - ( num4 + 0x7a ) ) < rectangle.Bottom )\r
143                                                                 //{\r
144                                                                 //    rectangle.Height = ( 0x163 - ( num4 + 0x7a ) ) - rectangle.Top;\r
145                                                                 //}\r
146                                                                 //if( ( num4 + 0x7a ) < 0 )\r
147                                                                 //{\r
148                                                                 //    rectangle.Y = -( num4 + 0x7a );\r
149                                                                 //    num5 = -( num4 + 0x7a );\r
150                                                                 //}\r
151                                                                 //if( ( rectangle.Top < rectangle.Bottom ) && ( this.txWailingBonus != null ) )\r
152                                                                 //{\r
153                                                                 //    this.txWailingBonus.t2D描画( CDTXMania.Instance.app.Device, x, ( ( ( ( e楽器パート == E楽器パート.GUITAR ) ? 0x39 : 0x39 ) + num4 ) + num5 ) + 0x7a, rectangle );\r
154                                                                 //}\r
155                                                         }\r
156                                                 }\r
157                                         }\r
158                                 }\r
159                         }\r
160                         return 0;\r
161                 }\r
162         }\r
163 }\r