stabilized login, first successfull stream of cards accross clients

This commit is contained in:
2024-01-22 19:37:54 +01:00
parent 3b7563c5f1
commit 18dcd6cc42
63 changed files with 441 additions and 859 deletions

View File

@ -2,16 +2,20 @@ import json
import socket
import threading
from Classes.System.Network.EventHandler import TCPEventHandler
import pygame
from Classes.Game.World import World
from Classes.System.Components.InputHandler import InputHandler
from Classes.Game.Events.GameStart import GameStart
from Classes.Game.Events.Login import LoginResponse
from Classes.Game.Events.PlaceCard import CardPlaced
from Classes.Game.Player import Player
class TCPClient:
def __init__(self, addr: str, port: str, world:World, inputHandler:InputHandler):
self.addr = addr
self.port = int(port)
self.tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.eventHandler = TCPEventHandler(self.tcpSocket)
self.world = world
self.inputHandler = inputHandler
@ -35,11 +39,30 @@ class TCPClient:
data = self.tcpSocket.recv(1024)
if data:
decoded_data = json.loads(data.decode())
self.eventHandler.handleEvents(decoded_data, self.inputHandler, self.world)
self.handleEvents(decoded_data)
except Exception as e:
print(f"Error receiving TCP data: {e}")
break
def handleEvents(self, message):
print(message)
if message["event"] == "loginresponse":
if message["status"] != "success":
print("login failed")
else:
print("receiving login confirmation from server")
self.world.setPlayer(Player(0,0,message["name"], message["id"]))
elif message["event"] == "startgame":
print(self.world.player)
# world.player.setMana(message["player"]["mana"])
# world.player.setHp(message["player"]["hp"])
self.world.setEnemy(Player(message["enemy"]["hp"],0,message["enemy"]["name"], message["enemy"]["id"]))
GameStart(self.world, message["player"]["hand"], self.inputHandler, self.world.getPlayer())
pass
elif message["event"] == "PlacedCard":
CardPlaced(self.world, message["card"], message["owner"], pygame.Vector2(message["x"], message["y"]), self.inputHandler)
pass
def listen(self):
tcpThread = threading.Thread(target=self.receive)
tcpThread.daemon = True