Exemple #1
0
    // カード同士で戦闘する。
    public void CardBattle(CardController attacker)
    {
        // 四方に対して、カードが存在した場合に双方で攻撃を行う。
        foreach (var pair in AllAroundDirection)
        {
            CardController defender = GetArroundCard(attacker, pair.Value);
            // カード自体が存在しない場合
            if (defender == null)
            {
                continue;
            }
            // 敵でない場合
            if (attacker.model.gameSide == defender.model.gameSide)
            {
                continue;
            }

            attacker.Attack(defender, pair.Key);
            defender.Attack(attacker, DirectionUtil.getReverse(pair.Key));

            // attacker.RefreshView();
            // defender.RefreshView();

            // 死んでいたら、底にカードを置けるようにする。
            // カードは死ぬ。
            // 再度そこにカードを置けるようにする。
            if (attacker.IsDeath())
            {
                FieldGridController controller = attacker.GetComponentInParent <FieldGridController>();
                controller.GetComponent <DropCardToFieldEvent>().enabled = true;
                attacker.Death();

                // 死亡回数をカウントする。
                GameManager.instance.IncrementDeathCount(GameSide.Player);
            }
            if (defender.IsDeath())
            {
                FieldGridController controller = defender.GetComponentInParent <FieldGridController>();
                controller.GetComponent <DropCardToFieldEvent>().enabled = true;
                defender.Death();
                GameManager.instance.IncrementDeathCount(GameSide.Enemy);
            }
        }
    }