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

namespace DTXMania
{
	internal class CAct演奏ステージ失敗 : CActivity
	{
		public CAct演奏ステージ失敗()
		{
			base.b活性化してない = true;
		}

		public void Start()
		{
			this.ct進行 = new CCounter(0, 0x3e8, 2, CDTXMania.Instance.Timer);
		}

		public override void On活性化()
		{
			this.sd効果音 = null;
			this.b効果音再生済み = false;
			this.ct進行 = new CCounter();
			base.On活性化();
		}

		public override void On非活性化()
		{
			this.ct進行 = null;
			if (this.sd効果音 != null)
			{
				CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.sd効果音);
				this.sd効果音 = null;
			}
			base.On非活性化();
		}

		public override void OnManagedリソースの作成()
		{
			if (!base.b活性化してない)
			{
				this.txStageFailed = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay stage failed.jpg"));
				base.OnManagedリソースの作成();
			}
		}

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

		public override int On進行描画()
		{
			if (base.b活性化してない)
			{
				return 0;
			}
			if ((this.ct進行 == null) || this.ct進行.b停止中)
			{
				return 0;
			}
			this.ct進行.t進行();
			if (this.ct進行.n現在の値 < 100)
			{
				int x = (int)(320.0 * Math.Cos((Math.PI / 2 * this.ct進行.n現在の値) / 100.0));
				if ((x != 320) && (this.txStageFailed != null))
				{
					this.txStageFailed.t2D描画(CDTXMania.Instance.Device,
						0, 0,
						new Rectangle((int)(x * Scale.X), 0, (int)((320 - x) * Scale.X), (int)(480 * Scale.Y)));
					this.txStageFailed.t2D描画(CDTXMania.Instance.Device,
						(int)((320 + x) * Scale.X), 0,
						new Rectangle((int)(320 * Scale.X), 0, (int)((320 - x) * Scale.X), (int)(480 * Scale.Y)));
				}
			}
			else
			{
				if (this.txStageFailed != null)
				{
					this.txStageFailed.t2D描画(CDTXMania.Instance.Device, 0, 0);
				}
				if (this.ct進行.n現在の値 <= 250)
				{
					int num2 = CDTXMania.Instance.Random.Next(5) - 2;
					int y = CDTXMania.Instance.Random.Next(5) - 2;
					if (this.txStageFailed != null)
					{
						this.txStageFailed.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, y * Scale.Y);
					}
				}
				if (!this.b効果音再生済み)
				{
					if (((CDTXMania.Instance.DTX.SOUND_STAGEFAILED != null) && (CDTXMania.Instance.DTX.SOUND_STAGEFAILED.Length > 0)) && File.Exists(CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.SOUND_STAGEFAILED))
					{
						try
						{
							if (this.sd効果音 != null)
							{
								CDTXMania.Instance.Sound管理.tサウンドを破棄する(this.sd効果音);
								this.sd効果音 = null;
							}
							this.sd効果音 = CDTXMania.Instance.Sound管理.tサウンドを生成する(CDTXMania.Instance.DTX.strフォルダ名 + CDTXMania.Instance.DTX.SOUND_STAGEFAILED);
							this.sd効果音.t再生を開始する();
						}
						catch
						{
						}
					}
					else
					{
						CDTXMania.Instance.Skin.soundSTAGEFAILED音.t再生する();
					}
					this.b効果音再生済み = true;
				}
			}
			if (!this.ct進行.b終了値に達した)
			{
				return 0;
			}
			return 1;
		}

		private bool b効果音再生済み;
		private CCounter ct進行;
		private CSound sd効果音;
		private CTexture txStageFailed;
	}
}
