コード例 #1
0
        public override async Task <GameService.GetGameEventsReply> GetGameEvents(GetGameEventsRequest request, ServerCallContext context)
        {
            try
            {
                var session = await context.GetSession();

                if (session == null)
                {
                    return(new GetGameEventsReply()
                    {
                        Code = ErrorCode.LostSession
                    });
                }

                var events = await GameEventQuery.Gets(session.member_no, session.user_no);

                // 이벤트 초기화
                if (events.Count == 0)
                {
                    var nextDate = DateTime.UtcNow.AddDays(1).Date;
                    var endTime  = new DateTime(nextDate.Year, nextDate.Month, nextDate.Day, 0, 0, 0, DateTimeKind.Utc);

                    var game_event = new Models.GameEvent()
                    {
                        user_no  = session.user_no,
                        event_id = 1,
                        reward   = 0,
                        occ_time = endTime,
                    };
                    events.Add(game_event);
                    await GameEventQuery.Add(session.member_no, game_event);
                }

                // 이벤트 목록 생성
                var reply = new GetGameEventsReply();
                reply.Code = ErrorCode.Success;
                foreach (var game_event in events)
                {
                    reply.Events.Add(new EventInfo()
                    {
                        EventId         = game_event.event_id,
                        IsReward        = (game_event.reward == 0 ? false : true),
                        RewardStartTime = DateTime.SpecifyKind(game_event.occ_time, DateTimeKind.Utc).ToTimestamp(),
                        RewardItemId    = (int)GameItemId.OpenEventBox,
                    });
                }

                return(reply);
            }
            catch (Exception ex)
            {
                Log.Error($"GetGameEvents {ex.ToString()}");

                return(new GetGameEventsReply()
                {
                    Code = ErrorCode.WrongParam
                });
            }
        }
コード例 #2
0
        public override async Task GetGameEvents(GetGameEventsRequest request, IServerStreamWriter <Event> responseStream, ServerCallContext context)
        {
            var events = await _gameService.GetGameEventsAsync(request.PlayerId, request.Offset);

            foreach (var e in events)
            {
                await responseStream.WriteAsync(e.ToEvent());
            }
        }