--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Drawing;
+using FDK;
+
+namespace DTXMania
+{
+ internal class CActSelectInformation : CActivity
+ {
+ // コンストラクタ
+
+ public CActSelectInformation()
+ {
+ base.b活性化してない = true;
+ }
+
+
+ // CActivity 実装
+
+ public override void On活性化()
+ {
+ this.n画像Index上 = -1;
+ this.n画像Index下 = 0;
+ base.On活性化();
+ }
+ public override void On非活性化()
+ {
+ this.ctスクロール用 = null;
+ base.On非活性化();
+ }
+ public override void OnManagedリソースの作成()
+ {
+ if (!base.b活性化してない)
+ {
+ string[,] infofiles = { // #25381 2011.6.4 yyagi
+ { @"Graphics\ScreenSelect information 1.png", @"Graphics\ScreenSelect information 2.png" },
+ { @"Graphics\ScreenSelect information 1e.png", @"Graphics\ScreenSelect information 2e.png" }
+ };
+ int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;
+ this.txInfo[0] = TextureFactory.tテクスチャの生成(CSkin.Path(infofiles[c, 0]), false);
+ this.txInfo[1] = TextureFactory.tテクスチャの生成(CSkin.Path(infofiles[c, 1]), false);
+ base.OnManagedリソースの作成();
+ }
+ }
+ public override void OnManagedリソースの解放()
+ {
+ if (!base.b活性化してない)
+ {
+ TextureFactory.tテクスチャの解放(ref this.txInfo[0]);
+ TextureFactory.tテクスチャの解放(ref this.txInfo[1]);
+ base.OnManagedリソースの解放();
+ }
+ }
+ public override int On進行描画()
+ {
+ if (!base.b活性化してない)
+ {
+ if (base.b初めての進行描画)
+ {
+ this.ctスクロール用 = new CCounter(0, 6000, 1, CDTXMania.Instance.Timer);
+ base.b初めての進行描画 = false;
+ }
+ this.ctスクロール用.t進行();
+ if (this.ctスクロール用.b終了値に達した)
+ {
+ this.n画像Index上 = this.n画像Index下;
+ this.n画像Index下 = (this.n画像Index下 + 1) % stInfo.GetLength(0); //8;
+ this.ctスクロール用.n現在の値 = 0;
+ }
+ int n現在の値 = this.ctスクロール用.n現在の値;
+ if (n現在の値 <= 250)
+ {
+ double n現在の割合 = ((double)n現在の値) / 250.0;
+ if (this.n画像Index上 >= 0)
+ {
+ STINFO stinfo = this.stInfo[this.n画像Index上];
+ Rectangle rectangle = new Rectangle(
+ stinfo.pt左上座標.X,
+ stinfo.pt左上座標.Y + ((int)((int)(45.0 * Scale.Y) * n現在の割合)),
+ (int)(221 * Scale.X),
+ Convert.ToInt32((int)(45.0 * Scale.Y) * (1.0 - n現在の割合))
+ );
+ if (this.txInfo[stinfo.nTexture番号] != null)
+ {
+ this.txInfo[stinfo.nTexture番号].t2D描画(
+ CDTXMania.Instance.Device,
+ 115 * Scale.X,
+ 6 * Scale.Y,
+ rectangle
+ );
+ }
+ }
+ if (this.n画像Index下 >= 0)
+ {
+ STINFO stinfo = this.stInfo[this.n画像Index下];
+ Rectangle rectangle = new Rectangle(
+ stinfo.pt左上座標.X,
+ stinfo.pt左上座標.Y,
+ (int)(221 * Scale.X),
+ (int)(45.0 * Scale.Y * n現在の割合)
+ );
+ if (this.txInfo[stinfo.nTexture番号] != null)
+ {
+ this.txInfo[stinfo.nTexture番号].t2D描画(
+ CDTXMania.Instance.Device,
+ 115 * Scale.X,
+ 6 * Scale.Y + ((int)(45.0 * Scale.Y * (1.0 - n現在の割合))),
+ rectangle
+ );
+ }
+ }
+ }
+ else
+ {
+ STINFO stinfo = this.stInfo[this.n画像Index下];
+ Rectangle rectangle = new Rectangle(
+ stinfo.pt左上座標.X,
+ stinfo.pt左上座標.Y,
+ (int)(221 * Scale.X),
+ (int)(45 * Scale.Y)
+ );
+ if (this.txInfo[stinfo.nTexture番号] != null)
+ {
+ this.txInfo[stinfo.nTexture番号].t2D描画(
+ CDTXMania.Instance.Device,
+ 115 * Scale.X,
+ 6 * Scale.Y,
+ rectangle
+ );
+ }
+ }
+ }
+ return 0;
+ }
+
+
+ // その他
+
+ #region [ private ]
+ //-----------------
+ [StructLayout(LayoutKind.Sequential)]
+ private struct STINFO
+ {
+ public int nTexture番号;
+ public Point pt左上座標;
+ public STINFO(int nTexture番号, int x, int y)
+ {
+ this.nTexture番号 = nTexture番号;
+ this.pt左上座標 = new Point(x, y);
+ }
+ }
+
+ private CCounter ctスクロール用;
+ private int n画像Index下;
+ private int n画像Index上;
+ private readonly STINFO[] stInfo = new STINFO[] {
+ new STINFO( 0, 0, 0 ),
+ new STINFO( 0, 0, (int)(49 * Scale.Y) ),
+ new STINFO( 0, 0, (int)(97 * Scale.Y) ),
+ new STINFO( 0, 0, (int)(147 * Scale.Y) ),
+ new STINFO( 0, 0, (int)(196 * Scale.Y) ),
+ new STINFO( 1, 0, (int)(0 * Scale.Y) ),
+ new STINFO( 1, 0, (int)(49 * Scale.Y) ),
+ new STINFO( 1, 0, (int)(97 * Scale.Y) ),
+ new STINFO( 1, 0, (int)(147 * Scale.Y) )
+ };
+ private CTexture[] txInfo = new CTexture[2];
+ //-----------------
+ #endregion
+ }
+}