theoretically reworked packet structure for gamestart event + fixed client issue flooding the server with packets
This commit is contained in:
@ -46,7 +46,10 @@ class GameManager:
|
||||
def startGame(self, tcpSocket:socket):
|
||||
self.__state = "running"
|
||||
|
||||
players = list(self.__serverWorld.getPlayers)
|
||||
|
||||
print("game starts")
|
||||
self.logger.info("game manager is starting the game")
|
||||
for userAddr in self.__users.keys():
|
||||
try:
|
||||
user = self.__serverWorld.getPlayers[userAddr]["player"]
|
||||
@ -56,12 +59,23 @@ class GameManager:
|
||||
cards = user.getDeck()
|
||||
user.setHand(cards[:5])
|
||||
|
||||
enemy = players[0]["player"]
|
||||
|
||||
if enemy == user:
|
||||
enemy = players[1]["player"]
|
||||
|
||||
payload = {
|
||||
"event":"startgame",
|
||||
"playermana": user.getMana(),
|
||||
"playerhp": user.getHP(),
|
||||
"playername": user.getName(),
|
||||
"hand": user.getHand()
|
||||
"player": {
|
||||
"mana":user.getMana(),
|
||||
"hp": user.getHP(),
|
||||
"hand": user.getHand()
|
||||
},
|
||||
"enemy": {
|
||||
"id": enemy.getID(),
|
||||
"name": enemy.getName(),
|
||||
"hp": enemy.getHP(),
|
||||
},
|
||||
}
|
||||
|
||||
tcpSocket.send(json.dumps(payload).encode())
|
||||
@ -100,4 +114,8 @@ class GameManager:
|
||||
self.logger.info("2 players have join game starts")
|
||||
self.startGame(socket)
|
||||
|
||||
return self.__players
|
||||
return self.__players
|
||||
|
||||
def removePlayers(self, clientAddr):
|
||||
self.logger.info(f"removing player with address '{clientAddr}' from players database")
|
||||
del self.__players[clientAddr]
|
@ -102,6 +102,9 @@ class NetworkManager:
|
||||
|
||||
if e.errno == 10054:
|
||||
self.__gameManager.getLogger().error(f"Connection with {client_address} forcibly closed by remote host.")
|
||||
players = self.__gameManager.getPlayers()
|
||||
self.__gameManager.removePlayers(client_address)
|
||||
self.__gameManager.getLogger().info(f"new player length {len(players)}")
|
||||
break
|
||||
|
||||
self.__gameManager.getLogger().error(f"Socket error receiving data from {client_address}: {e}")
|
||||
|
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user