mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
integration tests for operation generation; adjusted waypoint altitude for AI to not fly too low; removed C101 from list of generated AI aircrafts
This commit is contained in:
80
tests/integration/util.py
Normal file
80
tests/integration/util.py
Normal file
@@ -0,0 +1,80 @@
|
||||
from dcs.mission import Mission
|
||||
|
||||
from game import *
|
||||
from game.event import *
|
||||
from game.db import *
|
||||
|
||||
from theater.persiangulf import *
|
||||
from theater import start_generator
|
||||
|
||||
PLAYER_COUNTRY = None
|
||||
ENEMY_COUNTRY = None
|
||||
|
||||
|
||||
def init(player_country: str, enemy_country: str, theater_klass: typing.Type[ConflictTheater]) -> typing.Tuple[Game, ConflictTheater]:
|
||||
global PLAYER_COUNTRY
|
||||
global ENEMY_COUNTRY
|
||||
|
||||
PLAYER_COUNTRY = player_country
|
||||
ENEMY_COUNTRY = enemy_country
|
||||
|
||||
# prerequisites
|
||||
persistency.setup("./tests/userfolder/")
|
||||
theater = theater_klass()
|
||||
start_generator.generate_inital_units(theater, ENEMY_COUNTRY, True, 1)
|
||||
start_generator.generate_groundobjects(theater)
|
||||
return Game(PLAYER_COUNTRY, ENEMY_COUNTRY, theater), theater
|
||||
|
||||
|
||||
def autoflights_for(event: Event, country: str) -> TaskForceDict:
|
||||
result = {}
|
||||
for task in event.tasks:
|
||||
result[task] = {find_unittype(task, country)[0]: (1, 1)}
|
||||
return result
|
||||
|
||||
|
||||
class AutodebriefType(Enum):
|
||||
EVERYONE_DEAD = 0
|
||||
PLAYER_DEAD = 1
|
||||
ENEMY_DEAD = 2
|
||||
|
||||
|
||||
def autodebrief_for(event: Event, type: AutodebriefType) -> Debriefing:
|
||||
mission = event.operation.current_mission # type: Mission
|
||||
|
||||
countries = []
|
||||
if type == AutodebriefType.PLAYER_DEAD or type == AutodebriefType.EVERYONE_DEAD:
|
||||
countries.append(mission.country(PLAYER_COUNTRY))
|
||||
|
||||
if type == AutodebriefType.ENEMY_DEAD or type == AutodebriefType.EVERYONE_DEAD:
|
||||
countries.append(mission.country(ENEMY_COUNTRY))
|
||||
|
||||
dead_units = []
|
||||
for country in countries:
|
||||
for group in country.plane_group + country.vehicle_group + country.helicopter_group:
|
||||
for unit in group.units:
|
||||
dead_units.append(str(unit.name))
|
||||
|
||||
return Debriefing(dead_units, [])
|
||||
|
||||
|
||||
def event_state_save(e: Event) -> typing.Tuple[Base, Base]:
|
||||
return (copy.deepcopy(e.from_cp.base), copy.deepcopy(e.to_cp.base))
|
||||
|
||||
|
||||
def event_state_restore(e: Event, state: typing.Tuple[Base, Base]):
|
||||
e.from_cp.base, e.to_cp.base = state[0], state[1]
|
||||
|
||||
|
||||
def execute_autocommit(e: Event):
|
||||
state = event_state_save(e)
|
||||
e.commit(autodebrief_for(e, AutodebriefType.EVERYONE_DEAD))
|
||||
event_state_restore(e, state)
|
||||
|
||||
state = event_state_save(e)
|
||||
e.commit(autodebrief_for(e, AutodebriefType.PLAYER_DEAD))
|
||||
event_state_restore(e, state)
|
||||
|
||||
state = event_state_save(e)
|
||||
e.commit(autodebrief_for(e, AutodebriefType.ENEMY_DEAD))
|
||||
event_state_restore(e, state)
|
||||
Reference in New Issue
Block a user