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; } } }
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; } } }