Verified Commit 16fdd7d4 authored by Jakob Moser's avatar Jakob Moser
Browse files

Implement balance and wait for card screens

parent 66a46920
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
from poolpay.ui.Play import Play
from poolpay.ui.pygame.scenes.Balance import Balance
from poolpay.ui.pygame.scenes.Idle import Idle
from poolpay.ui.pygame.scenes.PaymentFailure import PaymentFailure
from poolpay.ui.pygame.scenes.PaymentSuccess import PaymentSuccess
from poolpay.ui.pygame.scenes.WaitForCard import WaitForCard

play = Play(
    Idle=Idle,
    PaymentSuccess=PaymentSuccess,
    PaymentFailure=PaymentFailure,
    Balance=Balance,
    # TODO Fill with missing screens
    Balance=...,
    Reversal=...,
    WaitForCard=...,
    WaitForCard=WaitForCard,
)

__all__ = ["play"]
+31 −0
Original line number Diff line number Diff line
from dataclasses import dataclass
from typing import cast

from babel.numbers import format_currency

from poolpay.display.PygameDisplay import PygameDisplay
from poolpay.ui.pygame.colors import white
from poolpay.ui.pygame.resources import fira_sans, fira_sans_large
from poolpay.ui.scenes.Balance import Balance as BalanceBase


@dataclass(frozen=True)
class Balance(BalanceBase):
    def present(self) -> None:
        balance = format_currency(self.balance_cents / 100, "EUR", locale="de_DE")

        # We expect the director's display to be a PyGame display (after all, this is a PyGame scene)
        display = cast(PygameDisplay, self.director.display)

        display.surface.fill((120, 0, 0))

        display.surface.blit(
            fira_sans.render(f"Hallo {self.person_name}!", True, white),
            (180, 70),
        )
        display.surface.blit(
            fira_sans_large.render(f"Kontostand: {balance}", True, white),
            (110, 110),
        )

        display.refresh()
+25 −0
Original line number Diff line number Diff line
from dataclasses import dataclass
from typing import cast

from poolpay.display.PygameDisplay import PygameDisplay
from poolpay.ui.pygame.colors import white
from poolpay.ui.pygame.resources import fira_sans, fira_sans_large
from poolpay.ui.scenes.WaitForCard import WaitForCard as WaitForCardBase


@dataclass(frozen=True)
class WaitForCard(WaitForCardBase):
    def present(self) -> None:
        # We expect the director's display to be a PyGame display (after all, this is a PyGame scene)
        display = cast(PygameDisplay, self.director.display)

        display.surface.fill((0, 0, 0))
        display.surface.blit(
            fira_sans_large.render("Poolkarte auflegen", True, white),
            (120, 110),
        )
        display.surface.blit(
            fira_sans.render("Um Kontostand einzusehen", True, white),
            (120, 155),
        )
        display.refresh()