mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Generate random TACAN frequency for ships at start.
TACAN infos are displayed in briefing.
This commit is contained in:
parent
8afdf5ef65
commit
59986d74f4
@ -114,20 +114,6 @@ class Operation:
|
|||||||
self.attackers_starting_position = self.departure_cp.at
|
self.attackers_starting_position = self.departure_cp.at
|
||||||
self.defenders_starting_position = self.to_cp.at
|
self.defenders_starting_position = self.to_cp.at
|
||||||
|
|
||||||
def prepare_carriers(self, for_units: db.UnitsDict):
|
|
||||||
if not self.departure_cp.is_global:
|
|
||||||
return
|
|
||||||
|
|
||||||
ship = self.shipgen.generate_carrier(for_units=[t for t, c in for_units.items() if c > 0],
|
|
||||||
country=self.game.player_country,
|
|
||||||
at=self.departure_cp.at)
|
|
||||||
|
|
||||||
if not self.is_quick:
|
|
||||||
if not self.to_cp.captured:
|
|
||||||
self.attackers_starting_position = ship
|
|
||||||
else:
|
|
||||||
self.defenders_starting_position = ship
|
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
|
|
||||||
# Generate ground object first
|
# Generate ground object first
|
||||||
@ -136,9 +122,6 @@ class Operation:
|
|||||||
# Air Support (Tanker & Awacs)
|
# Air Support (Tanker & Awacs)
|
||||||
self.airsupportgen.generate(self.is_awacs_enabled)
|
self.airsupportgen.generate(self.is_awacs_enabled)
|
||||||
|
|
||||||
# Generate carrier groups & ships
|
|
||||||
|
|
||||||
|
|
||||||
# Generate Activity on the map
|
# Generate Activity on the map
|
||||||
for cp in self.game.theater.controlpoints:
|
for cp in self.game.theater.controlpoints:
|
||||||
side = cp.captured
|
side = cp.captured
|
||||||
|
|||||||
@ -70,6 +70,18 @@ class BriefingGenerator:
|
|||||||
for name, freq in self.freqs:
|
for name, freq in self.freqs:
|
||||||
self.description += "\n{}: {}".format(name, freq)
|
self.description += "\n{}: {}".format(name, freq)
|
||||||
|
|
||||||
|
for cp in self.game.theater.controlpoints:
|
||||||
|
if cp.captured and cp.cptype in [ControlPointType.LHA_GROUP, ControlPointType.AIRCRAFT_CARRIER_GROUP]:
|
||||||
|
self.description += "\n"
|
||||||
|
self.description += cp.name + " TACAN : "
|
||||||
|
|
||||||
|
self.description += str(cp.tacanN)
|
||||||
|
if cp.tacanY:
|
||||||
|
self.description += "Y"
|
||||||
|
else:
|
||||||
|
self.description += "X"
|
||||||
|
self.description += " " + str(cp.tacanI) + "\n"
|
||||||
|
|
||||||
|
|
||||||
self.m.set_description_text(self.description)
|
self.m.set_description_text(self.description)
|
||||||
|
|
||||||
|
|||||||
@ -93,8 +93,13 @@ class GroundObjectsGenerator:
|
|||||||
ship.heading = u.heading
|
ship.heading = u.heading
|
||||||
sg.add_unit(ship)
|
sg.add_unit(ship)
|
||||||
|
|
||||||
|
# TODO : make sure the point is not on Land
|
||||||
sg.add_waypoint(sg.points[0].position.point_from_heading(g.units[0].heading, 100000))
|
sg.add_waypoint(sg.points[0].position.point_from_heading(g.units[0].heading, 100000))
|
||||||
|
|
||||||
|
# SET UP TACAN
|
||||||
|
modeChannel = "X" if not cp.tacanY else "Y"
|
||||||
|
sg.points[0].tasks.append(ActivateBeaconCommand(channel=cp.tacanN, modechannel=modeChannel, callsign=cp.tacanI, unit_id=sg.units[0].id))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if ground_object.dcs_identifier in warehouse_map:
|
if ground_object.dcs_identifier in warehouse_map:
|
||||||
static_type = warehouse_map[ground_object.dcs_identifier]
|
static_type = warehouse_map[ground_object.dcs_identifier]
|
||||||
|
|||||||
@ -57,6 +57,9 @@ class ControlPoint:
|
|||||||
self.base = theater.base.Base()
|
self.base = theater.base.Base()
|
||||||
self.cptype = cptype
|
self.cptype = cptype
|
||||||
self.stances = {}
|
self.stances = {}
|
||||||
|
self.tacanY = False
|
||||||
|
self.tacanN = None
|
||||||
|
self.tacanI = "TAC"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_airport(cls, airport: Airport, radials: typing.Collection[int], size: int, importance: float, has_frontline=True):
|
def from_airport(cls, airport: Airport, radials: typing.Collection[int], size: int, importance: float, has_frontline=True):
|
||||||
@ -66,14 +69,22 @@ class ControlPoint:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def carrier(cls, name: str, at: Point, id: int = 1001):
|
def carrier(cls, name: str, at: Point, id: int = 1001):
|
||||||
import theater.conflicttheater
|
import theater.conflicttheater
|
||||||
return cls(id, name, at, at, theater.conflicttheater.LAND, theater.conflicttheater.SIZE_SMALL, 1,
|
cp = cls(id, name, at, at, theater.conflicttheater.LAND, theater.conflicttheater.SIZE_SMALL, 1,
|
||||||
has_frontline=False, cptype=ControlPointType.AIRCRAFT_CARRIER_GROUP)
|
has_frontline=False, cptype=ControlPointType.AIRCRAFT_CARRIER_GROUP)
|
||||||
|
cp.tacanY = random.choice([True, False])
|
||||||
|
cp.tacanN = random.randint(26, 49)
|
||||||
|
cp.tacanI = random.choice(["STE", "CVN", "CVH", "CCV", "ACC", "ARC", "GER", "ABR", "LIN", "TRU"])
|
||||||
|
return cp
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def lha(cls, name: str, at: Point, id: int = 1002):
|
def lha(cls, name: str, at: Point, id: int = 1002):
|
||||||
import theater.conflicttheater
|
import theater.conflicttheater
|
||||||
return cls(id, name, at, at, theater.conflicttheater.LAND, theater.conflicttheater.SIZE_SMALL, 1,
|
cp = cls(id, name, at, at, theater.conflicttheater.LAND, theater.conflicttheater.SIZE_SMALL, 1,
|
||||||
has_frontline=False, cptype=ControlPointType.LHA_GROUP)
|
has_frontline=False, cptype=ControlPointType.LHA_GROUP)
|
||||||
|
cp.tacanY = random.choice([True, False])
|
||||||
|
cp.tacanN = random.randint(1,25)
|
||||||
|
cp.tacanI = random.choice(["LHD", "LHA", "LHB", "LHC", "LHD", "LDS"])
|
||||||
|
return cp
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user