Compare commits

..

No commits in common. "854959da59f2397402604318cedc68d68baebe03" and "18dcd6cc42f1f23e221702147a36f650f6aae6ac" have entirely different histories.

25 changed files with 15 additions and 67 deletions

View File

@ -56,17 +56,10 @@ class World():
pManaPos = pygame.Vector2(20, pRow2Height + 255) pManaPos = pygame.Vector2(20, pRow2Height + 255)
# labeling # labeling
<<<<<<< HEAD:Game_Client/Classes/Game/World.py
self.__labels.append(Label("PlayerHP", self.__screen, "0 / 0", pHPPos))
self.__labels.append(Label("PlayerName", self.__screen, "Not Connected", pNamePos))
self.__labels.append(Label("PlayerMana", self.__screen, "0", pManaPos))
self.__labels.append(Label("EnemyHP", self.__screen, "0 / 0", eHPPos))
=======
self.__labels.append(Label("PlayerHP", self.__screen, "1000 / 1000", pHPPos)) self.__labels.append(Label("PlayerHP", self.__screen, "1000 / 1000", pHPPos))
self.__labels.append(Label("PlayerName", self.__screen, "Not Connected", pNamePos)) self.__labels.append(Label("PlayerName", self.__screen, "Not Connected", pNamePos))
self.__labels.append(Label("PlayerName", self.__screen, "0", pManaPos)) self.__labels.append(Label("PlayerName", self.__screen, "0", pManaPos))
self.__labels.append(Label("EnemyHP", self.__screen, "1000 / 1000", eHPPos)) self.__labels.append(Label("EnemyHP", self.__screen, "1000 / 1000", eHPPos))
>>>>>>> 18dcd6cc42f1f23e221702147a36f650f6aae6ac:Client/Classes/Game/World.py
self.__labels.append(Label("EnemyName", self.__screen, "Not Connected", eNamePos)) self.__labels.append(Label("EnemyName", self.__screen, "Not Connected", eNamePos))
self.__boardFields.append(BoardField("EnemyDeck", "Enemy", "Deck", eDeckPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "e-deck")) self.__boardFields.append(BoardField("EnemyDeck", "Enemy", "Deck", eDeckPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "e-deck"))

View File

@ -13,15 +13,9 @@ class TCPEventHandler:
def __init__(self, socket:socket): def __init__(self, socket:socket):
self.tcp_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): def handleEvents(self, message, inputHandler:InputHandler, world:World):
print(message) print(message)
if message["event"] == "loginresponse": if message["event"] == "loginresponse":
>>>>>>> 18dcd6cc42f1f23e221702147a36f650f6aae6ac:Client/Classes/System/Network/EventHandler.py
LoginResponse(message, world) LoginResponse(message, world)
pass pass
elif message["event"] == "startgame": elif message["event"] == "startgame":
@ -34,17 +28,6 @@ class TCPEventHandler:
CardPlaced(world, message["card"], message["type"], message["owner"], pygame.Vector2(int(message["x"]), int(message["y"]), inputHandler)) CardPlaced(world, message["card"], message["type"], message["owner"], pygame.Vector2(int(message["x"]), int(message["y"]), inputHandler))
pass pass
elif message["event"] == "MoveCard": 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 pass
elif message["event"] == "RemoveCard": elif message["event"] == "RemoveCard":
pass pass

View File

@ -19,7 +19,6 @@ class Label:
self.rect = pygame.Rect(self.__pos.x, self.__pos.y, w, h) self.rect = pygame.Rect(self.__pos.x, self.__pos.y, w, h)
self.__screen = screen self.__screen = screen
self.__text = text self.__text = text
self.__name = name
def getText(self) -> str: def getText(self) -> str:
return self.__text return self.__text

View File

@ -7,10 +7,10 @@ from Classes.Engine.InputHandler import InputHandler
# send from the server to tell the player the game starts # send from the server to tell the player the game starts
# gives the client its and the opponents stats (not cards!!) # gives the client its and the opponents stats (not cards!!)
def GameStart(world: World, handCards:list, inputHandler:InputHandler, opponent:Player): def GameStart(world: World, handCards:list, inputHandler:InputHandler, owner:Player, opponent:Player):
index:int = 0 index:int = 0
world.setEnemy(opponent) world.setEnemy(opponent)
for card in handCards: for card in handCards:
world.AddToPlayerHand(Card(pygame.Vector2(500 + (index + 100), 1050), f"Assets/Cards/{card}/", inputHandler, world.getPlayer())) world.AddToPlayerHand(Card(pygame.Vector2(500 + (index + 100), 1050), f"Assets/Cards/{card}/", inputHandler, owner))

View File

@ -15,9 +15,8 @@ def Login(tcpClient):
tcpClient.send(payload) tcpClient.send(payload)
# server response for login event # server response for login event
def LoginResponse(message:dict, world:World): def LoginResponse(message:dict):
# checks if the response on the login request is successfull # checks if the response on the login request is successfull
if message["status"] != "success": if message["status"] != "success":
print("login failed") print("login failed")
else: pass
world.setPlayer(Player(0,0, message["username"], message["id"]))

View File

@ -3,7 +3,7 @@ from Classes.Game.World import World
from Classes.Engine.InputHandler import InputHandler from Classes.Engine.InputHandler import InputHandler
# the event the client sends to the server when it places a card # the event the client sends to the server when it places a card
def PlaceCard(tcpClient, card, id): def PlaceCard(tcpClient, card):
# todo: send card information to the server # todo: send card information to the server
# todo: required info is: # todo: required info is:
# - position # - position
@ -13,7 +13,6 @@ def PlaceCard(tcpClient, card, id):
"event":"placecard", "event":"placecard",
"card": card.getID(), "card": card.getID(),
"type": card.getType(), "type": card.getType(),
"user": id,
"x": card.getPos().x, "x": card.getPos().x,
"y": card.getPos().y, "y": card.getPos().y,
} }

View File

@ -7,11 +7,10 @@ class Player:
__name:str __name:str
__handCards:pygame.sprite.Group __handCards:pygame.sprite.Group
def __init__(self, hp:int, mana:int, name:str, id:int): def __init__(self, hp:int, mana:int, name:str):
self.__hp = hp self.__hp = hp
self.__mana = mana self.__mana = mana
self.__name = name self.__name = name
self.__id = id
def setID(self, id:int): def setID(self, id:int):
self.__id = id self.__id = id

View File

@ -1,5 +1,6 @@
import random import random
class Player: class Player:
__id:int __id:int
__hp:int __hp:int
@ -15,7 +16,6 @@ class Player:
self.__handCards = [] self.__handCards = []
self.__deck = deck self.__deck = deck
self.__id = random.randint(3, 99999) self.__id = random.randint(3, 99999)
self.__mana = mana
def shuffleDeck(self): def shuffleDeck(self):
self.__deck = random.shuffle(self.__deck) self.__deck = random.shuffle(self.__deck)

View File

@ -68,7 +68,7 @@ class GameManager:
# this section mostly only used by the networking and event handling classes # this section mostly only used by the networking and event handling classes
# other parts should never need to interface with this unless really required # other parts should never need to interface with this unless really required
# ============================================================================= # =============================================================================
def startGame(self, tcpSocket: socket): def startGame(self):
self.__state = "running" self.__state = "running"
players = list(self.__players.values()) players = list(self.__players.values())
@ -77,7 +77,7 @@ class GameManager:
self.logger.info("game manager is starting the game") self.logger.info("game manager is starting the game")
for userAddr, player_data in self.__players.items(): for userAddr, player_data in self.__players.items():
try: try:
user = player_data["player"] user = self.__players[userAddr]["player"]
user.addMana(1000) user.addMana(1000)
user.adjustHP(1000) user.adjustHP(1000)
user.shuffleDeck() user.shuffleDeck()
@ -105,7 +105,9 @@ class GameManager:
player_data["socket"].send(json.dumps(payload).encode()) player_data["socket"].send(json.dumps(payload).encode())
except Exception as e: except Exception as e:
self.logger.error(f"failed to start game due to error: {e}") self.logger.error(f"failed to start game due to error: {e}")
break pass
# handles notifying all players that the game starts
pass
def stopGame(self): def stopGame(self):
# handles notifying all players that the game stops # handles notifying all players that the game stops
@ -148,8 +150,4 @@ class GameManager:
self.logger.info("2 players have join game starts") self.logger.info("2 players have join game starts")
self.startGame() self.startGame()
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]

View File

@ -14,21 +14,8 @@ class TCPEventHandler:
# handles passing of event data to the right functions # handles passing of event data to the right functions
def handleTCPEvents(self, event, gameManager:GameManager, address): def handleTCPEvents(self, event, gameManager:GameManager, address):
gameManager.getLogger().info(f"incommingevent {event}") gameManager.getLogger().info(f"incommingevent {event}")
if event["event"] == "PlaceCard": if event["event"] == "placecard":
gameManager.getLogger().info(f"player {event['user']} attempted to place card {event['card']}") gameManager.spawnCard(event["card"], event["user"], event["x"], event["y"])
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 pass
elif event["event"] == "MoveCard": elif event["event"] == "MoveCard":
pass pass

View File

@ -90,12 +90,6 @@ class NetworkManager:
self.__gameManager.getLogger().info(f"connected users {len(self.__gameManager.getPlayers())}") self.__gameManager.getLogger().info(f"connected users {len(self.__gameManager.getPlayers())}")
self.__gameManager.getLogger().info(f"confirming login for user") self.__gameManager.getLogger().info(f"confirming login for user")
self.send({
"event": "loginresponse",
"status": "success",
"username": user[client_address]["player"].getName(),
"id": user[client_address]["player"].getID(),
}, client_address)
self.__eventHandler[client_address].handleTCPEvents(messageJson, self.__gameManager, client_address) self.__eventHandler[client_address].handleTCPEvents(messageJson, self.__gameManager, client_address)
self.__gameManager.getLogger().info(f"Received message from {client_address}: {message}") self.__gameManager.getLogger().info(f"Received message from {client_address}: {message}")
@ -104,9 +98,6 @@ class NetworkManager:
if e.errno == 10054: if e.errno == 10054:
self.__gameManager.getLogger().error(f"Connection with {client_address} forcibly closed by remote host.") 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 break
self.__gameManager.getLogger().error(f"Socket error receiving data from {client_address}: {e}") self.__gameManager.getLogger().error(f"Socket error receiving data from {client_address}: {e}")