Archived
gameobject annoucing when joining
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
from controller import ObjectController
|
||||
|
||||
|
||||
class Card(ObjectController):
|
||||
pass
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
class ObjectController:
|
||||
pass
|
||||
Reference in New Issue
Block a user