using System.Collections.Generic; using UnityEngine; public class PlayerEntity : Entity { [Header("Player Flags")] public int actions = 2; public int maxActions = 2; public enum PlayerClass {Ranker, Caster, Officer, Engineer, Medic} public PlayerClass selectedClass = PlayerClass.Ranker; [Header("Weaponry")] [SerializeField] private Weapon[] weapons; [HideInInspector] public List weaponInstances = new(); public Weapon currentWeapon; [Header("Class Abilities")] [SerializeField] private ClassAbility classAbility; [HideInInspector] public ClassAbility abilityInstance; [Header("UI")] [SerializeField] private Transform hpBar; public GameObject debugDoneObject; void Start() { foreach (Weapon weapon in weapons) { Weapon newWeapon = Instantiate(weapon, transform); newWeapon.thisEntity = this; newWeapon.tag = tag; weaponInstances.Add(newWeapon); } if (selectedClass == PlayerClass.Officer) { abilityInstance = Instantiate(classAbility, transform); abilityInstance.thisEntity = this; } currentWeapon = weaponInstances[0]; } // Update is called once per frame void Update() { } public override void TakeDamage(float amount, Entity attacker) { base.TakeDamage(amount, attacker); UpdateHealthUI(); } public void UpdateHealthUI() { hpBar.localScale = new Vector3(health/maxHealth, 1f, 1f); } public void SkipTurn() { actions = 0; TurnHandler.instance.UpdateTurns(); } public void Attack() { currentWeapon.TryAttack(); } public void SwitchWeapon(Weapon requestedWeapon) { currentWeapon = requestedWeapon; } protected override void FinishedMovement() { base.FinishedMovement(); TurnHandler.instance.UpdateTurns(); if (!ActionUIHandler.instance.opened) { ActionUIHandler.instance.ShowUI(this); } } private void OnMouseDown() { if (actions > 0 && !PlayerEntityMovement.instance.isMoving) { ActionUIHandler.instance.ShowUI(this); } } public PlayerEntity GetAdjacentPlayers() { foreach (TileObject neighbor in currentTile.neighbors) { if (neighbor.hasUnit && neighbor.hasUnit is PlayerEntity) { return neighbor.hasUnit as PlayerEntity; //i'll uh, make it return a list later this is just a quick way. } } return null; } }