From b0f666b5ed0cc49605e7eea82faa6e4038ae6357 Mon Sep 17 00:00:00 2001 From: Stedd Date: Sat, 17 Sep 2022 18:58:48 +0200 Subject: [PATCH] Added entity invulnerability --- Assets/Entities/Enemies/Scripts/EnemyBase.cs | 47 +------------------ .../Enemies/Scripts/Entities.Enemies.asmdef | 3 +- Assets/Entities/EntityBase.cs | 15 +++++- Assets/Interfaces/IDamageable.cs | 14 ++++++ 4 files changed, 31 insertions(+), 48 deletions(-) diff --git a/Assets/Entities/Enemies/Scripts/EnemyBase.cs b/Assets/Entities/Enemies/Scripts/EnemyBase.cs index a8928ab..25d0c58 100644 --- a/Assets/Entities/Enemies/Scripts/EnemyBase.cs +++ b/Assets/Entities/Enemies/Scripts/EnemyBase.cs @@ -1,50 +1,7 @@ -using UnityEngine; -using AsteroidGame.Interfaces; - -namespace AsteroidGame.Entities.Enemies +namespace AsteroidGame.Entities.Enemies.Scripts { - public class EnemyBase : MonoBehaviour, IDamageable + public class EnemyBase : EntityBase { - // Start is called before the first frame update - void Start() - { - } - - // Update is called once per frame - void Update() - { - - } - - public void ModifyHealth(int healthChange) - { - throw new System.NotImplementedException(); - } - - public void SetHealth(int newHealth) - { - throw new System.NotImplementedException(); - } - - public void SetMaxHealth(int newHealth) - { - throw new System.NotImplementedException(); - } - - public int GetHealth() - { - throw new System.NotImplementedException(); - } - - public int GetMaxHealth() - { - throw new System.NotImplementedException(); - } - - public float GetHealthFactor() - { - throw new System.NotImplementedException(); - } } } diff --git a/Assets/Entities/Enemies/Scripts/Entities.Enemies.asmdef b/Assets/Entities/Enemies/Scripts/Entities.Enemies.asmdef index 75ffd50..3124a54 100644 --- a/Assets/Entities/Enemies/Scripts/Entities.Enemies.asmdef +++ b/Assets/Entities/Enemies/Scripts/Entities.Enemies.asmdef @@ -4,7 +4,8 @@ "references": [ "GUID:bc7863ca0989b494d84426bfd28432fa", "GUID:857695c8a9ee988459c9b50e4e75e660", - "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d" + "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d", + "GUID:f26d68a0bdefa1043b120b820f55e190" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Entities/EntityBase.cs b/Assets/Entities/EntityBase.cs index 86bbda6..2e2491c 100644 --- a/Assets/Entities/EntityBase.cs +++ b/Assets/Entities/EntityBase.cs @@ -5,15 +5,21 @@ namespace AsteroidGame.Entities { public class EntityBase : MonoBehaviour, IDamageable { - [SerializeField] protected int health; [SerializeField] protected int maxHealth; + [SerializeField] protected bool isInvulnerable; + public bool IsInvulnerable { get; } + public void ModifyHealth(int healthChange) { - health += healthChange; + if (!isInvulnerable) + { + health += healthChange; + } } + public void SetHealth(int newHealth) { health = newHealth; @@ -24,6 +30,11 @@ namespace AsteroidGame.Entities maxHealth = newHealth; } + public void SetInvulnerable(bool newState) + { + isInvulnerable = newState; + } + public int GetHealth() { return health; diff --git a/Assets/Interfaces/IDamageable.cs b/Assets/Interfaces/IDamageable.cs index 162560e..28e12f5 100644 --- a/Assets/Interfaces/IDamageable.cs +++ b/Assets/Interfaces/IDamageable.cs @@ -4,14 +4,28 @@ namespace AsteroidGame.Interfaces { public void ModifyHealth(int healthChange); + #region PublicProperties + + public bool IsInvulnerable { get; } + + #endregion + + #region Setters public void SetHealth(int newHealth); public void SetMaxHealth(int newHealth); + + public void SetInvulnerable (bool newState); + + #endregion + #region Getters public int GetHealth(); public int GetMaxHealth(); public float GetHealthFactor(); + + #endregion } }