Esempio n. 1
0
 // フィールドを生成する。
 private void CreateField()
 {
     // マス目数分
     for (int y = FieldGridController.GRID_Y_MIN; y <= FieldGridController.GRID_Y_MAX; y++)
     {
         for (int x = FieldGridController.GRID_X_MIN; x <= FieldGridController.GRID_X_MAX; x++)
         {
             FieldGridController fieldGrid = Instantiate(fieldGridPrefub, fieldTranform, false);
             fieldGrid.gridPosition = new Vector2Int(x, y);
             fieldGrid.name         = "Grid" + "Y" + y + "X" + x;
             fieldGrid.transform.SetParent(fieldTranform, false);
         }
     }
 }
Esempio n. 2
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);
            }
        }
    }
Esempio n. 3
0
    // ドロップイベント
    public void OnDrop(PointerEventData eventData)
    {
        // カードの配置先を自身に切り替える。
        CardMoveEvent  cardMove = eventData.pointerDrag.GetComponent <CardMoveEvent>();
        CardController card     = cardMove.GetComponent <CardController>();

        // 移動可能なカード(=手札)でなければフィールドには出せない。
        if (!cardMove.isMovable)
        {
            return;
        }

        // ヒエラルキー上の配置をフィールドに設定する。
        cardMove.defaultParent = this.transform;

        // フィールドへのカードの二重配置がされないようにイベントを無効化する。
        this.enabled = false;

        // 召喚の処理を行う。
        FieldGridController fieldGrid = GetComponent <FieldGridController>();

        StartCoroutine(GameManager.instance.Summon(card, fieldGrid));
    }
Esempio n. 4
0
    // カードをフィールドに召喚する。
    public IEnumerator Summon(CardController card, FieldGridController fieldGrid)
    {
        // 自動レイアウトの再計算を待つため、フレームの終わりまで待機する。
        // = Cardの親をFieldGridに配置するまで待ちたいため。
        card.gameObject.transform.SetParent(fieldGrid.transform);
        yield return(new WaitForEndOfFrame());

        // フィールド上の座標を設定する。
        card.model.gridPosition = fieldGrid.gridPosition;
        card.model.cardPlace    = CardPlace.FIELD;

        fieldGrid.GetComponent <Image>().color =
            card.model.gameSide == GameSide.Player ? new Color(0.2f, 0.2f, 0.5f, 1.0f) : new Color(0.5f, 0.2f, 0.2f, 1.0f);


        // 攻撃ゲージオブジェクトを作成する。
        AttackGageController attackGage = Instantiate(attackGagePrefub, fieldGrid.transform, false);

        attackGage.Init();
        attackGage.model.card = card;
        attackGage.transform.SetParent(card.transform, false);

        // カードを1枚ドローする。
        DrawCard(card.model.gameSide);

        // 手札枚数のカウントを1減らす。
        DecrementHandCount(card.model.gameSide);

        // マナを消費する。
        GetPlayerMana(card.model.gameSide).model.ConsumeMana(card.model.cost);

        // 召喚時のアニメーション
        // card.ExtendCardParameterAnimation();

        // 召喚時のエフェクトを発動する。
        card.UseSkill(Skill.Timing.Summon);
    }