예제 #1
0
    public void OnBattleStart()
    {
        BattleState = State.BattleStart;
        GameManager.instance.gameInputMode = GameManager.InputMode.play;

        UIManager.instance.ActiveUI("BattleMode", true);
        UIManager.instance.ActiveUI("BattleStartButton", false);
        UIManager.instance.ActiveUI("UIArea", true);
        UIManager.instance.ActiveUI("TurnEnd", true);

        UIManager.instance.SetActorsUI(actorsInBattle_list);

        foreach (var actor in actorsInBattle_list)
        {
            if (actor.GetComponent <ActorMono>().group == ActorMono.Group.monster)
            {
                continue;
            }
            actor.SendMessage("OnBattle");
            var actorMono = actor.GetComponent <ActorMono>(); actorMono.OnBattle(); actorMono.InitDeck(); actorMono.ShuffleDeck();
        }

        // 确定对战队列
        ActorSortByAdvantage sort = new ActorSortByAdvantage();

        actorsQueue_list = new List <GameObject>(actorsInBattle_list);
        actorsQueue_list.Sort(sort);

        actor_curTurn = actorsQueue_list[0].GetComponent <ActorMono>();
    }
예제 #2
0
    public void OnTurnEnd()
    {
        if (BattleState == State.None)
        {
            return;
        }
        if (IfBattleEnd)
        {
            OnBattleEnd();
            return;
        }

        BattleState = State.TurnEnd;

        if (actor_curTurn.group == ActorMono.Group.player)
        {
            actor_curTurn.DiscardEndCard();
            actor_curTurn.ResumeActionPointToZero();
        }
        // 选择下一个激活的对象
        do
        {
            turnIndex += 1;

            if (turnIndex >= actorsQueue_list.Count)
            {
                // 一轮结束,下一轮重新根据优先级决定队列
                ActorSortByAdvantage sort = new ActorSortByAdvantage();
                actorsQueue_list = new List <GameObject>(actorsInBattle_list);
                actorsQueue_list.Sort(sort);
                turnIndex = 0;
            }

            actor_curTurn = actorsQueue_list[turnIndex].GetComponent <ActorMono>();
        }while (actor_curTurn.battleState == ActorMono.BattleState.death);

        OnTurnStart();
    }