+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Runtime.InteropServices;\r
-using System.Drawing;\r
-using System.IO;\r
-using SharpDX;\r
-using FDK;\r
-\r
-using Point = System.Drawing.Point;\r
-using Rectangle = System.Drawing.Rectangle;\r
-\r
-namespace DTXMania\r
-{\r
- internal class CActResultParameterPanel : CActivity\r
- {\r
- public CActResultParameterPanel()\r
- {\r
- ST文字位置[] st文字位置Array = new ST文字位置[11];\r
- ST文字位置 st文字位置 = new ST文字位置();\r
- st文字位置.ch = '0';\r
- st文字位置.pt = new Point((int)(0 * Scale.X), (int)(0 * Scale.Y));\r
- st文字位置Array[0] = st文字位置;\r
- ST文字位置 st文字位置2 = new ST文字位置();\r
- st文字位置2.ch = '1';\r
- st文字位置2.pt = new Point((int)(11 * Scale.X), (int)(0 * Scale.Y));\r
- st文字位置Array[1] = st文字位置2;\r
- ST文字位置 st文字位置3 = new ST文字位置();\r
- st文字位置3.ch = '2';\r
- st文字位置3.pt = new Point((int)(0x16 * Scale.X), (int)(0 * Scale.Y));\r
- st文字位置Array[2] = st文字位置3;\r
- ST文字位置 st文字位置4 = new ST文字位置();\r
- st文字位置4.ch = '3';\r
- st文字位置4.pt = new Point((int)(0x21 * Scale.X), (int)(0 * Scale.Y));\r
- st文字位置Array[3] = st文字位置4;\r
- ST文字位置 st文字位置5 = new ST文字位置();\r
- st文字位置5.ch = '4';\r
- st文字位置5.pt = new Point((int)(0x2c * Scale.X), (int)(0 * Scale.Y));\r
- st文字位置Array[4] = st文字位置5;\r
- ST文字位置 st文字位置6 = new ST文字位置();\r
- st文字位置6.ch = '5';\r
- st文字位置6.pt = new Point((int)(0 * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[5] = st文字位置6;\r
- ST文字位置 st文字位置7 = new ST文字位置();\r
- st文字位置7.ch = '6';\r
- st文字位置7.pt = new Point((int)(11 * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[6] = st文字位置7;\r
- ST文字位置 st文字位置8 = new ST文字位置();\r
- st文字位置8.ch = '7';\r
- st文字位置8.pt = new Point((int)(0x16 * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[7] = st文字位置8;\r
- ST文字位置 st文字位置9 = new ST文字位置();\r
- st文字位置9.ch = '8';\r
- st文字位置9.pt = new Point((int)(0x21 * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[8] = st文字位置9;\r
- ST文字位置 st文字位置10 = new ST文字位置();\r
- st文字位置10.ch = '9';\r
- st文字位置10.pt = new Point((int)(0x2c * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[9] = st文字位置10;\r
- ST文字位置 st文字位置11 = new ST文字位置();\r
- st文字位置11.ch = '.';\r
- st文字位置11.pt = new Point((int)(0x37 * Scale.X), (int)(0x10 * Scale.Y));\r
- st文字位置Array[10] = st文字位置11;\r
- this.st大文字位置 = st文字位置Array;\r
- ST文字位置[] st文字位置Array2 = new ST文字位置[11];\r
- ST文字位置 st文字位置12 = new ST文字位置();\r
- st文字位置12.ch = '0';\r
- st文字位置12.pt = new Point((int)(0 * Scale.X), (int)(0x20 * Scale.Y));\r
- st文字位置Array2[0] = st文字位置12;\r
- ST文字位置 st文字位置13 = new ST文字位置();\r
- st文字位置13.ch = '1';\r
- st文字位置13.pt = new Point((int)(11 * Scale.X), (int)(0x20 * Scale.Y));\r
- st文字位置Array2[1] = st文字位置13;\r
- ST文字位置 st文字位置14 = new ST文字位置();\r
- st文字位置14.ch = '2';\r
- st文字位置14.pt = new Point((int)(0x16 * Scale.X), (int)(0x20 * Scale.Y));\r
- st文字位置Array2[2] = st文字位置14;\r
- ST文字位置 st文字位置15 = new ST文字位置();\r
- st文字位置15.ch = '3';\r
- st文字位置15.pt = new Point((int)(0x21 * Scale.X), (int)(0x20 * Scale.Y));\r
- st文字位置Array2[3] = st文字位置15;\r
- ST文字位置 st文字位置16 = new ST文字位置();\r
- st文字位置16.ch = '4';\r
- st文字位置16.pt = new Point((int)(0x2c * Scale.X), (int)(0x20 * Scale.Y));\r
- st文字位置Array2[4] = st文字位置16;\r
- ST文字位置 st文字位置17 = new ST文字位置();\r
- st文字位置17.ch = '5';\r
- st文字位置17.pt = new Point((int)(0 * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[5] = st文字位置17;\r
- ST文字位置 st文字位置18 = new ST文字位置();\r
- st文字位置18.ch = '6';\r
- st文字位置18.pt = new Point((int)(11 * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[6] = st文字位置18;\r
- ST文字位置 st文字位置19 = new ST文字位置();\r
- st文字位置19.ch = '7';\r
- st文字位置19.pt = new Point((int)(0x16 * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[7] = st文字位置19;\r
- ST文字位置 st文字位置20 = new ST文字位置();\r
- st文字位置20.ch = '8';\r
- st文字位置20.pt = new Point((int)(0x21 * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[8] = st文字位置20;\r
- ST文字位置 st文字位置21 = new ST文字位置();\r
- st文字位置21.ch = '9';\r
- st文字位置21.pt = new Point((int)(0x2c * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[9] = st文字位置21;\r
- ST文字位置 st文字位置22 = new ST文字位置();\r
- st文字位置22.ch = '%';\r
- st文字位置22.pt = new Point((int)(0x37 * Scale.X), (int)(0x30 * Scale.Y));\r
- st文字位置Array2[10] = st文字位置22;\r
- this.st小文字位置 = st文字位置Array2;\r
- base.b活性化してない = true;\r
- }\r
-\r
-\r
- // メソッド\r
-\r
- public void tアニメを完了させる()\r
- {\r
- this.ct表示用.n現在の値 = this.ct表示用.n終了値;\r
- }\r
-\r
-\r
- // CActivity 実装\r
-\r
- public override void On活性化()\r
- {\r
- this.n本体X = (int)(0xf2 * Scale.X);\r
- this.n本体Y = (int)(0x44 * Scale.Y);\r
- this.sdDTXで指定されたフルコンボ音 = null;\r
- this.bフルコンボ音再生済み = false;\r
- base.On活性化();\r
- }\r
- public override void On非活性化()\r
- {\r
- if (this.ct表示用 != null)\r
- {\r
- this.ct表示用 = null;\r
- }\r
- if (this.sdDTXで指定されたフルコンボ音 != null)\r
- {\r
- CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.sdDTXで指定されたフルコンボ音);\r
- this.sdDTXで指定されたフルコンボ音 = null;\r
- }\r
- base.On非活性化();\r
- }\r
- public override void OnManagedリソースの作成()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- this.txパネル本体 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult parameter panel.png"), true);\r
- this.tx文字[0] = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult parameter numbers.png"));\r
- this.tx文字[1] = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult parameter numbers em.png"));\r
- this.txFullCombo = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenResult fullcombo.png"));\r
- this.txWhite = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\Tile white 64x64.png"));\r
- base.OnManagedリソースの作成();\r
- }\r
- }\r
- public override void OnManagedリソースの解放()\r
- {\r
- if (!base.b活性化してない)\r
- {\r
- TextureFactory.tテクスチャの解放(ref this.txパネル本体);\r
- TextureFactory.tテクスチャの解放(ref this.tx文字[0]);\r
- TextureFactory.tテクスチャの解放(ref this.tx文字[1]);\r
- TextureFactory.tテクスチャの解放(ref this.txFullCombo);\r
- TextureFactory.tテクスチャの解放(ref this.txWhite);\r
- base.OnManagedリソースの解放();\r
- }\r
- }\r
- public override int On進行描画()\r
- {\r
- if (base.b活性化してない)\r
- {\r
- return 0;\r
- }\r
- if (base.b初めての進行描画)\r
- {\r
- this.ct表示用 = new CCounter(0, 0x3e7, 2, CDTXMania.Instance.Timer);\r
- base.b初めての進行描画 = false;\r
- }\r
- this.ct表示用.t進行();\r
- if (this.txパネル本体 != null)\r
- {\r
- this.txパネル本体.t2D描画(\r
- CDTXMania.Instance.Device,\r
- this.n本体X,\r
- this.n本体Y\r
- );\r
- }\r
- int num = this.ct表示用.n現在の値;\r
- STDGBSValue<Point> pointArray = new STDGBSValue<Point>();\r
- pointArray.Drums = new Point((int)(0x68 * Scale.X), (int)(0x29 * Scale.Y));\r
- pointArray.Guitar = new Point((int)(0xc7 * Scale.X), (int)(0x29 * Scale.Y));\r
- pointArray.Bass = new Point((int)(0x129 * Scale.X), (int)(0x29 * Scale.Y));\r
-\r
- for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
- {\r
- int x = this.n本体X + pointArray[i].X;\r
- int y = this.n本体Y + pointArray[i].Y;\r
- if (num >= 0)\r
- {\r
- this.t大文字表示(x, y, CDTXMania.Instance.stage結果.st演奏記録[i].nPerfect数.ToString("00000"));\r
- }\r
- if (num >= 100)\r
- {\r
- this.t大文字表示(x, y + (int)(0x16 * Scale.Y), CDTXMania.Instance.stage結果.st演奏記録[i].nGreat数.ToString("00000"));\r
- }\r
- if (num >= 200)\r
- {\r
- this.t大文字表示(x, y + (int)(0x2c * Scale.Y), CDTXMania.Instance.stage結果.st演奏記録[i].nGood数.ToString("00000"));\r
- }\r
- if (num >= 300)\r
- {\r
- this.t大文字表示(x, y + (int)(0x42 * Scale.Y), CDTXMania.Instance.stage結果.st演奏記録[i].nPoor数.ToString("00000"));\r
- }\r
- if (num >= 400)\r
- {\r
- this.t大文字表示(x, y + (int)(0x58 * Scale.Y), CDTXMania.Instance.stage結果.st演奏記録[i].nMiss数.ToString("00000"));\r
- }\r
- if (num >= 0)\r
- {\r
- this.t小文字表示(x + (int)(0x30 * Scale.X), y, string.Format("{0,3:##0}%", CDTXMania.Instance.stage結果.fPerfect率[i]));\r
- }\r
- if (num >= 100)\r
- {\r
- this.t小文字表示(x + (int)(0x30 * Scale.X), y + (int)(0x16 * Scale.Y), string.Format("{0,3:##0}%", CDTXMania.Instance.stage結果.fGreat率[i]));\r
- }\r
- if (num >= 200)\r
- {\r
- this.t小文字表示(x + (int)(0x30 * Scale.X), y + (int)(0x2c * Scale.Y), string.Format("{0,3:##0}%", CDTXMania.Instance.stage結果.fGood率[i]));\r
- }\r
- if (num >= 300)\r
- {\r
- this.t小文字表示(x + (int)(0x30 * Scale.X), y + (int)(0x42 * Scale.Y), string.Format("{0,3:##0}%", CDTXMania.Instance.stage結果.fPoor率[i]));\r
- }\r
- if (num >= 400)\r
- {\r
- this.t小文字表示(x + (int)(0x30 * Scale.X), y + (int)(0x58 * Scale.Y), string.Format("{0,3:##0}%", CDTXMania.Instance.stage結果.fMiss率[i]));\r
- }\r
- if (num >= 500)\r
- {\r
- this.t大文字表示(x, y + (int)(110 * Scale.Y), string.Format("{0,9:########0}", CDTXMania.Instance.stage結果.st演奏記録[i].n最大コンボ数));\r
- }\r
- if (num >= 600)\r
- {\r
- this.t大文字表示(x, y + (int)(0x84 * Scale.Y), CDTXMania.Instance.stage結果.st演奏記録[i].nスコア.ToString("000000000"), CDTXMania.Instance.stage結果.b新記録スコア[i]);\r
- }\r
- if (num >= 700)\r
- {\r
- this.t大文字表示(x - (int)(11 * Scale.X), y + (int)(0x9a * Scale.Y), string.Format("{0,9:#####0.00}", CDTXMania.Instance.stage結果.st演奏記録[i].db演奏型スキル値), CDTXMania.Instance.stage結果.b新記録スキル[i]);\r
- }\r
- if (num >= 700)\r
- {\r
- this.t小文字表示(x + (int)(0x48 * Scale.X), y + (int)(0x9a * Scale.Y), "%");\r
- }\r
- if (num >= 800)\r
- {\r
- this.t大文字表示(x, y + (int)(0xb0 * Scale.Y), string.Format("{0,9:########0}", CDTXMania.Instance.stage結果.n演奏回数[i]));\r
- }\r
- }\r
- if (this.ct表示用.n現在の値 < 900)\r
- {\r
- int num5 = this.ct表示用.n現在の値 / 100;\r
- double num6 = 1.0 - (((double)(this.ct表示用.n現在の値 % 100)) / 100.0);\r
- int num7 = 0x157;\r
- int num8 = 0x6d + (num5 * 0x16);\r
- int num9 = 0x11c;\r
- int num10 = 0x10;\r
- if (this.txWhite != null)\r
- {\r
- this.txWhite.n透明度 = (int)(255.0 * num6);\r
- Rectangle rectangle = new Rectangle(0, 0, 0x40, 0);\r
- while (num9 > 0)\r
- {\r
- rectangle.Height = num10;\r
- if (num9 < 0x40)\r
- {\r
- rectangle.Width = num9;\r
- }\r
- Rectangle rect = rectangle;\r
- rect.X = (int)(rect.X * Scale.X);\r
- rect.Y = (int)(rect.Y * Scale.Y);\r
- rect.Width = (int)(rect.Width * Scale.X);\r
- rect.Height = (int)(rect.Height * Scale.Y);\r
- this.txWhite.t2D描画(\r
- CDTXMania.Instance.Device,\r
- num7 * Scale.X,\r
- num8 * Scale.Y,\r
- rect\r
- );\r
- num7 += 0x40;\r
- num9 -= 0x40;\r
- }\r
- }\r
- }\r
- if (this.ct表示用.n現在の値 >= 900)\r
- {\r
- for (EPart j = EPart.Drums; j <= EPart.Bass; j++)\r
- {\r
- if (CDTXMania.Instance.stage結果.st演奏記録[j].bフルコンボである)\r
- {\r
- if (this.ct表示用.b終了値に達した)\r
- {\r
- if (this.txFullCombo != null)\r
- {\r
- this.txFullCombo.t2D描画(\r
- CDTXMania.Instance.Device,\r
- this.n本体X + CDTXMania.Instance.Coordinates.PointFullCombo[j].X,\r
- this.n本体Y + CDTXMania.Instance.Coordinates.PointFullCombo[j].Y\r
- );\r
- }\r
- if (!this.bフルコンボ音再生済み)\r
- {\r
- if (((CDTXMania.Instance.DTX.SOUND_FULLCOMBO != null) && (CDTXMania.Instance.DTX.SOUND_FULLCOMBO.Length > 0)) && File.Exists(CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.SOUND_FULLCOMBO))\r
- {\r
- try\r
- {\r
- if (this.sdDTXで指定されたフルコンボ音 != null)\r
- {\r
- CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.sdDTXで指定されたフルコンボ音);\r
- this.sdDTXで指定されたフルコンボ音 = null;\r
- }\r
- this.sdDTXで指定されたフルコンボ音 = CDTXMania.Instance.Sound管理.tサウンドを生成する(CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.SOUND_FULLCOMBO);\r
- if (this.sdDTXで指定されたフルコンボ音 != null)\r
- {\r
- this.sdDTXで指定されたフルコンボ音.t再生を開始する();\r
- }\r
- }\r
- catch\r
- {\r
- }\r
- }\r
- else\r
- {\r
- CDTXMania.Instance.Skin.soundフルコンボ音.t再生する();\r
- }\r
- this.bフルコンボ音再生済み = true;\r
- }\r
- }\r
- else\r
- {\r
- double num12 = ((double)(this.ct表示用.n現在の値 - 900)) / 100.0;\r
- float num13 = (float)(2.0 - num12);\r
- if (this.txFullCombo != null)\r
- {\r
- this.txFullCombo.vc拡大縮小倍率 = new Vector3(num13, num13, 1f);\r
- this.txFullCombo.n透明度 = (int)(255.0 * num12);\r
- int num14 = (this.n本体X + CDTXMania.Instance.Coordinates.PointFullCombo[j].X) + ((int)((this.txFullCombo.sz画像サイズ.Width * (1f - num13)) / 2f));\r
- int num15 = (this.n本体Y + CDTXMania.Instance.Coordinates.PointFullCombo[j].Y) + ((int)((this.txFullCombo.sz画像サイズ.Height * (1f - num13)) / 2f));\r
- this.txFullCombo.t2D描画(CDTXMania.Instance.Device, num14, num15);\r
- }\r
- }\r
- }\r
- }\r
- }\r
- if (!this.ct表示用.b終了値に達した)\r
- {\r
- return 0;\r
- }\r
- return 1;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- [StructLayout(LayoutKind.Sequential)]\r
- private struct ST文字位置\r
- {\r
- public char ch;\r
- public Point pt;\r
- }\r
-\r
- private bool bフルコンボ音再生済み;\r
- private CCounter ct表示用;\r
- private int n本体X;\r
- private int n本体Y;\r
- private CSound sdDTXで指定されたフルコンボ音;\r
- private readonly ST文字位置[] st小文字位置;\r
- private readonly ST文字位置[] st大文字位置;\r
- private CTexture txFullCombo;\r
- private CTexture txWhite;\r
- private CTexture txパネル本体;\r
- private CTexture[] tx文字 = new CTexture[2];\r
-\r
- private void t小文字表示(int x, int y, string str)\r
- {\r
- this.t小文字表示(x, y, str, false);\r
- }\r
- private void t小文字表示(int x, int y, string str, bool b強調)\r
- {\r
- foreach (char ch in str)\r
- {\r
- for (int i = 0; i < this.st小文字位置.Length; i++)\r
- {\r
- if (this.st小文字位置[i].ch == ch)\r
- {\r
- Rectangle rectangle = new Rectangle(\r
- this.st小文字位置[i].pt.X,\r
- this.st小文字位置[i].pt.Y,\r
- (int)(11 * Scale.X),\r
- (int)(0x10 * Scale.Y)\r
- );\r
- if (ch == '%')\r
- {\r
- rectangle.Width -= (int)(2 * Scale.X);\r
- rectangle.Height -= (int)(2 * Scale.Y);\r
- }\r
- if (this.tx文字[b強調 ? 1 : 0] != null)\r
- {\r
- this.tx文字[b強調 ? 1 : 0].t2D描画(CDTXMania.Instance.Device, x, y, rectangle);\r
- }\r
- break;\r
- }\r
- }\r
- //x += (int) ( 8 * Scale.X );\r
- x += (int)(9 * Scale.X);\r
- }\r
- }\r
- private void t大文字表示(int x, int y, string str)\r
- {\r
- this.t大文字表示(x, y, str, false);\r
- }\r
- private void t大文字表示(int x, int y, string str, bool b強調)\r
- {\r
- foreach (char ch in str)\r
- {\r
- for (int i = 0; i < this.st大文字位置.Length; i++)\r
- {\r
- if (this.st大文字位置[i].ch == ch)\r
- {\r
- Rectangle rectangle = new Rectangle(\r
- this.st大文字位置[i].pt.X,\r
- this.st大文字位置[i].pt.Y,\r
- (int)(11 * Scale.X),\r
- (int)(0x10 * Scale.Y)\r
- );\r
- if (ch == '.')\r
- {\r
- rectangle.Width -= (int)(2 * Scale.X);\r
- rectangle.Height -= (int)(2 * Scale.Y);\r
- }\r
- if (this.tx文字[b強調 ? 1 : 0] != null)\r
- {\r
- this.tx文字[b強調 ? 1 : 0].t2D描画(CDTXMania.Instance.Device, x, y, rectangle);\r
- }\r
- break;\r
- }\r
- }\r
- //x += (int) ( 8 * Scale.X );\r
- x += 27;\r
- }\r
- }\r
- //-----------------\r
- #endregion\r
- }\r
-}\r