debriefing log parsing

This commit is contained in:
Vasiliy Horbachenko
2018-06-13 02:42:44 +03:00
parent 5f7724d44e
commit 481a5922b4
9 changed files with 107 additions and 49 deletions

View File

@@ -23,29 +23,33 @@ class EventMenu(Menu):
self.window.clear_right_pane()
row = 0
def label(text):
def label(text, _row=None, _column=None):
nonlocal row
Label(self.frame, text=text).grid()
Label(self.frame, text=text).grid(row=_row and _row or row, column=_column and _column or 0)
row += 1
if _row is None:
row += 1
def scrable_row(unit_type, unit_count):
nonlocal row
Label(self.frame, text="{} ({})".format(db.unit_type_name(unit_type), unit_count)).grid(row=row)
scramble_entry = Entry(self.frame)
Label(self.frame, text="{} ({})".format(db.unit_type_name(unit_type), unit_count)).grid(row=row, sticky=W)
scramble_entry = Entry(self.frame, width=10)
scramble_entry.grid(column=1, row=row)
scramble_entry.insert(0, "0")
self.aircraft_scramble_entries[unit_type] = scramble_entry
client_entry = Entry(self.frame)
client_entry = Entry(self.frame, width=10)
client_entry.grid(column=2, row=row)
client_entry.insert(0, "0")
self.aircraft_client_entries[unit_type] = client_entry
row += 1
def scramble_armor_row(unit_type, unit_count):
nonlocal row
Label(self.frame, text="{} ({})".format(db.unit_type_name(unit_type), unit_count)).grid(row=row)
scramble_entry = Entry(self.frame)
Label(self.frame, text="{} ({})".format(db.unit_type_name(unit_type), unit_count)).grid(row=row, sticky=W)
scramble_entry = Entry(self.frame, width=10)
scramble_entry.insert(0, "0")
scramble_entry.grid(column=1, row=row)
self.armor_scramble_entries[unit_type] = scramble_entry
@@ -58,13 +62,23 @@ class EventMenu(Menu):
base = self.event.to_cp.base
label("Aircraft")
label("Amount", row, 1)
label("Client slots", row, 2)
row+=1
for unit_type, count in base.aircraft.items():
scrable_row(unit_type, count)
if not base.total_planes:
label("None")
label("Armor")
for unit_type, count in base.armor.items():
scramble_armor_row(unit_type, count)
if not base.total_armor:
label("None")
Button(self.frame, text="Commit", command=self.start).grid(column=0, row=row)
Button(self.frame, text="Back", command=self.dismiss).grid(column=2, row=row)

View File

@@ -21,14 +21,14 @@ class EventResultsMenu(Menu):
self.window.clear_right_pane()
if not self.finished:
Button(self.frame, text="no losses, succ", command=self.simulate_result(0, 1, True)).grid()
Button(self.frame, text="no losses, fail", command=self.simulate_result(0, 1, False)).grid(row=1, column=1)
Button(self.frame, text="no losses, succ", command=self.simulate_result(0, 1)).grid()
Button(self.frame, text="no losses, fail", command=self.simulate_result(0, 1)).grid(row=1, column=1)
Button(self.frame, text="half losses, succ", command=self.simulate_result(0.5, 0.5, True)).grid(row=2, )
Button(self.frame, text="half losses, fail", command=self.simulate_result(0.5, 0.5, False)).grid(row=2, column=1)
Button(self.frame, text="half losses, succ", command=self.simulate_result(0.5, 0.5)).grid(row=2, )
Button(self.frame, text="half losses, fail", command=self.simulate_result(0.5, 0.5)).grid(row=2, column=1)
Button(self.frame, text="full losses, succ", command=self.simulate_result(1, 0, True)).grid(row=3, )
Button(self.frame, text="full losses, fail", command=self.simulate_result(1, 0, False)).grid(row=3, column=1)
Button(self.frame, text="full losses, succ", command=self.simulate_result(1, 0)).grid(row=3, )
Button(self.frame, text="full losses, fail", command=self.simulate_result(1, 0)).grid(row=3, column=1)
Label(self.frame, text="Play the mission and save debriefing to {}".format(debriefing_directory_location())).grid(row=0, column=0)
else:
@@ -55,6 +55,10 @@ class EventResultsMenu(Menu):
Button(self.frame, text="Okay", command=self.dismiss).grid(columnspan=1, row=row); row += 1
def process_debriefing(self, debriefing: Debriefing):
debriefing.calculate_destroyed_units(mission=self.event.operation.mission,
player_name=self.game.player,
enemy_name=self.game.enemy)
self.game.finish_event(event=self.event, debriefing=debriefing)
self.game.pass_turn()
@@ -63,7 +67,7 @@ class EventResultsMenu(Menu):
self.enemy_losses = debriefing.destroyed_units.get(self.game.enemy, {})
self.display()
def simulate_result(self, player_factor: float, enemy_factor: float, result: bool):
def simulate_result(self, player_factor: float, enemy_factor: float):
def action():
debriefing = Debriefing()

View File

@@ -34,9 +34,9 @@ class MainMenu(Menu):
def event_button(event):
nonlocal row
Message(self.frame, text="{}{}".format(
event.defender.name == self.game.player and "Enemy attacking: " or "",
event.defender_name == self.game.player and "Enemy attacking: " or "",
event
), aspect=500).grid(column=0, row=row, sticky=NW)
), aspect=800).grid(column=0, row=row, sticky=NW)
Button(self.frame, text=">", command=self.start_event(event)).grid(column=0, row=row, sticky=NE+S)
row += 1
Separator(self.frame, orient='horizontal').grid(row=row, sticky=EW); row += 1