2 using System.Collections.Generic;
\r
4 using System.Diagnostics;
\r
6 using System.Drawing;
\r
8 using SharpDX.Direct3D9;
\r
11 using Rectangle = System.Drawing.Rectangle;
\r
15 internal class CActResultImage : CActivity
\r
21 CTexture r表示するリザルト画像;
\r
25 CTexture txリザルト画像がないときの画像;
\r
27 public void tアニメを完了させる()
\r
29 ct登場用.n現在の値 = ct登場用.n終了値;
\r
31 public CAct演奏AVI actAVI
\r
37 public override void On活性化()
\r
44 actAVI.bIsPreviewMovie = true;
\r
48 public override void On非活性化()
\r
66 public override void OnManagedリソースの作成()
\r
70 txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult resultimage panel.png"));
\r
71 txリザルト画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"));
\r
72 base.OnManagedリソースの作成();
\r
73 actAVI.OnManagedリソースの作成();
\r
77 public override void OnManagedリソースの解放()
\r
81 TextureFactory.tテクスチャの解放(ref txパネル本体);
\r
82 TextureFactory.tテクスチャの解放(ref txリザルト画像);
\r
83 TextureFactory.tテクスチャの解放(ref txリザルト画像がないときの画像);
\r
84 base.OnManagedリソースの解放();
\r
85 actAVI.OnManagedリソースの解放();
\r
88 public override unsafe int On進行描画()
\r
94 if (CDTXMania.Instance.ConfigIni.bStoicMode)
\r
96 r表示するリザルト画像 = txリザルト画像がないときの画像;
\r
98 else if (!tリザルト動画の指定があれば構築する() &&
\r
99 !tリザルト画像の指定があれば構築する() &&
\r
100 !tプレビュー動画の指定があれば構築する() &&
\r
101 !tプレビュー画像の指定があれば構築する() &&
\r
102 !t背景画像があればその一部からリザルト画像を構築する())
\r
104 r表示するリザルト画像 = txリザルト画像がないときの画像;
\r
107 ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);
\r
111 if (ct登場用.b終了値に達した)
\r
118 double num3 = ((double)ct登場用.n現在の値) / 100.0;
\r
119 double num4 = Math.Cos((1.5 + (0.5 * num3)) * Math.PI);
\r
121 n本体Y = 0x3f - ((int)(((txパネル本体 != null) ?
\r
122 ((double)txパネル本体.sz画像サイズ.Height) : ((double)0)) * (1.0 - (num4 * num4))));
\r
124 if (txパネル本体 != null)
\r
127 CDTXMania.Instance.Device,
\r
132 int x = (int)((n本体X + 17) * Scale.X);
\r
133 int y = (int)((n本体Y + 16) * Scale.Y);
\r
136 actAVI.t進行描画(x, y, 612, 605);
\r
138 #region [ プレビュー画像表示 ]
\r
139 else if (r表示するリザルト画像 != null)
\r
141 CPreviewMagnifier cmg = new CPreviewMagnifier(CPreviewMagnifier.EPreviewType.MusicSelect);
\r
142 cmg.GetMagnifier(r表示するリザルト画像.sz画像サイズ.Width, r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f);
\r
144 r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;
\r
145 r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;
\r
146 r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;
\r
147 x += (int)((612 - cmg.width * cmg.magX) / 2);
\r
148 y += (int)((605 - cmg.height * cmg.magY) / 2);
\r
149 r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);
\r
154 if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))
\r
156 CDTXMania.Instance.act文字コンソール.tPrint(
\r
157 (int)((n本体X + 0x12) * Scale.X),
\r
158 (int)((n本体Y - 1) * Scale.Y),
\r
159 C文字コンソール.Eフォント種別.赤細,
\r
160 CDTXMania.Instance.DTX.GENRE
\r
163 if (!ct登場用.b終了値に達した)
\r
172 private bool t背景画像があればその一部からリザルト画像を構築する()
\r
174 string strBackground = CDTXMania.Instance.DTX.BACKGROUND;
\r
175 if (string.IsNullOrEmpty(strBackground))
\r
177 strBackground = CDTXMania.Instance.DTX.BACKGROUND_GR;
\r
179 if (string.IsNullOrEmpty(strBackground))
\r
183 TextureFactory.tテクスチャの解放(ref txリザルト画像);
\r
184 r表示するリザルト画像 = null;
\r
185 strBackground = CDTXMania.Instance.DTX.strフォルダ名 + strBackground;
\r
186 if (!File.Exists(strBackground))
\r
190 using (Bitmap image = new Bitmap(strBackground))
\r
192 using (Bitmap bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height))
\r
194 using (Graphics graphics = Graphics.FromImage(bitmap2))
\r
197 for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)
\r
199 for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)
\r
201 graphics.DrawImage(image, x, i, image.Width, image.Height);
\r
205 using (Bitmap bitmap3 = new Bitmap(0xcc, 0x10d))
\r
207 using (Graphics graphics = Graphics.FromImage(bitmap3))
\r
209 graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);
\r
211 txリザルト画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);
\r
214 r表示するリザルト画像 = txリザルト画像;
\r
219 private bool tプレビュー画像の指定があれば構築する()
\r
221 if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREIMAGE))
\r
225 TextureFactory.tテクスチャの解放(ref txリザルト画像);
\r
226 r表示するリザルト画像 = null;
\r
227 string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREIMAGE;
\r
228 if (!File.Exists(path))
\r
230 Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });
\r
233 txリザルト画像 = TextureFactory.tテクスチャの生成(path);
\r
234 r表示するリザルト画像 = txリザルト画像;
\r
235 return (r表示するリザルト画像 != null);
\r
238 private bool tプレビュー動画の指定があれば構築する()
\r
240 if (!CDTXMania.Instance.ConfigIni.bAVI)
\r
245 if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREMOVIE))
\r
249 strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREMOVIE;
\r
250 if (!File.Exists(this.strAVIファイル名))
\r
252 Trace.TraceWarning("プレビュー動画のファイルが存在しません。({0})", strAVIファイル名);
\r
262 rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);
\r
263 rAVI.OnDeviceCreated();
\r
264 actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);
\r
268 Trace.TraceError("プレビュー動画の生成に失敗しました。({0})", strAVIファイル名);
\r
274 private bool tリザルト画像の指定があれば構築する()
\r
276 CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);
\r
277 if (rank == CScoreIni.ERANK.UNKNOWN) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
\r
279 rank = CScoreIni.ERANK.E;
\r
281 if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank]))
\r
285 TextureFactory.tテクスチャの解放(ref txリザルト画像);
\r
286 r表示するリザルト画像 = null;
\r
287 string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank];
\r
288 if (!File.Exists(path))
\r
290 Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });
\r
293 txリザルト画像 = TextureFactory.tテクスチャの生成(path);
\r
294 r表示するリザルト画像 = this.txリザルト画像;
\r
295 return (this.r表示するリザルト画像 != null);
\r
298 private bool tリザルト動画の指定があれば構築する()
\r
300 if (!CDTXMania.Instance.ConfigIni.bAVI)
\r
304 CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);
\r
305 // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
\r
306 if (rank == CScoreIni.ERANK.UNKNOWN)
\r
308 rank = CScoreIni.ERANK.E;
\r
311 if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank]))
\r
315 strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank];
\r
316 if (!File.Exists(this.strAVIファイル名))
\r
318 Trace.TraceWarning("リザルト動画のファイルが存在しません。({0})", this.strAVIファイル名);
\r
328 rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);
\r
329 rAVI.OnDeviceCreated();
\r
330 actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);
\r
334 Trace.TraceError("リザルト動画の生成に失敗しました。({0})", this.strAVIファイル名);
\r