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 void PlayersCanViewAnyEventThatHasAlreadyOccurred() { // Submit 3 close game events, and 2 far game events. SubmitGameEventRequest request = new SubmitGameEventRequest() { EventData = new GameEventRequest() { EventData = ByteString.CopyFromUtf8("MyEventData"), OccursAtTick = 5, }, RoomId = gameId, }; client.SubmitGameEvent(request); client.SubmitGameEvent(request); client.SubmitGameEvent(request); request.EventData.OccursAtTick = 10467; client.SubmitGameEvent(request); client.SubmitGameEvent(request); Thread.Sleep(5000); // Submitting player can see their own events GetGameRoomEventsResponse gameEventsForSubmitter = client.GetGameRoomEvents(new GetGameRoomEventsRequest() { RoomId = gameId }); Assert.AreEqual(gameEventsForSubmitter.Status.IsSuccess, true); Assert.AreEqual(5, gameEventsForSubmitter.GameEvents.Count); authHelper.loginToAccount(playerTwoInGame); // Other player can only see events that have passed. GetGameRoomEventsResponse gameEventsForOther = client.GetGameRoomEvents(new GetGameRoomEventsRequest() { RoomId = gameId }); Assert.AreEqual(gameEventsForOther.Status.IsSuccess, true); Assert.AreEqual(3, gameEventsForOther.GameEvents.Count); }
public void AdminsCanSeeAllGameEvents() { // Submit 3 close game events, and 2 far game events. SubmitGameEventRequest request = new SubmitGameEventRequest() { EventData = new GameEventRequest() { EventData = ByteString.CopyFromUtf8("MyEventData"), OccursAtTick = 123, }, RoomId = gameId, }; client.SubmitGameEvent(request); client.SubmitGameEvent(request); client.SubmitGameEvent(request); request.EventData.OccursAtTick = 10467; client.SubmitGameEvent(request); client.SubmitGameEvent(request); SuperUser admin = authHelper.CreateSuperUser(); client.Login(new AuthorizationRequest() { Username = admin.DbUserModel.UserModel.Username, Password = admin.password, }); GetGameRoomEventsResponse eventResponse = client.GetGameRoomEvents(new GetGameRoomEventsRequest() { RoomId = gameId, }); Assert.AreEqual(eventResponse.Status.IsSuccess, true); // Admin should be able to see all 5 events! Assert.AreEqual(5, eventResponse.GameEvents.Count); }