public void Damage(int amount, GameCharacter source, DamageFinishedDelegate finishedCallback = null) { if (isDead || amount <= 0) { return; } // Decrease health by damage and send damage signals StartCoroutine(UpdateDamage(amount, source, finishedCallback)); // Die if no health left if (currSize <= 0) { HandleDeath(source); } }
private IEnumerator UpdateDamage(int amount, GameCharacter source, DamageFinishedDelegate finishedCallback = null) { int count = 0; while (count < amount && links.Count > 0) { RemoveTail(); count++; yield return(new WaitForSeconds(0.1f)); } if (count < amount) { GameMap.Instance.KillCharacter(_head, source); } finishedCallback(); }
public void Damage(int amount, GameCharacter source, DamageFinishedDelegate finishedCallback = null) { health.Damage(amount, source, finishedCallback); }