Example #1
0
    int CalculateHitRate()
    {
        Unit    target = turn.targets[index].content.GetComponent <Unit>();
        HitRate hr     = turn.ability.GetComponentInChildren <HitRate>();

        return(hr.Calculate(turn.actor, target));
    }
 void ApplyAbility()
 {
     BaseAbilityEffect[] effects = turn.ability.GetComponentsInChildren <BaseAbilityEffect>();
     for (int i = 0; i < turn.targets.Count; ++i)
     {
         Tile target = turn.targets[i];
         for (int j = 0; j < effects.Length; ++j)
         {
             BaseAbilityEffect   effect   = effects[j];
             AbilityEffectTarget targeter = effect.GetComponent <AbilityEffectTarget>();
             if (targeter.IsTarget(target))
             {
                 HitRate rate   = effect.GetComponent <HitRate>();
                 int     chance = rate.Calculate(target);
                 if (UnityEngine.Random.Range(0, 101) > chance)
                 {
                     Debug.Log(turn.actor.name + " missed!");
                     // Swing and a miss!
                     continue;
                 }
                 effect.Apply(target);
             }
         }
     }
 }
 void ApplyAbility()
 {
     BaseAbilityEffect[] effects = turn.ability.GetComponentsInChildren <BaseAbilityEffect>();
     for (int i = 0; i < turn.targets.Count; ++i)
     {
         Tile target = turn.targets[i];
         for (int j = 0; j < effects.Length; ++j)
         {
             BaseAbilityEffect   effect   = effects[j];
             AbilityEffectTarget targeter = effect.GetComponent <AbilityEffectTarget>();
             if (targeter.IsTarget(target))
             {
                 //calculate actual hit rate
                 HitRate rate   = effect.GetComponent <HitRate>();
                 int     chance = rate.Calculate(target);
                 if (UnityEngine.Random.Range(0, 101) > chance)
                 {
                     // A Miss!
                     Debug.Log("Action Missed!");
                     continue;
                 }
                 //apply damage/effect on hit
                 effect.Apply(target);
             }
         }
     }
 }
Example #4
0
        private void UpdateHitSuccessIndicator()
        {
            int  chance = 0;
            int  amount = 0;
            Tile target = turn.targets[index];

            Transform obj = turn.ability.transform;

            for (int i = 0; i < obj.childCount; ++i)
            {
                AbilityEffectTarget targeter = obj.GetChild(i).GetComponent <AbilityEffectTarget>();
                if (targeter.IsTarget(target))
                {
                    HitRate hitRate = targeter.GetComponent <HitRate>();
                    chance = hitRate.Calculate(target);

                    BaseAbilityEffect effect = targeter.GetComponent <BaseAbilityEffect>();
                    if (effect == null)
                    {
                        throw new Exception("Missing AbilityEffect component.");
                    }
                    amount = effect.Predict(target);
                    break;
                }
            }

            hitIndicatorPanelController.SetStats(chance, amount);
        }
Example #5
0
    //checks ability hit rate component to determine if attack angle matters
    bool IsAbilityAngleBased(Ability ability)
    {
        bool isAngleBased = false;

        for (int i = 0; i < ability.transform.childCount; ++i)
        {
            HitRate hr = ability.transform.GetChild(i).GetComponent <HitRate>();
            if (hr.IsAngleBased)
            {
                isAngleBased = true;
                break;
            }
        }
        return(isAngleBased);
    }
    void UpdateHitSuccessIndicator()
    {
        int  chance = 0;
        int  amount = 0;
        Tile target = turn.targets[index];

        for (int i = 0; i < targeters.Length; ++i)
        {
            if (targeters[i].IsTarget(target))
            {
                HitRate hitRate = targeters[i].GetComponent <HitRate>();
                chance = hitRate.Calculate(target);

                BaseAbilityEffect effect = targeters[i].GetComponent <BaseAbilityEffect>();
                amount = effect.Predict(target);
                break;
            }
        }
        hitSuccessIndicator.SetStats(chance, amount);
    }
Example #7
0
    void UpdateHitSuccessIndicator()
    {
        int       chance = 0;
        int       amount = 0;
        WorldTile target = turn.targets[index];

        Transform obj = turn.ability.transform;

        for (int i = 0; i < obj.childCount; ++i)
        {
            AbilityEffectTarget targeter = obj.GetChild(i).GetComponent <AbilityEffectTarget>();
            if (targeter.IsTarget(target))
            {
                HitRate hitRate = targeter.GetComponent <HitRate>();
                chance = hitRate.Calculate(target);

                BaseAbilityEffect effect = targeter.GetComponent <BaseAbilityEffect>();
                amount = effect.Predict(target);
                break;
            }
        }

        hitSuccessIndicator.SetStats(chance, amount);
    }
Example #8
0
    int CalculateHitChance(Tile target)
    {
        HitRate hitRate = turn.phaser.GetComponentInChildren <HitRate>();

        return(hitRate.Calculate(target));
    }
Example #9
0
 // updates win and losses on UI
 private void updateResultsDisplay()
 {
     lblWins.Text       = ($"Wins: {wins} out of {gamesPlayed}");
     lblWinPercent.Text = HitRate.Calculate(wins, gamesPlayed);
 }