using System;
using System.Collections.Generic;
using System.Text;
using FDK;
using System.Drawing;

namespace DTXMania
{
	internal class CAct演奏レーンフラッシュGB共通 : CActivity
	{
		static ELane[] lanes = new ELane[] { ELane.GtR, ELane.GtG, ELane.GtB, ELane.BsR, ELane.BsG, ELane.BsB };
		static int MAXLANES = lanes.GetLength( 0 );
		protected CCounter[] ct進行 = new CCounter[ MAXLANES ];
		CTexture tx = new CTexture();

		public void Start(int nLane)
		{
			this.ct進行[nLane] = new CCounter(0, 100, 1, CDTXMania.Instance.Timer);
		}

		public override void On活性化()
		{
			if (b活性化してない)
			{
				for (int i = 0; i < MAXLANES; i++)
				{
					this.ct進行[i] = new CCounter();
				}
				base.On活性化();
			}
		}

		public override void On非活性化()
		{
			if (b活性化してる)
			{
				for (int i = 0; i < MAXLANES; i++)
				{
					this.ct進行[i] = null;
				}
				base.On非活性化();
			}
		}

		public override void OnManagedリソースの作成()
		{
			if (b活性化してる)
			{
				tx = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay guitar lane flush.png"));
				base.OnManagedリソースの作成();
			}
		}

		public override void OnManagedリソースの解放()
		{
			if (b活性化してる)
			{
				TextureFactory.tテクスチャの解放(ref tx);
				base.OnManagedリソースの解放();
			}
		}

		public override int On進行描画()
		{
			if (b活性化してる &&
				CDTXMania.Instance.ConfigIni.bGuitar有効 &&
				CDTXMania.Instance.ConfigIni.eDark == EDark.Off)
			{
				int imgX = CDTXMania.Instance.Coordinates.ImgGtLaneFlash.X;
				for (int i = 0; i < MAXLANES; i++)
				{
					if (i % (MAXLANES / 2) == 0)
					{
						imgX = CDTXMania.Instance.Coordinates.ImgGtLaneFlash.X;
					}
					EPart inst = (i < (MAXLANES / 2) ) ? EPart.Guitar : EPart.Bass;

					int x = CDTXMania.Instance.ConfigIni.GetLaneX(lanes[i]);
					int w = CDTXMania.Instance.ConfigIni.GetLaneW(lanes[i]);

					if (!ct進行[i].b停止中 && CDTXMania.Instance.DTX.bチップがある[inst])
					{

						if (tx != null)
						{
							if (CDTXMania.Instance.ConfigIni.bReverse[inst])
							{
								tx.vc拡大縮小倍率.Y = -1;
							}
							else
							{
								tx.vc拡大縮小倍率.Y = 1;
							}
							int y = CDTXMania.Instance.Coordinates.LaneFlash[inst].Y;
							tx.t2D描画(
								CDTXMania.Instance.Device,
								x + (int) ( w * ( ct進行[ i ].n現在の値 ) / (100 * 2) ),
								CDTXMania.Instance.ConfigIni.bReverse[inst] ? SampleFramework.GameWindowSize.Height - y - CDTXMania.Instance.Coordinates.ImgGtLaneFlash.H : y,
								new Rectangle(
									imgX,
									CDTXMania.Instance.Coordinates.ImgGtLaneFlash.Y,
									(int)(w * (100 - ct進行[i].n現在の値) / 100),
									(int)(CDTXMania.Instance.Coordinates.ImgGtLaneFlash.H * tx.vc拡大縮小倍率.Y)
								)
							);
						}


						ct進行[i].t進行();
						if (ct進行[i].b終了値に達した)
						{
							ct進行[i].t停止();
						}
					}

					imgX += w;
				}
			}
			return 0;
		}
	}
}
