Example #1
0
        def patriot_site(mission: Mission,
                         position,
                         heading,
                         prefix="",
                         skill=unit.Skill.Average):
            usa = mission.country("USA")
            vg = mission.vehicle_group(usa, prefix + "Patriot site",
                                       USA.Vehicle.AirDefence.SAM_Patriot_ICC,
                                       position, heading)
            u = mission.vehicle("Operator 1", USA.Vehicle.Infantry.Infantry_M4)
            u.position = position.point_from_heading(heading + 180, 5)
            u.heading = heading
            vg.add_unit(u)

            hdg = 90
            for i in range(0, 2):  # 2 launchers
                u = mission.vehicle("launcher #" + str(i + 1),
                                    USA.Vehicle.AirDefence.SAM_Patriot_LN_M901)
                u.position = position.point_from_heading(heading + hdg, 50)
                u.heading = heading
                vg.add_unit(u)
                hdg += 90

            u = mission.vehicle("Electronic power plant",
                                USA.Vehicle.AirDefence.SAM_Patriot_EPP_III)
            u.position = position.point_from_heading(heading + 180, 50)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle(
                "radar", USA.Vehicle.AirDefence.SAM_Patriot_STR_AN_MPQ_53)
            u.position = position.point_from_heading(heading, 80)
            u.heading = heading
            vg.add_unit(u)

            inf = mission.vehicle("Operator 2",
                                  USA.Vehicle.Infantry.Infantry_M4)
            inf.position = position.point_from_heading(heading + 270, 5)
            vg.add_unit(inf)

            u = mission.vehicle(
                "Antenna", USA.Vehicle.AirDefence.SAM_Patriot_AMG_AN_MRC_137)
            u.position = position.point_from_heading(heading + 180, 100)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle(
                "ECS", USA.Vehicle.AirDefence.SAM_Patriot_ECS_AN_MSQ_104)
            u.position = position.point_from_heading(heading + 120, 80)
            u.heading = heading
            vg.add_unit(u)

            for u in vg.units:
                u.skill = skill
def load_templates():
    temp_mis = Mission()
    temp_mis.load_file("resources/tools/groundobject_templates.miz")

    groups = {
    }  # type: typing.Dict[str, typing.Dict[int, typing.List[Static]]]

    for static_group in temp_mis.country("USA").static_group:
        for static in static_group.units:
            static_name = str(static.name).split()[0]
            tpl_name, tpl_idx = static_name[:-1], int(static_name[-1])

            groups[tpl_name] = groups.get(tpl_name, {})
            groups[tpl_name][tpl_idx] = groups[tpl_name].get(tpl_idx, [])
            groups[tpl_name][tpl_idx].append(static)

    tpls = {
        name: {idx: []
               for idx in groups[name].keys()}
        for name in groups.keys()
    }
    for category_name, category_groups in groups.items():
        for idx, static_groups in category_groups.items():
            dist = -1
            a, b = None, None
            for aa in static_groups:
                for bb in static_groups:
                    if aa.position.distance_to_point(bb.position) > dist:
                        dist = aa.position.distance_to_point(bb.position)
                        a = aa
                        b = bb

            center = a.position.point_from_heading(
                a.position.heading_between_point(b.position), dist / 2)
            for static in static_groups:
                tpls[category_name][idx].append({
                    "type":
                    static.type,
                    "offset":
                    Point(center.x - static.position.x,
                          center.y - static.position.y),
                    "heading":
                    static.heading,
                })

    tpls["aa"] = {0: [{"type": "AA", "offset": Point(0, 0), "heading": 0}]}
    return tpls
Example #3
0
def make_sa2_site(mission: Mission,
                  country,
                  center_pos: mapping.Point,
                  orientation=0,
                  size=50,
                  num_launchers=5):

    fan_song_class = vehicles.AirDefence.SAM_SA_2_TR_SNR_75_Fan_Song
    ln_class = vehicles.AirDefence.SAM_SA_2_LN_SM_90
    name = namegen.next_unit_name(country)
    vg = mission.vehicle_group(country, name, fan_song_class, center_pos,
                               orientation)
    for ii in range(num_launchers):
        ln = mission.vehicle(namegen.next_unit_name(country), ln_class)
        heading = orientation + 360.0 * ii / num_launchers
        ln.position = center_pos.point_from_heading(heading, size)
        ln.heading = heading
        vg.add_unit(ln)
    return vg
Example #4
0
        def sa10_site(mission: Mission, position: mapping.Point, heading, prefix="", skill=unit.Skill.Average):
            russia = mission.country("Russia")
            vg = mission.vehicle_group(russia, prefix + "SA10 site",
                                       Russia.Vehicle.AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR, position, heading)
            u = mission.vehicle("Operator 1", Russia.Vehicle.Infantry.Infantry_AK_74_Rus)
            u.position = position.point_from_heading(heading + 180, 10)
            u.heading = heading
            vg.add_unit(u)

            hdg = 90
            for i in range(0, 3):  # 3 launchers
                u = mission.vehicle("launcher #" + str(i + 1), Russia.Vehicle.AirDefence.SAM_SA_10_S_300_Grumble_TEL_C)
                u.position = position.point_from_heading(heading + hdg, 50)
                u.heading = heading
                vg.add_unit(u)
                hdg += 90

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR)
            u.position = position.point_from_heading(heading, 80)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.SAM_SA_10_S_300_Grumble_C2)
            u.position = position.point_from_heading(heading + 180, 100)
            u.heading = heading
            vg.add_unit(u)

            for u in vg.units:
                u.skill = skill

            return vg
Example #5
0
        def sa10_site(mission: Mission, position: mapping.Point, heading, prefix="", skill=unit.Skill.Average):
            russia = mission.country("Russia")
            vg = mission.vehicle_group(russia, prefix + "SA10 site",
                                       Russia.Vehicle.AirDefence.S_300PS_64H6E_sr, position, heading)
            u = mission.vehicle("Operator 1", Russia.Vehicle.Infantry.Paratrooper_AKS_74)
            u.position = position.point_from_heading(heading + 180, 10)
            u.heading = heading
            vg.add_unit(u)

            hdg = 90
            for i in range(0, 3):  # 3 launchers
                u = mission.vehicle("launcher #" + str(i + 1), Russia.Vehicle.AirDefence.S_300PS_5P85C_ln)
                u.position = position.point_from_heading(heading + hdg, 50)
                u.heading = heading
                vg.add_unit(u)
                hdg += 90

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.S_300PS_40B6M_tr)
            u.position = position.point_from_heading(heading, 80)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.S_300PS_54K6_cp)
            u.position = position.point_from_heading(heading + 180, 100)
            u.heading = heading
            vg.add_unit(u)

            for u in vg.units:
                u.skill = skill

            return vg
Example #6
0
        def sa10_site(mission: Mission, position: mapping.Point, heading, prefix="", skill=unit.Skill.Average):
            russia = mission.country("Russia")
            vg = mission.vehicle_group(russia, prefix + "SA10 site",
                                       Russia.Vehicle.AirDefence.SAM_SA_10_S_300PS_CP_54K6, position, heading)
            u = mission.vehicle("Operator 1", Russia.Vehicle.Infantry.Infantry_Soldier_Rus)
            u.position = position.point_from_heading(heading + 180, 10)
            u.heading = heading
            vg.add_unit(u)

            hdg = 90
            for i in range(0, 3):  # 3 launchers
                u = mission.vehicle("launcher #" + str(i + 1), Russia.Vehicle.AirDefence.SAM_SA_10_S_300PS_LN_5P85C)
                u.position = position.point_from_heading(heading + hdg, 50)
                u.heading = heading
                vg.add_unit(u)
                hdg += 90

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.SAM_SA_10_S_300PS_TR_30N6)
            u.position = position.point_from_heading(heading, 80)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle("radar", Russia.Vehicle.AirDefence.SAM_SA_10_S_300PS_SR_64H6E)
            u.position = position.point_from_heading(heading + 180, 100)
            u.heading = heading
            vg.add_unit(u)

            for u in vg.units:
                u.skill = skill

            return vg
Example #7
0
        def hawk_site(mission: Mission,
                      position,
                      heading,
                      prefix="",
                      skill=unit.Skill.Average):
            usa = mission.country("USA")
            vg = mission.vehicle_group(usa, prefix + "Hawk site",
                                       USA.Vehicle.AirDefence.SAM_Hawk_PCP,
                                       position, heading)

            u = mission.vehicle("Operator 1", USA.Vehicle.Infantry.Infantry_M4)
            u.position = position.point_from_heading(heading + 180, 5)
            u.heading = heading
            vg.add_unit(u)

            hdg = 90
            for i in range(0, 2):  # 2 launchers
                u = mission.vehicle("launcher #" + str(i + 1),
                                    USA.Vehicle.AirDefence.SAM_Hawk_LN_M192)
                u.position = position.point_from_heading(heading + hdg, 50)
                u.heading = heading
                vg.add_unit(u)
                hdg += 90

            u = mission.vehicle("Radar",
                                USA.Vehicle.AirDefence.SAM_Hawk_SR_AN_MPQ_50)
            u.position = position.point_from_heading(heading + 180, 20)
            u.heading = heading
            vg.add_unit(u)

            inf = mission.vehicle("Operator 2",
                                  USA.Vehicle.Infantry.Infantry_M4)
            inf.position = position.point_from_heading(heading + 270, 5)
            vg.add_unit(inf)

            u = mission.vehicle("Tower",
                                USA.Vehicle.AirDefence.SAM_Hawk_TR_AN_MPQ_46)
            u.position = position.point_from_heading(heading + 80, 80)
            u.heading = heading
            vg.add_unit(u)

            u = mission.vehicle("Wave Radar",
                                USA.Vehicle.AirDefence.SAM_Hawk_CWAR_AN_MPQ_55)
            u.position = position.point_from_heading(heading + 180, 100)
            u.heading = heading
            vg.add_unit(u)

            for u in vg.units:
                u.skill = skill
import pickle

from dcs.mission import Mission
from shapely import geometry

for terrain in ["cau", "nev", "syria", "channel", "normandy", "gulf"]:
    print("Terrain " + terrain)
    m = Mission()
    m.load_file("./{}_terrain.miz".format(terrain))

    inclusion_zones = []
    exclusion_zones = []
    seas_zones = []
    for plane_group in m.country("USA").plane_group:
        zone = [(x.position.x, x.position.y) for x in plane_group.points]

        if terrain == "cau" and inclusion_zones:
            # legacy
            exclusion_zones.append(geometry.Polygon(zone))
        else:
            if plane_group.units[0].type == "F-15C":
                exclusion_zones.append(geometry.Polygon(zone))
            else:
                inclusion_zones.append(geometry.Polygon(zone))

    for ship_group in m.country("USA").ship_group:
        zone = [(x.position.x, x.position.y) for x in ship_group.points]
        seas_zones.append(geometry.Polygon(zone))

    with open("../{}landmap.p".format(terrain), "wb") as f:
        print(len(inclusion_zones), len(exclusion_zones), len(seas_zones))
Example #9
0
from dcs.mission import Mission
from dcs.mapping import Point
from dcs.terrain import *
from dcs.unitgroup import VehicleGroup, StaticGroup
from dcs import vehicles
from dcs.unit import *
from dcs.statics import warehouse_map, fortification_map

from game import db
from gen.groundobjectsgen import TheaterGroundObject
from theater.caucasus import CaucasusTheater
from theater.persiangulf import PersianGulfTheater
from theater.nevada import NevadaTheater

m = Mission()
m.load_file("resources/tools/cau_groundobjects.miz")

if isinstance(m.terrain, Caucasus):
    theater = CaucasusTheater(load_ground_objects=False)
elif isinstance(m.terrain, PersianGulf):
    theater = PersianGulfTheater(load_ground_objects=False)
elif isinstance(m.terrain, Nevada):
    theater = NevadaTheater(load_ground_objects=False)
else:
    assert False


def closest_cp(location: Point) -> (int, float):
    global theater
    min_distance, min_cp = None, None