OSDN Git Service

#37177 キーアサインでPOVを登録すると、同じ方向のHATが消える問題を修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏スクロール速度.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using FDK;\r
5 \r
6 namespace DTXMania\r
7 {\r
8         internal class CAct演奏スクロール速度 : CActivity\r
9         {\r
10                 public STDGBSValue<double> db現在の譜面スクロール速度;\r
11 \r
12                 public CAct演奏スクロール速度()\r
13                 {\r
14                         base.b活性化してない = true;\r
15                 }\r
16 \r
17                 public override void On活性化()\r
18                 {\r
19                         for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
20                         {\r
21                                 this.db現在の譜面スクロール速度[i] = (double)CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
22                                 this.n速度変更制御タイマ[i] = -1;\r
23                         }\r
24                         base.On活性化();\r
25                 }\r
26 \r
27                 public override unsafe int On進行描画()\r
28                 {\r
29                         if (!base.b活性化してない)\r
30                         {\r
31                                 if (base.b初めての進行描画)\r
32                                 {\r
33                                         this.n速度変更制御タイマ.Drums = this.n速度変更制御タイマ.Guitar = this.n速度変更制御タイマ.Bass = CSound管理.rc演奏用タイマ.n現在時刻;\r
34                                         base.b初めての進行描画 = false;\r
35                                 }\r
36                                 long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻;\r
37                                 for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
38                                 {\r
39                                         double db譜面スクロールスピード = (double)CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
40                                         if (n現在時刻 < this.n速度変更制御タイマ[i])\r
41                                         {\r
42                                                 this.n速度変更制御タイマ[i] = n現在時刻;\r
43                                         }\r
44                                         while ((n現在時刻 - this.n速度変更制御タイマ[i]) >= 2)               // 2msに1回ループ\r
45                                         {\r
46                                                 if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード)       // Config.iniのスクロール速度を変えると、それに追いつくように実画面のスクロール速度を変える\r
47                                                 {\r
48                                                         this.db現在の譜面スクロール速度[i] += 0.012;\r
49 \r
50                                                         if (this.db現在の譜面スクロール速度[i] > db譜面スクロールスピード)\r
51                                                         {\r
52                                                                 this.db現在の譜面スクロール速度[i] = db譜面スクロールスピード;\r
53                                                         }\r
54                                                 }\r
55                                                 else if (this.db現在の譜面スクロール速度[i] > db譜面スクロールスピード)\r
56                                                 {\r
57                                                         this.db現在の譜面スクロール速度[i] -= 0.012;\r
58 \r
59                                                         if (this.db現在の譜面スクロール速度[i] < db譜面スクロールスピード)\r
60                                                         {\r
61                                                                 this.db現在の譜面スクロール速度[i] = db譜面スクロールスピード;\r
62                                                         }\r
63                                                 }\r
64                                                 this.n速度変更制御タイマ[i] += 2;\r
65                                         }\r
66                                 }\r
67                         }\r
68                         return 0;\r
69                 }\r
70 \r
71 \r
72                 // その他\r
73                 private STDGBSValue<long> n速度変更制御タイマ;\r
74         }\r
75 }\r