From bd9525817650b0c546367aaaaaf5e5b5d46e0e34 Mon Sep 17 00:00:00 2001 From: Khopa Date: Sun, 13 Oct 2019 17:17:33 +0200 Subject: [PATCH] Fixed issue with lost helicopters causing errors in debriefing. Mission generated now configure bluefor and redfor coalition properly, so it is possible to use country that are not in the default coalitions. Added insurgent faction. --- game/db.py | 24 +++++- game/factions/germany_1944.py | 2 +- game/factions/insurgent.py | 25 ++++++ game/factions/iran_2015.py | 6 +- game/operation/operation.py | 17 ++++ gen/sam/aaa_zu23_insurgent.py | 25 ++++++ gen/sam/sam_group_generator.py | 7 +- gen/sam/sam_zu23_ural_insurgent.py | 18 ++++ gen/visualgen.py | 2 +- qt_ui/main2.py | 122 ++++++++++++++------------- qt_ui/windows/QDebriefingWindow.py | 27 ++++-- resources/scripts/dcs_liberation.lua | 7 +- theater/persiangulf.py | 21 +++-- userdata/debriefing.py | 14 +++ 14 files changed, 233 insertions(+), 84 deletions(-) create mode 100644 game/factions/insurgent.py create mode 100644 gen/sam/aaa_zu23_insurgent.py create mode 100644 gen/sam/sam_zu23_ural_insurgent.py diff --git a/game/db.py b/game/db.py index 51ccb197..40723447 100644 --- a/game/db.py +++ b/game/db.py @@ -16,6 +16,7 @@ from dcs.unitgroup import * from game.factions.china_2000 import China_2000 from game.factions.france_1995 import France_1995 from game.factions.germany_1990 import Germany_1990 +from game.factions.insurgent import Insurgent from game.factions.iran_2015 import Iran_2015 from game.factions.israel_2000 import Israel_2000 from game.factions.italy_1990 import Italy_1990 @@ -163,6 +164,7 @@ PRICES = { Armor.IFV_BMP_2: 16, Armor.IFV_BMP_3: 20, + Armor.APC_Cobra: 4, Armor.APC_M113: 6, Armor.APC_M1043_HMMWV_Armament: 2, Armor.ATGM_M1045_HMMWV_TOW: 8, @@ -174,6 +176,7 @@ PRICES = { Armor.MBT_Leclerc: 35, Armor.MBT_Leopard_1A3: 24, Armor.MBT_Leopard_2: 35, + Armor.MBT_Merkava_Mk__4: 35, Armor.TPz_Fuchs: 8, Armor.MBT_Challenger_II: 30, @@ -211,6 +214,7 @@ PRICES = { Armor.MT_M4_Sherman:4, Armor.MT_M4A4_Sherman_Firefly:6, Armor.M30_Cargo_Carrier:2, + Armor.APC_M2A1:2, AirDefence.AAA_Bofors_40mm:4, AirDefence.AAA_Flak_36:6, AirDefence.AAA_Flak_18:4, @@ -344,6 +348,10 @@ UNIT_BY_TASK = { Armor.MBT_T_80U, Armor.MBT_T_90, + Armor.APC_Cobra, + Armor.APC_Cobra, + Armor.APC_Cobra, + Armor.APC_Cobra, Armor.APC_M113, Armor.APC_M113, Armor.APC_M113, @@ -369,16 +377,26 @@ UNIT_BY_TASK = { Armor.MBT_Leclerc, Armor.MBT_Leopard_2, Armor.MBT_Challenger_II, + Armor.MBT_Merkava_Mk__4, Armor.MT_Pz_Kpfw_V_Panther_Ausf_G, Armor.MT_Pz_Kpfw_IV_Ausf_H, Armor.HT_Pz_Kpfw_VI_Tiger_I, Armor.HT_Pz_Kpfw_VI_Ausf__B__Tiger_II, Armor.APC_Sd_Kfz_251, + Armor.APC_Sd_Kfz_251, + Armor.APC_Sd_Kfz_251, + Armor.APC_Sd_Kfz_251, + Armor.IFV_Sd_Kfz_234_2_Puma, Armor.IFV_Sd_Kfz_234_2_Puma, Armor.MT_M4_Sherman, Armor.MT_M4A4_Sherman_Firefly, Armor.M30_Cargo_Carrier, + Armor.M30_Cargo_Carrier, + Armor.APC_M2A1, + Armor.APC_M2A1, + Armor.APC_M2A1, + Armor.APC_M2A1, ], AirDefence: [ @@ -481,7 +499,8 @@ EXTRA_AA = { "Turkey": AirDefence.AAA_Vulcan_M163, "Israel": AirDefence.AAA_Vulcan_M163, "India": AirDefence.SPAAA_ZSU_23_4_Shilka, - "United Arab Emirates": AirDefence.Stinger_MANPADS + "United Arab Emirates": AirDefence.Stinger_MANPADS, + "Insurgents": AirDefence.AAA_ZU_23_Insurgent_on_Ural_375 } """ @@ -497,6 +516,7 @@ FACTIONS = { "Iran 2015": Iran_2015, "China 2000": China_2000, "North Korea 2000": NorthKorea_2000, + "Insurgent": Insurgent, "USA 2005": USA_2005, "USA 1990": USA_1990, @@ -731,6 +751,8 @@ def unit_type_from_name(name: str) -> UnitType: return plane_map[name] elif name in ship_map: return ship_map[name] + if name in helicopter_map: + return helicopter_map[name] else: return None diff --git a/game/factions/germany_1944.py b/game/factions/germany_1944.py index e41a03c6..5fbfc66c 100644 --- a/game/factions/germany_1944.py +++ b/game/factions/germany_1944.py @@ -2,7 +2,7 @@ from dcs.planes import * from dcs.vehicles import * Germany_1944 = { - "country": "Russia", # WIP + "country": "Third Reich", "side": "red", "units": [ diff --git a/game/factions/insurgent.py b/game/factions/insurgent.py new file mode 100644 index 00000000..93e0bc32 --- /dev/null +++ b/game/factions/insurgent.py @@ -0,0 +1,25 @@ +from dcs.vehicles import * +from dcs.ships import * +from dcs.planes import * +from dcs.helicopters import * + +Insurgent = { + "country": "Insurgents", + "side": "red", + "units": [ + + AirDefence.AAA_ZU_23_Insurgent_Closed, + AirDefence.AAA_ZU_23_Insurgent_on_Ural_375, + + Armor.APC_Cobra, + + Unarmed.Transport_Ural_375, + Unarmed.Transport_UAZ_469, + Infantry.Soldier_AK, + Infantry.Infantry_Soldier_Insurgents, + + Bulk_cargo_ship_Yakushev, + Dry_cargo_ship_Ivanov, + Tanker_Elnya_160 + ] +} \ No newline at end of file diff --git a/game/factions/iran_2015.py b/game/factions/iran_2015.py index 84397399..ebfcfeea 100644 --- a/game/factions/iran_2015.py +++ b/game/factions/iran_2015.py @@ -29,11 +29,11 @@ Iran_2015 = { Mi_28N, Mi_24V, - AirDefence.AAA_ZU_23_Closed, - AirDefence.AAA_ZU_23_Insurgent_on_Ural_375, - AirDefence.SPAAA_ZSU_23_4_Shilka, AirDefence.SAM_Hawk_PCP, AirDefence.SAM_SA_2_LN_SM_90, + AirDefence.SAM_SA_6_Kub_LN_2P25, + AirDefence.HQ_7_Self_Propelled_LN, + AirDefence.SAM_SA_11_Buk_LN_9A310M1, Armor.APC_M113, Armor.APC_BTR_80, diff --git a/game/operation/operation.py b/game/operation/operation.py index 717eeaff..8bf0f875 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -1,3 +1,4 @@ +from dcs.countries import country_dict from dcs.lua.parse import loads from gen import * @@ -84,6 +85,22 @@ class Operation: self.current_mission = dcs.Mission(terrain) + print(self.game.player_country) + print(country_dict[db.country_id_from_name(self.game.player_country)]) + print(country_dict[db.country_id_from_name(self.game.player_country)]()) + + # Setup coalition : + self.current_mission.coalition["blue"] = Coalition("blue") + self.current_mission.coalition["red"] = Coalition("red") + if self.game.player_country and self.game.player_country in db.BLUEFOR_FACTIONS: + self.current_mission.coalition["blue"].add_country(country_dict[db.country_id_from_name(self.game.player_country)]()) + self.current_mission.coalition["red"].add_country(country_dict[db.country_id_from_name(self.game.enemy_country)]()) + else: + self.current_mission.coalition["blue"].add_country(country_dict[db.country_id_from_name(self.game.enemy_country)]()) + self.current_mission.coalition["red"].add_country(country_dict[db.country_id_from_name(self.game.player_country)]()) + print([c for c in self.current_mission.coalition["blue"].countries.keys()]) + print([c for c in self.current_mission.coalition["red"].countries.keys()]) + if is_quick: self.quick_mission = self.current_mission else: diff --git a/gen/sam/aaa_zu23_insurgent.py b/gen/sam/aaa_zu23_insurgent.py new file mode 100644 index 00000000..e4cc2498 --- /dev/null +++ b/gen/sam/aaa_zu23_insurgent.py @@ -0,0 +1,25 @@ +import random + +from dcs.vehicles import AirDefence + +from gen.sam.group_generator import AntiAirGroupGenerator + + +class ZU23InsurgentGenerator(AntiAirGroupGenerator): + """ + This generate a ZU23 insurgent flak artillery group + """ + + def generate(self): + grid_x = random.randint(2, 4) + grid_y = random.randint(2, 4) + + spacing = random.randint(10,40) + + index = 0 + for i in range(grid_x): + for j in range(grid_y): + index = index+1 + self.add_unit(AirDefence.AAA_ZU_23_Insurgent_Closed, "AAA#" + str(index), + self.position.x + spacing*i, + self.position.y + spacing*j, self.heading) \ No newline at end of file diff --git a/gen/sam/sam_group_generator.py b/gen/sam/sam_group_generator.py index 57d2616d..31d0769e 100644 --- a/gen/sam/sam_group_generator.py +++ b/gen/sam/sam_group_generator.py @@ -10,6 +10,7 @@ from dcs.vehicles import AirDefence from game import db from gen.sam.aaa_bofors import BoforsGenerator from gen.sam.aaa_flak36 import Flak36Generator +from gen.sam.aaa_zu23_insurgent import ZU23InsurgentGenerator from gen.sam.sam_avenger import AvengerGenerator from gen.sam.sam_chaparral import ChaparralGenerator from gen.sam.sam_gepard import GepardGenerator @@ -33,6 +34,7 @@ from gen.sam.sam_vulcan import VulcanGenerator from gen.sam.sam_zsu23 import ZSU23Generator from gen.sam.sam_zu23 import ZU23Generator from gen.sam.sam_zu23_ural import ZU23UralGenerator +from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator def generate_anti_air_group(game, parent_cp, ground_object, faction:str): @@ -47,9 +49,12 @@ def generate_anti_air_group(game, parent_cp, ground_object, faction:str): SAM_MAP = { AirDefence.SAM_Hawk_PCP:HawkGenerator, + AirDefence.AAA_ZU_23_Emplacement: ZU23Generator, AirDefence.AAA_ZU_23_Closed:ZU23Generator, AirDefence.AAA_ZU_23_on_Ural_375: ZU23UralGenerator, - AirDefence.AAA_ZU_23_Insurgent_on_Ural_375:ZU23UralGenerator, + AirDefence.AAA_ZU_23_Insurgent_on_Ural_375:ZU23UralInsurgentGenerator, + AirDefence.AAA_ZU_23_Insurgent_Closed: ZU23InsurgentGenerator, + AirDefence.AAA_ZU_23_Insurgent: ZU23InsurgentGenerator, AirDefence.SPAAA_ZSU_23_4_Shilka:ZSU23Generator, AirDefence.AAA_Vulcan_M163: VulcanGenerator, AirDefence.SAM_Linebacker_M6: LinebackerGenerator, diff --git a/gen/sam/sam_zu23_ural_insurgent.py b/gen/sam/sam_zu23_ural_insurgent.py new file mode 100644 index 00000000..04ae3ccd --- /dev/null +++ b/gen/sam/sam_zu23_ural_insurgent.py @@ -0,0 +1,18 @@ +import random + +from dcs.vehicles import AirDefence + +from gen.sam.group_generator import AntiAirGroupGenerator + + +class ZU23UralInsurgentGenerator(AntiAirGroupGenerator): + """ + This generate a Zu23 Ural group + """ + + def generate(self): + num_launchers = random.randint(2, 8) + + positions = self.get_circular_position(num_launchers, launcher_distance=80, coverage=360) + for i, position in enumerate(positions): + self.add_unit(AirDefence.AAA_ZU_23_Insurgent_on_Ural_375, "SPAA#" + str(i), position[0], position[1], position[2]) diff --git a/gen/visualgen.py b/gen/visualgen.py index bb9bf073..5300954d 100644 --- a/gen/visualgen.py +++ b/gen/visualgen.py @@ -134,7 +134,7 @@ class VisualGenerator: mission_units.add(db.unit_type_of(unit)) for unit_type in mission_units: - self.mission.static_group(self.mission.country("USA"), "a", unit_type, Point(0, 300000), hidden=True) + self.mission.static_group(self.mission.country(self.game.player_country), "a", unit_type, Point(0, 300000), hidden=True) def generate_target_smokes(self, target): spread = target.size * DESTINATION_SMOKE_DISTANCE_FACTOR diff --git a/qt_ui/main2.py b/qt_ui/main2.py index d7cd5300..4cac9f59 100644 --- a/qt_ui/main2.py +++ b/qt_ui/main2.py @@ -1,63 +1,67 @@ import datetime -from dcs import Mission -from dcs.terrain import Caucasus -from dcs.vehicles import AirDefence +# from dcs import Mission +# from dcs.terrain import Caucasus +# from dcs.vehicles import AirDefence +# +# from game import Game +# from gen.sam.sam_avenger import AvengerGenerator +# from gen.sam.sam_chaparral import ChaparralGenerator +# from gen.sam.sam_gepard import GepardGenerator +# from gen.sam.sam_hawk import HawkGenerator +# from gen.sam.sam_linebacker import LinebackerGenerator +# from gen.sam.sam_patriot import PatriotGenerator +# from gen.sam.sam_rapier import RapierGenerator +# from gen.sam.sam_roland import RolandGenerator +# from gen.sam.sam_sa10 import SA10Generator +# from gen.sam.sam_sa11 import SA11Generator +# from gen.sam.sam_sa13 import SA13Generator +# from gen.sam.sam_sa15 import SA15Generator +# from gen.sam.sam_sa19 import SA19Generator +# from gen.sam.sam_sa2 import SA2Generator +# from gen.sam.sam_sa3 import SA3Generator +# from gen.sam.sam_sa6 import SA6Generator +# from gen.sam.sam_sa8 import SA8Generator +# from gen.sam.sam_sa9 import SA9Generator +# from gen.sam.sam_zsu23 import ZSU23Generator +# from gen.sam.sam_zu23 import ZU23Generator +# from gen.sam.sam_zu23_ural import ZU23UralGenerator +# from theater import TheaterGroundObject +# from theater.caucasus import WesternGeorgia +# +# ter = Caucasus() +# m = Mission() +# +# +# +# game = Game("USA 1990", "Iran 2015", WesternGeorgia(), datetime.datetime.now()) +# +# generated_groups = [] +# +# for i,c in enumerate([SA3Generator, SA2Generator, SA6Generator, RapierGenerator, +# HawkGenerator, SA10Generator, SA19Generator, ZU23Generator, +# SA8Generator, SA11Generator, SA9Generator, SA13Generator, +# ZSU23Generator, SA15Generator, GepardGenerator, RolandGenerator, +# PatriotGenerator, ZU23UralGenerator, ChaparralGenerator, +# AvengerGenerator, LinebackerGenerator]): +# t = TheaterGroundObject() +# t.position = ter.kutaisi().position +# t.position.x += i*250 +# t.dcs_identifier = "AA" +# gen = c(game, t) +# gen.generate() +# vehicle_group = gen.get_generated_group() +# generated_groups.append(vehicle_group) +# +# for g in generated_groups: +# g.name = m.string(g.name) +# for unit in g.units: +# unit.name = m.string(unit.name) +# m.country("USA").add_vehicle_group(g) +# +# m.save("./test.miz") +from dcs.helicopters import SA342M -from game import Game -from gen.sam.sam_avenger import AvengerGenerator -from gen.sam.sam_chaparral import ChaparralGenerator -from gen.sam.sam_gepard import GepardGenerator -from gen.sam.sam_hawk import HawkGenerator -from gen.sam.sam_linebacker import LinebackerGenerator -from gen.sam.sam_patriot import PatriotGenerator -from gen.sam.sam_rapier import RapierGenerator -from gen.sam.sam_roland import RolandGenerator -from gen.sam.sam_sa10 import SA10Generator -from gen.sam.sam_sa11 import SA11Generator -from gen.sam.sam_sa13 import SA13Generator -from gen.sam.sam_sa15 import SA15Generator -from gen.sam.sam_sa19 import SA19Generator -from gen.sam.sam_sa2 import SA2Generator -from gen.sam.sam_sa3 import SA3Generator -from gen.sam.sam_sa6 import SA6Generator -from gen.sam.sam_sa8 import SA8Generator -from gen.sam.sam_sa9 import SA9Generator -from gen.sam.sam_zsu23 import ZSU23Generator -from gen.sam.sam_zu23 import ZU23Generator -from gen.sam.sam_zu23_ural import ZU23UralGenerator -from theater import TheaterGroundObject -from theater.caucasus import WesternGeorgia - -ter = Caucasus() -m = Mission() - - - -game = Game("USA 1990", "Iran 2015", WesternGeorgia(), datetime.datetime.now()) - -generated_groups = [] - -for i,c in enumerate([SA3Generator, SA2Generator, SA6Generator, RapierGenerator, - HawkGenerator, SA10Generator, SA19Generator, ZU23Generator, - SA8Generator, SA11Generator, SA9Generator, SA13Generator, - ZSU23Generator, SA15Generator, GepardGenerator, RolandGenerator, - PatriotGenerator, ZU23UralGenerator, ChaparralGenerator, - AvengerGenerator, LinebackerGenerator]): - t = TheaterGroundObject() - t.position = ter.kutaisi().position - t.position.x += i*250 - t.dcs_identifier = "AA" - gen = c(game, t) - gen.generate() - vehicle_group = gen.get_generated_group() - generated_groups.append(vehicle_group) - -for g in generated_groups: - g.name = m.string(g.name) - for unit in g.units: - unit.name = m.string(unit.name) - m.country("USA").add_vehicle_group(g) - -m.save("./test.miz") +from game import db +print(db.unit_type_name(None)) \ No newline at end of file diff --git a/qt_ui/windows/QDebriefingWindow.py b/qt_ui/windows/QDebriefingWindow.py index 5896d71c..67913611 100644 --- a/qt_ui/windows/QDebriefingWindow.py +++ b/qt_ui/windows/QDebriefingWindow.py @@ -42,14 +42,20 @@ class QDebriefingWindow(QDialog): row = 0 for unit_type, count in self.debriefing.player_dead_aircraft_dict.items(): - lostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) - lostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) - row += 1 + try: + lostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) + lostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) + row += 1 + except: + print("Issue adding " + str(unit_type) + " to debriefing information") for unit_type, count in self.debriefing.player_dead_units_dict.items(): - lostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) - lostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) - row += 1 + try: + lostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) + lostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) + row += 1 + except: + print("Issue adding " + str(unit_type) + " to debriefing information") self.layout.addWidget(lostUnits) @@ -67,9 +73,12 @@ class QDebriefingWindow(QDialog): for unit_type, count in self.debriefing.enemy_dead_aircraft_dict.items(): if count == 0: continue - enemylostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) - enemylostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) - row += 1 + try: + enemylostUnitsLayout.addWidget(QLabel(db.unit_type_name(unit_type)), row, 0) + enemylostUnitsLayout.addWidget(QLabel("{}".format(count)), row, 1) + row += 1 + except: + print("Issue adding " + str(unit_type) + " to debriefing information") for unit_type, count in self.debriefing.enemy_dead_units_dict.items(): if count == 0: diff --git a/resources/scripts/dcs_liberation.lua b/resources/scripts/dcs_liberation.lua index 467042d5..3bfc2d29 100644 --- a/resources/scripts/dcs_liberation.lua +++ b/resources/scripts/dcs_liberation.lua @@ -20,7 +20,7 @@ local function messageAll(message) end write_state = function() - messageAll("Writing DCS Liberation State...") + --messageAll("Writing DCS Liberation State...") local fp = io.open(debriefing_file_location, 'w') local game_state = { ["killed_aircrafts"] = killed_aircrafts, @@ -31,7 +31,7 @@ write_state = function() } fp:write(json:encode(game_state)) fp:close() - messageAll("Done writing DCS Liberation state.") + --messageAll("Done writing DCS Liberation state.") end mist.scheduleFunction(write_state, {}, timer.getTime() + 10, 60, timer.getTime() + 3600) @@ -39,7 +39,7 @@ mist.scheduleFunction(write_state, {}, timer.getTime() + 10, 60, timer.getTime() activeWeapons = {} local function onEvent(event) if event.id == world.event.S_EVENT_CRASH and event.initiator then - messageAll("Crash :" .. event.initiator.getName(event.initiator)) + messageAll("Destroyed :" .. event.initiator.getName(event.initiator)) killed_aircrafts[#killed_aircrafts + 1] = event.initiator.getName(event.initiator) end @@ -52,6 +52,7 @@ local function onEvent(event) end if event.id == world.event.S_EVENT_BASE_CAPTURED and event.place then + messageAll("Base captured :" .. event.place.getName(event.place)) base_capture_events[#base_capture_events + 1] = event.place.getID(event.place) .. "||" .. event.place.getCoalition(event.place) .. "||" .. event.place.getName(event.place) end diff --git a/theater/persiangulf.py b/theater/persiangulf.py index b686313c..4fa9d541 100644 --- a/theater/persiangulf.py +++ b/theater/persiangulf.py @@ -47,6 +47,9 @@ class PersianGulfTheater(ConflictTheater): al_ain = ControlPoint.from_airport(persiangulf.Al_Ain_International_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH) liwa = ControlPoint.from_airport(persiangulf.Liwa_Airbase, LAND, SIZE_BIG, IMPORTANCE_HIGH) + jiroft = ControlPoint.from_airport(persiangulf.Jiroft_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH) + bandar_e_jask = ControlPoint.from_airport(persiangulf.Bandar_e_Jask_airfield, LAND, SIZE_TINY, IMPORTANCE_LOW) + west_carrier = ControlPoint.carrier("West carrier", Point(-69043.813952358, -159916.65947136)) east_carrier = ControlPoint.carrier("East carrier", Point(59514.324335475, 28165.517980635)) @@ -125,6 +128,8 @@ class IranianCampaign(ConflictTheater): shiraz = ControlPoint.from_airport(persiangulf.Shiraz_International_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH) kerman = ControlPoint.from_airport(persiangulf.Kerman_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH) + jiroft = ControlPoint.from_airport(persiangulf.Jiroft_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH) + bandar_e_jask = ControlPoint.from_airport(persiangulf.Bandar_e_Jask_airfield, LAND, SIZE_TINY, IMPORTANCE_LOW) ras_al_khaimah = ControlPoint.from_airport(persiangulf.Ras_Al_Khaimah, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM) east_carrier = ControlPoint.carrier("East carrier", Point(59514.324335475, 28165.517980635)) @@ -133,15 +138,16 @@ class IranianCampaign(ConflictTheater): super(IranianCampaign, self).__init__() self.add_controlpoint(self.ras_al_khaimah, connected_to=[self.khasab]) - self.add_controlpoint(self.khasab, connected_to=[self.ras_al_khaimah, self.qeshm]) + self.add_controlpoint(self.khasab, connected_to=[self.ras_al_khaimah]) - self.add_controlpoint(self.bandar_lengeh, connected_to=[self.lar, self.qeshm]) - self.add_controlpoint(self.qeshm, connected_to=[self.khasab, self.bandar_lengeh, self.havadarya]) - self.add_controlpoint(self.havadarya, connected_to=[self.lar, self.qeshm, self.bandar_abbas]) - self.add_controlpoint(self.bandar_abbas, connected_to=[self.havadarya, self.kerman]) + self.add_controlpoint(self.bandar_lengeh, connected_to=[self.lar]) + self.add_controlpoint(self.qeshm, connected_to=[]) + self.add_controlpoint(self.havadarya, connected_to=[self.lar, self.bandar_abbas]) + self.add_controlpoint(self.bandar_abbas, connected_to=[self.havadarya, self.jiroft]) self.add_controlpoint(self.shiraz, connected_to=[self.lar, self.kerman]) - self.add_controlpoint(self.kerman, connected_to=[self.lar, self.shiraz, self.bandar_abbas]) + self.add_controlpoint(self.jiroft, connected_to=[self.kerman, self.bandar_abbas]) + self.add_controlpoint(self.kerman, connected_to=[self.lar, self.shiraz, self.jiroft]) self.add_controlpoint(self.lar, connected_to=[self.bandar_lengeh, self.havadarya, self.shiraz, self.kerman]) self.add_controlpoint(self.east_carrier) @@ -149,3 +155,6 @@ class IranianCampaign(ConflictTheater): self.al_dhafra.captured = True self.ras_al_khaimah.captured = True self.khasab.captured = True + self.qeshm.captured = True + self.havadarya.captured = True + self.bandar_abbas.captured = True diff --git a/userdata/debriefing.py b/userdata/debriefing.py index 9b04de4a..a1ad02d7 100644 --- a/userdata/debriefing.py +++ b/userdata/debriefing.py @@ -25,6 +25,9 @@ class DebriefingDeadUnitInfo: self.player_unit = player_unit self.type = type + def __repr__(self): + return str(self.country_id) + " " + str(self.player_unit) + " " + str(self.type) + class Debriefing: def __init__(self, state_data, game): self.base_capture_events = state_data["base_capture_events"] @@ -70,6 +73,11 @@ class Debriefing: self.player_dead_units = [a for a in self.dead_units if a.country_id == self.player_country_id] self.enemy_dead_units = [a for a in self.dead_units if a.country_id == self.enemy_country_id] + print(self.player_dead_aircraft) + print(self.enemy_dead_aircraft) + print(self.player_dead_units) + print(self.enemy_dead_units) + self.player_dead_aircraft_dict = {} for a in self.player_dead_aircraft: if a.type in self.player_dead_aircraft_dict.keys(): @@ -98,6 +106,12 @@ class Debriefing: else: self.enemy_dead_units_dict[a.type] = 1 + print(self.player_dead_aircraft_dict) + print(self.enemy_dead_aircraft_dict) + print(self.player_dead_units_dict) + print(self.enemy_dead_units_dict) + + def _poll_new_debriefing_log(callback: typing.Callable, game): if os.path.isfile("state.json"): last_modified = os.path.getmtime("state.json")