Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /trunk/DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultRank.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 290 - (hide annotations) (download)
Thu Jan 30 03:21:20 2014 UTC (10 years, 2 months ago) by kairera0467
File size: 20566 byte(s)
#xxxxx ギターベースのHID/SUDアニメーションの実装。
#xxxxx ベース側のウェイリングマークがリバース時に正しい位置に来ないまま処理されていたのを少し改善。
#xxxxx ベースR、Gのレーンフラッシュ座標の修正。
#xxxxx 構造のミスで一瞬だけFC、EXCマークが変な位置に描画されるバグの修正。
1 kairera0467 2 using System;
2     using System.Collections.Generic;
3     using System.Text;
4     using System.Drawing;
5 ron1120 237 using System.IO;
6 kairera0467 2 using SlimDX;
7     using FDK;
8    
9     namespace DTXMania
10     {
11     internal class CActResultRank : CActivity
12     {
13 ron1120 237
14 kairera0467 2 // コンストラクタ
15    
16     public CActResultRank()
17     {
18 ron1120 237 base.b活性化してない = true;
19 kairera0467 2 }
20    
21     // メソッド
22    
23     public void tアニメを完了させる()
24     {
25     this.ctランク表示.n現在の値 = this.ctランク表示.n終了値;
26 ron1120 237 this.ct表示用.n現在の値 = this.ct表示用.n終了値;
27     }
28 kairera0467 2
29     // CActivity 実装
30    
31     public override void On活性化()
32     {
33 ron1120 232
34     #region [ 本体位置 ]
35 ron1120 236
36     int nX = 138;
37     int nY = 8;
38    
39     int nX = 850;
40     int nY = 420;
41    
42 ron1120 238 this.n本体0X = 0;
43     this.n本体0Y = 0;
44    
45 ron1120 232 this.n本体1X = 0;
46     this.n本体1Y = 0;
47    
48     this.n本体2X = 0;
49     this.n本体2Y = 0;
50    
51     if (CDTXMania.ConfigIni.bDrums有効)
52     {
53 ron1120 238 this.n本体0X = nX;
54     this.n本体0Y = nY;
55 ron1120 232 }
56     else if (CDTXMania.ConfigIni.bGuitar有効)
57     {
58     if (CDTXMania.DTX.bチップがある.Guitar)
59     {
60 ron1120 236 if (CDTXMania.ConfigIni.bIsSwappedGuitarBass)
61     {
62     this.n本体1X = nX;
63     this.n本体1Y = nY;
64     }
65     else
66     {
67     this.n本体1X = nX;
68     this.n本体1Y = nY;
69     }
70 ron1120 232 }
71    
72     if (CDTXMania.DTX.bチップがある.Bass)
73     {
74 ron1120 236 if (CDTXMania.ConfigIni.bIsSwappedGuitarBass)
75     {
76     this.n本体2X = nX;
77     this.n本体2Y = nY;
78     }
79     else
80     {
81     this.n本体2X = nX;
82     this.n本体2Y = nY;
83     }
84 ron1120 232 }
85    
86     }
87     #endregion
88    
89 ron1120 237 this.sdDTXで指定されたフルコンボ音 = null;
90     this.bフルコンボ音再生済み = false;
91     this.bエクセレント音再生済み = false;
92     base.On活性化();
93 kairera0467 2 }
94     public override void On非活性化()
95     {
96     if( this.ctランク表示 != null )
97     {
98     this.ctランク表示 = null;
99     }
100 ron1120 237 if (this.ct表示用 != null)
101     {
102     this.ct表示用 = null;
103     }
104     if (this.sdDTXで指定されたフルコンボ音 != null)
105     {
106     CDTXMania.Sound管理.tサウンドを破棄する(this.sdDTXで指定されたフルコンボ音);
107     this.sdDTXで指定されたフルコンボ音 = null;
108     }
109     base.On非活性化();
110 kairera0467 2 }
111     public override void OnManagedリソスの作成()
112     {
113     if( !base.b活性化してない )
114     {
115 ron1120 237
116     this.txFullCombo = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult fullcombo.png"));
117     this.txExcellent = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult Excellent.png"));
118    
119 kairera0467 110 if (CDTXMania.ConfigIni.bDrums有効)
120     {
121 ron1120 238 switch (CDTXMania.stage結果.nランク値.Drums)
122 kairera0467 110 {
123     case 0:
124 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
125 kairera0467 110 break;
126 kairera0467 2
127 kairera0467 110 case 1:
128 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankS.png"));
129 kairera0467 110 break;
130 kairera0467 2
131 kairera0467 110 case 2:
132 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankA.png"));
133 kairera0467 110 break;
134 kairera0467 2
135 kairera0467 110 case 3:
136 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankB.png"));
137 kairera0467 110 break;
138 kairera0467 2
139 kairera0467 110 case 4:
140 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankC.png"));
141 kairera0467 110 break;
142 kairera0467 2
143 kairera0467 110 case 5:
144 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankD.png"));
145 kairera0467 110 break;
146 kairera0467 2
147 kairera0467 110 case 6:
148     case 99: // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
149 ron1120 238 this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
150 ron1120 240 if (CDTXMania.ConfigIni.bドラムが全部オトプレイである)
151     this.txランク文字0P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
152 kairera0467 110 break;
153 kairera0467 2
154 kairera0467 110 default:
155 ron1120 238 this.txランク文字0P = null;
156 kairera0467 110 break;
157     }
158     }
159 ron1120 232 else if( CDTXMania.ConfigIni.bGuitar有効 )
160 kairera0467 110 {
161 kairera0467 179 switch( CDTXMania.stage結果.nランク値.Guitar )
162 kairera0467 110 {
163     case 0:
164 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
165 kairera0467 110 break;
166    
167     case 1:
168 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankS.png"));
169 kairera0467 110 break;
170    
171     case 2:
172 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankA.png"));
173 kairera0467 110 break;
174    
175     case 3:
176 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankB.png"));
177 kairera0467 110 break;
178    
179     case 4:
180 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankC.png"));
181 kairera0467 110 break;
182    
183     case 5:
184 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankD.png"));
185 kairera0467 110 break;
186    
187     case 6:
188     case 99: // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
189 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_rankE.png" ) );
190 kairera0467 194 if( CDTXMania.ConfigIni.bギタが全部オトプレイである )
191 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_rankSS.png" ) );
192 kairera0467 110 break;
193    
194     default:
195 ron1120 236 this.txランク文字1P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
196 kairera0467 110 break;
197     }
198     switch (CDTXMania.stage結果.nランク値.Bass)
199     {
200     case 0:
201     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
202     break;
203    
204     case 1:
205     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankS.png"));
206     break;
207    
208     case 2:
209     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankA.png"));
210     break;
211    
212     case 3:
213     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankB.png"));
214     break;
215    
216     case 4:
217     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankC.png"));
218     break;
219    
220     case 5:
221     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankD.png"));
222     break;
223    
224     case 6:
225     case 99: // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
226     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
227 ron1120 232 if (CDTXMania.ConfigIni.bスが全部オトプレイである)
228     this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
229 kairera0467 110 break;
230    
231     default:
232 ron1120 232 this.txランク文字2P = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
233 kairera0467 110 break;
234     }
235     }
236 kairera0467 2 base.OnManagedリソスの作成();
237     }
238     }
239     public override void OnManagedリソスの解放()
240     {
241     if( !base.b活性化してない )
242     {
243 ron1120 237 CDTXMania.tテクスチャの解放(ref this.txFullCombo);
244     CDTXMania.tテクスチャの解放(ref this.txExcellent);
245 ron1120 238 CDTXMania.tテクスチャの解放(ref this.txランク文字0P);
246 ron1120 237 CDTXMania.tテクスチャの解放(ref this.txランク文字1P);
247 kairera0467 110 CDTXMania.tテクスチャの解放( ref this.txランク文字2P );
248 kairera0467 2 base.OnManagedリソスの解放();
249     }
250     }
251     public override int On進行描画()
252     {
253     if( base.b活性化してない )
254     {
255     return 0;
256     }
257     if( base.b初めての進行描画 )
258     {
259     this.ctランク表示 = new CCounter(0, 0x3e8, 2, CDTXMania.Timer);
260 ron1120 237 this.ct表示用 = new CCounter(0, 1000, 3, CDTXMania.Timer);
261     base.b初めての進行描画 = false;
262 kairera0467 2 }
263     this.ctランク表示.t進行();
264 ron1120 237 this.ct表示用.t進行();
265     if (this.ctランク表示.n現在の値 >= 500)
266 kairera0467 2 {
267     double num2 = ( (double) ( this.ctランク表示.n現在の値 - 500 ) ) / 500.0;
268 ron1120 238 if (this.txランク文字0P != null && this.n本体0Y != 0)
269 kairera0467 2 {
270 ron1120 238 this.txランク文字0P.t2D描画(CDTXMania.app.Device, this.n本体0X, this.n本体0Y, new Rectangle(0, 0, (int)((double)txランク文字0P.sz画像サイズ.Width * num2), this.txランク文字0P.sz画像サイズ.Height));
271     }
272     if (this.txランク文字1P != null && this.n本体1Y != 0)
273     {
274 ron1120 236 this.txランク文字1P.t2D描画(CDTXMania.app.Device, this.n本体1X, this.n本体1Y, new Rectangle(0, 0, (int)((double)txランク文字1P.sz画像サイズ.Width * num2), this.txランク文字1P.sz画像サイズ.Height));
275 kairera0467 2 }
276 ron1120 232 if ( this.txランク文字2P != null && this.n本体2Y != 0 )
277 kairera0467 110 {
278 ron1120 238 this.txランク文字2P.t2D描画(CDTXMania.app.Device, this.n本体2X, this.n本体2Y, new Rectangle(0, 0, (int)((double)txランク文字2P.sz画像サイズ.Width * num2), this.txランク文字2P.sz画像サイズ.Height));
279 kairera0467 110 }
280 kairera0467 2 }
281 ron1120 237
282 ron1120 240 int[] x = new int[3];
283     int[] y = new int[3];
284    
285     x[0] = n本体0X;
286     x[1] = n本体1X;
287     x[2] = n本体2X;
288    
289     y[0] = n本体0Y;
290     y[1] = n本体1Y;
291     y[2] = n本体2Y;
292    
293 ron1120 237 #region [ フルコンボ ]
294 kairera0467 290 for (int j = 0; j < 3; j++)
295     {
296    
297     if (this.ct表示用.n現在の値 >= 900)
298 ron1120 237 {
299 ron1120 240 int num14 = 82 + x[j];
300     int num15 = 152 + y[j];
301 ron1120 237
302 ron1120 240 if ( x[j] != 0 )
303 ron1120 237 {
304 ron1120 238 if (CDTXMania.stage結果.st演奏記録[j].nPerfect == CDTXMania.stage結果.st演奏記録[j].n全チップ数)
305 ron1120 237 {
306     if (this.ct表示用.b終了値に達した)
307     {
308     if (this.txExcellent != null)
309     {
310     this.txExcellent.t2D描画(CDTXMania.app.Device, num14, num15);
311     }
312     if (!this.bエクセレント音再生済み)
313     {
314     if (((CDTXMania.DTX.SOUND_FULLCOMBO != null) && (CDTXMania.DTX.SOUND_FULLCOMBO.Length > 0)) && File.Exists(CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.SOUND_FULLCOMBO))
315     {
316     try
317     {
318     if (this.sdDTXで指定されたフルコンボ音 != null)
319     {
320     CDTXMania.Sound管理.tサウンドを破棄する(this.sdDTXで指定されたフルコンボ音);
321     this.sdDTXで指定されたフルコンボ音 = null;
322     }
323     this.sdDTXで指定されたフルコンボ音 = CDTXMania.Sound管理.tサウンドを生成する(CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.SOUND_FULLCOMBO);
324     if (this.sdDTXで指定されたフルコンボ音 != null)
325     {
326     this.sdDTXで指定されたフルコンボ音.t再生を開始する();
327     }
328     }
329     catch
330     {
331     }
332     }
333     else
334     {
335     CDTXMania.Skin.soundエクセレント音.t再生する();
336     }
337     this.bエクセレント音再生済み = true;
338     }
339     }
340     else
341     {
342     double num12 = ((double)(this.ct表示用.n現在の値 - 900)) / 100.0;
343     float num13 = (float)(1.1 - 0.1);
344     if (this.txExcellent != null)
345     {
346     this.txExcellent.vc拡大縮小倍率 = new Vector3(num13, num13, 1f);
347     this.txExcellent.n透明度 = (int)(255.0 * num12);
348     this.txExcellent.t2D描画(CDTXMania.app.Device, num14, num15);
349     }
350     }
351     }
352 ron1120 238 else if (CDTXMania.stage結果.st演奏記録[j].bフルコンボである && CDTXMania.stage結果.st演奏記録[j].nPerfect != CDTXMania.stage結果.st演奏記録[j].n全チップ数)
353 ron1120 237 {
354     if (this.ct表示用.b終了値に達した)
355     {
356     if (this.txFullCombo != null)
357     {
358     this.txFullCombo.t2D描画(CDTXMania.app.Device, num14, num15);
359     }
360     if (!this.bフルコンボ音再生済み)
361     {
362     if (((CDTXMania.DTX.SOUND_FULLCOMBO != null) && (CDTXMania.DTX.SOUND_FULLCOMBO.Length > 0)) && File.Exists(CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.SOUND_FULLCOMBO))
363     {
364     try
365     {
366     if (this.sdDTXで指定されたフルコンボ音 != null)
367     {
368     CDTXMania.Sound管理.tサウンドを破棄する(this.sdDTXで指定されたフルコンボ音);
369     this.sdDTXで指定されたフルコンボ音 = null;
370     }
371     this.sdDTXで指定されたフルコンボ音 = CDTXMania.Sound管理.tサウンドを生成する(CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.SOUND_FULLCOMBO);
372     if (this.sdDTXで指定されたフルコンボ音 != null)
373     {
374     this.sdDTXで指定されたフルコンボ音.t再生を開始する();
375     }
376     }
377     catch
378     {
379     }
380     }
381     else
382     {
383     CDTXMania.Skin.soundフルコンボ音.t再生する();
384     }
385     this.bフルコンボ音再生済み = true;
386     }
387     }
388     else
389     {
390     double num12 = ((double)(this.ct表示用.n現在の値 - 900)) / 100.0;
391     float num13 = (float)(1.1 - 0.1);
392     if (this.txFullCombo != null)
393     {
394     this.txFullCombo.vc拡大縮小倍率 = new Vector3(num13, num13, 1f);
395     this.txFullCombo.n透明度 = (int)(255.0 * num12);
396 ron1120 240 num14 = x[j] + ((int)((this.txFullCombo.sz画像サイズ.Width * (1f - num13)) / 2f));
397     num15 = y[j] + ((int)((this.txFullCombo.sz画像サイズ.Height * (1f - num13)) / 2f));
398    
399 ron1120 237 this.txFullCombo.t2D描画(CDTXMania.app.Device, num14, num15);
400     }
401     }
402     }
403     }
404     }
405     }
406     #endregion
407    
408 kairera0467 2 if( !this.ctランク表示.b終了値に達した )
409     {
410     return 0;
411     }
412     return 1;
413     }
414    
415    
416     // その他
417    
418     #region [ private ]
419     //-----------------
420 ron1120 237 private bool bフルコンボ音再生済み;
421     private bool bエクセレント音再生済み;
422     private CCounter ctランク表示;
423     private CCounter ct表示用;
424 ron1120 238 private int n本体0X;
425     private int n本体0Y;
426 ron1120 237 private int n本体1X;
427 ron1120 232 private int n本体1Y;
428     private int n本体2X;
429     private int n本体2Y;
430 ron1120 238 private CTexture txランク文字0P;
431 ron1120 236 private CTexture txランク文字1P;
432 kairera0467 110 private CTexture txランク文字2P;
433 ron1120 237 private CSound sdDTXで指定されたフルコンボ音;
434     private CTexture txExcellent;
435     private CTexture txFullCombo;
436     //-----------------
437 kairera0467 2 #endregion
438 ron1120 240
439 kairera0467 2 }
440     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26