fixes & updates

This commit is contained in:
Vasyl Horbachenko
2018-06-17 03:32:43 +03:00
parent e54e548bdd
commit 45dbb37d50
36 changed files with 8926 additions and 83 deletions

View File

@@ -10,8 +10,9 @@ from dcs.vehicles import *
from dcs.task import *
PLANES_IN_GROUP = 2
PLANES_IMPORTANCE_FACTOR = 2
ARMOR_IMPORTANCE_FACTOR = 4
PLANES_SCRAMBLE_MIN = 4
PLANES_SCRAMBLE_FACTOR = 0.5
class Base:
@@ -77,7 +78,7 @@ class Base:
def _find_best_planes(self, for_type: Task, count: int) -> typing.Dict[PlaneType, int]:
return self._find_best_unit(self.aircraft, for_type, count)
def _find_best_armor(self, for_type: Task, count: int) -> typing.Dict[PlaneType, int]:
def _find_best_armor(self, for_type: Task, count: int) -> typing.Dict[Armor, int]:
return self._find_best_unit(self.armor, for_type, count)
def _group_sizes(self, total_planes: int) -> typing.List[int]:
@@ -136,6 +137,9 @@ class Base:
else:
continue
if unit_type not in target_array:
continue
target_array[unit_type] = max(target_array[unit_type] - count, 0)
if target_array[unit_type] == 0:
del target_array[unit_type]
@@ -145,25 +149,30 @@ class Base:
if self.strength > 1:
self.strength = 1
def scramble_cas(self, for_target: ControlPoint) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(CAS, math.ceil(for_target.importance * PLANES_IMPORTANCE_FACTOR * self.strength))
def scramble_count(self) -> int:
count = int(self.total_planes * PLANES_SCRAMBLE_FACTOR * self.strength)
return min(max(count, PLANES_SCRAMBLE_MIN), self.total_planes)
def scramble_sweep(self, for_target: ControlPoint) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(FighterSweep, math.ceil(for_target.importance * PLANES_IMPORTANCE_FACTOR * self.strength))
def assemble_count(self):
return self.total_armor * self.strength
def scramble_interceptors(self, factor: float) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(FighterSweep, math.ceil(self.total_planes * factor * self.strength))
def assemble_aa_count(self) -> int:
return int(self.total_aa * (self.strength > 0.2 and self.strength or 0))
def scramble_interceptors_count(self, count: int) -> typing.Dict[PlaneType, int]:
assert count > 0
return self._find_best_planes(FighterSweep, count)
def scramble_sweep(self) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(FighterSweep, self.scramble_count())
def assemble_cap(self, for_target: ControlPoint) -> typing.Dict[Armor, int]:
return self._find_best_armor(CAP, math.ceil(for_target.importance * ARMOR_IMPORTANCE_FACTOR * self.strength))
def scramble_cas(self) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(CAS, self.scramble_count())
def assemble_defense(self, factor: float) -> typing.Dict[Armor, int]:
return self._find_best_armor(CAP, math.ceil(self.total_armor * factor * self.strength))
def scramble_interceptors(self) -> typing.Dict[PlaneType, int]:
return self._find_best_planes(FighterSweep, self.scramble_count())
def assemble_cap(self) -> typing.Dict[Armor, int]:
return self._find_best_armor(CAP, self.assemble_count())
def assemble_defense(self) -> typing.Dict[Armor, int]:
return self._find_best_armor(CAP, self.assemble_count())
def assemble_aa(self) -> typing.Dict[AirDefence, int]:
count = int(self.total_aa * (self.strength > 0.2 and self.strength or 0))
return self._find_best_unit(self.aa, AirDefence, count)
return self._find_best_unit(self.aa, AirDefence, self.assemble_aa_count())

View File

@@ -70,10 +70,3 @@ class CaucasusTheater(ConflictTheater):
self.carrier_1.captured = True
self.soganlug.captured = True
self.sukhumi.captured = True
self.gudauta.base.strength = 0.5
self.kobuleti.captured = True
self.batumi.base.strength = 0.15

View File

@@ -43,7 +43,6 @@ class PersianGulfTheater(ConflictTheater):
east_carrier = ControlPoint.carrier("West carrier", Point(-91023.430176, -159467.078125))
west_carrier = ControlPoint.carrier("East carrier", Point(-100531.972946, 60939.275818))
north_carrier = ControlPoint.carrier("North carrier", Point(70531.972946, 60939.275818))
def __init__(self):
super(PersianGulfTheater, self).__init__()
@@ -70,9 +69,7 @@ class PersianGulfTheater(ConflictTheater):
self.add_controlpoint(self.east_carrier)
self.add_controlpoint(self.west_carrier)
self.add_controlpoint(self.north_carrier)
self.east_carrier.captured = True
self.west_carrier.captured = True
self.north_carrier.captured = True
self.al_dhafra.captured = True