Example #1
0
    //-----------------------------------------------------------------------------------------


    //ダイレクトアタック処理Update------------------------------------------------------------------------
    void EnemyDirectAttackUpdate( )
    {
        for (int i = 0; i < ConstantStorehouse.SQUARE_ROW_NUM; i++)
        {
            Square square = _field.getSquare((ConstantStorehouse.SQUARE_ROW_NUM * ConstantStorehouse.FIFTH_ROW_INDEX) + i);                     // ( 横のマス数 × 五列目 ) + 左からの番号

            if (square.On_Card == null)
            {
                continue;
            }
            if (square.On_Card.gameObject.tag != ConstantStorehouse.TAG_PLAYER2)
            {
                continue;
            }

            CardMain directAttackCard = square.On_Card;
            int      nowAP            = _enemyActivePoint.Point_Num;
            if (directAttackCard.Card_Data._necessaryAP > nowAP)
            {
                continue;
            }
            if (directAttackCard.Action_Count >= directAttackCard.MAX_ACTION_COUNT)
            {
                continue;
            }

            _enemy.DirectAttack(_player, directAttackCard.Card_Data._necessaryAP, directAttackCard);
            return;
        }

        _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.MOVE;
    }
Example #2
0
    //-------------------------------------------------------------------------------------------------------


    //移動処理Update--------------------------------------------------
    void EnemyCardMoveUpdate( )
    {
        if (_enemy.Card_In_Field.Count == 0)
        {
            _enemyUpdateFlag     = false;
            _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.SUMMON;
            return;
        }

        MoveCardSearch( );
    }
Example #3
0
    //召喚処理Update-------------------------------------------------------------------
    void EnemySummonUpdate( )
    {
        List <Square> summonSquares = _field.SummonSquare(_enemy.gameObject.tag);

        if (summonSquares.Count == 0)
        {
            _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.DIRECT_ATTACK;
            return;
        }


        CardMain summonCard = null;

        summonCard = SummonCardSearch( );
        if (summonCard == null)
        {
            _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.DIRECT_ATTACK;
            return;
        }


        Square summonSquare = null;

        //第一条件
        summonSquare = FirstPrioritySquareSearch( );
        if (summonSquare != null)
        {
            Summon(summonCard, summonSquare);
            return;
        }

        //第二条件
        summonSquare = SecondPrioritySquareSearch( );
        if (summonSquare != null)
        {
            Summon(summonCard, summonSquare);
            return;
        }

        //第三条件
        summonSquare = ThirdPrioritySquareSearch( );
        if (summonSquare != null)
        {
            Summon(summonCard, summonSquare);
            return;
        }

        if (summonSquare == null)
        {
            _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.DIRECT_ATTACK;
            return;
        }
    }
Example #4
0
    //-------------------------------------------------------


    //移動するカードを探す-------------------------------------------------------------------------
    void MoveCardSearch( )
    {
        if (FirstPriorityMoveCard( ))
        {
            return;
        }

        if (SecondPriorityMoveCard( ))
        {
            return;
        }

        _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.SUMMON;
        _enemyUpdateFlag     = false;
    }
Example #5
0
    IEnumerator EnemyUpdate( )
    {
        while (true)
        {
            if (!_enemyUpdateFlag)
            {
                yield break;
            }

            if (MainPhase._precedenceOneTurnFlag && _enemyBehaviorStatus != ENEMY_BEHAVIOR_STATUS.SUMMON)
            {
                _enemyBehaviorStatus = ENEMY_BEHAVIOR_STATUS.SUMMON;
                _enemyUpdateFlag     = false;
                yield break;
            }

            switch (_enemyBehaviorStatus)
            {
            case ENEMY_BEHAVIOR_STATUS.SUMMON:
                EnemySummonUpdate( );
                Debug.Log("S");
                break;

            case ENEMY_BEHAVIOR_STATUS.DIRECT_ATTACK:
                EnemyDirectAttackUpdate( );
                Debug.Log("D");
                break;

            case ENEMY_BEHAVIOR_STATUS.MOVE:
                EnemyCardMoveUpdate( );
                Debug.Log("M");
                break;

            default:
                Assert.IsTrue(false, "エネミーの状態が想定外です");
                break;
            }
            yield return(new WaitForSeconds(_enemyUpdateTime));
        }
    }