new options, landmaps, mission settings generation update & frontlike smokes generation

This commit is contained in:
Vasyl Horbachenko
2018-06-16 21:04:01 +03:00
parent 92e5514e8d
commit e54e548bdd
25 changed files with 344 additions and 41 deletions

View File

@@ -115,10 +115,17 @@ UNIT_BY_TASK = {
CAP: [Armor.MBT_T_90, Armor.MBT_T_80U, Armor.MBT_T_55, Armor.MBT_M1A2_Abrams, Armor.MBT_M60A3_Patton, Armor.ATGM_M1134_Stryker, Armor.APC_BTR_80, ],
AirDefence: [
AirDefence.AAA_Vulcan_M163,
AirDefence.AAA_Vulcan_M163,
AirDefence.AAA_Vulcan_M163,
AirDefence.SAM_Avenger_M1097,
AirDefence.SAM_Avenger_M1097,
AirDefence.SAM_Patriot_ICC,
AirDefence.AAA_ZU_23_on_Ural_375,
AirDefence.AAA_ZU_23_on_Ural_375,
AirDefence.AAA_ZU_23_on_Ural_375,
AirDefence.AAA_ZU_23_on_Ural_375,
AirDefence.SAM_SA_18_Igla_MANPADS,
AirDefence.SAM_SA_18_Igla_MANPADS,
AirDefence.SAM_SA_19_Tunguska_2S6,
AirDefence.SAM_SA_8_Osa_9A33,
@@ -126,6 +133,14 @@ UNIT_BY_TASK = {
Carriage: [CVN_74_John_C__Stennis, CV_1143_5_Admiral_Kuznetsov, ],
}
SAM_BAN = [
AirDefence.SAM_Avenger_M1097,
AirDefence.SAM_Patriot_ICC,
AirDefence.SAM_SA_19_Tunguska_2S6,
AirDefence.SAM_SA_8_Osa_9A33,
]
UNIT_BY_COUNTRY = {
"Russia": [
C_101CC,
@@ -256,7 +271,7 @@ def _validate_db():
# check unit by task uniquity
total_set = set()
for t, unit_collection in UNIT_BY_TASK.items():
for unit_type in unit_collection:
for unit_type in set(unit_collection):
assert unit_type not in total_set, "{} is duplicate".format(unit_type)
total_set.add(unit_type)
@@ -272,4 +287,5 @@ def _validate_db():
for unit_type in total_set:
assert unit_type in PRICES, "{} not in prices".format(unit_type)
_validate_db()

View File

@@ -258,7 +258,7 @@ class CaptureEvent(Event):
attack=armor,
intercept=interceptors,
defense=self.to_cp.base.armor,
aa=self.to_cp.base.aa)
aa=self.to_cp.base.assemble_aa())
self.operation = op

View File

@@ -5,7 +5,7 @@ COMMISION_LIMITS_FACTORS = {
CAP: 2,
CAS: 1,
FighterSweep: 3,
AirDefence: 2,
AirDefence: 1,
}
COMMISION_AMOUNTS_SCALE = 2
@@ -39,6 +39,8 @@ class Game:
budget = PLAYER_BUDGET_INITIAL
events = None # type: typing.List[Event]
pending_transfers = None # type: typing.Dict[]
player_skill = "Good"
enemy_skill = "Average"
def __init__(self, player_name: str, enemy_name: str, theater: ConflictTheater):
self.events = []

View File

@@ -7,8 +7,9 @@ from gen.aircraft import *
from gen.aaa import *
from gen.shipgen import *
from gen.conflictgen import *
from gen.envsettingsgen import *
from gen.settingsgen import *
from gen.awacsgen import *
from gen.visualgen import *
class Operation:
@@ -21,8 +22,9 @@ class Operation:
aagen = None # type: AAConflictGenerator
extra_aagen = None # type: ExtraAAConflictGenerator
shipgen = None # type: ShipGenerator
envgen = None # type: EnvironmentSettingsGenerator
envgen = None # type: SettingsGenerator
awacsgen = None # type: AWACSConflictGenerator
visualgen = None # type: VisualGenerator
is_awacs_enabled = False
@@ -52,7 +54,8 @@ class Operation:
self.aagen = AAConflictGenerator(mission, conflict)
self.shipgen = ShipGenerator(mission, conflict)
self.awacsgen = AWACSConflictGenerator(mission, conflict, self.game)
self.envgen = EnvironmentSettingsGenerator(mission, conflict, self.game)
self.envgen = SettingsGenerator(mission, conflict, self.game)
self.visualgen = VisualGenerator(mission, conflict, self.game)
player_name = self.from_cp.captured and self.attacker_name or self.defender_name
enemy_name = self.from_cp.captured and self.defender_name or self.attacker_name
@@ -70,6 +73,8 @@ class Operation:
self.defenders_starting_position = self.to_cp.at
def generate(self):
self.visualgen.generate()
if self.is_awacs_enabled:
self.awacsgen.generate()
@@ -117,6 +122,11 @@ class CaptureOperation(Operation):
def prepare(self, terrain: dcs.terrain.Terrain, is_quick: bool):
super(CaptureOperation, self).prepare(terrain, is_quick)
self.defenders_starting_position = None
if self.game.player == self.defender_name:
self.attackers_starting_position = None
self.initialize(mission=self.mission,
conflict=self.to_cp.conflict_attack(self.from_cp,
self.mission.country(self.attacker_name),
@@ -131,6 +141,7 @@ class CaptureOperation(Operation):
self.airgen.generate_cas(self.cas, clients=self.attacker_clients, at=self.attackers_starting_position)
self.airgen.generate_cas_escort(self.escort, clients=self.attacker_clients, at=self.attackers_starting_position)
self.visualgen.generate_target_smokes(self.to_cp)
super(CaptureOperation, self).generate()
@@ -152,6 +163,8 @@ class InterceptOperation(Operation):
def prepare(self, terrain: dcs.terrain.Terrain, is_quick: bool):
super(InterceptOperation, self).prepare(terrain, is_quick)
self.defenders_starting_position = None
conflict = Conflict.intercept_conflict(
attacker=self.mission.country(self.attacker_name),
defender=self.mission.country(self.defender_name),