2 using System.Collections.Generic;
\r
5 using System.Diagnostics;
\r
7 using SlimDX.Direct3D9;
\r
11 internal class CStage結果 : CStage
\r
13 public STDGBVALUE<bool> b新記録スキル;
\r
14 public STDGBVALUE<bool> b新記録スコア;
\r
15 public STDGBVALUE<bool> b新記録ランク;
\r
16 public STDGBVALUE<float> fPerfect率;
\r
17 public STDGBVALUE<float> fGreat率;
\r
18 public STDGBVALUE<float> fGood率;
\r
19 public STDGBVALUE<float> fPoor率;
\r
20 public STDGBVALUE<float> fMiss率;
\r
21 public STDGBVALUE<bool> bオート; // #23596 10.11.16 add ikanick
\r
22 // 10.11.17 change (int to bool) ikanick
\r
23 public STDGBVALUE<CScoreIni.ERANK> nランク値;
\r
24 public STDGBVALUE<int> n演奏回数;
\r
25 public CScoreIni.ERANK n総合ランク値;
\r
26 public CChip[] r空うちドラムチップ;
\r
27 public STDGBVALUE<CScoreIni.C演奏記録> st演奏記録;
\r
31 this.st演奏記録.Drums = new CScoreIni.C演奏記録();
\r
32 this.st演奏記録.Guitar = new CScoreIni.C演奏記録();
\r
33 this.st演奏記録.Bass = new CScoreIni.C演奏記録();
\r
34 this.r空うちドラムチップ = new CChip[10];
\r
35 this.n総合ランク値 = CScoreIni.ERANK.UNKNOWN;
\r
36 this.nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };
\r
37 base.eステージID = CStage.Eステージ.結果;
\r
38 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
39 base.b活性化してない = true;
\r
40 base.list子Activities.Add(this.actResultImage = new CActResultImage());
\r
41 base.list子Activities.Add(this.actParameterPanel = new CActResultParameterPanel());
\r
42 base.list子Activities.Add(this.actRank = new CActResultRank());
\r
43 base.list子Activities.Add(this.actSongBar = new CActResultSongBar());
\r
44 base.list子Activities.Add(this.actOption = new CActオプションパネル());
\r
45 base.list子Activities.Add(this.actFI = new CActFIFOWhite());
\r
46 base.list子Activities.Add(this.actFO = new CActFIFOBlack());
\r
47 base.list子Activities.Add(this.actAVI = new CAct演奏AVI());
\r
49 this.actResultImage.actAVI = this.actAVI;
\r
52 public override void On活性化()
\r
54 Trace.TraceInformation("結果ステージを活性化します。");
\r
59 //---------------------
\r
60 this.eフェードアウト完了時の戻り値 = E戻り値.継続;
\r
61 this.bアニメが完了 = false;
\r
62 this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false; // #24609 2011.3.14 yyagi
\r
63 this.n最後に再生したHHのWAV番号 = -1;
\r
64 this.e最後に再生したHHのチャンネル番号 = Ech定義.Invalid;
\r
65 for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)
\r
67 this.b新記録スキル[i] = false;
\r
68 this.b新記録スコア[i] = false;
\r
69 this.b新記録ランク[i] = false;
\r
71 //---------------------
\r
75 //---------------------
\r
76 for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)
\r
78 this.nランク値[i] = CScoreIni.ERANK.UNKNOWN;
\r
79 this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f; // #28500 2011.5.24 yyagi
\r
81 ((i != E楽器パート.DRUMS) || (CDTXMania.Instance.DTX.bチップがある.Drums )) &&
\r
82 ((i != E楽器パート.GUITAR) || CDTXMania.Instance.DTX.bチップがある.Guitar)) &&
\r
83 ((i != E楽器パート.BASS) || CDTXMania.Instance.DTX.bチップがある.Bass))
\r
85 CScoreIni.C演奏記録 part = this.st演奏記録[i];
\r
86 bool bIsAutoPlay = true;
\r
90 bIsAutoPlay = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bDrums有効; // #35411 chnmr0 add Drums が有効でない場合 AUTO 扱いとして LastPlay 更新しない
\r
94 bIsAutoPlay = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bGuitar有効; // #35411 chnmr0 add
\r
98 bIsAutoPlay = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである || !CDTXMania.Instance.ConfigIni.bGuitar有効;
\r
101 this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数));
\r
102 this.fGreat率[i] = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数));
\r
103 this.fGood率[i] = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数));
\r
104 this.fPoor率[i] = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数));
\r
105 this.fMiss率[i] = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数));
\r
106 this.bオート[i] = bIsAutoPlay; // #23596 10.11.16 add ikanick そのパートがオートなら1
\r
107 // 10.11.17 change (int to bool) ikanick
\r
108 this.nランク値[i] = CScoreIni.tランク値を計算して返す(part);
\r
111 this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録);
\r
112 //---------------------
\r
115 #region [ .score.ini の作成と出力 ]
\r
116 //---------------------
\r
117 string str = CDTXMania.Instance.DTX.strファイル名の絶対パス + ".score.ini";
\r
118 CScoreIni ini = new CScoreIni(str);
\r
120 STDGBVALUE<bool> b今までにフルコンボしたことがある =
\r
121 new STDGBVALUE<bool>();
\r
123 for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)
\r
125 // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10)
\r
127 b今までにフルコンボしたことがある[i] =
\r
128 ini.stセクション.HiScore[i].bフルコンボである ||
\r
129 ini.stセクション.HiSkill[i].bフルコンボである;
\r
131 if (this.nランク値[i] >= 0 && ini.stファイル.BestRank[i] > this.nランク値[i])
\r
133 // #24459 2011.3.1 yyagi update BestRank
\r
134 this.b新記録ランク[i] = true;
\r
135 ini.stファイル.BestRank[i] = this.nランク値[i];
\r
139 if (this.st演奏記録[i].nスコア > ini.stセクション.HiScore[i].nスコア)
\r
141 this.b新記録スコア[i] = true;
\r
142 ini.stセクション.HiScore[i] = this.st演奏記録[i];
\r
143 CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.HiScoreDrums;
\r
144 if (i == E楽器パート.GUITAR)
\r
146 esect = CScoreIni.Eセクション種別.HiScoreGuitar;
\r
148 else if (i == E楽器パート.BASS)
\r
150 esect = CScoreIni.Eセクション種別.HiScoreBass;
\r
152 this.SaveGhost(esect); // #35411 chnmr0 add
\r
156 if (this.st演奏記録[i].db演奏型スキル値 > ini.stセクション.HiSkill[i].db演奏型スキル値)
\r
158 this.b新記録スキル[i] = true;
\r
159 ini.stセクション.HiSkill[i] = this.st演奏記録[i];
\r
160 CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.HiSkillDrums;
\r
161 if (i == E楽器パート.GUITAR)
\r
163 esect = CScoreIni.Eセクション種別.HiSkillGuitar;
\r
165 else if (i == E楽器パート.BASS)
\r
167 esect = CScoreIni.Eセクション種別.HiSkillBass;
\r
169 this.SaveGhost(esect); // #35411 chnmr0 add
\r
172 // ラストプレイ #23595 2011.1.9 ikanick
\r
173 // オートじゃなければプレイ結果を書き込む
\r
174 if (this.bオート[i] == false)
\r
176 ini.stセクション.LastPlay[i] = this.st演奏記録[i];
\r
177 CScoreIni.Eセクション種別 esect = CScoreIni.Eセクション種別.LastPlayDrums;
\r
178 if (i == E楽器パート.GUITAR)
\r
180 esect = CScoreIni.Eセクション種別.LastPlayGuitar;
\r
182 else if (i == E楽器パート.BASS)
\r
184 esect = CScoreIni.Eセクション種別.LastPlayBass;
\r
186 this.SaveGhost(esect); // #35411 chnmr0 add
\r
189 // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす
\r
190 // 11.02.05 bオート to t更新条件を取得する use ikanick
\r
191 STDGBVALUE<bool> b更新が必要か否か;
\r
192 b更新が必要か否か = CScoreIni.t更新条件を取得する();
\r
198 ini.stファイル.ClearCountDrums++;
\r
200 case E楽器パート.GUITAR:
\r
201 ini.stファイル.ClearCountGuitar++;
\r
204 ini.stファイル.ClearCountBass++;
\r
207 throw new Exception("クリア回数増加のk(0-2)が範囲外です。");
\r
210 //---------------------------------------------------------------------/
\r
212 if (CDTXMania.Instance.ConfigIni.bScoreIniを出力する)
\r
214 //---------------------
\r
217 #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi]
\r
218 if (CDTXMania.Instance.ConfigIni.bScoreIniを出力する)
\r
220 this.n演奏回数.Drums = ini.stファイル.PlayCountDrums;
\r
221 this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar;
\r
222 this.n演奏回数.Bass = ini.stファイル.PlayCountBass;
\r
225 #region [ 選曲画面の譜面情報の更新 ]
\r
226 //---------------------
\r
227 if (!CDTXMania.Instance.bコンパクトモード)
\r
229 Cスコア cスコア = CDTXMania.Instance.stage選曲.r確定されたスコア;
\r
230 STDGBVALUE<bool> b更新が必要か否か;
\r
231 b更新が必要か否か = CScoreIni.t更新条件を取得する();
\r
232 for (E楽器パート m = E楽器パート.DRUMS; m <= E楽器パート.BASS; m++)
\r
236 // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。
\r
237 // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11)
\r
238 cスコア.譜面情報.フルコンボ[m] = this.st演奏記録[m].bフルコンボである | b今までにフルコンボしたことがある[m];
\r
240 if (this.b新記録スキル[m])
\r
242 cスコア.譜面情報.最大スキル[m] = this.st演奏記録[m].db演奏型スキル値;
\r
245 if (this.b新記録ランク[m])
\r
247 cスコア.譜面情報.最大ランク[m] = this.nランク値[m];
\r
252 //---------------------
\r
255 #region [ #RESULTSOUND_xx の再生(あれば)]
\r
256 //---------------------
\r
257 CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録);
\r
259 if (rank == CScoreIni.ERANK.UNKNOWN) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
\r
261 rank = CScoreIni.ERANK.E;
\r
264 if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTSOUND[(int)rank]))
\r
266 CDTXMania.Instance.Skin.soundステージクリア音.t再生する();
\r
267 this.rResultSound = null;
\r
271 string str2 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTSOUND[(int)rank];
\r
274 this.rResultSound = CDTXMania.Instance.Sound管理.tサウンドを生成する(str2);
\r
278 Trace.TraceError("サウンドの生成に失敗しました。({0})", new object[] { str2 });
\r
279 this.rResultSound = null;
\r
282 //---------------------
\r
289 Trace.TraceInformation("結果ステージの活性化を完了しました。");
\r
294 // #35411 chnmr0 add
\r
295 private void SaveGhost(CScoreIni.Eセクション種別 sect)
\r
297 STDGBVALUE<bool> saveCond = new STDGBVALUE<bool>();
\r
298 saveCond.Drums = true;
\r
299 saveCond.Guitar = true;
\r
300 saveCond.Bass = true;
\r
302 foreach (CChip chip in CDTXMania.Instance.DTX.listChip)
\r
304 if (chip.bIsAutoPlayed)
\r
306 if (chip.eチャンネル番号 != Ech定義.Guitar_Wailing && chip.eチャンネル番号 != Ech定義.Bass_Wailing) // Guitar/Bass Wailing は OK
\r
308 saveCond[chip.e楽器パート] = false;
\r
312 for (E楽器パート instIndex = E楽器パート.DRUMS; instIndex <= E楽器パート.BASS; ++instIndex)
\r
314 saveCond[instIndex] &= CDTXMania.Instance.DTX.listAutoGhostLag.Drums == null;
\r
317 string directory = CDTXMania.Instance.DTX.strフォルダ名;
\r
318 string filename = CDTXMania.Instance.DTX.strファイル名 + ".";
\r
319 E楽器パート inst = E楽器パート.UNKNOWN;
\r
321 if (sect == CScoreIni.Eセクション種別.HiScoreDrums)
\r
323 filename += "hiscore.dr.ghost";
\r
324 inst = E楽器パート.DRUMS;
\r
326 else if (sect == CScoreIni.Eセクション種別.HiSkillDrums)
\r
328 filename += "hiskill.dr.ghost";
\r
329 inst = E楽器パート.DRUMS;
\r
331 if (sect == CScoreIni.Eセクション種別.HiScoreGuitar)
\r
333 filename += "hiscore.gt.ghost";
\r
334 inst = E楽器パート.GUITAR;
\r
336 else if (sect == CScoreIni.Eセクション種別.HiSkillGuitar)
\r
338 filename += "hiskill.gt.ghost";
\r
339 inst = E楽器パート.GUITAR;
\r
341 if (sect == CScoreIni.Eセクション種別.HiScoreBass)
\r
343 filename += "hiscore.bs.ghost";
\r
344 inst = E楽器パート.BASS;
\r
346 else if (sect == CScoreIni.Eセクション種別.HiSkillBass)
\r
348 filename += "hiskill.bs.ghost";
\r
349 inst = E楽器パート.BASS;
\r
351 else if (sect == CScoreIni.Eセクション種別.LastPlayDrums)
\r
353 filename += "lastplay.dr.ghost";
\r
354 inst = E楽器パート.DRUMS;
\r
356 else if (sect == CScoreIni.Eセクション種別.LastPlayGuitar)
\r
358 filename += "lastplay.gt.ghost";
\r
359 inst = E楽器パート.GUITAR;
\r
361 else if (sect == CScoreIni.Eセクション種別.LastPlayBass)
\r
363 filename += "lastplay.bs.ghost";
\r
364 inst = E楽器パート.BASS;
\r
367 if (inst == E楽器パート.UNKNOWN)
\r
373 foreach (DTXMania.CChip chip in CDTXMania.Instance.DTX.listChip)
\r
375 if (chip.e楽器パート == inst)
\r
381 if (saveCond[inst])
\r
383 using (FileStream fs = new FileStream(directory + "\\" + filename, FileMode.Create, FileAccess.Write))
\r
385 using (BinaryWriter bw = new BinaryWriter(fs))
\r
387 bw.Write((Int32)cnt);
\r
388 foreach (DTXMania.CChip chip in CDTXMania.Instance.DTX.listChip)
\r
390 if (chip.e楽器パート == inst)
\r
392 // -128 ms から 127 ms までのラグしか保存しない
\r
393 // その範囲を超えているラグはクランプ
\r
394 // ラグデータの 上位8ビットでそのチップの前でギター空打ちBADがあったことを示す
\r
395 int lag = chip.nLag;
\r
404 byte lower = (byte)(lag + 128);
\r
405 int upper = chip.extendInfoForGhost == false ? 1 : 0;
\r
406 bw.Write((short)((upper << 8) | lower));
\r
414 public override void On非活性化()
\r
416 if (this.rResultSound != null)
\r
418 CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.rResultSound);
\r
419 this.rResultSound = null;
\r
423 public override void OnManagedリソースの作成()
\r
425 if (!base.b活性化してない)
\r
427 this.tx背景 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult background.jpg"));
\r
428 this.tx上部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenResult header panel.png"), true);
\r
429 this.tx下部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenResult footer panel.png"), true);
\r
430 //this.txオプションパネル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\Screen option panels.png"));
\r
431 base.OnManagedリソースの作成();
\r
434 public override void OnManagedリソースの解放()
\r
436 if (!base.b活性化してない)
\r
438 if (this.ct登場用 != null)
\r
442 TextureFactory.tテクスチャの解放(ref this.tx背景);
\r
443 TextureFactory.tテクスチャの解放(ref this.tx上部パネル);
\r
444 TextureFactory.tテクスチャの解放(ref this.tx下部パネル);
\r
445 //TextureFactory.tテクスチャの解放(ref this.txオプションパネル);
\r
446 base.OnManagedリソースの解放();
\r
449 public override int On進行描画()
\r
451 if (!base.b活性化してない)
\r
454 if (base.b初めての進行描画)
\r
456 this.ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);
\r
457 this.actFI.tフェードイン開始();
\r
458 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
459 if (this.rResultSound != null)
\r
461 this.rResultSound.t再生を開始する();
\r
463 base.b初めての進行描画 = false;
\r
465 this.bアニメが完了 = true;
\r
466 if (this.ct登場用.b進行中)
\r
469 if (this.ct登場用.b終了値に達した)
\r
475 this.bアニメが完了 = false;
\r
481 if (this.tx背景 != null)
\r
483 this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);
\r
485 if (this.ct登場用.b進行中 && (this.tx上部パネル != null))
\r
487 double num2 = ((double)this.ct登場用.n現在の値) / 100.0;
\r
488 double num3 = Math.Sin(Math.PI / 2 * num2);
\r
489 num = ((int)(this.tx上部パネル.sz画像サイズ.Height * num3)) - this.tx上部パネル.sz画像サイズ.Height;
\r
495 if (this.tx上部パネル != null)
\r
497 this.tx上部パネル.t2D描画(CDTXMania.Instance.Device, 0, num * Scale.Y);
\r
499 if (this.tx下部パネル != null)
\r
501 this.tx下部パネル.t2D描画(CDTXMania.Instance.Device, 0, (SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height));
\r
503 this.actOption.On進行描画();
\r
504 if (this.actResultImage.On進行描画() == 0)
\r
506 this.bアニメが完了 = false;
\r
508 if (this.actParameterPanel.On進行描画() == 0)
\r
510 this.bアニメが完了 = false;
\r
512 if (this.actRank.On進行描画() == 0)
\r
514 this.bアニメが完了 = false;
\r
516 if (this.actSongBar.On進行描画() == 0)
\r
518 this.bアニメが完了 = false;
\r
520 if (base.eフェーズID == CStage.Eフェーズ.共通_フェードイン)
\r
522 if (this.actFI.On進行描画() != 0)
\r
524 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
527 else if ((base.eフェーズID == CStage.Eフェーズ.共通_フェードアウト)) //&& ( this.actFO.On進行描画() != 0 ) )
\r
529 return (int)this.eフェードアウト完了時の戻り値;
\r
531 #region [ #24609 2011.3.14 yyagi ランク更新or演奏型スキル更新時、リザルト画像をpngで保存する ]
\r
532 if (this.bアニメが完了 == true && this.bIsCheckedWhetherResultScreenShouldSaveOrNot == false // #24609 2011.3.14 yyagi; to save result screen in case BestRank or HiSkill.
\r
533 && CDTXMania.Instance.ConfigIni.bScoreIniを出力する
\r
534 && CDTXMania.Instance.ConfigIni.bIsAutoResultCapture) // #25399 2011.6.9 yyagi
\r
536 CheckAndSaveResultScreen(true);
\r
537 this.bIsCheckedWhetherResultScreenShouldSaveOrNot = true;
\r
543 if (CDTXMania.Instance.act現在入力を占有中のプラグイン == null)
\r
545 if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する && CDTXMania.Instance.ConfigIni.bDrums有効)
\r
547 for (int i = 0; i < 10; i++)
\r
549 List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(E楽器パート.DRUMS, (Eパッド)i);
\r
550 if ((events != null) && (events.Count > 0))
\r
552 foreach (STInputEvent event2 in events)
\r
558 CChip rChip = this.r空うちドラムチップ[i];
\r
564 rChip = this.r空うちドラムチップ[7];
\r
567 rChip = this.r空うちドラムチップ[9];
\r
572 rChip = this.r空うちドラムチップ[4];
\r
576 rChip = this.r空うちドラムチップ[8];
\r
580 rChip = this.r空うちドラムチップ[0];
\r
583 rChip = this.r空うちドラムチップ[9];
\r
588 rChip = this.r空うちドラムチップ[6];
\r
592 rChip = this.r空うちドラムチップ[0];
\r
595 rChip = this.r空うちドラムチップ[7];
\r
602 (rChip.eチャンネル番号 >= Ech定義.HiHatClose)) && (rChip.eチャンネル番号 <= Ech定義.LeftCymbal))
\r
604 int nLane = this.nチャンネル0Atoレーン07[rChip.eチャンネル番号 - Ech定義.HiHatClose];
\r
605 if ((nLane == 1) && (
\r
606 (rChip.eチャンネル番号 == Ech定義.HiHatClose) ||
\r
607 ((rChip.eチャンネル番号 == Ech定義.HiHatOpen) && (this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen))))
\r
609 CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生したHHのWAV番号);
\r
610 this.n最後に再生したHHのWAV番号 = rChip.n整数値_内部番号;
\r
611 this.e最後に再生したHHのチャンネル番号 = rChip.eチャンネル番号;
\r
613 CDTXMania.Instance.DTX.tチップの再生(rChip, CDTXMania.Instance.Timer.nシステム時刻, nLane, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);
\r
619 if (((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) && !this.bアニメが完了)
\r
621 this.actFI.tフェードイン完了(); // #25406 2011.6.9 yyagi
\r
622 this.actResultImage.tアニメを完了させる();
\r
623 this.actParameterPanel.tアニメを完了させる();
\r
624 this.actRank.tアニメを完了させる();
\r
625 this.actSongBar.tアニメを完了させる();
\r
628 #region [ #24609 2011.4.7 yyagi リザルト画面で[F12]を押下すると、リザルト画像をpngで保存する機能は、CDTXManiaに移管。 ]
\r
629 // if ( CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F12 ) &&
\r
630 // CDTXMania.Instance.ConfigIni.bScoreIniを出力する )
\r
632 // CheckAndSaveResultScreen(false);
\r
633 // this.bIsCheckedWhetherResultScreenShouldSaveOrNot = true;
\r
636 if (base.eフェーズID == CStage.Eフェーズ.共通_通常状態)
\r
638 if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))
\r
640 CDTXMania.Instance.Skin.sound取消音.t再生する();
\r
641 this.actFO.tフェードアウト開始();
\r
642 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
643 this.eフェードアウト完了時の戻り値 = E戻り値.完了;
\r
645 if (((CDTXMania.Instance.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.Instance.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) && this.bアニメが完了)
\r
647 CDTXMania.Instance.Skin.sound取消音.t再生する();
\r
648 // this.actFO.tフェードアウト開始();
\r
649 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
650 this.eフェードアウト完了時の戻り値 = E戻り値.完了;
\r
658 public enum E戻り値 : int
\r
667 #region [ private ]
\r
668 //-----------------
\r
669 private CCounter ct登場用;
\r
670 private E戻り値 eフェードアウト完了時の戻り値;
\r
671 private CActFIFOWhite actFI;
\r
672 private CActFIFOBlack actFO;
\r
673 private CActオプションパネル actOption;
\r
674 private CAct演奏AVI actAVI;
\r
675 private CActResultParameterPanel actParameterPanel;
\r
676 private CActResultRank actRank;
\r
677 private CActResultImage actResultImage;
\r
678 private CActResultSongBar actSongBar;
\r
679 private bool bアニメが完了;
\r
680 private bool bIsCheckedWhetherResultScreenShouldSaveOrNot; // #24509 2011.3.14 yyagi
\r
681 private readonly int[] nチャンネル0Atoレーン07;
\r
682 private int n最後に再生したHHのWAV番号;
\r
683 private Ech定義 e最後に再生したHHのチャンネル番号;
\r
684 private CSound rResultSound;
\r
685 //private CTexture txオプションパネル;
\r
686 private CTextureAf tx下部パネル;
\r
687 private CTextureAf tx上部パネル;
\r
688 private CTexture tx背景;
\r
690 #region [ #24609 リザルト画像をpngで保存する ] // #24609 2011.3.14 yyagi; to save result screen in case BestRank or HiSkill.
\r
692 /// リザルト画像のキャプチャと保存。
\r
693 /// 自動保存モード時は、ランク更新or演奏型スキル更新時に自動保存。
\r
694 /// 手動保存モード時は、ランクに依らず保存。
\r
696 /// <param name="bIsAutoSave">true=自動保存モード, false=手動保存モード</param>
\r
697 private void CheckAndSaveResultScreen(bool bIsAutoSave)
\r
699 string path = Path.GetDirectoryName(CDTXMania.Instance.DTX.strファイル名の絶対パス);
\r
700 string datetime = DateTime.Now.ToString("yyyyMMddHHmmss");
\r
703 // リザルト画像を自動保存するときは、dtxファイル名.yyMMddHHmmss_DRUMS_SS.png という形式で保存。
\r
704 for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)
\r
706 if (this.b新記録ランク[i] == true || this.b新記録スキル[i] == true)
\r
708 string strPart = ((E楽器パート)(i)).ToString();
\r
709 string strRank = ((CScoreIni.ERANK)(this.nランク値[i])).ToString();
\r
710 string strFullPath = CDTXMania.Instance.DTX.strファイル名の絶対パス + "." + datetime + "_" + strPart + "_" + strRank + ".png";
\r
711 //Surface.ToFile( pSurface, strFullPath, ImageFileFormat.Png );
\r
712 CDTXMania.Instance.SaveResultScreen(strFullPath);
\r
718 //-----------------
\r