using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; public class Enemy : MonoBehaviour { [SerializeField] private Image enemyStepIcon; [SerializeField] private Text enemyStepIconText; [SerializeField] private List allStepImageIcons = new List(); [SerializeField] private Text enemyName; [SerializeField] private Text enemyMaxHp; [SerializeField] private Text enemyHp; [SerializeField] private Slider enemyHealthbar; [SerializeField] private Image marker; [Header("For checking. dont touch this")] [SerializeField] private int hp; public EnemyConfig enemyConfig; public GameObject enemyPosition; [SerializeField] int phaseAttack = 0; public List attackLoop = new List(); private void Start() { UpdateNextStepIconAndText(); } public void onClick() { DeckManager.main.ActionInEnemy(this); } public void ChangeHp(int damage) { hp -= damage; if (hp <= 0) { Death(); } else if (hp > enemyConfig.enemyCharacteristics.maxHp) { hp = enemyConfig.enemyCharacteristics.maxHp; } enemyHp.text = hp.ToString(); enemyHealthbar.value = hp; } public void NewInformation() { SpriteRenderer _sprRend = enemyPosition.GetComponent(); _sprRend.sprite = enemyConfig.enemyCharacteristics.sprite; var _character = enemyConfig.enemyCharacteristics; enemyName.text = _character.name; enemyMaxHp.text = _character.maxHp.ToString(); enemyHp.text = _character.maxHp.ToString(); enemyHealthbar.maxValue = _character.maxHp; enemyHealthbar.value = _character.maxHp; hp = _character.maxHp; } public void Death() { SpriteRenderer _sprRend = enemyPosition.GetComponent(); _sprRend.sprite = null; Session.main.EnemyDeath(); Destroy(gameObject); } public void UpdateNextStepIconAndText() { BaseEnemyTurn.basic.FindLoopForLocal(gameObject, phaseAttack); int _phase = BaseEnemyTurn.basic.phase; //Пока всего две фазы атаки пойдет, но надо переписать enemyStepIcon.sprite = allStepImageIcons[_phase]; //А вот это тем более if (_phase == 0) { enemyStepIconText.text = enemyConfig.enemyCharacteristics.damage.ToString(); } else { enemyStepIconText.text = enemyConfig.enemyCharacteristics.selfHealing.ToString(); } } public void Turn() { BaseEnemyTurn.basic.FindLoopTurn(this.gameObject, phaseAttack); phaseAttack++; print(gameObject.name + " Next step " + BaseEnemyTurn.basic.phase.ToString()); UpdateNextStepIconAndText(); } public int CheckHp() { return hp; } public void OnMarker() { marker.enabled = true; } public void OffMarker() { marker.enabled = false; } public bool CheckMarker() { return marker.enabled; } }