feat: наследование от BaseEvent и метод from_payload для каждого из классов Event

This commit is contained in:
2026-08-25 01:49:12 +03:00
parent 878b83dc1c
commit b1132715e1
@@ -1,36 +1,66 @@
from dataclasses import dataclass from dataclasses import dataclass
from ..base_event import BaseEvent
from ..lobby.domain import Player from ..lobby.domain import Player
from ..session.domain import ArrowDirection from ..session.domain import ArrowDirection
@dataclass(frozen=True) @dataclass(frozen=True)
class PlayerHelloEvent: class PlayerHelloEvent(BaseEvent):
player: Player player: Player
@classmethod
def from_payload(cls, p: dict) -> "PlayerHelloEvent":
return cls(player=Player.from_dict(p))
@dataclass(frozen=True) @dataclass(frozen=True)
class SetterMoveEvent: class SetterMoveEvent(BaseEvent):
player: Player player: Player
direction: ArrowDirection direction: ArrowDirection
@classmethod
def from_payload(cls, p: dict) -> "SetterMoveEvent":
return cls(
player=Player.from_dict(p),
direction=ArrowDirection(p["arrow_direction"]),
)
@dataclass(frozen=True) @dataclass(frozen=True)
class GuesserMoveEvent: class GuesserMoveEvent(BaseEvent):
player: Player player: Player
direction: ArrowDirection direction: ArrowDirection
@classmethod
def from_payload(cls, p: dict) -> "GuesserMoveEvent":
return cls(
player=Player.from_dict(p),
direction=ArrowDirection(p["arrow_direction"]),
)
@dataclass(frozen=True) @dataclass(frozen=True)
class RevealSecretEvent: class RevealSecretEvent(BaseEvent):
player: Player player: Player
direction: ArrowDirection direction: ArrowDirection
@classmethod
def from_payload(cls, p: dict) -> "RevealSecretEvent":
return cls(
player=Player.from_dict(p),
direction=ArrowDirection(p["arrow_direction"]),
)
@dataclass(frozen=True) @dataclass(frozen=True)
class NextStepRequestedEvent: class NextStepRequestedEvent(BaseEvent):
player: Player player: Player
@classmethod
def from_payload(cls, p: dict) -> "NextStepRequestedEvent":
return cls(player=Player.from_dict(p))
SessionEvent = ( SessionEvent = (
PlayerHelloEvent PlayerHelloEvent