auto create & edit battles
This commit is contained in:
parent
9f676f6b9d
commit
6bd3ee31dc
10 changed files with 442 additions and 55 deletions
|
|
@ -17,6 +17,7 @@ from warchron.view.ui.ui_war_participant_dialog import Ui_warParticipantDialog
|
|||
from warchron.view.ui.ui_campaign_participant_dialog import Ui_campaignParticipantDialog
|
||||
from warchron.view.ui.ui_sector_dialog import Ui_sectorDialog
|
||||
from warchron.view.ui.ui_choices_dialog import Ui_choicesDialog
|
||||
from warchron.view.ui.ui_battle_result_dialog import Ui_battleResultDialog
|
||||
|
||||
# utils...
|
||||
|
||||
|
|
@ -66,6 +67,8 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
self.sectorsTable.customContextMenuRequested.connect(self._on_sectors_table_context_menu)
|
||||
self.choicesTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.choicesTable.customContextMenuRequested.connect(self._on_choices_table_context_menu)
|
||||
self.battlesTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.battlesTable.customContextMenuRequested.connect(self._on_battles_table_context_menu)
|
||||
|
||||
def _emit_selection_changed(self, current, previous):
|
||||
if not self.on_tree_selection_changed:
|
||||
|
|
@ -395,6 +398,23 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
if action == edit_action and self.on_edit_item:
|
||||
self.on_edit_item(ItemType.CHOICE, choice_id)
|
||||
|
||||
def _on_battles_table_context_menu(self, pos):
|
||||
item = self.battlesTable.itemAt(pos)
|
||||
if not item:
|
||||
return
|
||||
row = item.row()
|
||||
name_item = self.battlesTable.item(row, 0)
|
||||
if not name_item:
|
||||
return
|
||||
battle_id = name_item.data(Qt.ItemDataRole.UserRole)
|
||||
if battle_id is None:
|
||||
return
|
||||
menu = QMenu(self)
|
||||
edit_action = menu.addAction("Edit")
|
||||
action = menu.exec(self.battlesTable.viewport().mapToGlobal(pos))
|
||||
if action == edit_action and self.on_edit_item:
|
||||
self.on_edit_item(ItemType.BATTLE, battle_id)
|
||||
|
||||
def show_round_details(self, *, index: int):
|
||||
self.roundNb.setText(f"Round {index}")
|
||||
|
||||
|
|
@ -412,6 +432,20 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
table.setItem(row, 2, secondary_item)
|
||||
table.resizeColumnsToContents()
|
||||
|
||||
def display_round_battles(self, sectors: list[tuple[str, str, str, str]]):
|
||||
table = self.battlesTable
|
||||
table.clearContents()
|
||||
table.setRowCount(len(sectors))
|
||||
for row, (sector, player_1, player_2, battle_id) in enumerate(sectors):
|
||||
sector_item = QtWidgets.QTableWidgetItem(sector)
|
||||
player_1_item = QtWidgets.QTableWidgetItem(player_1)
|
||||
player_2_item = QtWidgets.QTableWidgetItem(player_2)
|
||||
sector_item.setData(Qt.ItemDataRole.UserRole, battle_id)
|
||||
table.setItem(row, 0, sector_item)
|
||||
table.setItem(row, 1, player_1_item)
|
||||
table.setItem(row, 2, player_2_item)
|
||||
table.resizeColumnsToContents()
|
||||
|
||||
class PlayerDialog(QDialog):
|
||||
def __init__(self, parent=None, *, default_name: str = ""):
|
||||
super().__init__(parent)
|
||||
|
|
@ -540,7 +574,13 @@ class SectorDialog(QDialog):
|
|||
return self.ui.influenceComboBox.currentData()
|
||||
|
||||
class ChoicesDialog(QDialog):
|
||||
def __init__(self, parent=None, *, participants: list, default_participant_id=None, sectors: list, default_priority_id=None, default_secondary_id=None):
|
||||
def __init__(self, parent = None, *,
|
||||
participants: list,
|
||||
default_participant_id = None,
|
||||
sectors: list,
|
||||
default_priority_id = None,
|
||||
default_secondary_id = None,
|
||||
default_comment = None):
|
||||
super().__init__(parent)
|
||||
self.ui = Ui_choicesDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
|
@ -555,6 +595,7 @@ class ChoicesDialog(QDialog):
|
|||
self.ui.secondaryComboBox.addItem(sect.name, sect.id)
|
||||
select_if_exists(self.ui.priorityComboBox, default_priority_id)
|
||||
select_if_exists(self.ui.secondaryComboBox, default_secondary_id)
|
||||
self.ui.choiceComment.setPlainText(default_comment)
|
||||
|
||||
def get_participant_id(self) -> str:
|
||||
return self.ui.playerComboBox.currentData()
|
||||
|
|
@ -564,3 +605,62 @@ class ChoicesDialog(QDialog):
|
|||
|
||||
def get_secondary_id(self) -> str:
|
||||
return self.ui.secondaryComboBox.currentData()
|
||||
|
||||
def get_comment(self) -> str:
|
||||
return self.ui.choiceComment.toPlainText().strip()
|
||||
|
||||
class BattlesDialog(QDialog):
|
||||
def __init__(self, parent = None, *,
|
||||
sectors: list,
|
||||
default_sector_id = None,
|
||||
players: list,
|
||||
default_player_1_id = None,
|
||||
default_player_2_id = None,
|
||||
default_winner_id = None,
|
||||
default_score = None,
|
||||
default_victory_condition = None,
|
||||
default_comment = None):
|
||||
super().__init__(parent)
|
||||
self.ui = Ui_battleResultDialog()
|
||||
self.ui.setupUi(self)
|
||||
for sect in sectors:
|
||||
self.ui.sectorComboBox.addItem(sect.name, sect.id)
|
||||
select_if_exists(self.ui.sectorComboBox, default_sector_id)
|
||||
self.ui.sectorComboBox.setEnabled(False)
|
||||
|
||||
self.ui.player1ComboBox.addItem("(none)", None)
|
||||
self.ui.player2ComboBox.addItem("(none)", None)
|
||||
for play in players:
|
||||
self.ui.player1ComboBox.addItem(play.name, play.id)
|
||||
self.ui.player2ComboBox.addItem(play.name, play.id)
|
||||
select_if_exists(self.ui.player1ComboBox, default_player_1_id)
|
||||
select_if_exists(self.ui.player2ComboBox, default_player_2_id)
|
||||
self.ui.winnerComboBox.addItem("(none)", None)
|
||||
for play in players:
|
||||
if play.id in (default_player_1_id, default_player_2_id):
|
||||
self.ui.winnerComboBox.addItem(play.name, play.id)
|
||||
select_if_exists(self.ui.winnerComboBox, default_winner_id)
|
||||
self.ui.score.setText(default_score)
|
||||
self.ui.victoryCondition.setText(default_victory_condition)
|
||||
self.ui.battleComment.setPlainText(default_comment)
|
||||
|
||||
def get_sector_id(self) -> str:
|
||||
return self.ui.sectorComboBox.currentData()
|
||||
|
||||
def get_player_1_id(self) -> str:
|
||||
return self.ui.player1ComboBox.currentData()
|
||||
|
||||
def get_player_2_id(self) -> str:
|
||||
return self.ui.player2ComboBox.currentData()
|
||||
|
||||
def get_winner_id(self) -> str:
|
||||
return self.ui.winnerComboBox.currentData()
|
||||
|
||||
def get_score(self) -> str:
|
||||
return self.ui.score.text().strip()
|
||||
|
||||
def get_victory_condition(self) -> str:
|
||||
return self.ui.victoryCondition.text().strip()
|
||||
|
||||
def get_comment(self) -> str:
|
||||
return self.ui.battleComment.toPlainText().strip()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue