OSDN Git Service

495283c0b6c95642d56c8073455b6f40cb5b03a5
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏WailingBonus共通.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演奏WailingBonus共通 : CActivity\r
10         {\r
11                 public CAct演奏WailingBonus共通()\r
12                 {\r
13                         for (int i = 0; i < 3; ++i)\r
14                         {\r
15                                 for (int j = 0; j < 4; ++j)\r
16                                 {\r
17                                         ct進行用[i, j] = null;\r
18                                 }\r
19                         }\r
20                         base.b活性化してない = true;\r
21                 }\r
22 \r
23                 public void Start(E楽器パート part, CChip r歓声Chip = null)\r
24                 {\r
25                         for (int i = 0; i < 4; i++)\r
26                         {\r
27                                 if ((this.ct進行用[(int)part, i] == null) || this.ct進行用[(int)part, i].b停止中)\r
28                                 {\r
29                                         this.ct進行用[(int)part, i] = new CCounter(0, 300, 2, CDTXMania.Instance.Timer);\r
30                                         if (CDTXMania.Instance.ConfigIni.b歓声を発声する)\r
31                                         {\r
32                                                 if (r歓声Chip != null)\r
33                                                 {\r
34                                                         CDTXMania.Instance.DTX.tチップの再生(r歓声Chip, CSound管理.rc演奏用タイマ.nシステム時刻, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
35                                                         return;\r
36                                                 }\r
37                                                 CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = (part == E楽器パート.GUITAR) ? -50 : 50;\r
38                                                 CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
39                                                 return;\r
40                                         }\r
41                                         break;\r
42                                 }\r
43                         }\r
44                 }\r
45 \r
46                 public override void On活性化()\r
47                 {\r
48                         base.On活性化();\r
49                 }\r
50 \r
51                 public override void On非活性化()\r
52                 {\r
53                         for (int i = 0; i < 3; i++)\r
54                         {\r
55                                 for (int j = 0; j < 4; j++)\r
56                                 {\r
57                                         this.ct進行用[i, j] = null;\r
58                                 }\r
59                         }\r
60                         base.On非活性化();\r
61                 }\r
62 \r
63                 public override void OnManagedリソースの作成()\r
64                 {\r
65                         if (!base.b活性化してない)\r
66                         {\r
67                                 this.txWailingBonus = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenPlay wailing bonus.png"), false);\r
68                                 base.OnManagedリソースの作成();\r
69                         }\r
70                 }\r
71                 public override void OnManagedリソースの解放()\r
72                 {\r
73                         if (!base.b活性化してない)\r
74                         {\r
75                                 TextureFactory.tテクスチャの解放(ref this.txWailingBonus);\r
76                                 base.OnManagedリソースの解放();\r
77                         }\r
78                 }\r
79 \r
80                 public override int On進行描画()\r
81                 {\r
82                         if (base.b活性化してる)\r
83                         {\r
84                                 for (int i = 0; i < 2; i++)\r
85                                 {\r
86                                         E楽器パート e楽器パート = (i == 0) ? E楽器パート.GUITAR : E楽器パート.BASS;\r
87                                         if (CDTXMania.Instance.ConfigIni.b楽器有効[e楽器パート])\r
88                                         {\r
89                                                 for (int k = 0; k < 4; k++)\r
90                                                 {\r
91                                                         if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
92                                                         {\r
93                                                                 if (this.ct進行用[(int)e楽器パート, k].b終了値に達した)\r
94                                                                 {\r
95                                                                         this.ct進行用[(int)e楽器パート, k].t停止();\r
96                                                                 }\r
97                                                                 else\r
98                                                                 {\r
99                                                                         this.ct進行用[(int)e楽器パート, k].t進行();\r
100                                                                 }\r
101                                                         }\r
102 \r
103                                                         if ((this.ct進行用[(int)e楽器パート, k] != null) && !this.ct進行用[(int)e楽器パート, k].b停止中)\r
104                                                         {\r
105                                                                 Rectangle rc = CDTXMania.Instance.Coordinates.ImgGtWailingBonus;\r
106 \r
107                                                                 int x = (e楽器パート == E楽器パート.GUITAR) ?\r
108                                                                         CDTXMania.Instance.Coordinates.Lane.GtW.X + (CDTXMania.Instance.Coordinates.Lane.GtW.W - rc.Width) / 2 :\r
109                                                                         CDTXMania.Instance.Coordinates.Lane.BsW.X + (CDTXMania.Instance.Coordinates.Lane.BsW.W - rc.Width) / 2;\r
110 \r
111                                                                 int y = 0;\r
112                                                                 int ct = this.ct進行用[(int)e楽器パート, k].n現在の値;\r
113 \r
114                                                                 int yj = C演奏判定ライン座標共通.n判定ラインY座標(e楽器パート, false, true, C演奏判定ライン座標共通.Reverse.NotReverse);\r
115 \r
116                                                                 if (ct < 100)\r
117                                                                 {\r
118                                                                         y = (int)(yj + (rc.Height * Math.Cos(Math.PI / 2 * (((double)ct) / 100.0))));\r
119                                                                 }\r
120                                                                 else if (ct < 150)\r
121                                                                 {\r
122                                                                         y = (int)(yj + ((150 - ct) * Math.Sin((Math.PI * ((ct - 100) % 25)) / 25.0)));\r
123                                                                 }\r
124                                                                 else if (ct < 200)\r
125                                                                 {\r
126                                                                         y = yj;\r
127                                                                 }\r
128                                                                 else\r
129                                                                 {\r
130                                                                         y = (int)(yj - (((double)(rc.Height * (ct - 200))) / 100.0));\r
131                                                                 }\r
132 \r
133                                                                 if (CDTXMania.Instance.ConfigIni.bReverse[e楽器パート])\r
134                                                                 {\r
135                                                                         y = SampleFramework.GameWindowSize.Height - y - rc.Height;\r
136                                                                 }\r
137 \r
138                                                                 if (this.txWailingBonus != null)\r
139                                                                 {\r
140                                                                         this.txWailingBonus.t2D描画(CDTXMania.Instance.Device, x, y, rc);\r
141                                                                 }\r
142                                                         }\r
143 \r
144                                                 }\r
145                                         }\r
146                                 }\r
147                         }\r
148                         return 0;\r
149                 }\r
150 \r
151                 protected CCounter[,] ct進行用 = new CCounter[3, 4];\r
152                 protected CTextureAf txWailingBonus;\r
153         }\r
154 }\r