gameobject annoucing when joining

This commit is contained in:
2024-03-28 10:33:05 +01:00
parent 370815a018
commit 29b9839452
16 changed files with 235 additions and 114 deletions
+2
View File
@@ -1,5 +1,7 @@
"""controller handles the translation between
netcode messages and model functions"""
from controller.object_controller import ObjectController
from controller.card import Card
from controller.game import GameController
from controller.client import ClientController
+5
View File
@@ -0,0 +1,5 @@
from controller import ObjectController
class Card(ObjectController):
pass
+13 -7
View File
@@ -5,7 +5,7 @@ from controller import GameController
from netcode.models import Message, LoginMessage
from game import Player
from model import Player
def vibe_check(t):
@@ -93,14 +93,20 @@ class ClientController:
self.on_message = self.game_context
print("user logged in : " + username)
await self.send(
Message(type="context", data_type="game_context_id", data="game")
)
await self.game_controller.announce_game(self.websocket)
await self.send(
Message(
type="create",
data_type="player_self",
data=self.player.serialize_team(),
type="set",
data_type="self",
data=self.player.uuid,
)
)
for player in self.game_controller.game.players:
if player.team != self.player.team:
continue
await self.send(
Message(type="update", data_type="object", data=player.serialize_team())
)
+51 -4
View File
@@ -1,7 +1,7 @@
import json
from netcode import WSServer
from netcode.ws_server import WebSocketServerProtocol
from netcode.models import Message
from game import Game, Player, Team
from model import Game, Player, Team
class GameController:
@@ -11,10 +11,50 @@ class GameController:
def __init__(self, game: Game, server: WSServer):
self.server = server
self.game = game
self.server.message_callbacks.append(self.guest_handler)
async def broadcast(self, message: Message):
await self.server.broadcast(message.model_dump_json())
async def announce_game(self, websocket: WebSocketServerProtocol):
for card in self.game.cards:
await websocket.send(
Message(
type="create",
data_type="object",
data=card.serialize(),
).model_dump_json()
)
for team in self.game.teams:
await websocket.send(
Message(
type="create",
data_type="object",
data=team.serialize(),
).model_dump_json()
)
for player in self.game.players:
await websocket.send(
Message(
type="create",
data_type="object",
data=player.serialize_guest(),
).model_dump_json()
)
await websocket.send(
Message(
type="create",
data_type="object",
data=self.game.serialize_guest(),
).model_dump_json()
)
async def guest_handler(self, websocket: WebSocketServerProtocol):
await self.announce_game(websocket)
def get_player(self, username: str) -> Player | None:
players = [p for p in self.game.players if p.username == username]
if players and len(players) > 0:
@@ -29,7 +69,7 @@ class GameController:
await self.broadcast(
Message(
type="create",
data_type="player",
data_type="object",
data=player.serialize_guest(),
)
)
@@ -38,9 +78,16 @@ class GameController:
async def create_team(self):
team = self.game.create_team()
await self.broadcast(
Message(type="create", data_type="team", data=team.serialize())
Message(type="create", data_type="object", data=team.serialize())
)
return team
async def create_card(self):
card = self.game.create_card()
await self.broadcast(
Message(type="create", data_type="object", data=card.serialize())
)
return card
def start_game(self):
pass
+2
View File
@@ -0,0 +1,2 @@
class ObjectController:
pass