def _roomHandler(self, room: Room): room.loop() # start room loop # del room self.__lock.acquire() it = 0 while it < len(self.rooms): if self.rooms[it] == room: break it += 1 assert it < len(self.rooms), "Unknown error when room handler" for u in room.user: self.ship[u] = None del self.rooms[it] self.__lock.release()
def test_player_deal_timeout(wsserver, players): room = Room(1, wsserver, RoomType.TwoPlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.handlePlayerReady(players[0]) room.handlePlayerReady(players[1]) assert (len(room.players[1].cards) == 5) assert (len(room.players[2].cards) == 5) room.handlePlayerDeal(players[0], room.players[1].cards[:2]) players[0].latest_receive() players[1].latest_receive() room.handlePlayerDealTimeout(players[1]) assert (len(room.players[1].cards) == 5) assert (len(room.players[2].cards) == 5) assert (room.currentDealIndex == 0)
def test_dispatch_cards(wsserver, players): room = Room(1, wsserver, RoomType.TwoPlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.players[1].cards = [1, 2, 3] room.dispatchCards() assert (len(players[0].latest_receive()["cards"]) == 2) assert (len(players[1].latest_receive()["cards"]) == 5)
def test_player_deal_triggrt_new_round(wsserver, players): room = Room(1, wsserver, RoomType.TwoPlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.handlePlayerReady(players[0]) room.handlePlayerReady(players[1]) players[0].latest_receive() players[1].latest_receive() room.players[1].cards = [1] room.players[2].cards = [] room.players[2].isPassing = True room.handlePlayerDeal(players[0], [1]) assert (len(players[0].receive()["cards"]) == 1) assert (len(players[1].receive()["cards"]) == 1) assert (len(players[0].receive()["cards"]) == 5) assert (len(players[1].receive()["cards"]) == 5) assert (len(room.players[1].cards) == 5) assert (len(room.players[2].cards) == 5) assert (room.currentDealIndex == 0)
def test_player_deal(wsserver, players): room = Room(1, wsserver, RoomType.TwoPlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.handlePlayerReady(players[0]) room.handlePlayerReady(players[1]) players[0].latest_receive() players[1].latest_receive() room.handlePlayerDeal(players[0], room.players[1].cards[:2]) assert (len(players[0].receive()["cards"]) == 2) assert (len(players[1].receive()["cards"]) == 2) assert (players[0].latest_receive() == { "msgId": DealOwnerChangeInd().msgId, "playerId": 2, "roomId": 1 }) assert (players[1].latest_receive() == { "msgId": DealOwnerChangeInd().msgId, "playerId": 2, "roomId": 1 }) assert (len(room.players[1].cards) == 3)
setting = Setting() app = Flask( __name__, template_folder=setting.TEMPLATE_FOLDER, static_folder=setting.STATIC_FOLDER, static_url_path=setting.STATIC_URL_PATH, ) auth = Auth0(setting) # Register this room if setting.THIS_ROOM: logger.info("This room is set to %s", setting.THIS_ROOM) room = Room(setting.THIS_ROOM, auth, setting.PIN_RED, setting.PIN_GREEN, setting.PIN_BLUE) room.bind(app) ghome_handler = GoogleHomeActionHandler(room.led, "Hallway LED Strip", "Hallway Strip", "Hallway Led Strip", "Hallway") logger.info("Google Home Action Handler created. Have agent id: %s", ghome_handler.agent_user_id) else: raise Exception("No room set for this room! Please set 'THIS_ROOM' env") @app.route("/shortcut.png") @cross_origin(allow_headers=["Content-Type", "Authorization"]) def shortcut(): return send_from_directory(join(app.root_path, "public"), "shortcut.png")
def createRoom(self, name: str, desc: str, flh: str, kch: str, kcm: str, user: User, type: int): room = Room(name, desc, 3, flh, kch, kcm, type) self.exitRoom(user) self.joinRoom(room, user)
def setup(self): #Create rooms forest = Room( "Forest", "an enchanted forest. You hear a gentle breeze whistling through its trees.", {}, [ self.characters.get_character("Bob"), self.characters.get_character("Lofty") ], []) tower = Room("Tower", "a tall stone tower elevated above the clouds.", {}, [self.characters.get_character("Rapunzel")], [self.items.get_item("hairbrush")]) cave = Room( "Cave", "a deep, rocky cavern. Voices are emanating from deep within.", {}, [self.characters.get_character("Rocky")], [self.items.get_item("lantern"), self.items.get_item("book")]) cottage = Room( "Cottage", "a quaint little cottage with a thatched roof. A thick, green smog fumes from the chimney.", {}, [self.characters.get_character("Morgana")], [self.items.get_item("broomstick")]) swamp = Room( "Swamp", "a dark, murky swamp. The marshes bubble and ooze slime.", {}, [self.characters.get_player()], [self.items.get_item("watch")]) castle = Room( "Castle", "an enormous castle with a moat and drawbridge. Its lofty spires are adorned with gold.", {}, [self.characters.get_character("James")], [self.items.get_item("gold")]) #Create exits forest.set_exits({ "north": cave, "east": tower, "south": castle, "west": None }) tower.set_exits({ "north": cottage, "east": None, "south": swamp, "west": forest }) cave.set_exits({ "north": None, "east": cottage, "south": forest, "west": None }) cottage.set_exits({ "north": None, "east": None, "south": tower, "west": cave }) swamp.set_exits({ "north": tower, "east": None, "south": None, "west": castle }) castle.set_exits({ "north": forest, "east": swamp, "south": None, "west": None }) self.characters.get_player().set_room(swamp) self.characters.get_character("Bob").set_room(forest) self.characters.get_character("Lofty").set_room(forest) self.characters.get_character("Rapunzel").set_room(tower) self.characters.get_character("Rocky").set_room(cave) self.characters.get_character("Morgana").set_room(cottage) self.characters.get_character("James").set_room(castle)
def test_player_leave_room(wsserver, players): room = Room(1, wsserver, RoomType.ThreePlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.handlePlayerJoinRoom(players[2]) assert (room.isFull()) ## first player leave room room.handlePlayerLeaveRoom(players[0]) expectPlayerLeaveRoomInd = { "msgId": PlayerLeaveRoomInd().msgId, "playerInfo": { "playerId": 1, "roomId": 1, "index": 0, "isReady": False } } assert (players[1].latest_receive() == expectPlayerLeaveRoomInd) assert (players[2].latest_receive() == expectPlayerLeaveRoomInd) ## second player leave room room.handlePlayerLeaveRoom(players[1]) expectPlayerLeaveRoomInd = { "msgId": PlayerLeaveRoomInd().msgId, "playerInfo": { "playerId": 2, "roomId": 1, "index": 1, "isReady": False } } assert (players[2].latest_receive() == expectPlayerLeaveRoomInd) ## third player leave room room.handlePlayerLeaveRoom(players[2]) expectPlayerLeaveRoomInd = { "msgId": PlayerLeaveRoomInd().msgId, "playerInfo": { "playerId": 3, "roomId": 1, "index": 2, "isReady": False } } assert (room.isEmpty())
def test_player_join_room(wsserver, players): room = Room(1, wsserver, RoomType.ThreePlayersRoom) ## first player join room.handlePlayerJoinRoom(players[0]) expectRoomInfoInd = { "msgId": RoomInfoInd().msgId, "players": [{ "playerId": 1, "roomId": 1, "index": 0, "isReady": False }] } assert (players[0].receive() == expectRoomInfoInd) assert (not room.isFull()) ## second player join room.handlePlayerJoinRoom(players[1]) expectRoomInfoInd = { "msgId": RoomInfoInd().msgId, "players": [{ "playerId": 1, "roomId": 1, "index": 0, "isReady": False }, { "playerId": 2, "roomId": 1, "index": 1, "isReady": False }] } expectPlayerJoinRoomInd = { "msgId": PlayerJoinRoomInd().msgId, "playerInfo": { "playerId": 2, "roomId": 1, "index": 1, "isReady": False } } assert (players[1].receive() == expectRoomInfoInd) assert (players[0].receive() == expectPlayerJoinRoomInd) assert (not room.isFull()) ## third player join room.handlePlayerJoinRoom(players[2]) expectRoomInfoInd = { "msgId": RoomInfoInd().msgId, "players": [{ "playerId": 1, "roomId": 1, "index": 0, "isReady": False }, { "playerId": 2, "roomId": 1, "index": 1, "isReady": False }, { "playerId": 3, "roomId": 1, "index": 2, "isReady": False }] } expectPlayerJoinRoomInd = { "msgId": PlayerJoinRoomInd().msgId, "playerInfo": { "playerId": 3, "roomId": 1, "index": 2, "isReady": False } } assert (players[2].receive() == expectRoomInfoInd) assert (players[0].receive() == expectPlayerJoinRoomInd) assert (players[1].receive() == expectPlayerJoinRoomInd) assert (room.isFull())
def test_player_ready(wsserver, players): room = Room(1, wsserver, RoomType.TwoPlayersRoom) room.handlePlayerJoinRoom(players[0]) room.handlePlayerJoinRoom(players[1]) room.handlePlayerReady(players[0]) expectPlayerReadyInd = { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 1, "roomId": 1, "index": 0, "isReady": True } } assert (players[0].latest_receive() == expectPlayerReadyInd) assert (players[1].latest_receive() == expectPlayerReadyInd) room.handlePlayerReady(players[0]) expectPlayerReadyInd = { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 1, "roomId": 1, "index": 0, "isReady": False } } assert (players[0].latest_receive() == expectPlayerReadyInd) assert (players[1].latest_receive() == expectPlayerReadyInd) room.handlePlayerReady(players[0]) assert (players[0].latest_receive() == { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 1, "roomId": 1, "index": 0, "isReady": True } }) assert (players[1].latest_receive() == { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 1, "roomId": 1, "index": 0, "isReady": True } }) room.handlePlayerReady(players[1]) assert (players[0].receive() == { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 2, "roomId": 1, "index": 1, "isReady": True } }) assert (players[1].receive() == { "msgId": PlayerReadyInd().msgId, "playerInfo": { "playerId": 2, "roomId": 1, "index": 1, "isReady": True } }) expectGameStartInd = {"msgId": GameStartInd().msgId, "roomId": 1} assert (players[0].receive() == expectGameStartInd) assert (players[1].receive() == expectGameStartInd) players[0].receive() players[1].receive() assert (players[0].latest_receive() == { "msgId": DealOwnerChangeInd().msgId, "playerId": 1, "roomId": 1 }) assert (players[1].latest_receive() == { "msgId": DealOwnerChangeInd().msgId, "playerId": 1, "roomId": 1 })