Beispiel #1
0
        async Task turnLoop(THHPlayer player)
        {
            if (cts == null || cts.IsCancellationRequested)
            {
                return;
            }
            for (int i = 0; i < 100; i++)
            {
                if (cts == null || cts.IsCancellationRequested)
                {
                    return;
                }
                switch (await answers.ask(player.id, new FreeActRequest(), option.timeout))
                {
                case UseResponse use:
                    Card   card    = getCard(use.cardId);
                    Card[] targets = getCards(use.targetsId);
                    if (!await player.tryUse(this, card, use.position, targets))
                    {
                        logger.log("Warning", "使用" + card + "失败");
                    }
                    break;

                case AttackResponse attack:
                    card = getCard(attack.cardId);
                    Card target = getCard(attack.targetId);
                    await card.tryAttack(this, target);

                    break;

                case TurnEndResponse _:
                    return;
                }
            }
        }
Beispiel #2
0
        async Task turnLoop(THHPlayer player)
        {
            if (!isRunning)
            {
                return;
            }
            for (int i = 0; i < 100; i++)
            {
                if (!isRunning)
                {
                    return;
                }
                if (turnTimer == null)//超时,结束回合
                {
                    return;
                }
                IResponse response = await answers.ask(player.id, new FreeActRequest(), option.timeoutForTurn * 2);

                switch (response)
                {
                case UseResponse use:
                    Card   card    = getCard(use.cardId);
                    Card[] targets = getCards(use.targetsId);
                    if (!await player.tryUse(this, card, use.position, targets))
                    {
                        logger.log("Warning", "使用" + card + "失败");
                    }
                    break;

                case AttackResponse attack:
                    card = getCard(attack.cardId);
                    Card target = getCard(attack.targetId);
                    await card.tryAttack(this, player, target);

                    break;

                case TurnEndResponse _:
                    return;

                case SurrenderResponse _:
                    await this.surrender(player);

                    return;
                }
            }
        }