Пример #1
0
        private async Task gameflow()
        {
            await init();

            Dictionary <int, IResponse> initReplaceResponses = await answers.askAll(sortedPlayers.Select(p => p.id).ToArray(), new InitReplaceRequest()
            {
            }, option.timeoutForInitReplace);

            foreach (var result in initReplaceResponses)
            {
                THHPlayer player = getPlayer(result.Key);
                await player.initReplace(this, getCards((result.Value as InitReplaceResponse).cardsId));
            }
            await start();

            currentPlayer = sortedPlayers[0];
            for (int i = 0; i < 100; i++)
            {
                await turnStart(currentPlayer);
                await turnLoop(currentPlayer);
                await turnEnd(currentPlayer);

                currentPlayer = getPlayerForNextTurn(currentPlayer);
            }
            await gameEnd(new THHPlayer[0]);
        }
Пример #2
0
        private async Task gameflow(Action onInited = null)
        {
            await init();

            Task <Dictionary <int, IResponse> > task = answers.askAll(sortedPlayers.Select(p => p.id).ToArray(), new InitReplaceRequest()
            {
            }, option.timeoutForInitReplace);

            onInited?.Invoke();
            Dictionary <int, IResponse> initReplaceResponses = await task;

            if (!isRunning)
            {
                return;
            }
            foreach (var result in initReplaceResponses)
            {
                THHPlayer player = getPlayer(result.Key);
                if (result.Value is InitReplaceResponse initReplace)
                {
                    await player.initReplace(this, getCards(initReplace.cardsId));
                }
                else if (result.Value is SurrenderResponse surrender)
                {
                    await this.surrender(player);
                }
            }
            await start();

            currentPlayer = sortedPlayers[0];
            for (int i = 0; i < 100; i++)
            {
                await turnStart(currentPlayer);
                await turnLoop(currentPlayer);
                await turnEnd(currentPlayer);

                currentPlayer = getPlayerForNextTurn(currentPlayer);
            }
            await gameEnd(new THHPlayer[0]);
        }