Beispiel #1
0
        protected override async Task InitializeAsync()
        {
            await _gameClient.InitViewModelAsync();

            _gameClient.OnCreateGameResponse += OnCreateGameResponse;
            var createdGames = await _localStorage.GetItemAsync <List <Game> >(CREATED_GAMES_KEY);

            if (createdGames == null || createdGames.Count == 0)
            {
                CreatedGames = new List <Game>();
            }
            else
            {
                var req = new GetGameInfoRequest()
                {
                    GameIds = createdGames.Select(x => x.GameId).ToList()
                };
                var resp = await _gameClient.InvokeRequestAsync <GetGameInfoResponse>("GetGameInfo", req);

                CreatedGames = resp.IsSuccess ? resp.Games : new List <Game>();
            }
            await _localStorage.SetItemAsync(CREATED_GAMES_KEY, CreatedGames);

            state = STATE_INITIALIZED;
            _logger.LogInformation("Init!");
        }
        /// <summary>
        ///     私有 获取 游戏信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private async Task <GetGameInfoResponse> _GetGameInfoResponseAsync(GetGameInfoRequest request)
        {
            var dbResult = await DalActivity.GetActivityByTypeId(GameVersion);

            return(new GetGameInfoResponse
            {
                ActivityName = dbResult.ActivityName,
                StartTime = dbResult.StartTime,
                EndTime = dbResult.EndTime,
                GameRuleText = dbResult.GameRuleText,
                SupportRuleText = dbResult.SupportRuleText
            });
        }
        /// <summary>
        ///     获取 游戏信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static async Task <OperationResult <GetGameInfoResponse> > GetGameInfoResponseAsync(
            GetGameInfoRequest request)
        {
            var manager = GameManagerFactory.GetGameManager(request.GameVersion);

            if (manager == null)
            {
                // 未实现
                return(OperationResult.FromError <GetGameInfoResponse>("-3", Resource.Invalid_Game_NotImpl));
            }

            return(OperationResult.FromResult(await manager.GetGameInfoResponseAsync(request)));
        }
Beispiel #4
0
        public async Task <GetGameInfoResponse> GetGameInfo(GetGameInfoRequest request)
        {
            _logger.LogInformation("GetGameInfo {}", request);

            var lookup = await _dbContext.GameStates
                         .Where(x => request.GameIds.Contains(x.GameId)).ToListAsync();

            return(new GetGameInfoResponse()
            {
                RequestId = request.RequestId,
                IsSuccess = true,
                Games = lookup.Select(x => x.Game).ToList()
            });
        }
        /// <summary>
        ///     获取 游戏信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public virtual async Task <GetGameInfoResponse> GetGameInfoResponseAsync(GetGameInfoRequest request)
        {
            try
            {
                using (var cacheClient = CacheHelper.CreateCacheClient(GlobalConstant.GameCacheHeader))
                {
                    var result = await cacheClient.GetOrSetAsync(
                        $"{nameof(GetGameInfoResponseAsync)}/{(int) request.GameVersion}"
                        , async() => await _GetGameInfoResponseAsync(request)
                        , GlobalConstant.GameTimeSpan);

                    // 返回数据
                    return(result?.Value);
                }
            }
            catch (Exception e)
            {
                Logger.Error($"{ManagerName} -> GetGameInfoResponseAsync -> {GameVersion} ",
                             e.InnerException ?? e);
                throw;
            }
        }
Beispiel #6
0
 public Task <GetGameInfoResponse> GetGameInfo(GetGameInfoRequest request)
 {
     return(_gameService.GetGameInfo(request));
 }
 /// <summary>
 ///     获取 游戏信息
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public virtual async Task <GetGameInfoResponse> GetGameInfoResponseNoCacheAsync(GetGameInfoRequest request)
 {
     return(await _GetGameInfoResponseAsync(request));
 }
        /// <summary>
        ///     判断活动是否正在运行
        /// </summary>
        /// <returns></returns>
        protected async Task <(string errCode, string errMsg, bool isOk)> _IsGameActive(GetGameInfoRequest request)
        {
            var getGameInfoResponse = await GetGameInfoResponseAsync(new GetGameInfoRequest()
            {
                GameVersion = request.GameVersion
            });

            // 判断活动是否结束
            if (getGameInfoResponse == null)
            {
                return("-30", Resource.Invalid_Game_ErrorSetting, false);
            }

            var now = DateTime.Now;

            if (getGameInfoResponse.StartTime > now || getGameInfoResponse.EndTime < now)
            {
                return("-90", Resource.Invalid_Game_ActivityRunning, false);
            }

            return(null, null, true);
        }
 /// <summary>
 ///     获取 游戏信息
 ///     -1 -2     程序异常
 ///     -3        此游戏未实现
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <OperationResult <GetGameInfoResponse> > GetGameInfoAsync(GetGameInfoRequest request)
 {
     return(await GameManager.GetGameInfoResponseAsync(request));
 }