serverside gamemanager can start game but fails on nontype subscription error

This commit is contained in:
2024-01-15 13:29:19 +01:00
parent 69881973a4
commit 588483ca2d
18 changed files with 31 additions and 219 deletions

View File

@ -14,6 +14,7 @@ class Player:
self.__handCards = []
self.__deck = deck
self.__id = random.randint(3, 99999)
self.__mana = mana
def shuffleDeck(self):
self.__deck = random.shuffle(self.__deck)

View File

@ -43,31 +43,29 @@ class GameManager:
# this section mostly only used by the networking and event handling classes
# other parts should never need to interface with this unless really required
# =============================================================================
def startGame(self, tcpSocket:socket):
def startGame(self, tcpSocket: socket):
self.__state = "running"
players = list(self.__serverWorld.getPlayers)
players = list(self.__players.values())
print("game starts")
self.logger.info("game manager is starting the game")
for userAddr in self.__users.keys():
for userAddr, player_data in self.__players.items():
try:
user = self.__players[userAddr]["player"]
user = player_data["player"]
user.addMana(1000)
user.adjustHP(1000)
user.shuffleDeck()
cards = user.getDeck()
user.setHand(cards[:5])
enemy = players[0]["player"]
# iterates until the enemy player is not anymore equal to current player
enemy = next(player_data["player"] for player_data in players if player_data["player"] != user)
if enemy == user:
enemy = players[1]["player"]
payload = {
"event":"startgame",
"event": "startgame",
"player": {
"mana":user.getMana(),
"mana": user.getMana(),
"hp": user.getHP(),
"hand": user.getHand()
},
@ -82,8 +80,6 @@ class GameManager:
except Exception as e:
self.logger.error(f"failed to start game due to error: {e}")
break
# handles notifying all players that the game starts
pass
def stopGame(self):
# handles notifying all players that the game stops

View File

@ -15,6 +15,20 @@ class TCPEventHandler:
def handleTCPEvents(self, event, gameManager:GameManager, address):
gameManager.getLogger().info(f"incommingevent {event}")
if event["event"] == "PlaceCard":
gameManager.getLogger().info(f"player {event['user']} attempted to place card {event['card']}")
for playerKey in gameManager.getPlayers().keys():
player = gameManager.getPlayers()[playerKey]
if int(event["user"]) != player["player"].getID():
payload = {
"event":"cardPlaced",
"card": {
"card":event["card"],
"owner": event["user"],
"x": event["x"],
"y": event["y"]
}
}
player["socket"].send(payload)
pass
elif event["event"] == "MoveCard":
pass

View File

@ -93,6 +93,7 @@ class NetworkManager:
self.send({
"event": "loginresponse",
"status": "success",
"username": user[client_address]["player"].getName(),
"id": user[client_address]["player"].getID(),
}, client_address)