+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Diagnostics;\r
-using System.IO;\r
-using System.Drawing;\r
-using SharpDX;\r
-using SharpDX.Direct3D9;\r
-using FDK;\r
-\r
-using Rectangle = System.Drawing.Rectangle;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CActResultImage : CActivity\r
- {\r
- CDTX.CAVI rAVI;\r
- CCounter ct登場用;\r
- int n本体X;\r
- int n本体Y;\r
- CTexture r表示するリザルト画像;\r
- string strAVIファイル名;\r
- CTexture txパネル本体;\r
- CTexture txリザルト画像;\r
- CTexture txリザルト画像がないときの画像;\r
-\r
- public void tアニメを完了させる()\r
- {\r
- ct登場用.n現在の値 = ct登場用.n終了値;\r
- }\r
- public CAct演奏AVI actAVI\r
- {\r
- get;\r
- set;\r
- }\r
-\r
- public override void On活性化()\r
- {\r
- if (b活性化してない)\r
- {\r
- n本体X = 4;\r
- n本体Y = 0x3f;\r
- base.On活性化();\r
- actAVI.bIsPreviewMovie = true;\r
- actAVI.On活性化();\r
- }\r
- }\r
- public override void On非活性化()\r
- {\r
- if (b活性化してる)\r
- {\r
- if (ct登場用 != null)\r
- {\r
- ct登場用 = null;\r
- }\r
- if (rAVI != null)\r
- {\r
- rAVI.Dispose();\r
- rAVI = null;\r
- }\r
- base.On非活性化();\r
- actAVI.On非活性化();\r
- }\r
- }\r
-\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (b活性化してる)\r
- {\r
- txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult resultimage panel.png"));\r
- txリザルト画像がないときの画像 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect preimage default.png"));\r
- base.OnManagedリソースの作成();\r
- actAVI.OnManagedリソースの作成();\r
- }\r
- }\r
-\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (b活性化してる)\r
- {\r
- TextureFactory.tテクスチャの解放(ref txパネル本体);\r
- TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
- TextureFactory.tテクスチャの解放(ref txリザルト画像がないときの画像);\r
- base.OnManagedリソースの解放();\r
- actAVI.OnManagedリソースの解放();\r
- }\r
- }\r
- public override unsafe int On進行描画()\r
- {\r
- if (b活性化してる)\r
- {\r
- if (b初めての進行描画)\r
- {\r
- if (CDTXMania.Instance.ConfigIni.bStoicMode)\r
- {\r
- r表示するリザルト画像 = txリザルト画像がないときの画像;\r
- }\r
- else if (!tリザルト動画の指定があれば構築する() &&\r
- !tリザルト画像の指定があれば構築する() &&\r
- !tプレビュー動画の指定があれば構築する() &&\r
- !tプレビュー画像の指定があれば構築する() &&\r
- !t背景画像があればその一部からリザルト画像を構築する())\r
- {\r
- r表示するリザルト画像 = txリザルト画像がないときの画像;\r
- }\r
-\r
- ct登場用 = new CCounter(0, 100, 5, CDTXMania.Instance.Timer);\r
- b初めての進行描画 = false;\r
- }\r
- ct登場用.t進行();\r
- if (ct登場用.b終了値に達した)\r
- {\r
- n本体X = 4;\r
- n本体Y = 0x3f;\r
- }\r
- else\r
- {\r
- double num3 = ((double)ct登場用.n現在の値) / 100.0;\r
- double num4 = Math.Cos((1.5 + (0.5 * num3)) * Math.PI);\r
- n本体X = 4;\r
- n本体Y = 0x3f - ((int)(((txパネル本体 != null) ?\r
- ((double)txパネル本体.sz画像サイズ.Height) : ((double)0)) * (1.0 - (num4 * num4))));\r
- }\r
- if (txパネル本体 != null)\r
- {\r
- txパネル本体.t2D描画(\r
- CDTXMania.Instance.Device,\r
- n本体X * Scale.X,\r
- n本体Y * Scale.Y\r
- );\r
- }\r
- int x = (int)((n本体X + 17) * Scale.X);\r
- int y = (int)((n本体Y + 16) * Scale.Y);\r
- if (rAVI != null)\r
- {\r
- actAVI.t進行描画(x, y, 612, 605);\r
- }\r
- #region [ プレビュー画像表示 ]\r
- else if (r表示するリザルト画像 != null)\r
- {\r
- CPreviewMagnifier cmg = new CPreviewMagnifier(CPreviewMagnifier.EPreviewType.MusicSelect);\r
- cmg.GetMagnifier(r表示するリザルト画像.sz画像サイズ.Width, r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f);\r
-\r
- r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;\r
- r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;\r
- r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;\r
- x += (int)((612 - cmg.width * cmg.magX) / 2);\r
- y += (int)((605 - cmg.height * cmg.magY) / 2);\r
- r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
-\r
-\r
- }\r
- #endregion\r
- if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))\r
- {\r
- CDTXMania.Instance.act文字コンソール.tPrint(\r
- (int)((n本体X + 0x12) * Scale.X),\r
- (int)((n本体Y - 1) * Scale.Y),\r
- C文字コンソール.Eフォント種別.赤細,\r
- CDTXMania.Instance.DTX.GENRE\r
- );\r
- }\r
- if (!ct登場用.b終了値に達した)\r
- {\r
- return 0;\r
- }\r
- return 1;\r
- }\r
- return 0;\r
- }\r
-\r
- private bool t背景画像があればその一部からリザルト画像を構築する()\r
- {\r
- string strBackground = CDTXMania.Instance.DTX.BACKGROUND;\r
- if (string.IsNullOrEmpty(strBackground))\r
- {\r
- strBackground = CDTXMania.Instance.DTX.BACKGROUND_GR;\r
- }\r
- if (string.IsNullOrEmpty(strBackground))\r
- {\r
- return false;\r
- }\r
- TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
- r表示するリザルト画像 = null;\r
- strBackground = CDTXMania.Instance.DTX.strフォルダ名 + strBackground;\r
- if (!File.Exists(strBackground))\r
- {\r
- return false;\r
- }\r
- using (Bitmap image = new Bitmap(strBackground))\r
- {\r
- using (Bitmap bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height))\r
- {\r
- using (Graphics graphics = Graphics.FromImage(bitmap2))\r
- {\r
- int x = 0;\r
- for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height)\r
- {\r
- for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width)\r
- {\r
- graphics.DrawImage(image, x, i, image.Width, image.Height);\r
- }\r
- }\r
- }\r
- using (Bitmap bitmap3 = new Bitmap(0xcc, 0x10d))\r
- {\r
- using (Graphics graphics = Graphics.FromImage(bitmap3))\r
- {\r
- graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel);\r
- }\r
- txリザルト画像 = new CTexture(CDTXMania.Instance.Device, bitmap3, CDTXMania.Instance.TextureFormat);\r
- }\r
- }\r
- r表示するリザルト画像 = txリザルト画像;\r
- }\r
- return true;\r
- }\r
-\r
- private bool tプレビュー画像の指定があれば構築する()\r
- {\r
- if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREIMAGE))\r
- {\r
- return false;\r
- }\r
- TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
- r表示するリザルト画像 = null;\r
- string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREIMAGE;\r
- if (!File.Exists(path))\r
- {\r
- Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
- return false;\r
- }\r
- txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
- r表示するリザルト画像 = txリザルト画像;\r
- return (r表示するリザルト画像 != null);\r
- }\r
-\r
- private bool tプレビュー動画の指定があれば構築する()\r
- {\r
- if (!CDTXMania.Instance.ConfigIni.bAVI)\r
- {\r
- return false;\r
- }\r
- actAVI.Stop();\r
- if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.PREMOVIE))\r
- {\r
- return false;\r
- }\r
- strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.PREMOVIE;\r
- if (!File.Exists(this.strAVIファイル名))\r
- {\r
- Trace.TraceWarning("プレビュー動画のファイルが存在しません。({0})", strAVIファイル名);\r
- return false;\r
- }\r
- if (rAVI != null)\r
- {\r
- rAVI.Dispose();\r
- rAVI = null;\r
- }\r
- try\r
- {\r
- rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
- rAVI.OnDeviceCreated();\r
- actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
- }\r
- catch\r
- {\r
- Trace.TraceError("プレビュー動画の生成に失敗しました。({0})", strAVIファイル名);\r
- rAVI = null;\r
- }\r
- return true;\r
- }\r
-\r
- private bool tリザルト画像の指定があれば構築する()\r
- {\r
- CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
- if (rank == CScoreIni.ERANK.UNKNOWN) // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
- {\r
- rank = CScoreIni.ERANK.E;\r
- }\r
- if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank]))\r
- {\r
- return false;\r
- }\r
- TextureFactory.tテクスチャの解放(ref txリザルト画像);\r
- r表示するリザルト画像 = null;\r
- string path = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTIMAGE[(int)rank];\r
- if (!File.Exists(path))\r
- {\r
- Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path });\r
- return false;\r
- }\r
- txリザルト画像 = TextureFactory.tテクスチャの生成(path);\r
- r表示するリザルト画像 = this.txリザルト画像;\r
- return (this.r表示するリザルト画像 != null);\r
- }\r
-\r
- private bool tリザルト動画の指定があれば構築する()\r
- {\r
- if (!CDTXMania.Instance.ConfigIni.bAVI)\r
- {\r
- return false;\r
- }\r
- CScoreIni.ERANK rank = CScoreIni.t総合ランク値を計算して返す(CDTXMania.Instance.stage結果.st演奏記録);\r
- // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす\r
- if (rank == CScoreIni.ERANK.UNKNOWN)\r
- {\r
- rank = CScoreIni.ERANK.E;\r
- }\r
-\r
- if (string.IsNullOrEmpty(CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank]))\r
- {\r
- return false;\r
- }\r
- strAVIファイル名 = CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.RESULTMOVIE[(int)rank];\r
- if (!File.Exists(this.strAVIファイル名))\r
- {\r
- Trace.TraceWarning("リザルト動画のファイルが存在しません。({0})", this.strAVIファイル名);\r
- return false;\r
- }\r
- if (rAVI != null)\r
- {\r
- rAVI.Dispose();\r
- rAVI = null;\r
- }\r
- try\r
- {\r
- rAVI = new CDTX.CAVI(00, this.strAVIファイル名, "", CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
- rAVI.OnDeviceCreated();\r
- actAVI.Start(EChannel.Movie, rAVI, 204, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);\r
- }\r
- catch\r
- {\r
- Trace.TraceError("リザルト動画の生成に失敗しました。({0})", this.strAVIファイル名);\r
- rAVI = null;\r
- }\r
- return true;\r
- }\r
- }\r
-}\r