public override async Task <DeleteGameEventResponse> DeleteGameEvent(DeleteGameEventRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new DeleteGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new DeleteGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; return(await room.RemovePlayerGameEvent(dbUserModel, request.EventId)); }
public override async Task <CreateRoomResponse> CreateNewRoom(CreateRoomRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new CreateRoomResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; // Ensure max players is over 1 if (request.GameSettings.MaxPlayers < 2) { return new CreateRoomResponse() { Status = ResponseFactory.createResponse(ResponseType.INVALID_REQUEST) } } ; Room room = new Room(request, dbUserModel.AsUser()); await room.CreateInDatabase(); return(new CreateRoomResponse() { CreatedRoom = room.GameConfiguration, Status = ResponseFactory.createResponse(ResponseType.SUCCESS), }); }
public override async Task <SubmitGameEventResponse> UpdateGameEvent(UpdateGameEventRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new SubmitGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new SubmitGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; // GameEventToUpdate. return(await room.UpdateGameEvent(dbUserModel, request)); }
public override async Task <SubmitGameEventResponse> SubmitGameEvent(SubmitGameEventRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new SubmitGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new SubmitGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; if (!room.IsPlayerInRoom(dbUserModel)) { return new SubmitGameEventResponse() { Status = ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED) } } ; return(await room.AddPlayerGameEvent(dbUserModel, request.EventData)); }
public override async Task <LeaveRoomResponse> LeaveRoom(LeaveRoomRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new LeaveRoomResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new LeaveRoomResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; return(new LeaveRoomResponse() { Status = await room.LeaveRoom(dbUserModel) }); }
public override async Task <GetGameRoomEventsResponse> GetGameRoomEvents(GetGameRoomEventsRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new GetGameRoomEventsResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new GetGameRoomEventsResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; if (room.GameConfiguration.Players.All(it => it.Id != dbUserModel.UserModel.Id) && !dbUserModel.HasClaim(UserClaim.Admin)) { return new GetGameRoomEventsResponse() { Status = ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED) } } ; List <GameEventModel> events = await room.GetAllGameEvents(); // Filter out only the player's events and events that have occurred in the past. // Get current tick to determine events in the past. GameTick currentTick = new GameTick(DateTime.FromFileTimeUtc(room.GameConfiguration.UnixTimeStarted), DateTime.UtcNow); // Admins see all events :) if (!dbUserModel.HasClaim(UserClaim.Admin)) { events = events.FindAll(it => it.OccursAtTick <= currentTick.GetTick() || it.IssuedBy == dbUserModel.UserModel.Id); } GetGameRoomEventsResponse response = new GetGameRoomEventsResponse(); response.GameEvents.AddRange(events); response.Status = ResponseFactory.createResponse(ResponseType.SUCCESS); return(response); }
public override async Task <GetGroupMessagesResponse> GetGroupMessages(GetGroupMessagesRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new GetGroupMessagesResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new GetGroupMessagesResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; GroupChat groupChat = await room.GetGroupChatById(request.GroupId); if (groupChat == null) { return new GetGroupMessagesResponse() { Status = ResponseFactory.createResponse(ResponseType.CHAT_GROUP_DOES_NOT_EXIST) } } ; if (!groupChat.IsPlayerInGroup(dbUserModel)) { return new GetGroupMessagesResponse() { Status = ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED) } } ; return(new GetGroupMessagesResponse() { Status = ResponseFactory.createResponse(ResponseType.SUCCESS), Group = await groupChat.asMessageGroup(request.Pagination) }); }
public override async Task <CreateMessageGroupResponse> CreateMessageGroup(CreateMessageGroupRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new CreateMessageGroupResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new CreateMessageGroupResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; if (room.GameConfiguration.RoomStatus != RoomStatus.Ongoing) { return new CreateMessageGroupResponse() { Status = ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED), } } ; if (!request.UserIdsInGroup.Contains(dbUserModel.UserModel.Id)) { return new CreateMessageGroupResponse() { Status = ResponseFactory.createResponse(ResponseType.INVALID_REQUEST) } } ; return(await room.CreateMessageGroup(request.UserIdsInGroup.ToList())); }
public override async Task <OpenLobbiesResponse> GetOpenLobbies(OpenLobbiesRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new OpenLobbiesResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; OpenLobbiesResponse roomResponse = new OpenLobbiesResponse(); List <SubterfugeRemakeService.GameConfiguration> rooms = (await Room.GetOpenLobbies()).Select(it => it.GameConfiguration).ToList(); roomResponse.Rooms.AddRange(rooms); roomResponse.Status = ResponseFactory.createResponse(ResponseType.SUCCESS); return(roomResponse); }
public override async Task <GetMessageGroupsResponse> GetMessageGroups(GetMessageGroupsRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new GetMessageGroupsResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new GetMessageGroupsResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; List <GroupChat> groupChats = await room.GetPlayerGroupChats(dbUserModel); GetMessageGroupsResponse response = new GetMessageGroupsResponse(); foreach (var groupModel in groupChats) { response.MessageGroups.Add(await groupModel.asMessageGroup()); } response.Status = ResponseFactory.createResponse(ResponseType.SUCCESS); return(response); }
public override async Task <StartGameEarlyResponse> StartGameEarly(StartGameEarlyRequest request, ServerCallContext context) { DbUserModel dbUserModel = context.UserState["user"] as DbUserModel; if (dbUserModel == null) { return new StartGameEarlyResponse() { Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED) } } ; Room room = await Room.GetRoomFromGuid(request.RoomId); if (room == null) { return new StartGameEarlyResponse() { Status = ResponseFactory.createResponse(ResponseType.ROOM_DOES_NOT_EXIST) } } ; if (room.GameConfiguration.Creator.Id == dbUserModel.UserModel.Id) { return(new StartGameEarlyResponse() { Status = await room.StartGame(), }); } return(new StartGameEarlyResponse() { Status = ResponseFactory.createResponse(ResponseType.PERMISSION_DENIED), }); }