diff --git a/src/mind_reader/domain/__init__.py b/src/mind_reader/domain/__init__.py new file mode 100644 index 0000000..94c3840 --- /dev/null +++ b/src/mind_reader/domain/__init__.py @@ -0,0 +1,20 @@ +from .common import Player, PlayerRole +from .session import ( + ArrowDirection, + CardData, + CardState, + SessionStats, + StepData, + StepState, +) + +__all__ = [ + "Player", + "PlayerRole", + "ArrowDirection", + "CardData", + "CardState", + "SessionStats", + "StepData", + "StepState", +] diff --git a/src/mind_reader/domain/common.py b/src/mind_reader/domain/common.py new file mode 100644 index 0000000..6a976f9 --- /dev/null +++ b/src/mind_reader/domain/common.py @@ -0,0 +1,13 @@ +from dataclasses import dataclass +from enum import Enum, auto + + +class PlayerRole(Enum): + SETTER = auto() + GUESSER = auto() + + +@dataclass +class Player: + name: str + role: PlayerRole diff --git a/src/mind_reader/domain.py b/src/mind_reader/domain/session.py similarity index 88% rename from src/mind_reader/domain.py rename to src/mind_reader/domain/session.py index 4be2c48..41fb5bd 100644 --- a/src/mind_reader/domain.py +++ b/src/mind_reader/domain/session.py @@ -3,6 +3,17 @@ from enum import Enum, auto from typing import Optional +class ArrowDirection(Enum): + LEFT = auto() + RIGHT = auto() + + +class StepState(Enum): + WAITING_FOR_SETTER = auto() + WAITING_FOR_GUESSER = auto() + SESSION_FINISHED = auto() + + class CardState(Enum): SETTER_NOT_SET = auto() SETTER_HIDDEN = auto() @@ -13,9 +24,17 @@ class CardState(Enum): GUESSER_WRONG = auto() -class ArrowDirection(Enum): - LEFT = auto() - RIGHT = auto() +@dataclass(frozen=True) +class CardData: + direction: Optional[ArrowDirection] + state: CardState + + +@dataclass(frozen=True) +class StepData: + index: int + setter: CardData + guesser: CardData @dataclass @@ -33,33 +52,3 @@ class SessionStats: accuracy = 0.0 accuracy = (self.correct / self.total) * 100 return round(accuracy, 1) - - -class StepState(Enum): - WAITING_FOR_SETTER = auto() - WAITING_FOR_GUESSER = auto() - SESSION_FINISHED = auto() - - -class PlayerRole(Enum): - SETTER = auto() - GUESSER = auto() - - -@dataclass(frozen=True) -class CardData: - direction: Optional[ArrowDirection] - state: CardState - - -@dataclass(frozen=True) -class StepData: - index: int - setter: CardData - guesser: CardData - - -@dataclass -class Player: - name: str - role: PlayerRole