OSDN Git Service

#23596 ベースのみの譜面を再生したとき、クリア回数の記録が正しく行われない不具合の修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CAct演奏Drumsグラフ.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using System.Drawing;\r
6 using SlimDX;\r
7 using FDK;\r
8 \r
9 namespace DTXMania\r
10 {\r
11         internal class CAct演奏Drumsグラフ : CActivity\r
12         {\r
13         // #24074 2011.01.23 ikanick グラフの描画\r
14         // 実装内容\r
15         // ・左を現在、右を目標\r
16         // ・基準線(60,70,80,90,100%)を超えると線が黄色くなる(元は白)\r
17         // ・目標を超えると現在が光る\r
18         // ・オート時には描画しない\r
19         // 要望・実装予定\r
20         // ・グラフを波打たせるなどの視覚の向上\r
21 \r
22 \r
23                 // プロパティ\r
24 \r
25         public double dbグラフ値現在_渡\r
26         {\r
27             get\r
28             {\r
29                 return this.dbグラフ値現在;\r
30             }\r
31             set\r
32             {\r
33                 this.dbグラフ値現在 = value;\r
34             }\r
35         }\r
36         public double dbグラフ値目標_渡\r
37         {\r
38             get\r
39             {\r
40                 return this.dbグラフ値目標;\r
41             }\r
42             set\r
43             {\r
44                 this.dbグラフ値目標 = value;\r
45             }\r
46         }\r
47                 \r
48                 // コンストラクタ\r
49 \r
50                 public CAct演奏Drumsグラフ()\r
51                 {\r
52                         base.b活性化してない = true;\r
53                 }\r
54 \r
55 \r
56                 // CActivity 実装\r
57 \r
58                 public override void On活性化()\r
59         {\r
60             this.dbグラフ値目標 = 80f;\r
61             this.dbグラフ値現在 = 0f;\r
62                         base.On活性化();\r
63                 }\r
64                 public override void On非活性化()\r
65                 {\r
66                         base.On非活性化();\r
67                 }\r
68                 public override void OnManagedリソースの作成()\r
69                 {\r
70                         if( !base.b活性化してない )\r
71                         {\r
72                 this.txグラフ = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay graph.png"));\r
73                                 base.OnManagedリソースの作成();\r
74                         }\r
75                 }\r
76                 public override void OnManagedリソースの解放()\r
77                 {\r
78                         if( !base.b活性化してない )\r
79                         {\r
80                                 CDTXMania.tテクスチャの解放( ref this.txグラフ );\r
81                                 base.OnManagedリソースの解放();\r
82                         }\r
83                 }\r
84                 public override int On進行描画()\r
85                 {\r
86                         if( !base.b活性化してない )\r
87                         {\r
88                                 if( base.b初めての進行描画 )\r
89                                 {\r
90                                         base.b初めての進行描画 = false;\r
91                 }\r
92                 // 背景暗幕\r
93                 if (this.txグラフ != null)\r
94                 {\r
95                     this.txグラフ.n透明度 = 128;\r
96                     this.txグラフ.vc拡大縮小倍率 = new Vector3(38f, 230f, 1f);\r
97                 }\r
98                 Rectangle rectangle = new Rectangle(22, 0, 1, 1);\r
99                 this.txグラフ.t2D描画(CDTXMania.app.Device, 345, 88, rectangle);\r
100                 \r
101                 // 基準線\r
102                 if (this.txグラフ != null)\r
103                 {\r
104                     this.txグラフ.n透明度 = 192;\r
105                     this.txグラフ.vc拡大縮小倍率 = new Vector3(38f, 1f, 1f);\r
106                 }\r
107                 for (int i = 0; i < 4; i++)\r
108                 {\r
109                     // 基準線を越えたら黄色くなる\r
110                     if (this.dbグラフ値現在 >= (100 - i * 10))\r
111                     {\r
112                         rectangle = new Rectangle(21, 0, 1, 1);\r
113                     }\r
114                     else\r
115                     {\r
116                         rectangle = new Rectangle(20, 0, 1, 1);\r
117                     }\r
118                     this.txグラフ.t2D描画(CDTXMania.app.Device, 345, 88+i*23, rectangle);\r
119                 }\r
120 \r
121                 // グラフ\r
122                 // --現在値\r
123                 if (this.txグラフ != null)\r
124                 {\r
125                     this.txグラフ.n透明度 = 192;\r
126                     this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
127                 }\r
128                 rectangle = new Rectangle(0, 0, 10, (int)(230f * this.dbグラフ値現在 / 100));\r
129                 this.txグラフ.t2D描画(CDTXMania.app.Device, 350, 318 - (int)(230f * this.dbグラフ値現在 / 100), rectangle);\r
130                 if (dbグラフ値現在 >= dbグラフ値目標)\r
131                 {\r
132                     this.txグラフ.vc拡大縮小倍率 = new Vector3(1.2f, 1f, 1f);\r
133                     this.txグラフ.n透明度 = 64;\r
134                     this.txグラフ.b加算合成 = true;\r
135                     this.txグラフ.t2D描画(CDTXMania.app.Device, 349, 318 - (int)(230f * this.dbグラフ値現在 / 100), rectangle);\r
136                 }\r
137                 // --目標値\r
138                 if (this.txグラフ != null)\r
139                 {\r
140                     this.txグラフ.n透明度 = 192;\r
141                     this.txグラフ.vc拡大縮小倍率 = new Vector3(1f, 1f, 1f);\r
142                     this.txグラフ.b加算合成 = false;\r
143                 }\r
144                 rectangle = new Rectangle(10, 0, 10, (int)(230f * this.dbグラフ値目標 / 100));\r
145                 this.txグラフ.t2D描画(CDTXMania.app.Device, 368, 318 - (int)(230f * this.dbグラフ値目標 / 100), rectangle);\r
146                 \r
147                         }\r
148                         return 0;\r
149                 }\r
150 \r
151 \r
152                 // その他\r
153 \r
154                 #region [ private ]\r
155                 //----------------\r
156         private double dbグラフ値目標;\r
157         private double dbグラフ値現在;\r
158                 private CTexture txグラフ;\r
159                 //-----------------\r
160                 #endregion\r
161         }\r
162 }\r