--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Diagnostics;
+using SharpDX;
+using FDK;
+
+using Rectangle = System.Drawing.Rectangle;
+
+namespace DTXMania
+{
+ internal class CActResultSongBar : CActivity
+ {
+ private CCounter ct登場用;
+ private Font ft曲名用フォント;
+ private int n本体X;
+ private int n本体Y;
+ private CTextureAf txバー;
+ private CTexture tx曲名;
+
+ public CActResultSongBar()
+ {
+ base.b活性化してない = true;
+ }
+
+ public void tアニメを完了させる()
+ {
+ this.ct登場用.n現在の値 = this.ct登場用.n終了値;
+ }
+
+ public override void On活性化()
+ {
+ if (b活性化してない)
+ {
+ this.n本体X = 0;
+ this.n本体Y = 0x18b;
+ this.ft曲名用フォント = new Font("MS PGothic", 44f * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel);
+ base.On活性化();
+ }
+ }
+
+ public override void On非活性化()
+ {
+ if (b活性化してる)
+ {
+ if (this.ft曲名用フォント != null)
+ {
+ this.ft曲名用フォント.Dispose();
+ this.ft曲名用フォント = null;
+ }
+ if (this.ct登場用 != null)
+ {
+ this.ct登場用 = null;
+ }
+ base.On非活性化();
+ }
+ }
+ public override void OnManagedリソースの作成()
+ {
+ if (base.b活性化してる)
+ {
+ this.txバー = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenResult song bar.png"), false);
+ try
+ {
+ Bitmap image = new Bitmap((int)(0x3a8 * Scale.X), (int)(0x36 * Scale.Y));
+ Graphics graphics = Graphics.FromImage(image);
+ graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
+ graphics.DrawString(CDTXMania.Instance.DTX.TITLE, this.ft曲名用フォント, Brushes.White, (float)8f * Scale.X, (float)0f);
+ this.tx曲名 = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);
+ this.tx曲名.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f);
+ graphics.Dispose();
+ image.Dispose();
+ }
+ catch (CTextureCreateFailedException)
+ {
+ Trace.TraceError("曲名テクスチャの生成に失敗しました。");
+ this.tx曲名 = null;
+ }
+ base.OnManagedリソースの作成();
+ }
+ }
+ public override void OnManagedリソースの解放()
+ {
+ if (base.b活性化してる)
+ {
+ TextureFactory.tテクスチャの解放(ref this.txバー);
+ TextureFactory.tテクスチャの解放(ref this.tx曲名);
+ base.OnManagedリソースの解放();
+ }
+ }
+ public override int On進行描画()
+ {
+ if (base.b活性化してる)
+ {
+ if (base.b初めての進行描画)
+ {
+ this.ct登場用 = new CCounter(0, 270, 4, CDTXMania.Instance.Timer);
+ base.b初めての進行描画 = false;
+ }
+ this.ct登場用.t進行();
+ int num = 0x1d4;
+ int num2 = num - 0x40;
+ if (this.ct登場用.b進行中)
+ {
+ if (this.ct登場用.n現在の値 <= 100)
+ {
+ double num3 = 1.0 - (((double)this.ct登場用.n現在の値) / 100.0);
+ this.n本体X = -((int)(num * Math.Sin(Math.PI / 2 * num3)));
+ this.n本体Y = 0x18b;
+ }
+ else if (this.ct登場用.n現在の値 <= 200)
+ {
+ double num4 = ((double)(this.ct登場用.n現在の値 - 100)) / 100.0;
+ this.n本体X = -((int)((((double)num) / 6.0) * Math.Sin(Math.PI * num4)));
+ this.n本体Y = 0x18b;
+ }
+ else if (this.ct登場用.n現在の値 <= 270)
+ {
+ double num5 = ((double)(this.ct登場用.n現在の値 - 200)) / 70.0;
+ this.n本体X = -((int)((((double)num) / 18.0) * Math.Sin(Math.PI * num5)));
+ this.n本体Y = 0x18b;
+ }
+ }
+ else
+ {
+ this.n本体X = 0;
+ this.n本体Y = 0x18b;
+ }
+ int num6 = this.n本体X;
+ int y = this.n本体Y;
+ int num8 = 0;
+ while (num8 < num2)
+ {
+ Rectangle rectangle = new Rectangle(0, 0, 0x40, 0x40);
+ if ((num8 + rectangle.Width) >= num2)
+ {
+ rectangle.Width -= (num8 + rectangle.Width) - num2;
+ }
+ if (this.txバー != null)
+ {
+ Rectangle rectangle1 = rectangle;
+ rectangle1.X = (int)(rectangle1.X * Scale.X);
+ rectangle1.Y = (int)(rectangle1.Y * Scale.Y);
+ rectangle1.Width = (int)(rectangle1.Width * Scale.X);
+ rectangle1.Height = (int)(rectangle1.Height * Scale.Y);
+ this.txバー.t2D描画(
+ CDTXMania.Instance.Device,
+ (num6 + num8) * Scale.X,
+ y * Scale.Y,
+ rectangle1
+ );
+ }
+ num8 += rectangle.Width;
+ }
+ if (this.txバー != null)
+ {
+ this.txバー.t2D描画(
+ CDTXMania.Instance.Device,
+ (num6 + num8) * Scale.X,
+ y * Scale.Y,
+ new Rectangle(
+ (int)(0x40 * Scale.X),
+ 0,
+ (int)(0x40 * Scale.X),
+ (int)(0x40 * Scale.Y)
+ )
+ );
+ }
+ if (this.tx曲名 != null)
+ {
+ this.tx曲名.t2D描画(
+ CDTXMania.Instance.Device,
+ this.n本体X * Scale.X,
+ (this.n本体Y + 20) * Scale.Y
+ );
+ }
+ if (!this.ct登場用.b終了値に達した)
+ {
+ return 0;
+ }
+ return 1;
+ }
+ return 0;
+ }
+ }
+}