From b1132715e18e3d0df76e555bf4e3b82f7b6e422b Mon Sep 17 00:00:00 2001 From: Vladimir Date: Tue, 25 Aug 2026 01:49:12 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BD=D0=B0=D1=81=D0=BB=D0=B5=D0=B4?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=20BaseEvent?= =?UTF-8?q?=20=D0=B8=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20from=5Fpayload=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20?= =?UTF-8?q?Event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../state_machines/session/events.py | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/mind_reader/state_machines/session/events.py b/src/mind_reader/state_machines/session/events.py index 4c93e42..3b8da3a 100644 --- a/src/mind_reader/state_machines/session/events.py +++ b/src/mind_reader/state_machines/session/events.py @@ -1,36 +1,66 @@ from dataclasses import dataclass +from ..base_event import BaseEvent from ..lobby.domain import Player from ..session.domain import ArrowDirection @dataclass(frozen=True) -class PlayerHelloEvent: +class PlayerHelloEvent(BaseEvent): player: Player + @classmethod + def from_payload(cls, p: dict) -> "PlayerHelloEvent": + return cls(player=Player.from_dict(p)) + @dataclass(frozen=True) -class SetterMoveEvent: +class SetterMoveEvent(BaseEvent): player: Player 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) -class GuesserMoveEvent: +class GuesserMoveEvent(BaseEvent): player: Player 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) -class RevealSecretEvent: +class RevealSecretEvent(BaseEvent): player: Player 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) -class NextStepRequestedEvent: +class NextStepRequestedEvent(BaseEvent): player: Player + @classmethod + def from_payload(cls, p: dict) -> "NextStepRequestedEvent": + return cls(player=Player.from_dict(p)) + SessionEvent = ( PlayerHelloEvent