コード例 #1
0
ファイル: BattleSystem.cs プロジェクト: prabhjotSL/Emotion
    public void ChangeRoundStatus(RoundStatus nextRoundStatus)
    {
        switch (nextRoundStatus)
        {
        case RoundStatus.RoundEnd:

            roundStatus = RoundStatus.RoundEnd;

            if (roundTurn == RoundTurn.EnemyRound)
            {
                enemy.BuffReduce();
                roundTurn = RoundTurn.PlayerRound;
                roundNum++;
            }
            else
            {
                player.BuffReduce();
                roundTurn = RoundTurn.EnemyRound;
            }

            ChangeRoundStatus(RoundStatus.RoundBegin);
            break;


        case RoundStatus.RoundBegin:
            roundStatus = RoundStatus.RoundBegin;
            RoundBegin();
            break;

        case RoundStatus.Rounding:
            roundStatus = RoundStatus.Rounding;
            break;
        }
    }
コード例 #2
0
ファイル: BattleSystem.cs プロジェクト: prabhjotSL/Emotion
    public void BattleStart()
    {
        player.GetCardsFromLibrary(6);
        View.GetInstance().ShowPlayerCards();

        enemy.GetCardsFromLibrary(6);
        roundTurn    = RoundTurn.PlayerRound;
        battleStatus = BattleStatus.Batttling;
        RoundBegin();
    }
コード例 #3
0
    /// <summary>
    /// 当玩家行动完毕后,检查是否需要切换双方主动权
    /// </summary>
    void CheckChangeTurnToEnemy()
    {
        bool isAllActioned = true;

        foreach (KeyValuePair <int, FightHero> pair in _heros)
        {
            if (!pair.Value.IsActioned && pair.Value.CreatureData.Hp.Value > 0)
            {
                isAllActioned = false;
                _nowHeroId    = pair.Value.Id;
                FightHero fh = _heros[_nowHeroId];
                EventSys.Instance.AddEvent(ViewEvent.SetSelectedHero, fh);
                break;
            }
        }

        if (isAllActioned)
        {
            _nowTurn = RoundTurn.Enemy;
            EventSys.Instance.AddEvent(ViewEvent.FightChangeTurn, false);
            EventSys.Instance.AddEvent(LogicEvent.FightStartAi, _heros, _enemies);
        }
    }
コード例 #4
0
    /// <summary>
    /// 进入下一个回合
    /// </summary>
    void NextRound()
    {
        bool isFirst = true;

        foreach (KeyValuePair <int, FightHero> pair in _heros)
        {
            if (isFirst)
            {
                _nowHeroId = pair.Value.Id;
                isFirst    = false;
            }
            pair.Value.IsActioned = false;
        }

        foreach (Enemy e in _enemies)
        {
            e.IsActioned = false;
        }
        _round++;
        _nowTurn = RoundTurn.Hero;

        EventSys.Instance.AddEvent(ViewEvent.FightUpdateRound, _round, _heros[_nowHeroId]);
        EventSys.Instance.AddEvent(ViewEvent.FightChangeTurn, true);
    }
コード例 #5
0
    void Update()
    {
        InputControl();
        switch (battleStatus)
        {
        case BattleStatus.BattleBegin:
            battleStatus = BattleStatus.BattleBegin;

            player.CardManager.ExpenseReset();
            player.CardManager.SelectCard();
            player.GetCardsFromLibrary(6);

            enemy.GetCardsFromLibrary(6);

            roundStatus  = RoundStatus.RoundBegin;
            roundTurn    = RoundTurn.PlayerRound;
            battleStatus = BattleStatus.Batttling;

            break;

        case BattleStatus.Batttling:

            battleStatus = enemy.HP <= 0 ? BattleStatus.PlayerWin : battleStatus;
            battleStatus = player.HP <= 0 ? BattleStatus.PlayerLose : battleStatus;

            switch (roundStatus)
            {
            case RoundStatus.RoundBegin:
                Debug.Log("轮到" + roundTurn.ToString() + "的回合");
                switch (roundTurn)
                {
                case RoundTurn.PlayerRound:
                    player.CardManager.ExpenseReset();
                    player.GetCardsFromLibrary(3);
                    break;

                case RoundTurn.EnemyRound:
                    enemy.CardManager.ExpenseReset();
                    enemy.GetCardsFromLibrary(3);
                    break;
                }
                roundStatus = RoundStatus.Rounding;
                break;

            case RoundStatus.Rounding:
                switch (roundTurn)
                {
                case RoundTurn.PlayerRound:
                    break;

                case RoundTurn.EnemyRound:
                    if (enemy.isRound == false)
                    {
                        StartCoroutine("EnemyPutCard");
                        enemy.isRound = true;
                    }
                    break;
                }
                break;

            case RoundStatus.RoundEnd:
                switch (roundTurn)
                {
                case RoundTurn.PlayerRound:
                    player.BuffReduce();
                    roundTurn = RoundTurn.EnemyRound;
                    break;

                case RoundTurn.EnemyRound:
                    enemy.BuffReduce();
                    roundTurn = RoundTurn.PlayerRound;
                    break;
                }
                roundStatus = RoundStatus.RoundBegin;
                break;
            }
            break;

        case BattleStatus.PlayerLose:
            GameManager.Instance.ReturnToMenu(false);
            battleStatus = BattleStatus.PlayerPause;
            break;

        case BattleStatus.PlayerWin:
            battleStatus = BattleStatus.PlayerPause;
            PlayerWin();
            break;

        case BattleStatus.PlayerPause:
        default:
            break;
        }
    }