コード例 #1
0
        private async Task TrySaveGameHistory <T>(RequestContext <T> requestContext, GameResult result)
        {
            if (requestContext.UserSession.IsFunPlay)
            {
                return;
            }

            var userGameKey = requestContext.UserGameKey;

            try
            {
                // Don't save any transaction within Insufficient exception and any wallet access exception.
                if (result == null || result.ErrorCode == ErrorCode.InsufficientCredit)
                {
                    return;
                }

                if (result.ErrorSource == ErrorSource.Wallet)
                {
                    // log game history to log file
                    logger.LogWarning($"[Got error from wallet] SessionKey<{requestContext.SessionKey}> UserId<{userGameKey.UserId}> GameId<{userGameKey.GameId}> Transaction<{result.TransactionId}>");
                    logger.LogWarning(JsonHelper.FullString(result));
                    return;
                }

                await gameHistoryService.Save(userGameKey, result);
            }
            catch (Exception ex)
            {
                logger.LogError($"[FAULT SAVE GAMEHISTORY] SessionKey<{requestContext.SessionKey}> UserId<{userGameKey.UserId}> GameId<{userGameKey.GameId}> Transaction<{result.TransactionId}>");
                logger.LogError(JsonHelper.FullString(result));
                logger.LogError(ex, ex.Message);
            }
        }
コード例 #2
0
        public GameResult PlayGame(int playerCount)
        {
            var gameResult = _playingService.PlayGame(playerCount);

            _historyService.Save(gameResult);
            return(gameResult);
        }