merged rework -> master
This commit is contained in:
58
Client/Classes/System/Network/EventHandler.py
Normal file
58
Client/Classes/System/Network/EventHandler.py
Normal file
@ -0,0 +1,58 @@
|
||||
import socket
|
||||
|
||||
import pygame
|
||||
|
||||
from Classes.Game.Events.PlaceCard import CardPlaced
|
||||
from Classes.System.Components.InputHandler import InputHandler
|
||||
from Classes.Game.World import World
|
||||
from Classes.Game.Events.GameStart import GameStart
|
||||
from Classes.Game.Player import Player
|
||||
from Classes.Game.Events.Login import LoginResponse
|
||||
|
||||
class TCPEventHandler:
|
||||
def __init__(self, socket:socket):
|
||||
self.tcp_socket = socket
|
||||
|
||||
<<<<<<< HEAD:Game_Client/Classes/System/Network/EventHandler.py
|
||||
def handleEvents(self, message:dict, inputHandler:InputHandler, world:World):
|
||||
if message["event"] == "loginresponse":
|
||||
# todo: handle login response here
|
||||
=======
|
||||
def handleEvents(self, message, inputHandler:InputHandler, world:World):
|
||||
print(message)
|
||||
if message["event"] == "loginresponse":
|
||||
>>>>>>> 18dcd6cc42f1f23e221702147a36f650f6aae6ac:Client/Classes/System/Network/EventHandler.py
|
||||
LoginResponse(message, world)
|
||||
pass
|
||||
elif message["event"] == "startgame":
|
||||
print(world.player)
|
||||
# world.player.setMana(message["player"]["mana"])
|
||||
# world.player.setHp(message["player"]["hp"])
|
||||
GameStart(world, message["player"]["hand"], inputHandler, world.getPlayer(), Player(message["enemy"]["hp"],0,message["enemy"]["name"], message["enemy"]["id"]))
|
||||
pass
|
||||
elif message["event"] == "placecard":
|
||||
CardPlaced(world, message["card"], message["type"], message["owner"], pygame.Vector2(int(message["x"]), int(message["y"]), inputHandler))
|
||||
pass
|
||||
elif message["event"] == "MoveCard":
|
||||
<<<<<<< HEAD:Game_Client/Classes/System/Network/EventHandler.py
|
||||
# CardMoved(
|
||||
# world,
|
||||
# message["card"],
|
||||
# message["type"],
|
||||
# message["owner"],
|
||||
# pygame.Vector2(int(message["old_x"]), int(message["old_y"])),
|
||||
# pygame.Vector2(int(message["new_x"]), int(message["new_y"])),
|
||||
# inputHandler, world)
|
||||
=======
|
||||
>>>>>>> 18dcd6cc42f1f23e221702147a36f650f6aae6ac:Client/Classes/System/Network/EventHandler.py
|
||||
pass
|
||||
elif message["event"] == "RemoveCard":
|
||||
pass
|
||||
elif message["event"] == "AttackCard":
|
||||
pass
|
||||
elif message["event"] == "AttackPlayer":
|
||||
pass
|
||||
elif message["event"] == "ActivateEffectCard":
|
||||
pass
|
||||
elif message["event"] == "ActivateMonsterCard":
|
||||
pass
|
69
Client/Classes/System/Network/TCPClient.py
Normal file
69
Client/Classes/System/Network/TCPClient.py
Normal file
@ -0,0 +1,69 @@
|
||||
import json
|
||||
import socket
|
||||
import threading
|
||||
|
||||
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.world = world
|
||||
self.inputHandler = inputHandler
|
||||
|
||||
try:
|
||||
self.tcpSocket.connect((self.addr, self.port))
|
||||
except Exception as e:
|
||||
print(f"Error connecting TCP socket: {e}")
|
||||
|
||||
# Starten des Listener-Threads
|
||||
self.listen()
|
||||
|
||||
def send(self, message: dict):
|
||||
try:
|
||||
self.tcpSocket.sendall(json.dumps(message).encode())
|
||||
except Exception as e:
|
||||
print(f"Error sending TCP data: {e}")
|
||||
|
||||
def receive(self):
|
||||
while True:
|
||||
try:
|
||||
data = self.tcpSocket.recv(1024)
|
||||
if data:
|
||||
decoded_data = json.loads(data.decode())
|
||||
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
|
||||
tcpThread.start()
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user