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);
            }
        }
    }
Exemplo n.º 2
0
    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>();
        }
    }
Exemplo n.º 3
0
    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>();
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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);
        }
    }
Exemplo n.º 7
0
    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);
        }
    }