Added entity invulnerability

This commit is contained in:
Stedd 2022-09-17 18:58:48 +02:00
parent 29d86194ca
commit b0f666b5ed
4 changed files with 31 additions and 48 deletions

View File

@ -1,50 +1,7 @@
using UnityEngine; namespace AsteroidGame.Entities.Enemies.Scripts
using AsteroidGame.Interfaces;
namespace AsteroidGame.Entities.Enemies
{ {
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();
}
}
} }

View File

@ -4,7 +4,8 @@
"references": [ "references": [
"GUID:bc7863ca0989b494d84426bfd28432fa", "GUID:bc7863ca0989b494d84426bfd28432fa",
"GUID:857695c8a9ee988459c9b50e4e75e660", "GUID:857695c8a9ee988459c9b50e4e75e660",
"GUID:17a5862fcd6383b4b97bad4dcb1e2e5d" "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d",
"GUID:f26d68a0bdefa1043b120b820f55e190"
], ],
"includePlatforms": [], "includePlatforms": [],
"excludePlatforms": [], "excludePlatforms": [],

View File

@ -5,14 +5,20 @@ namespace AsteroidGame.Entities
{ {
public class EntityBase : MonoBehaviour, IDamageable public class EntityBase : MonoBehaviour, IDamageable
{ {
[SerializeField] protected int health; [SerializeField] protected int health;
[SerializeField] protected int maxHealth; [SerializeField] protected int maxHealth;
[SerializeField] protected bool isInvulnerable;
public bool IsInvulnerable { get; }
public void ModifyHealth(int healthChange) public void ModifyHealth(int healthChange)
{
if (!isInvulnerable)
{ {
health += healthChange; health += healthChange;
} }
}
public void SetHealth(int newHealth) public void SetHealth(int newHealth)
{ {
@ -24,6 +30,11 @@ namespace AsteroidGame.Entities
maxHealth = newHealth; maxHealth = newHealth;
} }
public void SetInvulnerable(bool newState)
{
isInvulnerable = newState;
}
public int GetHealth() public int GetHealth()
{ {
return health; return health;

View File

@ -4,14 +4,28 @@ namespace AsteroidGame.Interfaces
{ {
public void ModifyHealth(int healthChange); public void ModifyHealth(int healthChange);
#region PublicProperties
public bool IsInvulnerable { get; }
#endregion
#region Setters
public void SetHealth(int newHealth); public void SetHealth(int newHealth);
public void SetMaxHealth(int newHealth); public void SetMaxHealth(int newHealth);
public void SetInvulnerable (bool newState);
#endregion
#region Getters
public int GetHealth(); public int GetHealth();
public int GetMaxHealth(); public int GetMaxHealth();
public float GetHealthFactor(); public float GetHealthFactor();
#endregion
} }
} }