Verified Commit c20d8c27 authored by Jakob Moser's avatar Jakob Moser
Browse files

Record presentation and removal times, store last presented card

parent e4bf3c6d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
from dataclasses import dataclass, field
from time import monotonic

from poolpay import db
from poolpay.display.Display import Display
@@ -22,7 +23,15 @@ class Director:

    play: Play
    display: Display

    # State (public)
    started: bool = field(default=False, init=False)

    # State (internal)
    _last_presented_card: Card | None = field(init=False)
    _last_card_removed_at: float | None = field(init=False)
    _last_card_presented_at: float | None = field(init=False)

    _next_scene_on_card_presented: type[Scene] = field(init=False)

    def start(self) -> None:
@@ -36,6 +45,9 @@ class Director:
            self.play.PaymentFailure(self).present()
            return

        self._last_presented_card = card
        self._last_card_presented_at = monotonic()

        match self._next_scene_on_card_presented:
            case self.play.Reversal:
                self._do_reversal(card)
@@ -45,6 +57,7 @@ class Director:
                self._do_payment(card)

    def card_removed(self) -> None:
        self._last_card_removed_at = monotonic()
        self.nothing_requested()

    def nothing_requested(self) -> None: