Cap squadron size, limit replenishment rate.

This caps squadrons to 12 pilots and limits their replenishment rate to
1 pilot per turn. Should probably make those values configurable, but
they aren't currently.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1136
This commit is contained in:
Dan Albert
2021-06-13 14:37:57 -07:00
parent 54aa161da0
commit ace42019fb
9 changed files with 128 additions and 64 deletions

View File

@@ -424,7 +424,7 @@ class SquadronModel(QAbstractListModel):
self.squadron = squadron
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return self.squadron.number_of_pilots_including_dead
return self.squadron.number_of_pilots_including_inactive
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
if not index.isValid():
@@ -462,9 +462,9 @@ class SquadronModel(QAbstractListModel):
pilot = self.pilot_at_index(index)
self.beginResetModel()
if pilot.on_leave:
pilot.return_from_leave()
self.squadron.return_from_leave(pilot)
else:
pilot.send_on_leave()
self.squadron.send_on_leave(pilot)
self.endResetModel()
def is_auto_assignable(self, task: FlightType) -> bool:

View File

@@ -48,10 +48,10 @@ class SquadronDelegate(TwoColumnRowDelegate):
return self.squadron(index).nickname or ""
elif (row, column) == (1, 1):
squadron = self.squadron(index)
alive = squadron.number_of_living_pilots
active = len(squadron.active_pilots)
available = len(squadron.available_pilots)
return f"{alive} pilots, {active} active, {available} unassigned"
on_leave = len(squadron.pilots_on_leave)
return f"{active} active, {available} unassigned, {on_leave} on leave"
return ""

View File

@@ -178,7 +178,9 @@ class SquadronDialog(QDialog):
if self.check_disabled_button_states(self.toggle_leave_button, index):
return
pilot = self.squadron_model.pilot_at_index(index)
self.toggle_leave_button.setEnabled(True)
self.toggle_leave_button.setEnabled(
not pilot.on_leave or self.squadron_model.squadron.has_unfilled_pilot_slots
)
self.toggle_leave_button.setText(
"Return from leave" if pilot.on_leave else "Send on leave"
)