private void OnTriggerEnter(Collider other) { // get colliding object's hitbox HitboxController collidingHitbox = other.GetComponent <HitboxController>(); // if hitbox found if (collidingHitbox != null) { // get health associated with health CharacterHealthController collidingHealth = collidingHitbox.CharMaster. CharHealth; // if colliding char already been healed if (healthAlreadyHealed.Contains(collidingHealth)) { // DONT continue code return; } // if hit target is ally of caster if (collidingHitbox.CharMaster.CharHealth.AreFactionAllies( _casterCharData.factionReputation)) { // heal hitbox target to full health collidingHitbox.CharMaster.CharHealth.HealHealth(_casterCharMaster, 999999); // denote that hitbox target has been healed healthAlreadyHealed.Add(collidingHealth); } } }
void InitIfNeeded() { if (!_characterModel) { _characterModel = GetComponentInChildren <CharacterModel>(); } if (!_characterHealthController) { _characterHealthController = GetComponentInChildren <CharacterHealthController>(); _characterHealthController.onHealthChanged += (float oldHealth, float health) => { if (health < oldHealth) { if (isChargingSpirit) { CancelSpiritCharge(); } } }; } if (!_characterInputController) { _characterInputController = GetComponentInChildren <CharacterInputController>(); } if (!_characterMovementController) { _characterMovementController = GetComponentInChildren <CharacterMovementController>(); } }
void OnContactWithObject(GameObject otherGameObject) { if (owner == null || otherGameObject == owner.gameObject) { return; } CharacterHealthController characterHealthController = otherGameObject.GetComponent <CharacterHealthController>(); if (characterHealthController != null) { float lastDamageTaken = float.MinValue; if (lastDamagesTaken.ContainsKey(characterHealthController)) { lastDamageTaken = lastDamagesTaken[characterHealthController]; } if (Time.time - lastDamageTaken > damageCooldown) { characterHealthController.TakeDamage(damage, owner); lastDamagesTaken[characterHealthController] = Time.time; } } }
public void AttachCharacter(CharacterModel incomingCharacterModel) { characterModel = incomingCharacterModel; image.sprite = characterModel.CharacterInfo.image; CharacterHealthController characterHealthController = characterModel.GetComponent <CharacterHealthController>(); characterHealthController.onHealthChanged += (oldHealth, health) => { healthSlider.value = HelperUtilities.Remap(health, 0, characterHealthController.maxHealth, healthSlider.minValue, healthSlider.maxValue); }; characterCombatController = characterModel.GetComponent <CharacterCombatController>(); }
public CharacterModel GetWinningPlayer() { float maxhealth = 0; CharacterModel winner = null; foreach (CharacterModel characterModel in characterModels) { CharacterHealthController characterHealthController = characterModel.GetComponent <CharacterHealthController>(); if (characterHealthController.health > maxhealth) { maxhealth = characterHealthController.health; winner = characterModel; } } return(winner); }
public void CheckForGameOver() { if (characterModels.Count == 0 || GameManager.instance.gameOver) { return; } int charsAlive = 0; CharacterModel currentWinner = null; foreach (CharacterModel characterModel in characterModels) { CharacterHealthController characterHealthController = characterModel.GetComponent <CharacterHealthController>(); if (!characterHealthController.isDead) { if (charsAlive == 0) { currentWinner = characterModel; } else { currentWinner = null; } charsAlive++; } } if (charsAlive == 0) { // Game Tie // Forcing a winner... Yep.. that's right... Tough times!! currentWinner = characterModels[0]; GameManager.instance.ShowGameOver(currentWinner); } else if (charsAlive == 1) { // We have a winner GameManager.instance.ShowGameOver(currentWinner); } }
void OnContactWithObject(GameObject otherGameObject) { if (owner == null || otherGameObject == owner.gameObject) { return; } CharacterHealthController characterHealthController = otherGameObject.GetComponent <CharacterHealthController>(); if (characterHealthController != null) { characterHealthController.TakeDamage(damage, owner); Destroy(gameObject); } else if (DestroyOnAnyContact) { Destroy(gameObject); } }