player creation and broadcast

This commit is contained in:
2024-03-27 22:52:05 +01:00
parent 34c519345e
commit bac5f6e205
10 changed files with 94 additions and 37 deletions
+16 -8
View File
@@ -1,8 +1,9 @@
from pydantic import ValidationError
from controller import GameController
from websockets.server import WebSocketServerProtocol
from netcode.models import Message, LoginMessage, MessageData
from controller import GameController
from netcode.models import Message, LoginMessage
from game import Player
@@ -40,7 +41,13 @@ class ClientController:
async def listen(self):
"""Initializes the client controller"""
await self.send(Message(type="context", data=MessageData(message="login")))
await self.send(
Message(
type="context",
data_type="game_context_id",
data="login",
)
)
async for message in self.websocket:
await self.on_message(message)
@@ -49,7 +56,7 @@ class ClientController:
await self.websocket.send(message.model_dump_json())
async def send_error(self, error: str):
await self.send(Message(type="error", data=MessageData(message=error)))
await self.send(Message(type="error", data_type="error", data=error))
@vibe_check(Message)
async def game_context(self, message: Message):
@@ -59,8 +66,8 @@ class ClientController:
@vibe_check(LoginMessage)
async def login_context(self, message: LoginMessage):
"""Handles messages when the client isn't logged in"""
username = message.data
if message.type == "register":
username = message.data.username
if len(username) < 3:
await self.send_error("username must be longer than 3 characters")
@@ -70,9 +77,8 @@ class ClientController:
await self.send_error("username already exists")
return
player = self.game_controller.create_player(username)
player = await self.game_controller.create_player(username)
elif message.type == "login":
username = message.data.username
player = self.game_controller.get_player(username)
if player is None:
@@ -86,4 +92,6 @@ class ClientController:
self.player = player
self.on_message = self.game_context
print("user logged in : " + username)
await self.send(Message(type="context", data=MessageData(message="game")))
await self.send(
Message(type="context", data_type="game_context_id", data="game")
)