mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Choose player pilots based on player preference.
https://github.com/dcs-liberation/dcs_liberation/issues/276
This commit is contained in:
parent
bcccb3206d
commit
f619b6b9fc
@ -13,6 +13,7 @@ from dcs.unittype import FlyingType
|
|||||||
from faker import Faker
|
from faker import Faker
|
||||||
|
|
||||||
from game.db import flying_type_from_name
|
from game.db import flying_type_from_name
|
||||||
|
from game.settings import AutoAtoBehavior
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from game import Game
|
from game import Game
|
||||||
@ -61,8 +62,36 @@ class Squadron:
|
|||||||
return f'{self.name} "{self.nickname}"'
|
return f'{self.name} "{self.nickname}"'
|
||||||
|
|
||||||
def claim_available_pilot(self) -> Optional[Pilot]:
|
def claim_available_pilot(self) -> Optional[Pilot]:
|
||||||
|
# No pilots available, so the preference is irrelevant. Create a new pilot and
|
||||||
|
# return it.
|
||||||
if not self.available_pilots:
|
if not self.available_pilots:
|
||||||
self.enlist_new_pilots(1)
|
self.enlist_new_pilots(1)
|
||||||
|
return self.available_pilots.pop()
|
||||||
|
|
||||||
|
# For opfor, so player/AI option is irrelevant.
|
||||||
|
if not self.player:
|
||||||
|
return self.available_pilots.pop()
|
||||||
|
|
||||||
|
preference = self.game.settings.auto_ato_behavior
|
||||||
|
|
||||||
|
# No preference, so the first pilot is fine.
|
||||||
|
if preference is AutoAtoBehavior.Default:
|
||||||
|
return self.available_pilots.pop()
|
||||||
|
|
||||||
|
prefer_players = preference is AutoAtoBehavior.Prefer
|
||||||
|
for pilot in self.available_pilots:
|
||||||
|
if pilot.player == prefer_players:
|
||||||
|
self.available_pilots.remove(pilot)
|
||||||
|
return pilot
|
||||||
|
|
||||||
|
# No pilot was found that matched the user's preference.
|
||||||
|
#
|
||||||
|
# If they chose to *never* assign players and only players remain in the pool,
|
||||||
|
# we cannot fill the slot with the available pilots. Recruit a new one.
|
||||||
|
#
|
||||||
|
# If they prefer players and we're out of players, just return an AI pilot.
|
||||||
|
if not prefer_players:
|
||||||
|
self.enlist_new_pilots(1)
|
||||||
return self.available_pilots.pop()
|
return self.available_pilots.pop()
|
||||||
|
|
||||||
def claim_pilot(self, pilot: Pilot) -> None:
|
def claim_pilot(self, pilot: Pilot) -> None:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user