from typing import List, Dict from PyQt6.QtWidgets import QWidget, QDialog from PyQt6.QtCore import Qt from warchron.constants import Icons, IconName, ContextType, RESOURCES_DIR from warchron.controller.dtos import ParticipantOption from warchron.view.ui.ui_tie_dialog import Ui_tieDialog class TieDialog(QDialog): def __init__( self, parent: QWidget | None = None, *, players: List[ParticipantOption], counters: List[int], context_type: ContextType, context_id: str, ) -> None: super().__init__(parent) self._context_id = context_id self._p1_id = players[0].id self._p2_id = players[1].id self.ui: Ui_tieDialog = Ui_tieDialog() self.ui.setupUi(self) # type: ignore self.ui.tieContext.setText(self._get_context_title(context_type)) icon_path = (RESOURCES_DIR / Icons._paths[IconName.TOKENS]).as_posix() html = f' Remaining token(s)' self.ui.label_2.setText(html) self.ui.label_2.setTextFormat(Qt.TextFormat.RichText) self.ui.label_3.setText(html) self.ui.label_3.setTextFormat(Qt.TextFormat.RichText) self.ui.groupBox_1.setTitle(players[0].name) self.ui.groupBox_2.setTitle(players[1].name) self.ui.tokenCount_1.setText(str(counters[0])) self.ui.tokenCount_2.setText(str(counters[1])) if counters[0] < 1: self.ui.tokenSpend_1.setDisabled(True) if counters[1] < 1: self.ui.tokenSpend_2.setDisabled(True) self.setWindowIcon(Icons.get(IconName.WARCHRON)) def get_bids(self) -> Dict[str, bool]: return { self._p1_id: self.ui.tokenSpend_1.isChecked(), self._p2_id: self.ui.tokenSpend_2.isChecked(), } @staticmethod def _get_context_title(context_type: ContextType) -> str: titles = { ContextType.BATTLE: "Battle tie", ContextType.CAMPAIGN: "Campaign tie", ContextType.WAR: "War tie", ContextType.CHOICE: "Choice tie", } return titles.get(context_type, "Tie")