From 17b1a1e367e54b949dbbb00a095853256307c4ea Mon Sep 17 00:00:00 2001 From: reisenlol Date: Mon, 12 Jan 2026 23:44:43 -0800 Subject: [PATCH] too many if statements --- Assets/Prefabs/Enemy.prefab | 3 +++ Assets/Prefabs/PlayerEntity.prefab | 3 +++ Assets/Scripts/ActionUIHandler.cs | 36 +++++++++++++++--------------- Assets/Scripts/Enemy.cs | 1 + Assets/Scripts/Entity.cs | 23 ++++++++++++++++++- Assets/Scripts/RangedWeapon.cs | 2 +- Assets/Scripts/Weapon.cs | 7 ++++++ 7 files changed, 55 insertions(+), 20 deletions(-) diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab index 531b8f7..cbd2e83 100644 --- a/Assets/Prefabs/Enemy.prefab +++ b/Assets/Prefabs/Enemy.prefab @@ -182,6 +182,9 @@ MonoBehaviour: moveAnimSpeed: 10 canMove: 1 invincible: 0 + spriteRenderers: + - {fileID: 6433073964262250546} + damageColorChangeSpeed: 4 turnSpeed: 1 minimumAttackRange: 1.5 damage: 10 diff --git a/Assets/Prefabs/PlayerEntity.prefab b/Assets/Prefabs/PlayerEntity.prefab index d873f4b..4426e11 100644 --- a/Assets/Prefabs/PlayerEntity.prefab +++ b/Assets/Prefabs/PlayerEntity.prefab @@ -436,6 +436,9 @@ MonoBehaviour: moveAnimSpeed: 10 canMove: 1 invincible: 0 + spriteRenderers: + - {fileID: 3017941309338641158} + damageColorChangeSpeed: 4 hasMoved: 0 hasAttacked: 0 weapons: diff --git a/Assets/Scripts/ActionUIHandler.cs b/Assets/Scripts/ActionUIHandler.cs index abe9a9d..5e1b6a8 100644 --- a/Assets/Scripts/ActionUIHandler.cs +++ b/Assets/Scripts/ActionUIHandler.cs @@ -49,35 +49,35 @@ public class ActionUIHandler : MonoBehaviour public void UpdateUI() { - if (!selectedEntity.hasAttacked) + if (selectedEntity.currentWeapon.TryGetComponent(out RangedWeapon isRanged)) { - if (selectedEntity.currentWeapon.TryGetComponent(out RangedWeapon isRanged)) - { - possibleRanged = isRanged; - } - if (!isRanged || !isRanged.fired) - { - attackButton.gameObject.SetActive(true); - } - else - { - attackButton.gameObject.SetActive(false); - } + possibleRanged = isRanged; + } + if ((!isRanged || !isRanged.fired) && !selectedEntity.hasAttacked) + { + attackButton.gameObject.SetActive(true); + reloadButton.gameObject.SetActive(false); } else { attackButton.gameObject.SetActive(false); + if (isRanged && isRanged.fired) + { + if (selectedEntity.hasMoved || selectedEntity.hasAttacked) + { + reloadButton.gameObject.SetActive(false); + } + else + { + reloadButton.gameObject.SetActive(true); + } + } } if (!selectedEntity.hasMoved || !selectedEntity.hasAttacked) { moveButton.gameObject.SetActive(true); switchButton.gameObject.SetActive(true); } - else - { - reloadButton.gameObject.SetActive(false); - } - if (selectedEntity.hasAttacked && selectedEntity.hasMoved) { HideUI(); diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs index 52605f0..c2e3bf9 100644 --- a/Assets/Scripts/Enemy.cs +++ b/Assets/Scripts/Enemy.cs @@ -2,6 +2,7 @@ using UnityEngine; public class Enemy : Entity { + [Header("Enemy Stats")] public int turnSpeed; public float minimumAttackRange; private PlayerEntity closestPlayer; diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs index 4fafeac..469a150 100644 --- a/Assets/Scripts/Entity.cs +++ b/Assets/Scripts/Entity.cs @@ -11,15 +11,20 @@ public class Entity : MonoBehaviour [Header("Movement")] public int maxMovement; public TileObject currentTile; - public float moveAnimSpeed; + [SerializeField] private float moveAnimSpeed; [Header("Flags")] public bool canMove = true; public bool invincible; + [Header("Animation")] + [SerializeField] private SpriteRenderer[] spriteRenderers; + [SerializeField] private float damageColorChangeSpeed; + public virtual void TakeDamage(float damage) { health -= damage; + StartCoroutine(DamageAnimation()); if (health <= 0) { OnKillEffects(); @@ -61,4 +66,20 @@ public class Entity : MonoBehaviour } FinishedMovement(); } + private IEnumerator DamageAnimation() + { + float currentState = 0; + while (currentState < 1) + { + currentState += Time.deltaTime * damageColorChangeSpeed; + foreach (SpriteRenderer spritepart in spriteRenderers) + { + if (spritepart) + { + spritepart.color = Color.Lerp(Color.gray, Color.white, currentState); + } + } + yield return null; + } + } } diff --git a/Assets/Scripts/RangedWeapon.cs b/Assets/Scripts/RangedWeapon.cs index 09a88cd..92e8241 100644 --- a/Assets/Scripts/RangedWeapon.cs +++ b/Assets/Scripts/RangedWeapon.cs @@ -5,8 +5,8 @@ public class RangedWeapon : Weapon { private Camera cam; private Vector3 mousePos; + [Header("Ranged Weapon Specifics")] public bool fired; - public bool isAiming; [SerializeField] private Projectile projectile; private void Start() { diff --git a/Assets/Scripts/Weapon.cs b/Assets/Scripts/Weapon.cs index 7252894..54bd0d8 100644 --- a/Assets/Scripts/Weapon.cs +++ b/Assets/Scripts/Weapon.cs @@ -2,8 +2,15 @@ using UnityEngine; public class Weapon : MonoBehaviour { + [Header("Identification")] public string weaponName; + [Header("Cache")] + public bool isAiming; public PlayerEntity thisEntity; + + [Header("Stats")] + public float damage; + public virtual void TryAttack() { AttackEffects();