using System;
using GameWorld;
using UnityEngine;

public class DahalFHurt : EnemyBaseHurt
{
	protected override void Init()
	{
		this._dahal = base.GetComponent<DahalFAnim>();
		this.defaultAnimName = "Hit1";
		this.defaultAirAnimName = "Hit1";
		this.hurtData = SingletonMono<EnemyDataPreload>.Instance.hurt[EnemyType.达哈尔终极版];
	}

	protected override void Update()
	{
		base.Update();
		Vector2? rollAtkFollowPos = this._rollAtkFollowPos;
		if (rollAtkFollowPos != null)
		{
			Vector3 position = base.player.transform.position;
			Vector2? rollAtkFollowPos2 = this._rollAtkFollowPos;
			Vector3 position2 = position - ((rollAtkFollowPos2 == null) ? default(Vector3) : (Vector3)rollAtkFollowPos2.GetValueOrDefault());
			position2.y = Mathf.Clamp(position2.y, LayerManager.YNum.GetGroundHeight(base.gameObject) + 1f, float.PositiveInfinity);
			position2.z = LayerManager.ZNum.MMiddleE(this.eAttr.rankType);
			base.transform.position = position2;
			this._rollFollowTime += Time.unscaledDeltaTime;
			if (this._rollFollowTime >= 0.2f)
			{
				this._rollAtkFollowPos = null;
			}
		}
	}

	protected override void PhysicAndEffect(Vector2 speed, Vector2 airSpeed, string normalAtkType, string airAtkType)
	{
		if (this.action.stateMachine.currentState == "QTEHit")
		{
			return;
		}
		base.PhysicAndEffect(speed, airSpeed, normalAtkType, airAtkType);
	}

	protected override bool Counterattack(int damage, bool groundOnly)
	{
		return this.currentPhase != 0 && base.Counterattack(damage, true);
	}

	public override void SetHitSpeed(Vector2 speed)
	{
		this.eAttr.timeController.SetGravity(1f);
		if (this.playerAtkName == "UpRising" || this.playerAtkName == "AtkUpRising" || this.playerAtkName == "AtkRollEnd")
		{
			this._dahal.MaxFlyHeight = 4f;
		}
		else
		{
			this._dahal.MaxFlyHeight = -1f;
		}
		base.SetHitSpeed(speed);
	}

	protected override void PlayHurtAudio()
	{
		base.PlayHurtAudio();
		if (base.PlaySpHurtAudio())
		{
			R.Audio.PlayEffect(401, new Vector3?(base.transform.position));
		}
	}

	public void HitIntoSecondLevel()
	{
		base.QTEZPositionRecover();
	}

	protected override void SpAttack()
	{
		if (this.eAttr.currentActionInterruptPoint < this.eAttr.actionInterruptPoint)
		{
			return;
		}
		if (this.playerAtkName == "RollReady" && !this.eAttr.isOnGround)
		{
			Vector2? rollAtkFollowPos = this._rollAtkFollowPos;
			if (rollAtkFollowPos == null)
			{
				this._rollAtkFollowPos = new Vector2?((base.player.transform.position - base.transform.position) * 0.7f);
			}
			this._rollFollowTime = 0f;
		}
	}

	protected override void FlashAttackHurt()
	{
		this.ExecuteDieEffect();
		R.Effect.Generate(214, null, default(Vector3), default(Vector3), default(Vector3), true);
		SingletonMono<WorldTime>.Instance.TimeSlowByFrameOn60Fps(30, 0.5f);
		R.Camera.Controller.CameraShake(0.5f, 0.2f, CameraController.ShakeTypeEnum.Rect, false);
		R.Camera.Controller.OpenMotionBlur(0.0833333358f, 1f, base.transform.position);
		this.SetHitSpeed(Vector2.zero);
		base.GenerateCritHurtNum(base.flashAttackDamage);
		DahalAction.StateEnum stateEnum = (!this.eAttr.isOnGround) ? DahalAction.StateEnum.HitToFly3 : DahalAction.StateEnum.Hit1;
		this.action.AnimChangeState(stateEnum, 0.5f);
		base.FlashAttackHurt();
	}

	public override void QTEHurt()
	{
		base.QTEHurt();
		R.Player.Action.QTEHPRecover(false);
		base.QTEHpMinus();
	}

	public override void EnemyDie()
	{
	}

	protected override void ExecuteDie()
	{
		if (this.deadFlag)
		{
			return;
		}
		if (this.eAttr.rankType == EnemyAttribute.RankType.BOSS)
		{
			R.Trophy.AwardTrophy(32);
		}
		R.Audio.PlayEffect(412, new Vector3?(base.transform.position));
		R.Player.Action.QTEHPRecover(this.eAttr.rankType == EnemyAttribute.RankType.BOSS);
		R.Audio.PlayEffect(UnityEngine.Random.Range(105, 108), new Vector3?(base.transform.position));
		this.deadFlag = true;
		this.eAttr.currentHp = 0;
		this.eAttr.inWeakState = false;
		this.eAttr.isFlyingUp = false;
		this.eAttr.checkHitGround = false;
		this.eAttr.stiffTime = 0f;
		this.eAttr.timeController.SetGravity(1f);
		EventManager.PostEvent<EnemyAttribute>("EnemyKilled", this.eAttr);
		this.action.WeakEffectDisappear("Null");
		R.Effect.Generate(91, null, base.transform.position + new Vector3(0f, 1.2f, LayerManager.ZNum.Fx), Vector3.zero, default(Vector3), true);
		R.Effect.Generate(49, base.transform, default(Vector3), default(Vector3), default(Vector3), true);
		R.Effect.Generate(14, null, base.transform.position + new Vector3(0f, 1.2f, LayerManager.ZNum.Fx), default(Vector3), default(Vector3), true);
		R.Effect.Generate(156, base.transform, this.center.localPosition, default(Vector3), default(Vector3), true);
		base.AddCoinAndExp();
		R.Effect.Generate(213, null, default(Vector3), default(Vector3), default(Vector3), true);
		R.Effect.Generate(214, null, default(Vector3), default(Vector3), default(Vector3), true);
		SingletonMono<WorldTime>.Instance.TimeSlowByFrameOn60Fps(45, 0.2f);
		R.Camera.Controller.CameraShake(0.9166667f, 0.3f, CameraController.ShakeTypeEnum.Rect, false);
		this.action.hurtBox.gameObject.SetActive(false);
		this.eAttr.inWeakState = false;
	}

	private DahalFAnim _dahal;

	private Vector2? _rollAtkFollowPos;

	private float _rollFollowTime;
}