Archived
player creation and broadcast
This commit is contained in:
@@ -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")
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user