Compare commits
4 Commits
18dcd6cc42
...
854959da59
Author | SHA1 | Date | |
---|---|---|---|
854959da59 | |||
588483ca2d | |||
69881973a4 | |||
1a9f49f5e9 |
@ -56,10 +56,17 @@ class World():
|
||||
pManaPos = pygame.Vector2(20, pRow2Height + 255)
|
||||
|
||||
# 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("PlayerName", self.__screen, "Not Connected", pNamePos))
|
||||
self.__labels.append(Label("PlayerName", self.__screen, "0", pManaPos))
|
||||
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.__boardFields.append(BoardField("EnemyDeck", "Enemy", "Deck", eDeckPos, PathUtil.getAbsolutePathTo("Assets/Cards/0/field.png"), "e-deck"))
|
||||
|
Binary file not shown.
Binary file not shown.
@ -13,9 +13,15 @@ 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":
|
||||
@ -28,6 +34,17 @@ class TCPEventHandler:
|
||||
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
|
||||
|
Binary file not shown.
@ -19,6 +19,7 @@ class Label:
|
||||
self.rect = pygame.Rect(self.__pos.x, self.__pos.y, w, h)
|
||||
self.__screen = screen
|
||||
self.__text = text
|
||||
self.__name = name
|
||||
|
||||
def getText(self) -> str:
|
||||
return self.__text
|
||||
|
Binary file not shown.
Binary file not shown.
@ -7,10 +7,10 @@ from Classes.Engine.InputHandler import InputHandler
|
||||
|
||||
# send from the server to tell the player the game starts
|
||||
# gives the client its and the opponents stats (not cards!!)
|
||||
def GameStart(world: World, handCards:list, inputHandler:InputHandler, owner:Player, opponent:Player):
|
||||
def GameStart(world: World, handCards:list, inputHandler:InputHandler, opponent:Player):
|
||||
index:int = 0
|
||||
world.setEnemy(opponent)
|
||||
|
||||
for card in handCards:
|
||||
world.AddToPlayerHand(Card(pygame.Vector2(500 + (index + 100), 1050), f"Assets/Cards/{card}/", inputHandler, owner))
|
||||
world.AddToPlayerHand(Card(pygame.Vector2(500 + (index + 100), 1050), f"Assets/Cards/{card}/", inputHandler, world.getPlayer()))
|
||||
|
@ -15,8 +15,9 @@ def Login(tcpClient):
|
||||
tcpClient.send(payload)
|
||||
|
||||
# server response for login event
|
||||
def LoginResponse(message:dict):
|
||||
def LoginResponse(message:dict, world:World):
|
||||
# checks if the response on the login request is successfull
|
||||
if message["status"] != "success":
|
||||
print("login failed")
|
||||
pass
|
||||
else:
|
||||
world.setPlayer(Player(0,0, message["username"], message["id"]))
|
||||
|
@ -3,7 +3,7 @@ from Classes.Game.World import World
|
||||
from Classes.Engine.InputHandler import InputHandler
|
||||
|
||||
# the event the client sends to the server when it places a card
|
||||
def PlaceCard(tcpClient, card):
|
||||
def PlaceCard(tcpClient, card, id):
|
||||
# todo: send card information to the server
|
||||
# todo: required info is:
|
||||
# - position
|
||||
@ -13,6 +13,7 @@ def PlaceCard(tcpClient, card):
|
||||
"event":"placecard",
|
||||
"card": card.getID(),
|
||||
"type": card.getType(),
|
||||
"user": id,
|
||||
"x": card.getPos().x,
|
||||
"y": card.getPos().y,
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -7,10 +7,11 @@ class Player:
|
||||
__name:str
|
||||
__handCards:pygame.sprite.Group
|
||||
|
||||
def __init__(self, hp:int, mana:int, name:str):
|
||||
def __init__(self, hp:int, mana:int, name:str, id:int):
|
||||
self.__hp = hp
|
||||
self.__mana = mana
|
||||
self.__name = name
|
||||
self.__id = id
|
||||
|
||||
def setID(self, id:int):
|
||||
self.__id = id
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,6 +1,5 @@
|
||||
import random
|
||||
|
||||
|
||||
class Player:
|
||||
__id:int
|
||||
__hp:int
|
||||
@ -16,6 +15,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)
|
||||
|
Binary file not shown.
@ -68,7 +68,7 @@ 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):
|
||||
def startGame(self, tcpSocket: socket):
|
||||
self.__state = "running"
|
||||
|
||||
players = list(self.__players.values())
|
||||
@ -77,7 +77,7 @@ class GameManager:
|
||||
self.logger.info("game manager is starting the game")
|
||||
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()
|
||||
@ -105,9 +105,7 @@ class GameManager:
|
||||
player_data["socket"].send(json.dumps(payload).encode())
|
||||
except Exception as e:
|
||||
self.logger.error(f"failed to start game due to error: {e}")
|
||||
pass
|
||||
# handles notifying all players that the game starts
|
||||
pass
|
||||
break
|
||||
|
||||
def stopGame(self):
|
||||
# handles notifying all players that the game stops
|
||||
@ -151,3 +149,7 @@ class GameManager:
|
||||
self.startGame()
|
||||
|
||||
return self.__players
|
||||
|
||||
def removePlayers(self, clientAddr):
|
||||
self.logger.info(f"removing player with address '{clientAddr}' from players database")
|
||||
del self.__players[clientAddr]
|
@ -14,8 +14,21 @@ class TCPEventHandler:
|
||||
# handles passing of event data to the right functions
|
||||
def handleTCPEvents(self, event, gameManager:GameManager, address):
|
||||
gameManager.getLogger().info(f"incommingevent {event}")
|
||||
if event["event"] == "placecard":
|
||||
gameManager.spawnCard(event["card"], event["user"], event["x"], event["y"])
|
||||
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
|
||||
|
@ -90,6 +90,12 @@ class NetworkManager:
|
||||
self.__gameManager.getLogger().info(f"connected users {len(self.__gameManager.getPlayers())}")
|
||||
|
||||
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.__gameManager.getLogger().info(f"Received message from {client_address}: {message}")
|
||||
@ -98,6 +104,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.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user