mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Dev : Improved Reference point setup mode, made it easier to setup point with polygon map appearing as transparent overlay, and displaying reference points on the map [Press Shift+R to toggle the mode])
This commit is contained in:
parent
bf290ac1a9
commit
8137d57cdf
@ -28,7 +28,6 @@ FONT_MAP = QFont(FONT_NAME, 10, weight=75, italic=False)
|
||||
COLORS: Dict[str, QColor] = {
|
||||
"white": QColor(255, 255, 255),
|
||||
"white_transparent": QColor(255, 255, 255, 35),
|
||||
"grey_transparent": QColor(150, 150, 150, 30),
|
||||
|
||||
"light_red": QColor(231, 92, 83, 90),
|
||||
"red": QColor(200, 80, 80),
|
||||
@ -40,6 +39,7 @@ COLORS: Dict[str, QColor] = {
|
||||
"blue": QColor(0, 132, 255),
|
||||
"dark_blue": QColor(45, 62, 80),
|
||||
"sea_blue": QColor(52, 68, 85),
|
||||
"sea_blue_transparent": QColor(52, 68, 85, 150),
|
||||
"blue_transparent": QColor(0, 132, 255, 20),
|
||||
|
||||
"purple": QColor(187, 137, 255),
|
||||
@ -62,8 +62,11 @@ COLORS: Dict[str, QColor] = {
|
||||
"dawn_dust_overlay": QColor(46, 38, 85),
|
||||
|
||||
"grey": QColor(150, 150, 150),
|
||||
"grey_transparent": QColor(150, 150, 150, 150),
|
||||
"dark_grey": QColor(75, 75, 75),
|
||||
"dark_grey_transparent": QColor(75, 75, 75, 150),
|
||||
"dark_dark_grey": QColor(48, 48, 48),
|
||||
"dark_dark_grey_transparent": QColor(48, 48, 48, 150),
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -82,8 +82,9 @@ class QLiberationMapState(Enum):
|
||||
|
||||
|
||||
class QLiberationMap(QGraphicsView):
|
||||
WAYPOINT_SIZE = 4
|
||||
|
||||
WAYPOINT_SIZE = 4
|
||||
reference_point_setup_mode = False
|
||||
instance: Optional[QLiberationMap] = None
|
||||
|
||||
def __init__(self, game_model: GameModel):
|
||||
@ -175,41 +176,50 @@ class QLiberationMap(QGraphicsView):
|
||||
|
||||
"""
|
||||
|
||||
Uncomment to set up theather reference points
|
||||
Uncomment to set up theather reference points"""
|
||||
def keyPressEvent(self, event):
|
||||
#super(QLiberationMap, self).keyPressEvent(event)
|
||||
|
||||
numpad_mod = int(event.modifiers()) & QtCore.Qt.KeypadModifier
|
||||
i = 0
|
||||
for k,v in self.game.theater.reference_points.items():
|
||||
if i == 0:
|
||||
point_0 = k
|
||||
modifiers = QtWidgets.QApplication.keyboardModifiers()
|
||||
if not self.reference_point_setup_mode:
|
||||
if modifiers == QtCore.Qt.ShiftModifier and event.key() == QtCore.Qt.Key_R:
|
||||
self.reference_point_setup_mode = True
|
||||
self.reload_scene()
|
||||
else:
|
||||
point_1 = k
|
||||
i = i + 1
|
||||
super(QLiberationMap, self).keyPressEvent(event)
|
||||
else:
|
||||
if modifiers == QtCore.Qt.ShiftModifier and event.key() == QtCore.Qt.Key_R:
|
||||
self.reference_point_setup_mode = False
|
||||
self.reload_scene()
|
||||
else:
|
||||
numpad_mod = int(event.modifiers()) & QtCore.Qt.KeypadModifier
|
||||
i = 0
|
||||
for k,v in self.game.theater.reference_points.items():
|
||||
if i == 0:
|
||||
point_0 = k
|
||||
else:
|
||||
point_1 = k
|
||||
i = i + 1
|
||||
|
||||
if event.key() == QtCore.Qt.Key_Down:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0] + 10, self.game.theater.reference_points[point_0][1]
|
||||
if event.key() == QtCore.Qt.Key_Up:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0] - 10, self.game.theater.reference_points[point_0][1]
|
||||
if event.key() == QtCore.Qt.Key_Left:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0], self.game.theater.reference_points[point_0][1] + 10
|
||||
if event.key() == QtCore.Qt.Key_Right:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0], self.game.theater.reference_points[point_0][1] - 10
|
||||
if event.key() == QtCore.Qt.Key_Down:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0] + 10, self.game.theater.reference_points[point_0][1]
|
||||
if event.key() == QtCore.Qt.Key_Up:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0] - 10, self.game.theater.reference_points[point_0][1]
|
||||
if event.key() == QtCore.Qt.Key_Left:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0], self.game.theater.reference_points[point_0][1] + 10
|
||||
if event.key() == QtCore.Qt.Key_Right:
|
||||
self.game.theater.reference_points[point_0] = self.game.theater.reference_points[point_0][0], self.game.theater.reference_points[point_0][1] - 10
|
||||
|
||||
|
||||
if event.key() == QtCore.Qt.Key_2 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0] + 10, self.game.theater.reference_points[point_1][1]
|
||||
if event.key() == QtCore.Qt.Key_8 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0] - 10, self.game.theater.reference_points[point_1][1]
|
||||
if event.key() == QtCore.Qt.Key_4 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0], self.game.theater.reference_points[point_1][1] + 10
|
||||
if event.key() == QtCore.Qt.Key_6 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0], self.game.theater.reference_points[point_1][1] - 10
|
||||
if event.key() == QtCore.Qt.Key_2 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0] + 10, self.game.theater.reference_points[point_1][1]
|
||||
if event.key() == QtCore.Qt.Key_8 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0] - 10, self.game.theater.reference_points[point_1][1]
|
||||
if event.key() == QtCore.Qt.Key_4 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0], self.game.theater.reference_points[point_1][1] + 10
|
||||
if event.key() == QtCore.Qt.Key_6 and numpad_mod:
|
||||
self.game.theater.reference_points[point_1] = self.game.theater.reference_points[point_1][0], self.game.theater.reference_points[point_1][1] - 10
|
||||
|
||||
print(self.game.theater.reference_points)
|
||||
self.reload_scene()
|
||||
"""
|
||||
print(self.game.theater.reference_points)
|
||||
self.reload_scene()
|
||||
|
||||
@staticmethod
|
||||
def aa_ranges(ground_object: TheaterGroundObject) -> Tuple[int, int]:
|
||||
@ -297,11 +307,6 @@ class QLiberationMap(QGraphicsView):
|
||||
|
||||
self.addBackground()
|
||||
|
||||
# Uncomment below to help set up theater reference points
|
||||
# for i, r in enumerate(self.game.theater.reference_points.items()):
|
||||
# text = scene.addText(str(r), font=QFont("Trebuchet MS", 10, weight=5, italic=False))
|
||||
# text.setPos(0, i * 24)
|
||||
|
||||
# Display Culling
|
||||
if DisplayOptions.culling and self.game.settings.perf_culling:
|
||||
self.display_culling(scene)
|
||||
@ -706,27 +711,45 @@ class QLiberationMap(QGraphicsView):
|
||||
effect.setOpacity(0.3)
|
||||
overlay.setGraphicsEffect(effect)
|
||||
|
||||
else:
|
||||
if DisplayOptions.map_poly or self.reference_point_setup_mode:
|
||||
# Polygon display mode
|
||||
if self.game.theater.landmap is not None:
|
||||
|
||||
for sea_zone in self.game.theater.landmap[2]:
|
||||
print(sea_zone)
|
||||
poly = QPolygonF([QPointF(*self._transform_point(Point(point[0], point[1]))) for point in sea_zone])
|
||||
scene.addPolygon(poly, CONST.COLORS["sea_blue"], CONST.COLORS["sea_blue"])
|
||||
if self.reference_point_setup_mode:
|
||||
color = "sea_blue_transparent"
|
||||
else:
|
||||
color = "sea_blue"
|
||||
scene.addPolygon(poly, CONST.COLORS[color], CONST.COLORS[color])
|
||||
|
||||
for inclusion_zone in self.game.theater.landmap[0]:
|
||||
poly = QPolygonF([QPointF(*self._transform_point(Point(point[0], point[1]))) for point in inclusion_zone])
|
||||
scene.addPolygon(poly, CONST.COLORS["grey"], CONST.COLORS["dark_grey"])
|
||||
if self.reference_point_setup_mode:
|
||||
scene.addPolygon(poly, CONST.COLORS["grey_transparent"], CONST.COLORS["dark_grey_transparent"])
|
||||
else:
|
||||
scene.addPolygon(poly, CONST.COLORS["grey"], CONST.COLORS["dark_grey"])
|
||||
|
||||
for exclusion_zone in self.game.theater.landmap[1]:
|
||||
poly = QPolygonF([QPointF(*self._transform_point(Point(point[0], point[1]))) for point in exclusion_zone])
|
||||
scene.addPolygon(poly, CONST.COLORS["grey"], CONST.COLORS["dark_dark_grey"])
|
||||
if self.reference_point_setup_mode:
|
||||
scene.addPolygon(poly, CONST.COLORS["grey_transparent"], CONST.COLORS["dark_dark_grey_transparent"])
|
||||
else:
|
||||
scene.addPolygon(poly, CONST.COLORS["grey"], CONST.COLORS["dark_dark_grey"])
|
||||
|
||||
# Uncomment to display plan projection test
|
||||
#self.projection_test(scene)
|
||||
self.draw_scale()
|
||||
|
||||
if self.reference_point_setup_mode:
|
||||
for i, r in enumerate(self.game.theater.reference_points.values()):
|
||||
self.scene().addRect(QRectF(r[0], r[1], 25, 25), pen=CONST.COLORS["red"], brush=CONST.COLORS["red"])
|
||||
text = self.scene().addText("P{0} = {1}, {2}".format(i, r[0], r[1]),
|
||||
font=QFont("Trebuchet MS", 14, weight=8, italic=False))
|
||||
text.setDefaultTextColor(CONST.COLORS["red"])
|
||||
text.setPos(r[0]+26, r[1])
|
||||
|
||||
def projection_test(self, scene):
|
||||
for i in range(100):
|
||||
for j in range(100):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user