dcs-retribution/theater/start_generator.py
2018-06-05 04:14:39 +03:00

36 lines
1.1 KiB
Python

import typing
import random
import dcs
from shop import db
from theater.controlpoint import *
from theater.base import *
from theater.conflicttheater import *
UNIT_VARIETY = 2
UNIT_AMOUNT_FACTOR = 1
def generate_initial(theater: ConflictTheater, enemy: str):
for cp in theater.enemy_bases():
if cp.captured:
continue
for task in [CAP, FighterSweep, CAS, AirDefence]:
suitable_unittypes = db.find_unittype(task, enemy)
suitable_unittypes.sort(key=lambda x: db.PRICES[x])
importance = cp.importance * 10 - 10
units_idx_start = int(importance * UNIT_VARIETY)
units_idx_end = units_idx_start + UNIT_VARIETY
range_start = min(len(suitable_unittypes)-1, units_idx_start)
range_end = min(len(suitable_unittypes), units_idx_end)
unittypes = suitable_unittypes[range_start:range_end]
typecount = max(math.floor(importance * UNIT_AMOUNT_FACTOR), 1)
units = {unittype: typecount for unittype in unittypes}
print("{} - {}".format(cp.name, units))
cp.base.commision_units(units)