fix sector missing fields
This commit is contained in:
parent
6cbb7c6534
commit
93aae78f0d
10 changed files with 102 additions and 14 deletions
|
|
@ -36,6 +36,8 @@ class CampaignController:
|
|||
major=war.get_objective_name(sect.major_objective_id),
|
||||
minor=war.get_objective_name(sect.minor_objective_id),
|
||||
influence=war.get_objective_name(sect.influence_objective_id),
|
||||
mission=sect.mission,
|
||||
description=sect.description,
|
||||
)
|
||||
for sect in sectors
|
||||
]
|
||||
|
|
@ -214,6 +216,8 @@ class CampaignController:
|
|||
major_id = dialog.get_major_id()
|
||||
minor_id = dialog.get_minor_id()
|
||||
influence_id = dialog.get_influence_id()
|
||||
mission = dialog.get_mission()
|
||||
description = dialog.get_description()
|
||||
if not self._validate_sector_inputs(
|
||||
name, round_id, major_id, minor_id, influence_id
|
||||
):
|
||||
|
|
@ -225,6 +229,8 @@ class CampaignController:
|
|||
major_id,
|
||||
minor_id,
|
||||
influence_id,
|
||||
mission,
|
||||
description,
|
||||
)
|
||||
self.app.is_dirty = True
|
||||
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
|
||||
|
|
@ -251,6 +257,8 @@ class CampaignController:
|
|||
default_major_id=sect.major_objective_id,
|
||||
default_minor_id=sect.minor_objective_id,
|
||||
default_influence_id=sect.influence_objective_id,
|
||||
default_mission=sect.mission,
|
||||
default_description=sect.description,
|
||||
)
|
||||
if sect_dialog.exec() == QDialog.DialogCode.Accepted:
|
||||
name = sect_dialog.get_sector_name()
|
||||
|
|
@ -258,6 +266,8 @@ class CampaignController:
|
|||
major_id = sect_dialog.get_major_id()
|
||||
minor_id = sect_dialog.get_minor_id()
|
||||
influence_id = sect_dialog.get_influence_id()
|
||||
mission = sect_dialog.get_mission()
|
||||
description = sect_dialog.get_description()
|
||||
self.app.model.update_sector(
|
||||
sector_id,
|
||||
name=name,
|
||||
|
|
@ -265,4 +275,6 @@ class CampaignController:
|
|||
major_id=major_id,
|
||||
minor_id=minor_id,
|
||||
influence_id=influence_id,
|
||||
mission=mission,
|
||||
description=description,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ class SectorDTO:
|
|||
major: str | None
|
||||
minor: str | None
|
||||
influence: str | None
|
||||
mission: str | None
|
||||
description: str | None
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
|
|||
|
|
@ -152,8 +152,12 @@ class Campaign:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
) -> Sector:
|
||||
sect = Sector(name, round_id, major_id, minor_id, influence_id)
|
||||
sect = Sector(
|
||||
name, round_id, major_id, minor_id, influence_id, mission, description
|
||||
)
|
||||
self.sectors[sect.id] = sect
|
||||
return sect
|
||||
|
||||
|
|
@ -177,6 +181,8 @@ class Campaign:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
) -> None:
|
||||
sect = self.get_sector(sector_id)
|
||||
old_round_id = sect.round_id
|
||||
|
|
@ -187,6 +193,8 @@ class Campaign:
|
|||
sect.set_major(major_id)
|
||||
sect.set_minor(minor_id)
|
||||
sect.set_influence(influence_id)
|
||||
sect.set_mission(mission)
|
||||
sect.set_description(description)
|
||||
|
||||
if old_round_id == round_id:
|
||||
apply_update()
|
||||
|
|
|
|||
|
|
@ -301,9 +301,13 @@ class Model:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
) -> Sector:
|
||||
camp = self.get_campaign(campaign_id)
|
||||
return camp.add_sector(name, round_id, major_id, minor_id, influence_id)
|
||||
return camp.add_sector(
|
||||
name, round_id, major_id, minor_id, influence_id, mission, description
|
||||
)
|
||||
|
||||
# TODO replace multiloops by internal has_* method
|
||||
def get_sector(self, sector_id: str) -> Sector:
|
||||
|
|
@ -323,6 +327,8 @@ class Model:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
) -> None:
|
||||
war = self.get_war_by_sector(sector_id)
|
||||
war.update_sector(
|
||||
|
|
@ -332,6 +338,8 @@ class Model:
|
|||
major_id=major_id,
|
||||
minor_id=minor_id,
|
||||
influence_id=influence_id,
|
||||
mission=mission,
|
||||
description=description,
|
||||
)
|
||||
|
||||
def remove_sector(self, sector_id: str) -> None:
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ class Sector:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
):
|
||||
self.id: str = str(uuid4())
|
||||
self.name: str = name
|
||||
|
|
@ -18,8 +20,8 @@ class Sector:
|
|||
self.major_objective_id: str | None = major_id # ref to War.objectives
|
||||
self.minor_objective_id: str | None = minor_id # ref to War.objectives
|
||||
self.influence_objective_id: str | None = influence_id # ref to War.objectives
|
||||
self.mission: str | None = None
|
||||
self.description: str | None = None
|
||||
self.mission: str | None = mission
|
||||
self.description: str | None = description
|
||||
|
||||
def set_id(self, new_id: str) -> None:
|
||||
self.id = new_id
|
||||
|
|
@ -39,6 +41,12 @@ class Sector:
|
|||
def set_influence(self, new_influence_id: str | None) -> None:
|
||||
self.influence_objective_id = new_influence_id
|
||||
|
||||
def set_mission(self, new_mission_id: str | None) -> None:
|
||||
self.mission = new_mission_id
|
||||
|
||||
def set_description(self, new_description: str | None) -> None:
|
||||
self.description = new_description
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
|
|
@ -59,6 +67,8 @@ class Sector:
|
|||
data.get("major_objective_id") or None,
|
||||
data.get("minor_objective_id") or None,
|
||||
data.get("influence_objective_id") or None,
|
||||
data.get("mission") or None,
|
||||
data.get("description") or None,
|
||||
)
|
||||
sec.set_id(data["id"])
|
||||
sec.mission = data.get("mission") or None
|
||||
|
|
|
|||
|
|
@ -233,9 +233,13 @@ class War:
|
|||
major_id: str,
|
||||
minor_id: str,
|
||||
influence_id: str,
|
||||
mission: str,
|
||||
description: str,
|
||||
) -> Sector:
|
||||
camp = self.get_campaign(campaign_id)
|
||||
return camp.add_sector(name, round_id, major_id, minor_id, influence_id)
|
||||
return camp.add_sector(
|
||||
name, round_id, major_id, minor_id, influence_id, mission, description
|
||||
)
|
||||
|
||||
# TODO replace multiloops by internal has_* method
|
||||
def get_sector(self, sector_id: str) -> Sector:
|
||||
|
|
@ -254,6 +258,8 @@ class War:
|
|||
major_id: str | None,
|
||||
minor_id: str | None,
|
||||
influence_id: str | None,
|
||||
mission: str | None,
|
||||
description: str | None,
|
||||
) -> None:
|
||||
camp = self.get_campaign_by_sector(sector_id)
|
||||
camp.update_sector(
|
||||
|
|
@ -263,6 +269,8 @@ class War:
|
|||
major_id=major_id,
|
||||
minor_id=minor_id,
|
||||
influence_id=influence_id,
|
||||
mission=mission,
|
||||
description=description,
|
||||
)
|
||||
|
||||
def remove_sector(self, sector_id: str) -> None:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ class SectorDialog(QDialog):
|
|||
default_major_id: str | None = None,
|
||||
default_minor_id: str | None = None,
|
||||
default_influence_id: str | None = None,
|
||||
default_mission: str | None = None,
|
||||
default_description: str | None = None,
|
||||
) -> None:
|
||||
super().__init__(parent)
|
||||
self.ui: Ui_sectorDialog = Ui_sectorDialog()
|
||||
|
|
@ -38,6 +40,8 @@ class SectorDialog(QDialog):
|
|||
select_if_exists(self.ui.majorComboBox, default_major_id)
|
||||
select_if_exists(self.ui.minorComboBox, default_minor_id)
|
||||
select_if_exists(self.ui.influenceComboBox, default_influence_id)
|
||||
self.ui.sectorMission.setText(default_mission)
|
||||
self.ui.sectorDescription.setPlainText(default_description)
|
||||
|
||||
def get_sector_name(self) -> str:
|
||||
return self.ui.sectorName.text().strip()
|
||||
|
|
@ -58,5 +62,10 @@ class SectorDialog(QDialog):
|
|||
text = cast(str, self.ui.influenceComboBox.currentData())
|
||||
return text if text else None
|
||||
|
||||
def get_mission(self) -> str | None:
|
||||
text = self.ui.sectorMission.text().strip()
|
||||
return text if text else None
|
||||
|
||||
# TODO fix mission + description missing
|
||||
def get_description(self) -> str | None:
|
||||
text = self.ui.sectorDescription.toPlainText().strip()
|
||||
return text if text else None
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ class Ui_MainWindow(object):
|
|||
self.sectorsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||
self.sectorsTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
|
||||
self.sectorsTable.setObjectName("sectorsTable")
|
||||
self.sectorsTable.setColumnCount(6)
|
||||
self.sectorsTable.setColumnCount(7)
|
||||
self.sectorsTable.setRowCount(0)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.sectorsTable.setHorizontalHeaderItem(0, item)
|
||||
|
|
@ -286,6 +286,8 @@ class Ui_MainWindow(object):
|
|||
self.sectorsTable.setHorizontalHeaderItem(4, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.sectorsTable.setHorizontalHeaderItem(5, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.sectorsTable.setHorizontalHeaderItem(6, item)
|
||||
self.sectorsTable.horizontalHeader().setStretchLastSection(False)
|
||||
self.verticalLayout_5.addWidget(self.sectorsTable)
|
||||
self.verticalLayout_7.addWidget(self.groupBox_3)
|
||||
|
|
@ -381,7 +383,7 @@ class Ui_MainWindow(object):
|
|||
self.battlesTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||
self.battlesTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
|
||||
self.battlesTable.setObjectName("battlesTable")
|
||||
self.battlesTable.setColumnCount(3)
|
||||
self.battlesTable.setColumnCount(5)
|
||||
self.battlesTable.setRowCount(0)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.battlesTable.setHorizontalHeaderItem(0, item)
|
||||
|
|
@ -389,6 +391,10 @@ class Ui_MainWindow(object):
|
|||
self.battlesTable.setHorizontalHeaderItem(1, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.battlesTable.setHorizontalHeaderItem(2, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.battlesTable.setHorizontalHeaderItem(3, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.battlesTable.setHorizontalHeaderItem(4, item)
|
||||
self.battlesTable.horizontalHeader().setStretchLastSection(False)
|
||||
self.horizontalLayout_12.addWidget(self.battlesTable)
|
||||
self.verticalLayout_8.addWidget(self.groupBox_6)
|
||||
|
|
@ -546,12 +552,14 @@ class Ui_MainWindow(object):
|
|||
item = self.sectorsTable.horizontalHeaderItem(1)
|
||||
item.setText(_translate("MainWindow", "Round"))
|
||||
item = self.sectorsTable.horizontalHeaderItem(2)
|
||||
item.setText(_translate("MainWindow", "Major obj."))
|
||||
item.setText(_translate("MainWindow", "Mission"))
|
||||
item = self.sectorsTable.horizontalHeaderItem(3)
|
||||
item.setText(_translate("MainWindow", "Minor opp."))
|
||||
item.setText(_translate("MainWindow", "Major obj."))
|
||||
item = self.sectorsTable.horizontalHeaderItem(4)
|
||||
item.setText(_translate("MainWindow", "Influence imp."))
|
||||
item.setText(_translate("MainWindow", "Minor opp."))
|
||||
item = self.sectorsTable.horizontalHeaderItem(5)
|
||||
item.setText(_translate("MainWindow", "Influence imp."))
|
||||
item = self.sectorsTable.horizontalHeaderItem(6)
|
||||
item.setText(_translate("MainWindow", "Description"))
|
||||
self.groupBox_4.setTitle(_translate("MainWindow", "Participants"))
|
||||
self.addCampaignParticipantBtn.setText(_translate("MainWindow", "Add participant"))
|
||||
|
|
@ -585,6 +593,10 @@ class Ui_MainWindow(object):
|
|||
item.setText(_translate("MainWindow", "Player 1"))
|
||||
item = self.battlesTable.horizontalHeaderItem(2)
|
||||
item.setText(_translate("MainWindow", "Player 2"))
|
||||
item = self.battlesTable.horizontalHeaderItem(3)
|
||||
item.setText(_translate("MainWindow", "Score"))
|
||||
item = self.battlesTable.horizontalHeaderItem(4)
|
||||
item.setText(_translate("MainWindow", "Victory condition"))
|
||||
self.endRoundBtn.setText(_translate("MainWindow", "End round"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.warsTab), _translate("MainWindow", "Wars"))
|
||||
self.menuFile.setTitle(_translate("MainWindow", "File"))
|
||||
|
|
|
|||
|
|
@ -662,6 +662,11 @@
|
|||
<string>Round</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Mission</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Major obj.</string>
|
||||
|
|
@ -917,6 +922,16 @@
|
|||
<string>Player 2</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Score</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Victory condition</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
|
|||
|
|
@ -431,15 +431,19 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
round_item = QtWidgets.QTableWidgetItem(
|
||||
format_round_label(sect.round_index)
|
||||
)
|
||||
mission_item = QtWidgets.QTableWidgetItem(sect.mission)
|
||||
major_item = QtWidgets.QTableWidgetItem(sect.major)
|
||||
minor_item = QtWidgets.QTableWidgetItem(sect.minor)
|
||||
influence_item = QtWidgets.QTableWidgetItem(sect.influence)
|
||||
description_item = QtWidgets.QTableWidgetItem(sect.description)
|
||||
name_item.setData(Qt.ItemDataRole.UserRole, sect.id)
|
||||
table.setItem(row, 0, name_item)
|
||||
table.setItem(row, 1, round_item)
|
||||
table.setItem(row, 2, major_item)
|
||||
table.setItem(row, 3, minor_item)
|
||||
table.setItem(row, 4, influence_item)
|
||||
table.setItem(row, 2, mission_item)
|
||||
table.setItem(row, 3, major_item)
|
||||
table.setItem(row, 4, minor_item)
|
||||
table.setItem(row, 5, influence_item)
|
||||
table.setItem(row, 6, description_item)
|
||||
table.resizeColumnsToContents()
|
||||
|
||||
def display_campaign_participants(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue