Send purchase state

This commit is contained in:
Eden Kirin
2023-03-30 21:09:11 +02:00
parent 6111d07f09
commit 059408242c
5 changed files with 107 additions and 20 deletions

View File

@ -1,13 +1,14 @@
from __future__ import annotations
import json
from typing import TypeVar, Generic
from typing import Optional, TypeVar
from pydantic import Field
from pydantic.generics import GenericModel
from hopper.api.dto import BaseModel, BoardDto, DestinationDto, PlayerDto, PositionDto
from hopper.enums import ObjectType
from hopper.models.product import Product
class LayerObjectDto(BaseModel):
@ -20,6 +21,11 @@ class LayerDto(BaseModel):
objects: list[LayerObjectDto]
class ProductDto(BaseModel):
name: str
uuid: str
class GameDumpPlayerDto(PlayerDto):
...
@ -31,12 +37,20 @@ class GameDumpDto(BaseModel):
layers: list[LayerDto]
class ProductPurchaseStartDto(BaseModel):
products: list[ProductDto]
class ProductPurchaseDoneDto(BaseModel):
product: Optional[ProductDto] = None
TMessageData = TypeVar("TMessageData", bound=BaseModel)
class WSMessage(GenericModel):
message: str
data: TMessageData
data: Optional[TMessageData] = None
def __str__(self) -> str:
return self.to_str()
@ -48,3 +62,13 @@ class WSMessage(GenericModel):
class WSGameDumpMessage(WSMessage):
message: str = "game_dump"
data: GameDumpDto
class WSProductPurchaseStart(WSMessage):
message: str = "product_purchase_start"
data: ProductPurchaseStartDto
class WSProductPurchaseDone(WSMessage):
message: str = "product_purchase_done"
data: ProductPurchaseDoneDto