Пример #1
0
        public static Costs operator +(Costs sum, Cost c)
        {
            Mana m = c as Mana;

            if (m != null)
            {
                for (int i = 0; i < sum.CostList.Count; i++)
                {
                    Mana mm = sum.CostList[i] as Mana;

                    if (mm == null)
                    {
                        continue;
                    }

                    if (mm.IsSameType(m))
                    {
                        sum.CostList[i] += m;
                        return(sum);
                    }
                }
            }
            sum.CostList.Add(c);
            return(sum);
        }
Пример #2
0
        public static Cost operator -(Cost c1, Cost c2)
        {
            Mana  m    = c1 as Mana;
            Mana  n    = c2 as Mana;
            Costs cst1 = c1 as Costs;

            if (cst1 != null)
            {
                for (int i = 0; i < cst1.CostList.Count; i++)
                {
                    Mana cst1m = cst1.CostList[i] as Mana;
                    if (cst1m != null)
                    {
                        if (cst1m.IsSameType(n))
                        {
                            cst1m.count -= n.count;
                            return(cst1);
                        }
                    }
                }
            }

            if (!(m == null || n == null))
            {
                if (m.IsSameType(n))
                {
                    m.count += n.count;
                    return(m);
                }
            }

            if (c1 == null)
            {
                if (c2 == null)
                {
                    return(null);
                }
                else
                {
                    return(c2);
                }
            }
            else if (c2 == null)
            {
                return(c1);
            }

            Costs sum = new Costs();

            sum += c1;
            sum += c2;
            return(sum);
        }