コード例 #1
0
ファイル: Cost.cs プロジェクト: sdercolin/ciphervitx-unity
    /// <summary>
    /// “+”的重载,用于创建复合费用
    /// </summary>
    public static Cost operator +(Cost a, Cost b)
    {
        List <Cost> newElements = new List <Cost>();

        if (a is MultipleCost)
        {
            if (b is MultipleCost)
            {
                newElements = ListUtils.Combine(((MultipleCost)a).Elements, ((MultipleCost)b).Elements);
            }
            else
            {
                newElements.AddRange(((MultipleCost)a).Elements);
                newElements.Add(b);
            }
        }
        else if (b is MultipleCost)
        {
            newElements.Add(a);
            newElements.AddRange(((MultipleCost)b).Elements);
        }
        else
        {
            newElements.Add(a);
            newElements.Add(b);
        }
        return(new MultipleCost(a.Reason, newElements.ToArray()));
    }
コード例 #2
0
ファイル: Message.cs プロジェクト: sdercolin/ciphervitx-unity
 public static Message operator +(Message a, Message b)
 {
     if (a is EmptyMessage || a == null)
     {
         return(b);
     }
     else if (b is EmptyMessage || b == null)
     {
         return(a);
     }
     else
     {
         List <Message> newElements = new List <Message>();
         if (a is MultipleMessage)
         {
             if (b is MultipleMessage)
             {
                 newElements = ListUtils.Combine(((MultipleMessage)a).Elements, ((MultipleMessage)b).Elements);
             }
             else
             {
                 newElements.AddRange(((MultipleMessage)a).Elements);
                 newElements.Add(b);
             }
         }
         else if (b is MultipleMessage)
         {
             newElements.Add(a);
             newElements.AddRange(((MultipleMessage)b).Elements);
         }
         else
         {
             newElements.Add(a);
             newElements.Add(b);
         }
         return(new MultipleMessage(newElements.ToArray()));
     }
 }