diff --git a/Assets/Scripts/Ally/Ally.cs b/Assets/Scripts/Ally/Ally.cs index 6cabeb3..212691d 100644 --- a/Assets/Scripts/Ally/Ally.cs +++ b/Assets/Scripts/Ally/Ally.cs @@ -4,8 +4,14 @@ using UnityEngine; public class Ally : Entity { + public override void Start() + { + base.Start(); - void Update() { + } + + void Update() + { if(IsEnemyDetected) { AttackEnemy(); @@ -13,17 +19,17 @@ public class Ally : Entity } - void AttackEnemy() { + void AttackEnemy() + { //Attack Cooldown if(AttackSpeed < AttackSpeedWait) { - Enemy.hit(AttackDamage); - Debug.Log("Opponent Hp = " + Enemy.Hp); + Enemy.Hit(AttackDamage); //Kill if no hp if(Enemy.Hp <= 0) { IsEnemyDetected = false; - Enemy.death(); + Enemy.Death(); } AttackSpeedWait = 0f; diff --git a/Assets/Scripts/Ally/Archer.cs b/Assets/Scripts/Ally/Archer.cs index 8872636..d60b2e9 100644 --- a/Assets/Scripts/Ally/Archer.cs +++ b/Assets/Scripts/Ally/Archer.cs @@ -11,12 +11,16 @@ public class Archer : Ally private Rigidbody2D _rigidbodyAlly; private Rigidbody2D _rigidbodyOpponent; - void Start() { + public override void Start() + { + base.Start(); + _rigidbodyAlly = GetComponent(); Animation = gameObject.AddComponent(); } - void Update() { + void Update() + { if(IsEnemyDetected) { _rigidbodyOpponent = Enemy.GetComponent(); @@ -25,12 +29,13 @@ public class Archer : Ally } - void AttackEnemy() { + void AttackEnemy() + { //Attack Cooldown if(AttackSpeed < AttackSpeedWait) { - Animation.Attack(); + Animation.PlayAttackAnim(); GameObject _newArrow = Instantiate(_arrow, _rigidbodyAlly.position, Quaternion.identity); diff --git a/Assets/Scripts/AnimationEntity.cs b/Assets/Scripts/AnimationEntity.cs index c906cde..8890e82 100644 --- a/Assets/Scripts/AnimationEntity.cs +++ b/Assets/Scripts/AnimationEntity.cs @@ -5,44 +5,50 @@ using UnityEngine; public class AnimationEntity : MonoBehaviour { - private Animator _animator_entity; + private Animator _animatorEntity; private bool _doSomething = false; private bool _isDead = false; - void Start() { - _animator_entity = GetComponentInChildren(); + void Start() + { + _animatorEntity = GetComponentInChildren(); } - void Update() { + void Update() + { - if (_doSomething && _animator_entity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f) + if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f) { - Idle(); + PlayIdleAnim(); _doSomething = false; } } - public void Idle() { + public void PlayIdleAnim() + { if(!_isDead) { - _animator_entity.Play("idle", 0, 0f); + _animatorEntity.Play("idle", 0, 0f); } } - public void Walk() { + public void PlayWalkAnim() + { if(!_isDead) { - _animator_entity.Play("walk", 0, 0f); + _animatorEntity.Play("walk", 0, 0f); } } - public void Attack() { + public void PlayAttackAnim() + { if(!_isDead) { - _animator_entity.Play("attack", 0, 0f); + _animatorEntity.Play("attack", 0, 0f); _doSomething = true; } } - public void Die() { - _animator_entity.Play("die", 0, 0f); + public void PlayDieAnim() + { + _animatorEntity.Play("die", 0, 0f); _doSomething = true; _isDead = true; } diff --git a/Assets/Scripts/Detection.cs b/Assets/Scripts/Detection.cs index be8b19e..b5bab1c 100644 --- a/Assets/Scripts/Detection.cs +++ b/Assets/Scripts/Detection.cs @@ -22,13 +22,13 @@ public class Detection : MonoBehaviour void OnTriggerEnter2D(Collider2D other) { //Projectiles detection + damage deal - if(_entityLinked is not null) { + if(_entityLinked != null) { if(_projectileDamage > 0 && other.gameObject.GetComponent() == _entityLinked) { - _entityLinked.hit(_projectileDamage); + _entityLinked.Hit(_projectileDamage); //Kill if no hp if(other.gameObject.GetComponent().Hp <= 0) { - other.gameObject.GetComponent().death(); + other.gameObject.GetComponent().Death(); _entityLinked = null; } @@ -37,8 +37,9 @@ public class Detection : MonoBehaviour } - void OnTriggerStay2D(Collider2D other) { - if(_entityLinked is not null) { + void OnTriggerStay2D(Collider2D other) + { + if(_entityLinked != null) { if(_entityLinked.Enemy == null) { //Detect the enemy and inform the Ally if (other.gameObject.tag == "Opponent" && _entityLinked is Ally) { @@ -58,7 +59,7 @@ public class Detection : MonoBehaviour void OnTriggerExit2D(Collider2D other) { - if(_entityLinked is not null) { + if(_entityLinked != null) { if(_projectileDamage == 0) { if ((other.gameObject.tag == "Opponent" && _entityLinked is Ally) || (other.gameObject.tag == "Ally" && _entityLinked is Opponent)) { _entityLinked.IsEnemyDetected = false; diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs index 1c57bb0..7ba16df 100644 --- a/Assets/Scripts/Entity.cs +++ b/Assets/Scripts/Entity.cs @@ -16,62 +16,68 @@ public class Entity : LevelObject private float _attack_speed; private float _attack_speed_wait = 0f; private AnimationEntity _animation; - private Shader shaderGUItext; - private Shader shaderSpritesDefault; + private Shader _shaderGUItext; + private Shader _shaderSpritesDefault; + private SpriteRenderer[] _spriteRenderers; //Enemy Spotted private bool _isEnemyDetected = false; private Entity _enemy; //Methods - public void death() { - _animation.Die(); - Invoke("dying", 0.1f); + public virtual void Start() + { + _spriteRenderers = GetComponentsInChildren(); } - void dying() { - SpriteRenderer[] spriteRenderers; - spriteRenderers = GetComponentsInChildren(); + //Start the animation of death and the fading of the entity + public void Death() + { + _animation.PlayDieAnim(); + Invoke("Dying", 0.1f); + } - - foreach (SpriteRenderer renderer in spriteRenderers) + //Recursive method that fade the dying entity + void Dying() + { + foreach (SpriteRenderer renderer in _spriteRenderers) { Color currentColor = renderer.color; currentColor.a = currentColor.a - 0.1f; renderer.color = currentColor; } - if(spriteRenderers[0].color.a > 0f) { - Invoke("dying", 0.1f); + if(_spriteRenderers[0].color.a > 0f) { + Invoke("Dying", 0.1f); }else { Destroy(gameObject); } } - public void hit(int damage) { + //When hit : get damage and start a flash of light + public void Hit(int damage) + { _hp-=damage; - SpriteRenderer[] spriteRenderers; - spriteRenderers = GetComponentsInChildren(); - shaderGUItext = Shader.Find("GUI/Text Shader"); - shaderSpritesDefault = Shader.Find("Sprites/Default"); + _shaderGUItext = Shader.Find("GUI/Text Shader"); + _shaderSpritesDefault = Shader.Find("Sprites/Default"); - foreach (SpriteRenderer renderer in spriteRenderers) + foreach (SpriteRenderer renderer in _spriteRenderers) { - renderer.material.shader = shaderGUItext; + renderer.material.shader = _shaderGUItext; } - Invoke("returnNormalColor", 0.1f); + Invoke("ReturnNormalColor", 0.1f); } - void returnNormalColor() { - SpriteRenderer[] spriteRenderers; - spriteRenderers = GetComponentsInChildren(); - - foreach (SpriteRenderer renderer in spriteRenderers) + //End the flash of light from the method above + void ReturnNormalColor() + { + + foreach (SpriteRenderer renderer in _spriteRenderers) { - renderer.material.shader = shaderSpritesDefault; + renderer.material.shader = _shaderSpritesDefault; } } diff --git a/Assets/Scripts/Opponent/Opponent.cs b/Assets/Scripts/Opponent/Opponent.cs index ef8a095..0f23f7b 100644 --- a/Assets/Scripts/Opponent/Opponent.cs +++ b/Assets/Scripts/Opponent/Opponent.cs @@ -8,13 +8,16 @@ public class Opponent : Entity private Vector2 _movementVector = Vector2.zero; private Rigidbody2D _rigidbody; - void Start() + public override void Start() { + base.Start(); + _rigidbody = GetComponent(); Animation = gameObject.AddComponent(); } - void Update() { + void Update() + { _movementVector.x = -Time.deltaTime * Speed; @@ -26,18 +29,18 @@ public class Opponent : Entity } - void AttackEnemy() { + void AttackEnemy() + { //Attack Cooldown if(AttackSpeed < AttackSpeedWait) { - Animation.Attack(); + Animation.PlayAttackAnim(); - Enemy.hit(AttackDamage); - Debug.Log("Ally Hp = " + Enemy.Hp); + Enemy.Hit(AttackDamage); //Kill if no hp if(Enemy.Hp <= 0) { - Enemy.death(); + Enemy.Death(); } AttackSpeedWait = 0f;