Add automation options to the new game wizard.

To have an effect on turn zero these need to be enabled in the wizard.
Since the last page was getting quite full I've split it into two pages:
one for the objective generation options and a second for the difficulty
and player assist options.

I also added an option to set the inital budget for opfor.
This commit is contained in:
Dan Albert
2020-12-05 23:16:17 -08:00
parent ddd06b3162
commit f2d2fd7014
4 changed files with 93 additions and 38 deletions

View File

@@ -61,9 +61,6 @@ ENEMY_BASE_STRENGTH_RECOVERY = 0.05
# cost of AWACS for single operation
AWACS_BUDGET_COST = 4
# Initial budget value
PLAYER_BUDGET_INITIAL = 650
# Bonus multiplier logarithm base
PLAYER_BUDGET_IMPORTANCE_LOG = 2
@@ -71,7 +68,8 @@ PLAYER_BUDGET_IMPORTANCE_LOG = 2
class Game:
def __init__(self, player_name: str, enemy_name: str,
theater: ConflictTheater, start_date: datetime,
settings: Settings):
settings: Settings, player_budget: int,
enemy_budget: int) -> None:
self.settings = settings
self.events: List[Event] = []
self.theater = theater
@@ -90,8 +88,8 @@ class Game:
self.compute_conflicts_position()
self.__destroyed_units: List[str] = []
self.savepath = ""
self.budget = PLAYER_BUDGET_INITIAL
self.enemy_budget = PLAYER_BUDGET_INITIAL
self.budget = player_budget
self.enemy_budget = enemy_budget
self.current_unit_id = 0
self.current_group_id = 0

View File

@@ -67,7 +67,8 @@ COUNT_BY_TASK = {
@dataclass(frozen=True)
class GeneratorSettings:
start_date: datetime
starting_budget: int
player_budget: int
enemy_budget: int
multiplier: float
midgame: bool
inverted: bool
@@ -91,14 +92,17 @@ class GameGenerator:
# Reset name generator
namegen.reset()
self.prepare_theater()
game = Game(player_name=self.player,
enemy_name=self.enemy,
theater=self.theater,
start_date=self.generator_settings.start_date,
settings=self.settings)
game = Game(
player_name=self.player,
enemy_name=self.enemy,
theater=self.theater,
start_date=self.generator_settings.start_date,
settings=self.settings,
player_budget=self.generator_settings.player_budget,
enemy_budget=self.generator_settings.enemy_budget
)
GroundObjectGenerator(game, self.generator_settings).generate()
game.budget = self.generator_settings.starting_budget
game.settings.version = VERSION
return game