Пример #1
0
 public SearchGroup(FilterCondition c, ISet <string> stats)
 {
     InitializeComponent();
     Stats = stats;
     if (c is WeightCondition w)
     {
         Type = GroupType.Weight;
         AddHeader(w.Min, w.Max);
         foreach (string s in w.Weights.Keys)
         {
             AddRow(s, w.Weights[s], null);
         }
     }
     else if (c is AndCondition a)
     {
         Type = GroupType.And;
         AddHeader(null, null);
         foreach (FilterCondition sub in a.Subconditions)
         {
             if (sub is ClampCondition cc)
             {
                 AddRow(cc.Template, cc.Min, cc.Max);
             }
         }
     }
     else if (c is NotCondition n)
     {
         Type = GroupType.Not;
         AddHeader(null, null);
         foreach (FilterCondition sub in n.Subconditions)
         {
             if (sub is ClampCondition cc)
             {
                 AddRow(cc.Template, cc.Min, cc.Max);
             }
         }
     }
     else
     {
         Type = GroupType.Count;
         CountCondition cnt = (CountCondition)c;
         AddHeader(cnt.Min, cnt.Max);
         foreach (FilterCondition sub in cnt.Subconditions)
         {
             if (sub is ClampCondition cc)
             {
                 AddRow(cc.Template, cc.Min, cc.Max);
             }
         }
     }
 }
Пример #2
0
    // 손에 있는 card를 target에게 사용한다.
    public bool Use(GameObject card, GameObject target)
    {
        Card tempCard = card.GetComponent <Card>();
        int  cost     = tempCard.BattleCost;

        if (cost > currentCost)
        {
            return(false);
        }
        if (!tempCard.Use(target))
        {
            return(false);
        }

        // 카드 사용 코스트 소모, 0보다 작으면 0으로 퉁침
        if (cost >= 0)
        {
            currentCost -= cost;
        }

        // Ready 예외사항 : 이런 식으로 하기 싫은데 좋은 방법을 못찾겠음
        if (cost == tempCard.BattleCost)
        {
            CountCondition tempCon = card.transform.parent.GetComponent <Unit>().SearchCondition(typeof(Ready)) as CountCondition;
            if (tempCon != null)
            {
                tempCon.DecreaseCount(tempCon.Count);
            }
        }

        costText.GetComponent <Text>().text = currentCost + " / " + maxCost;

        cards.Remove(card);

        return(true);
    }