mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Adds an option show only selected flight, and also changes the show all option to highlight the selected flight.
65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
"""Visibility options for the game map."""
|
|
from dataclasses import dataclass
|
|
from typing import Iterator, Optional, Union
|
|
|
|
|
|
@dataclass
|
|
class DisplayRule:
|
|
name: str
|
|
_value: bool
|
|
|
|
@property
|
|
def menu_text(self) -> str:
|
|
return self.name
|
|
|
|
@property
|
|
def value(self) -> bool:
|
|
return self._value
|
|
|
|
@value.setter
|
|
def value(self, value: bool) -> None:
|
|
from qt_ui.widgets.map.QLiberationMap import QLiberationMap
|
|
self._value = value
|
|
QLiberationMap.instance.reload_scene()
|
|
QLiberationMap.instance.update()
|
|
|
|
def __bool__(self) -> bool:
|
|
return self.value
|
|
|
|
|
|
class DisplayGroup:
|
|
def __init__(self, name: Optional[str]) -> None:
|
|
self.name = name
|
|
|
|
def __iter__(self) -> Iterator[DisplayRule]:
|
|
# Python 3.6 enforces that __dict__ is order preserving by default.
|
|
for value in self.__dict__.values():
|
|
if isinstance(value, DisplayRule):
|
|
yield value
|
|
|
|
|
|
class FlightPathOptions(DisplayGroup):
|
|
def __init__(self) -> None:
|
|
super().__init__("Flight Paths")
|
|
self.hide = DisplayRule("Hide Flight Paths", True)
|
|
self.only_selected = DisplayRule("Show Selected Flight Path", False)
|
|
self.all = DisplayRule("Show All Flight Paths", False)
|
|
|
|
|
|
class DisplayOptions:
|
|
ground_objects = DisplayRule("Ground Objects", True)
|
|
control_points = DisplayRule("Control Points", True)
|
|
lines = DisplayRule("Lines", True)
|
|
events = DisplayRule("Events", True)
|
|
sam_ranges = DisplayRule("SAM Ranges", True)
|
|
flight_paths = FlightPathOptions()
|
|
|
|
@classmethod
|
|
def menu_items(cls) -> Iterator[Union[DisplayGroup, DisplayRule]]:
|
|
# Python 3.6 enforces that __dict__ is order preserving by default.
|
|
for value in cls.__dict__.values():
|
|
if isinstance(value, DisplayRule):
|
|
yield value
|
|
elif isinstance(value, DisplayGroup):
|
|
yield value
|