public void SetData(ScriptableObject data)
 {
     if (data is CardData cardData)
     {
         gameObject.AddComponent <TooltipTrigger>().SetText(cardData.CardAlignment.ToString());
     }
     else if (data is MingmingData mingmingData)
     {
         CardAlignment alignment = isPrimary ? mingmingData.MingmingAlignment.Primary : mingmingData.MingmingAlignment.Secondary;
         string        header    = isPrimary ? "Primary" : "Secondary";
         gameObject.AddComponent <TooltipTrigger>().SetText(alignment.ToString(), $"{header} Alignment");
     }
 }
Exemple #2
0
        private float GetTypeAdvantage(MingmingAlignment defenderTypes, CardAlignment cardType)
        {
            float modifier = 1f;

            bool hasPrimaryAdvantage = AlignmentAdvantageLookup.TryGetValue(new AlignmentCombination {
                Source = cardType, Target = defenderTypes.Primary
            }, out float primaryValue);

            modifier *= hasPrimaryAdvantage ? primaryValue : 1;

            bool hasSecondaryAdvantage = AlignmentAdvantageLookup.TryGetValue(new AlignmentCombination {
                Source = cardType, Target = defenderTypes.Secondary
            }, out float secondaryValue);

            modifier *= hasSecondaryAdvantage ? secondaryValue * SECONDARY_TYPE_ADVANTAGE : 1;

            return(modifier);
        }
    public Sprite GetSpriteFromEnum <T>(T _enum)
    {
        Sprite sprite;
        object list = _enum switch
        {
            CardAlignment c => CardAlignmentReferences,
               _ => null,
        };

        if (list != null)
        {
            sprite = ((List <EnumSpritePair <T> >)list).Find(x => x.Enum.Equals(_enum)).Sprite;
        }
        else
        {
            sprite = null;
        }

        return(sprite);
    }
        public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            Status.RemoveStatus(target);

            base.InvokeAction(source, target, cardAlignment);
        }
Exemple #5
0
        public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            FindObjectsOfType <PartyController>().First(m => m.HasMingming(source)).DrawCards(numberOfCards);

            base.InvokeAction(source, target, cardAlignment);
        }
 public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
 {
     //TODO add card alignment modifier?
     target.AddEnergy(EnergyAdded);
     base.InvokeAction(source, target, cardAlignment);
 }
Exemple #7
0
        public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            int healAmount = Rules.GetHealAmount(source, target, HealPower);

            target.TakeDamage(-healAmount, source);

            base.InvokeAction(source, target, cardAlignment);
        }
Exemple #8
0
 public bool Contains(CardAlignment alignment)
 {
     return(alignment.Equals(Primary) || (Secondary != CardAlignment.None && alignment.Equals(Secondary)));
 }
Exemple #9
0
        public virtual void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            OnInvoked?.Invoke();

            //PerformAnimation(source, target);
            source.OnTriggerAnimation(PerformAnimation, target);
        }
Exemple #10
0
        public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            float damage = Rules.Instance.GetAttackDamage(source, target, cardAlignment, AttackPower);

            target.TakeDamage(Mathf.FloorToInt(damage), source);

            base.InvokeAction(source, target, cardAlignment);
        }
Exemple #11
0
        private float GetModifier(MingmingAlignment attackerType, MingmingAlignment defenderTypes, CardAlignment cardType)
        {
            float modifier = attackerType.Contains(cardType) ? SAME_TYPE_ADVANTAGE : 1f; //Bonus for using same type

            modifier *= GetTypeAdvantage(defenderTypes, cardType);
            return(modifier);
        }
Exemple #12
0
        public int GetAttackDamage(int level, int attack, int defense, float cardPower,
                                   MingmingAlignment attackerType, MingmingAlignment defenderTypes, CardAlignment cardType)
        {
            float _modifier = GetModifier(attackerType, defenderTypes, cardType);
            //float damage = ((((((2 * level) / 5) + 2) * power * attack / defense) / 50) + 2) * _modifier;
            float damage = (float)((2 * level) / 5) + 2;

            damage *= (float)cardPower * attack / defense;
            damage  = (float)(damage / 50) + 2;
            damage *= _modifier;

            return(Mathf.FloorToInt(damage));
        }
Exemple #13
0
        public int GetAttackDamage(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment, float power)
        {
            float _modifier = GetModifier(source.GetMingmingAlignment, target.GetMingmingAlignment, cardAlignment);

            float damage = GetLevelModifier(source.Level);

            damage *= (float)power * source.Attack / target.Defense;
            damage  = (float)(damage / 40) + 2;

            //Debug.Log($"{source.name} {source.GetInstanceID()} attacks {target.name} {target.GetInstanceID()} for {damage} damage.\nModifier: {_modifier}");
            damage *= _modifier;

            return(Mathf.FloorToInt(damage));
        }
        public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment)
        {
            OnInvoked?.Invoke();

            if (Constraint.MingmingMeetsConstraint(source))
            {
                Action.InvokeAction(source, target, cardAlignment);
            }
        }