mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Add map markers for each building in the group.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/1126
This commit is contained in:
parent
a0833e8943
commit
136e776b03
@ -190,6 +190,10 @@ class TheaterGroundObject(MissionTarget):
|
|||||||
def strike_targets(self) -> List[Union[MissionTarget, Unit]]:
|
def strike_targets(self) -> List[Union[MissionTarget, Unit]]:
|
||||||
return self.units
|
return self.units
|
||||||
|
|
||||||
|
@property
|
||||||
|
def mark_locations(self) -> Iterator[Point]:
|
||||||
|
yield self.position
|
||||||
|
|
||||||
def clear(self) -> None:
|
def clear(self) -> None:
|
||||||
self.groups = []
|
self.groups = []
|
||||||
|
|
||||||
@ -258,6 +262,11 @@ class BuildingGroundObject(TheaterGroundObject):
|
|||||||
def strike_targets(self) -> List[Union[MissionTarget, Unit]]:
|
def strike_targets(self) -> List[Union[MissionTarget, Unit]]:
|
||||||
return list(self.iter_building_group())
|
return list(self.iter_building_group())
|
||||||
|
|
||||||
|
@property
|
||||||
|
def mark_locations(self) -> Iterator[Point]:
|
||||||
|
for building in self.iter_building_group():
|
||||||
|
yield building.position
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_control_point(self) -> bool:
|
def is_control_point(self) -> bool:
|
||||||
return self.is_fob_structure
|
return self.is_fob_structure
|
||||||
|
|||||||
@ -10,14 +10,12 @@ from dcs.condition import (
|
|||||||
FlagIsFalse,
|
FlagIsFalse,
|
||||||
FlagIsTrue,
|
FlagIsTrue,
|
||||||
)
|
)
|
||||||
from dcs.unitgroup import FlyingGroup
|
|
||||||
from dcs.mission import Mission
|
from dcs.mission import Mission
|
||||||
from dcs.task import Option
|
from dcs.task import Option
|
||||||
from dcs.translation import String
|
from dcs.translation import String
|
||||||
from dcs.triggers import (
|
from dcs.triggers import (
|
||||||
Event,
|
Event,
|
||||||
TriggerOnce,
|
TriggerOnce,
|
||||||
TriggerZone,
|
|
||||||
TriggerCondition,
|
TriggerCondition,
|
||||||
)
|
)
|
||||||
from dcs.unit import Skill
|
from dcs.unit import Skill
|
||||||
@ -25,7 +23,6 @@ from dcs.unit import Skill
|
|||||||
from game.theater import Airfield
|
from game.theater import Airfield
|
||||||
from game.theater.controlpoint import Fob
|
from game.theater.controlpoint import Fob
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from game.game import Game
|
from game.game import Game
|
||||||
|
|
||||||
@ -115,19 +112,22 @@ class TriggersGenerator:
|
|||||||
mark_trigger.add_condition(TimeAfter(1))
|
mark_trigger.add_condition(TimeAfter(1))
|
||||||
v = 10
|
v = 10
|
||||||
for cp in self.game.theater.controlpoints:
|
for cp in self.game.theater.controlpoints:
|
||||||
added = []
|
seen = set()
|
||||||
for ground_object in cp.ground_objects:
|
for ground_object in cp.ground_objects:
|
||||||
if ground_object.obj_name not in added:
|
if ground_object.obj_name in seen:
|
||||||
|
continue
|
||||||
|
|
||||||
|
seen.add(ground_object.obj_name)
|
||||||
|
for location in ground_object.mark_locations:
|
||||||
zone = self.mission.triggers.add_triggerzone(
|
zone = self.mission.triggers.add_triggerzone(
|
||||||
ground_object.position, radius=10, hidden=True, name="MARK"
|
location, radius=10, hidden=True, name="MARK"
|
||||||
)
|
)
|
||||||
if cp.captured:
|
if cp.captured:
|
||||||
name = ground_object.obj_name + " [ALLY]"
|
name = ground_object.obj_name + " [ALLY]"
|
||||||
else:
|
else:
|
||||||
name = ground_object.obj_name + " [ENEMY]"
|
name = ground_object.obj_name + " [ENEMY]"
|
||||||
mark_trigger.add_action(MarkToAll(v, zone.id, String(name)))
|
mark_trigger.add_action(MarkToAll(v, zone.id, String(name)))
|
||||||
v = v + 1
|
v += 1
|
||||||
added.append(ground_object.obj_name)
|
|
||||||
self.mission.triggerrules.triggers.append(mark_trigger)
|
self.mission.triggerrules.triggers.append(mark_trigger)
|
||||||
|
|
||||||
def _generate_capture_triggers(
|
def _generate_capture_triggers(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user