mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Generate AA & armor to defend airbase. Destruction status correctly tracked.
This commit is contained in:
parent
bd66dcb39e
commit
09b8ff6b93
@ -22,8 +22,6 @@ China_2000 = {
|
|||||||
|
|
||||||
Mi_8MT,
|
Mi_8MT,
|
||||||
|
|
||||||
AirDefence.AAA_ZU_23_Closed,
|
|
||||||
AirDefence.Rapier_FSA_Launcher, # Standing as PL-9C Shorad
|
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C, # Standing as HQ-9+
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85C, # Standing as HQ-9+
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
||||||
AirDefence.HQ_7_Self_Propelled_LN,
|
AirDefence.HQ_7_Self_Propelled_LN,
|
||||||
@ -41,5 +39,10 @@ China_2000 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_ZU_23_Closed,
|
||||||
|
AirDefence.Rapier_FSA_Launcher, # Standing as PL-9C Shorad
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -31,5 +31,9 @@ France_1995 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
|
||||||
|
], "shorad":[
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN,
|
||||||
|
AirDefence.SAM_Roland_ADS
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -27,12 +27,15 @@ Germany_1990 = {
|
|||||||
Unarmed.Transport_M818,
|
Unarmed.Transport_M818,
|
||||||
Infantry.Infantry_M4,
|
Infantry.Infantry_M4,
|
||||||
|
|
||||||
AirDefence.SPAAA_Gepard,
|
|
||||||
AirDefence.SAM_Roland_ADS,
|
AirDefence.SAM_Roland_ADS,
|
||||||
AirDefence.SAM_Hawk_PCP,
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
|
||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SPAAA_Gepard,
|
||||||
|
AirDefence.SAM_Roland_ADS,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -31,12 +31,17 @@ India_2010 = {
|
|||||||
|
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
||||||
AirDefence.SAM_SA_8_Osa_9A33,
|
|
||||||
AirDefence.SAM_SA_13_Strela_10M3_9A35M3,
|
|
||||||
AirDefence.SAM_SA_19_Tunguska_2S6,
|
|
||||||
|
|
||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
|
AirDefence.AAA_ZU_23_Emplacement,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3,
|
||||||
|
AirDefence.SAM_SA_8_Osa_9A33,
|
||||||
|
AirDefence.SAM_SA_19_Tunguska_2S6
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -48,5 +48,9 @@ Iran_2015 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN,
|
||||||
|
AirDefence.AAA_ZU_23_Insurgent_Closed
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -30,5 +30,8 @@ Israel_2000 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -31,5 +31,7 @@ Italy_1990 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
]
|
], "shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,5 +29,8 @@ Netherlands_1990 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -42,5 +42,9 @@ NorthKorea_2000 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_ZU_23_Emplacement,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -21,7 +21,6 @@ Russia_1965 = {
|
|||||||
|
|
||||||
Mi_8MT,
|
Mi_8MT,
|
||||||
|
|
||||||
AirDefence.AAA_ZU_23_Closed,
|
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
AirDefence.SAM_SA_6_Kub_LN_2P25,
|
||||||
AirDefence.SAM_SA_2_LN_SM_90,
|
AirDefence.SAM_SA_2_LN_SM_90,
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
AirDefence.SAM_SA_3_S_125_LN_5P73,
|
||||||
@ -41,5 +40,8 @@ Russia_1965 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_ZU_23_Closed
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -47,5 +47,9 @@ Russia_1975 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_ZU_23_Emplacement,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -48,5 +48,10 @@ Russia_1990 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160
|
Tanker_Elnya_160
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SAM_SA_9_Strela_1_9P31,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -29,7 +29,6 @@ Russia_2010 = {
|
|||||||
Ka_50,
|
Ka_50,
|
||||||
Mi_8MT,
|
Mi_8MT,
|
||||||
|
|
||||||
AirDefence.SPAAA_ZSU_23_4_Shilka,
|
|
||||||
AirDefence.SAM_SA_19_Tunguska_2S6,
|
AirDefence.SAM_SA_19_Tunguska_2S6,
|
||||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1,
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85C,
|
||||||
@ -46,5 +45,9 @@ Russia_2010 = {
|
|||||||
Bulk_cargo_ship_Yakushev,
|
Bulk_cargo_ship_Yakushev,
|
||||||
Dry_cargo_ship_Ivanov,
|
Dry_cargo_ship_Ivanov,
|
||||||
Tanker_Elnya_160,
|
Tanker_Elnya_160,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.SAM_SA_19_Tunguska_2S6,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,5 +28,7 @@ Spain_1990 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
], "shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -21,7 +21,7 @@ Turkey_2005 = {
|
|||||||
|
|
||||||
Armor.MBT_Leopard_2,
|
Armor.MBT_Leopard_2,
|
||||||
Armor.MBT_Leopard_1A3,
|
Armor.MBT_Leopard_1A3,
|
||||||
Armor.MBT_M60A3_Patton, # Standing as VAB
|
Armor.MBT_M60A3_Patton,
|
||||||
Armor.APC_Cobra,
|
Armor.APC_Cobra,
|
||||||
Armor.APC_BTR_80,
|
Armor.APC_BTR_80,
|
||||||
|
|
||||||
@ -33,5 +33,8 @@ Turkey_2005 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
], "shorad":[
|
||||||
|
AirDefence.AAA_ZU_23_Emplacement,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -28,5 +28,8 @@ USA_1960 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_Vulcan_M163
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -25,12 +25,15 @@ USA_1965 = {
|
|||||||
Unarmed.Transport_M818,
|
Unarmed.Transport_M818,
|
||||||
Infantry.Infantry_M4,
|
Infantry.Infantry_M4,
|
||||||
|
|
||||||
AirDefence.AAA_Vulcan_M163,
|
|
||||||
AirDefence.SAM_Chaparral_M48,
|
AirDefence.SAM_Chaparral_M48,
|
||||||
AirDefence.SAM_Hawk_PCP,
|
AirDefence.SAM_Hawk_PCP,
|
||||||
|
|
||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
],
|
||||||
|
"shorad":[
|
||||||
|
AirDefence.AAA_Vulcan_M163,
|
||||||
|
AirDefence.SAM_Chaparral_M48
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -33,10 +33,12 @@ USA_1990 = {
|
|||||||
Infantry.Infantry_M4,
|
Infantry.Infantry_M4,
|
||||||
|
|
||||||
AirDefence.SAM_Hawk_PCP,
|
AirDefence.SAM_Hawk_PCP,
|
||||||
AirDefence.SAM_Avenger_M1097,
|
|
||||||
|
|
||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
], "shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -38,5 +38,7 @@ USA_2005 = {
|
|||||||
CVN_74_John_C__Stennis,
|
CVN_74_John_C__Stennis,
|
||||||
LHA_1_Tarawa,
|
LHA_1_Tarawa,
|
||||||
Armed_speedboat,
|
Armed_speedboat,
|
||||||
|
], "shorad":[
|
||||||
|
AirDefence.SAM_Avenger_M1097,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ class Operation:
|
|||||||
else:
|
else:
|
||||||
self.current_mission.groundControl.red_tactical_commander = self.ca_slots
|
self.current_mission.groundControl.red_tactical_commander = self.ca_slots
|
||||||
|
|
||||||
self.extra_aagen.generate()
|
#self.extra_aagen.generate()
|
||||||
|
|
||||||
# triggers
|
# triggers
|
||||||
if self.game.is_player_attack(self.conflict.attackers_country):
|
if self.game.is_player_attack(self.conflict.attackers_country):
|
||||||
|
|||||||
@ -340,7 +340,7 @@ class AircraftConflictGenerator:
|
|||||||
|
|
||||||
patrolled = []
|
patrolled = []
|
||||||
for ground_object in cp.ground_objects:
|
for ground_object in cp.ground_objects:
|
||||||
if not ground_object.group_id in patrolled:
|
if not ground_object.group_id in patrolled and not ground_object.airbase_group:
|
||||||
group.add_waypoint(ground_object.position, patrol_alt)
|
group.add_waypoint(ground_object.position, patrol_alt)
|
||||||
patrolled.append(ground_object.group_id)
|
patrolled.append(ground_object.group_id)
|
||||||
|
|
||||||
|
|||||||
24
gen/defenses/armor_group_generator.py
Normal file
24
gen/defenses/armor_group_generator.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
from dcs.vehicles import Armor
|
||||||
|
|
||||||
|
from game import db
|
||||||
|
from gen.defenses.armored_group_generator import ArmoredGroupGenerator
|
||||||
|
|
||||||
|
|
||||||
|
def generate_armor_group(faction:str, game, ground_object):
|
||||||
|
"""
|
||||||
|
This generate a SAM group
|
||||||
|
:param parentCp: The parent control point
|
||||||
|
:param ground_object: The ground object which will own the sam group
|
||||||
|
:param country: Owner country
|
||||||
|
:return: Nothing, but put the group reference inside the ground object
|
||||||
|
"""
|
||||||
|
|
||||||
|
possible_unit = [u for u in db.FACTIONS[faction]["units"] if u in Armor.__dict__.values()]
|
||||||
|
if len(possible_unit) > 0:
|
||||||
|
unit_type = random.choice(possible_unit)
|
||||||
|
generator = ArmoredGroupGenerator(game, ground_object, unit_type)
|
||||||
|
generator.generate()
|
||||||
|
return generator.get_generated_group()
|
||||||
|
return None
|
||||||
27
gen/defenses/armored_group_generator.py
Normal file
27
gen/defenses/armored_group_generator.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
|
class ArmoredGroupGenerator(GroupGenerator):
|
||||||
|
|
||||||
|
def __init__(self, game, ground_object, unit_type):
|
||||||
|
super(ArmoredGroupGenerator, self).__init__(game, ground_object)
|
||||||
|
self.unit_type = unit_type
|
||||||
|
|
||||||
|
def generate(self):
|
||||||
|
|
||||||
|
grid_x = random.randint(2, 3)
|
||||||
|
grid_y = random.randint(1, 2)
|
||||||
|
|
||||||
|
spacing = random.randint(30, 80)
|
||||||
|
|
||||||
|
index = 0
|
||||||
|
for i in range(grid_x):
|
||||||
|
for j in range(grid_y):
|
||||||
|
index = index + 1
|
||||||
|
self.add_unit(self.unit_type, "Armor#" + str(index),
|
||||||
|
self.position.x + spacing * i,
|
||||||
|
self.position.y + spacing * j, self.heading)
|
||||||
|
|
||||||
|
|
||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class BoforsGenerator(AntiAirGroupGenerator):
|
class BoforsGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Bofors flak artillery group
|
This generate a Bofors flak artillery group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class Flak36Generator(AntiAirGroupGenerator):
|
class Flak36Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Bofors flak artillery group
|
This generate a Bofors flak artillery group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ZU23InsurgentGenerator(AntiAirGroupGenerator):
|
class ZU23InsurgentGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a ZU23 insurgent flak artillery group
|
This generate a ZU23 insurgent flak artillery group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -6,9 +6,9 @@ from dcs.point import PointAction
|
|||||||
from dcs.unit import Vehicle
|
from dcs.unit import Vehicle
|
||||||
|
|
||||||
|
|
||||||
class AntiAirGroupGenerator():
|
class GroupGenerator():
|
||||||
|
|
||||||
def __init__(self, game, ground_object, group_object_group_id):
|
def __init__(self, game, ground_object):
|
||||||
self.game = game
|
self.game = game
|
||||||
self.go = ground_object
|
self.go = ground_object
|
||||||
self.position = ground_object.position
|
self.position = ground_object.position
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class AvengerGenerator(AntiAirGroupGenerator):
|
class AvengerGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate an Avenger group
|
This generate an Avenger group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ChaparralGenerator(AntiAirGroupGenerator):
|
class ChaparralGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Chaparral group
|
This generate a Chaparral group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class GepardGenerator(AntiAirGroupGenerator):
|
class GepardGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Gepard group
|
This generate a Gepard group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -36,6 +36,39 @@ from gen.sam.sam_zu23 import ZU23Generator
|
|||||||
from gen.sam.sam_zu23_ural import ZU23UralGenerator
|
from gen.sam.sam_zu23_ural import ZU23UralGenerator
|
||||||
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
|
from gen.sam.sam_zu23_ural_insurgent import ZU23UralInsurgentGenerator
|
||||||
|
|
||||||
|
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: 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,
|
||||||
|
AirDefence.Rapier_FSA_Launcher: RapierGenerator,
|
||||||
|
AirDefence.SAM_Avenger_M1097: AvengerGenerator,
|
||||||
|
AirDefence.SPAAA_Gepard: GepardGenerator,
|
||||||
|
AirDefence.SAM_Roland_ADS: RolandGenerator,
|
||||||
|
AirDefence.SAM_Patriot_LN_M901: PatriotGenerator,
|
||||||
|
AirDefence.SAM_Patriot_EPP_III: PatriotGenerator,
|
||||||
|
AirDefence.SAM_Chaparral_M48: ChaparralGenerator,
|
||||||
|
AirDefence.AAA_Bofors_40mm: BoforsGenerator,
|
||||||
|
AirDefence.AAA_Flak_36: Flak36Generator,
|
||||||
|
AirDefence.SAM_SA_2_LN_SM_90: SA2Generator,
|
||||||
|
AirDefence.SAM_SA_3_S_125_LN_5P73: SA3Generator,
|
||||||
|
AirDefence.SAM_SA_6_Kub_LN_2P25: SA6Generator,
|
||||||
|
AirDefence.SAM_SA_8_Osa_9A33: SA8Generator,
|
||||||
|
AirDefence.SAM_SA_9_Strela_1_9P31: SA9Generator,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: SA10Generator,
|
||||||
|
AirDefence.SAM_SA_10_S_300PS_CP_54K6: SA10Generator,
|
||||||
|
AirDefence.SAM_SA_11_Buk_LN_9A310M1: SA11Generator,
|
||||||
|
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: SA13Generator,
|
||||||
|
AirDefence.SAM_SA_15_Tor_9A331: SA15Generator,
|
||||||
|
AirDefence.SAM_SA_19_Tunguska_2S6: SA19Generator,
|
||||||
|
AirDefence.HQ_7_Self_Propelled_LN: HQ7Generator
|
||||||
|
}
|
||||||
|
|
||||||
def generate_anti_air_group(game, parent_cp, ground_object, faction:str):
|
def generate_anti_air_group(game, parent_cp, ground_object, faction:str):
|
||||||
"""
|
"""
|
||||||
@ -45,49 +78,26 @@ def generate_anti_air_group(game, parent_cp, ground_object, faction:str):
|
|||||||
:param country: Owner country
|
:param country: Owner country
|
||||||
:return: Nothing, but put the group reference inside the ground object
|
:return: Nothing, but put the group reference inside the ground object
|
||||||
"""
|
"""
|
||||||
|
|
||||||
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: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,
|
|
||||||
AirDefence.Rapier_FSA_Launcher: RapierGenerator,
|
|
||||||
AirDefence.SAM_Avenger_M1097: AvengerGenerator,
|
|
||||||
AirDefence.SPAAA_Gepard: GepardGenerator,
|
|
||||||
AirDefence.SAM_Roland_ADS: RolandGenerator,
|
|
||||||
AirDefence.SAM_Patriot_LN_M901: PatriotGenerator,
|
|
||||||
AirDefence.SAM_Patriot_EPP_III: PatriotGenerator,
|
|
||||||
AirDefence.SAM_Chaparral_M48: ChaparralGenerator,
|
|
||||||
AirDefence.AAA_Bofors_40mm: BoforsGenerator,
|
|
||||||
AirDefence.AAA_Flak_36: Flak36Generator,
|
|
||||||
|
|
||||||
AirDefence.SAM_SA_2_LN_SM_90: SA2Generator,
|
|
||||||
AirDefence.SAM_SA_3_S_125_LN_5P73: SA3Generator,
|
|
||||||
AirDefence.SAM_SA_6_Kub_LN_2P25: SA6Generator,
|
|
||||||
AirDefence.SAM_SA_8_Osa_9A33: SA8Generator,
|
|
||||||
AirDefence.SAM_SA_9_Strela_1_9P31: SA9Generator,
|
|
||||||
AirDefence.SAM_SA_10_S_300PS_LN_5P85C: SA10Generator,
|
|
||||||
AirDefence.SAM_SA_10_S_300PS_CP_54K6: SA10Generator,
|
|
||||||
AirDefence.SAM_SA_11_Buk_LN_9A310M1: SA11Generator,
|
|
||||||
AirDefence.SAM_SA_13_Strela_10M3_9A35M3: SA13Generator,
|
|
||||||
AirDefence.SAM_SA_15_Tor_9A331: SA15Generator,
|
|
||||||
AirDefence.SAM_SA_19_Tunguska_2S6: SA19Generator,
|
|
||||||
AirDefence.HQ_7_Self_Propelled_LN: HQ7Generator
|
|
||||||
}
|
|
||||||
|
|
||||||
possible_sams = [u for u in db.FACTIONS[faction]["units"] if u in AirDefence.__dict__.values()]
|
possible_sams = [u for u in db.FACTIONS[faction]["units"] if u in AirDefence.__dict__.values()]
|
||||||
if len(possible_sams) > 0:
|
if len(possible_sams) > 0:
|
||||||
sam = random.choice(possible_sams)
|
sam = random.choice(possible_sams)
|
||||||
generator = SAM_MAP[sam](game, ground_object, 0)
|
generator = SAM_MAP[sam](game, ground_object)
|
||||||
generator.generate()
|
generator.generate()
|
||||||
ground_object.groups = [generator.get_generated_group()]
|
return generator.get_generated_group()
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def generate_shorad_group(game, parent_cp, ground_object, faction:str):
|
||||||
|
if("shorad") in db.FACTIONS[faction].keys():
|
||||||
|
shorad = db.FACTIONS[faction]["shorad"]
|
||||||
|
sam = random.choice(shorad)
|
||||||
|
generator = SAM_MAP[sam](game, ground_object)
|
||||||
|
generator.generate()
|
||||||
|
return generator.get_generated_group()
|
||||||
|
else:
|
||||||
|
return generate_anti_air_group(game, parent_cp, ground_object, faction)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class HawkGenerator(AntiAirGroupGenerator):
|
class HawkGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate an HAWK group
|
This generate an HAWK group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class HQ7Generator(AntiAirGroupGenerator):
|
class HQ7Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate an HQ7 group
|
This generate an HQ7 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class LinebackerGenerator(AntiAirGroupGenerator):
|
class LinebackerGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate an m6 linebacker group
|
This generate an m6 linebacker group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class PatriotGenerator(AntiAirGroupGenerator):
|
class PatriotGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Patriot group
|
This generate a Patriot group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class RapierGenerator(AntiAirGroupGenerator):
|
class RapierGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Rapier Group
|
This generate a Rapier Group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class RolandGenerator(AntiAirGroupGenerator):
|
class RolandGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Roland group
|
This generate a Roland group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA10Generator(AntiAirGroupGenerator):
|
class SA10Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-10 group
|
This generate a SA-10 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA11Generator(AntiAirGroupGenerator):
|
class SA11Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-11 group
|
This generate a SA-11 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA13Generator(AntiAirGroupGenerator):
|
class SA13Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-13 group
|
This generate a SA-13 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA15Generator(AntiAirGroupGenerator):
|
class SA15Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-15 group
|
This generate a SA-15 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA19Generator(AntiAirGroupGenerator):
|
class SA19Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-19 group
|
This generate a SA-19 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA2Generator(AntiAirGroupGenerator):
|
class SA2Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-2 group
|
This generate a SA-2 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA3Generator(AntiAirGroupGenerator):
|
class SA3Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-3 group
|
This generate a SA-3 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA6Generator(AntiAirGroupGenerator):
|
class SA6Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-6 group
|
This generate a SA-6 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA8Generator(AntiAirGroupGenerator):
|
class SA8Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-8 group
|
This generate a SA-8 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class SA9Generator(AntiAirGroupGenerator):
|
class SA9Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a SA-9 group
|
This generate a SA-9 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence, Unarmed
|
from dcs.vehicles import AirDefence, Unarmed
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class VulcanGenerator(AntiAirGroupGenerator):
|
class VulcanGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Vulcan group
|
This generate a Vulcan group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ZSU23Generator(AntiAirGroupGenerator):
|
class ZSU23Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a ZSU 23 group
|
This generate a ZSU 23 group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ZU23Generator(AntiAirGroupGenerator):
|
class ZU23Generator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a ZU23 flak artillery group
|
This generate a ZU23 flak artillery group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ZU23UralGenerator(AntiAirGroupGenerator):
|
class ZU23UralGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Zu23 Ural group
|
This generate a Zu23 Ural group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -2,10 +2,10 @@ import random
|
|||||||
|
|
||||||
from dcs.vehicles import AirDefence
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
from gen.sam.group_generator import AntiAirGroupGenerator
|
from gen.sam.group_generator import GroupGenerator
|
||||||
|
|
||||||
|
|
||||||
class ZU23UralInsurgentGenerator(AntiAirGroupGenerator):
|
class ZU23UralInsurgentGenerator(GroupGenerator):
|
||||||
"""
|
"""
|
||||||
This generate a Zu23 Ural group
|
This generate a Zu23 Ural group
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -21,6 +21,7 @@ class QMapGroundObject(QGraphicsRectItem):
|
|||||||
if len(self.model.groups) > 0:
|
if len(self.model.groups) > 0:
|
||||||
units = {}
|
units = {}
|
||||||
for g in self.model.groups:
|
for g in self.model.groups:
|
||||||
|
print(g)
|
||||||
for u in g.units:
|
for u in g.units:
|
||||||
if u.type in units.keys():
|
if u.type in units.keys():
|
||||||
units[u.type] = units[u.type]+1
|
units[u.type] = units[u.type]+1
|
||||||
|
|||||||
@ -4,7 +4,8 @@ import random
|
|||||||
import typing
|
import typing
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from gen.sam.sam_group_generator import generate_anti_air_group
|
from gen.defenses.armor_group_generator import generate_armor_group
|
||||||
|
from gen.sam.sam_group_generator import generate_anti_air_group, generate_shorad_group
|
||||||
from theater.base import *
|
from theater.base import *
|
||||||
from theater.conflicttheater import *
|
from theater.conflicttheater import *
|
||||||
|
|
||||||
@ -61,6 +62,50 @@ def generate_groundobjects(theater: ConflictTheater, game):
|
|||||||
for cp in theater.controlpoints:
|
for cp in theater.controlpoints:
|
||||||
group_id = generate_cp_ground_points(cp, theater, game, group_id, tpls)
|
group_id = generate_cp_ground_points(cp, theater, game, group_id, tpls)
|
||||||
|
|
||||||
|
# CP
|
||||||
|
if cp.captured:
|
||||||
|
faction = game.player_name
|
||||||
|
else:
|
||||||
|
faction = game.enemy_name
|
||||||
|
|
||||||
|
for i in range(random.randint(2,6)):
|
||||||
|
point = find_location(True, cp.position, theater, 1000, 2800, [])
|
||||||
|
|
||||||
|
if point is None:
|
||||||
|
print("Couldn't find point for {}".format(cp))
|
||||||
|
continue
|
||||||
|
|
||||||
|
group_id = group_id + 1
|
||||||
|
|
||||||
|
g = TheaterGroundObject()
|
||||||
|
g.group_id = group_id
|
||||||
|
g.object_id = 0
|
||||||
|
g.cp_id = cp.id
|
||||||
|
g.airbase_group = True
|
||||||
|
g.dcs_identifier = "AA"
|
||||||
|
g.heading = 0
|
||||||
|
g.position = Point(point.x, point.y)
|
||||||
|
|
||||||
|
if i == 0:
|
||||||
|
group = generate_armor_group(faction, game, g)
|
||||||
|
elif i == 1 and random.randint(0,1) == 0:
|
||||||
|
group = generate_anti_air_group(game, cp, g, faction)
|
||||||
|
elif random.randint(0, 2) == 1:
|
||||||
|
group = generate_shorad_group(game, cp, g, faction)
|
||||||
|
else:
|
||||||
|
group = generate_armor_group(faction, game, g)
|
||||||
|
|
||||||
|
g.groups = []
|
||||||
|
if group is not None:
|
||||||
|
g.groups.append(group)
|
||||||
|
cp.ground_objects.append(g)
|
||||||
|
|
||||||
|
print("---------------------------")
|
||||||
|
print("CP Generation : " + cp.name)
|
||||||
|
for ground_object in cp.ground_objects:
|
||||||
|
print(ground_object.groups)
|
||||||
|
|
||||||
|
|
||||||
def find_location(on_ground, near, theater, min, max, others) -> typing.Optional[Point]:
|
def find_location(on_ground, near, theater, min, max, others) -> typing.Optional[Point]:
|
||||||
"""
|
"""
|
||||||
Find a valid ground object location
|
Find a valid ground object location
|
||||||
@ -115,19 +160,18 @@ def generate_cp_ground_points(cp: ControlPoint, theater, game, group_id, templat
|
|||||||
if cp.is_global:
|
if cp.is_global:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
amount = random.randrange(1, 11)
|
amount = random.randrange(1, 7)
|
||||||
for i in range(0, amount):
|
for i in range(0, amount):
|
||||||
available_categories = list(templates)
|
available_categories = list(templates)
|
||||||
if i >= amount - 1:
|
if i >= amount - 1:
|
||||||
tpl_category = "aa"
|
tpl_category = "aa"
|
||||||
else:
|
else:
|
||||||
if random.randint(0, 1) == 1:
|
if random.randint(0, 2) == 0:
|
||||||
tpl_category = random.choice(available_categories)
|
|
||||||
else:
|
|
||||||
tpl_category = "aa"
|
tpl_category = "aa"
|
||||||
|
else:
|
||||||
|
tpl_category = random.choice(available_categories)
|
||||||
|
|
||||||
tpl = random.choice(list(templates[tpl_category].values()))
|
tpl = random.choice(list(templates[tpl_category].values()))
|
||||||
|
|
||||||
point = find_location(tpl_category != "oil", cp.position, theater, 10000, 40000, cp.ground_objects)
|
point = find_location(tpl_category != "oil", cp.position, theater, 10000, 40000, cp.ground_objects)
|
||||||
|
|
||||||
if point is None:
|
if point is None:
|
||||||
@ -145,17 +189,22 @@ def generate_cp_ground_points(cp: ControlPoint, theater, game, group_id, templat
|
|||||||
g.group_id = group_id
|
g.group_id = group_id
|
||||||
g.object_id = object_id
|
g.object_id = object_id
|
||||||
g.cp_id = cp.id
|
g.cp_id = cp.id
|
||||||
|
g.airbase_gorup = False
|
||||||
|
|
||||||
g.dcs_identifier = object["type"]
|
g.dcs_identifier = object["type"]
|
||||||
g.heading = object["heading"]
|
g.heading = object["heading"]
|
||||||
g.position = Point(point.x + object["offset"].x, point.y + object["offset"].y)
|
g.position = Point(point.x + object["offset"].x, point.y + object["offset"].y)
|
||||||
|
|
||||||
|
|
||||||
if g.dcs_identifier == "AA":
|
if g.dcs_identifier == "AA":
|
||||||
if cp.captured:
|
if cp.captured:
|
||||||
faction = game.player_name
|
faction = game.player_name
|
||||||
else:
|
else:
|
||||||
faction = game.enemy_name
|
faction = game.enemy_name
|
||||||
generate_anti_air_group(game, cp, g, faction)
|
g.groups = []
|
||||||
|
group = generate_anti_air_group(game, cp, g, faction)
|
||||||
|
if group is not None:
|
||||||
|
g.groups.append(group)
|
||||||
|
|
||||||
cp.ground_objects.append(g)
|
cp.ground_objects.append(g)
|
||||||
return group_id
|
return group_id
|
||||||
|
|||||||
@ -51,6 +51,7 @@ class TheaterGroundObject:
|
|||||||
|
|
||||||
dcs_identifier = None # type: str
|
dcs_identifier = None # type: str
|
||||||
is_dead = False
|
is_dead = False
|
||||||
|
airbase_group = False
|
||||||
|
|
||||||
heading = 0
|
heading = 0
|
||||||
position = None # type: Point
|
position = None # type: Point
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user