2026-02-17 16:37:36 +01:00
|
|
|
from typing import List, Dict
|
|
|
|
|
|
|
|
|
|
from PyQt6.QtWidgets import QWidget, QDialog
|
2026-02-18 11:15:53 +01:00
|
|
|
from PyQt6.QtCore import Qt
|
2026-02-17 16:37:36 +01:00
|
|
|
|
2026-02-18 11:15:53 +01:00
|
|
|
from warchron.constants import Icons, IconName, ContextType, RESOURCES_DIR
|
2026-02-17 16:37:36 +01:00
|
|
|
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],
|
2026-02-18 11:15:53 +01:00
|
|
|
context_type: ContextType,
|
2026-02-17 16:37:36 +01:00
|
|
|
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
|
2026-02-18 11:15:53 +01:00
|
|
|
self.ui.tieContext.setText(self._get_context_title(context_type))
|
|
|
|
|
icon_path = (RESOURCES_DIR / Icons._paths[IconName.TOKENS]).as_posix()
|
|
|
|
|
html = f'<img src="{icon_path}" width="16" height="16"> 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)
|
2026-02-17 16:37:36 +01:00
|
|
|
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(),
|
|
|
|
|
}
|
2026-02-18 11:15:53 +01:00
|
|
|
|
|
|
|
|
@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")
|