using UnityEngine;
using Wizard.Battle.View.Vfx;

namespace Wizard.Battle.Player.ClassCharacter;

internal class EnemyHighRankSpineClassCharacter : HighRankSpineClassCharacter
{
	protected readonly Vector3 WIDGET_POSITION = new Vector3(0f, 490f, 30f);

	protected readonly int WIDGET_OFFSET_BOTTOM = 195;

	protected readonly int WIDGET_OFFSET_TOP = -1162;

	protected readonly Vector3 PP_PANEL_POSITION = new Vector3(0f, -34.22f, -29.25f);

	protected override Vector3 MessagePosition => _initPosition + new Vector3(0f, -0.3f, 0f);

	public override VfxBase CreateLoadResouceVfx()
	{
		SequentialVfxPlayer sequentialVfxPlayer = SequentialVfxPlayer.Create();
		sequentialVfxPlayer.Register(base.CreateLoadResouceVfx());
		sequentialVfxPlayer.Register(InstantVfx.Create(delegate
		{
			base.GameObject.transform.Find("Collider").gameObject.GetComponent<BoxCollider>().size = new Vector3(3.8f, 3.9f, 0.2f);
		}));
		return sequentialVfxPlayer;
	}

	protected override string GetTagName()
	{
		return "Enemy";
	}

	protected override void SetUpAnchor(GameObject o)
	{
		o.transform.localPosition = WIDGET_POSITION;
		UIWidget uIWidget = o.AddComponent<UIWidget>();
		uIWidget.topAnchor.relative = 1f;
		uIWidget.topAnchor.absolute = WIDGET_OFFSET_TOP;
		Transform target = BattleManagerBase.GetIns().Battle3DContainer.transform.Find("Camera");
		uIWidget.topAnchor.target = target;
		uIWidget.bottomAnchor.target = target;
		uIWidget.bottomAnchor.relative = 0.5f;
		uIWidget.bottomAnchor.absolute = WIDGET_OFFSET_BOTTOM;
	}

	protected override void AttachOtherUI(GameObject o)
	{
		BattleManagerBase.GetIns().BattleEnemy.BattleView.EpPanel.transform.parent = o.transform;
		EnemyStatusPanelControl enemyStatusPanelControl = BattleManagerBase.GetIns().BattleEnemy.StatusPanelControl as EnemyStatusPanelControl;
		if ((bool)enemyStatusPanelControl)
		{
			enemyStatusPanelControl.ChangePPPanelParent(o.transform, PP_PANEL_POSITION);
		}
	}

	public override Vector3 GetSpinePosition()
	{
		return new Vector3(0f, -0.36f, -0.27f);
	}

	protected override string GetTextureName()
	{
		return "mt_Encampment_Chara_1_Rev";
	}

	public override Vector3 GetMaskImagePosition()
	{
		return new Vector3(0f, 0.04f, 0f);
	}

	protected override Vector3 GetShieldPosition()
	{
		return new Vector3(1.86f, 0.4f, 0f);
	}

	protected override Vector3 GetLifeIconPosition()
	{
		return new Vector3(0f, 0f, 0.1f);
	}

	public override Quaternion GetMaskImageRotation()
	{
		return Quaternion.Euler(new Vector3(0f, 0f, 180f));
	}

	public override Vector3 ConvertSpineScale(Vector3 originalScale)
	{
		if (GameMgr.GetIns().GetDataMgr().GetEnemyBattleSkillReverse() == 1)
		{
			return new Vector3((0f - originalScale.x) * 0.934f, originalScale.y, originalScale.z) * 1.003125f;
		}
		return new Vector3(originalScale.x * 0.934f, originalScale.y, originalScale.z);
	}

	public override int GetSpineSortingOrder(bool isBack = false)
	{
		if (!isBack)
		{
			return -1;
		}
		return -9;
	}

	public override int GetMaskSortingOrder(bool isBack = false)
	{
		if (!isBack)
		{
			return -1;
		}
		return -9;
	}

	protected override int GetEmoteLabelDepth()
	{
		return 0;
	}

	protected override int GetCharaId()
	{
		return GameMgr.GetIns().GetDataMgr().GetEnemyCharaId();
	}

	public override int GetSkinId()
	{
		return GameMgr.GetIns().GetDataMgr().GetEnemySkinId();
	}

	public override int GetStencil()
	{
		return 2;
	}

	protected override Vector3 GetPosition()
	{
		return Global.CLASS_BATTLE_POSITION_ENEMY;
	}

	protected override Quaternion ConvertBackPanelRotation(Quaternion originalRotation)
	{
		return Quaternion.Euler(0f, -180f, 180f);
	}
}
