Added Polygon drawing mode for map background

This commit is contained in:
Khopa 2020-10-12 18:48:50 +02:00
parent 9c58e73b39
commit d95912322c
3 changed files with 39 additions and 20 deletions

View File

@ -54,6 +54,7 @@ class DisplayOptions:
sam_ranges = DisplayRule("Ally SAM Threat Range", False) sam_ranges = DisplayRule("Ally SAM Threat Range", False)
enemy_sam_ranges = DisplayRule("Enemy SAM Threat Range", True) enemy_sam_ranges = DisplayRule("Enemy SAM Threat Range", True)
detection_range = DisplayRule("SAM Detection Range", False) detection_range = DisplayRule("SAM Detection Range", False)
map_poly = DisplayRule("Map Polygon Debug Mode", False)
waypoint_info = DisplayRule("Waypoint Information", True) waypoint_info = DisplayRule("Waypoint Information", True)
flight_paths = FlightPathOptions() flight_paths = FlightPathOptions()

View File

@ -49,6 +49,7 @@ COLORS: Dict[str, QColor] = {
"super_red": QColor(227, 32, 0), "super_red": QColor(227, 32, 0),
"green": QColor(128, 186, 128), "green": QColor(128, 186, 128),
"light_green": QColor(223, 255, 173),
"bright_green": QColor(64, 200, 64), "bright_green": QColor(64, 200, 64),
"black": QColor(0, 0, 0), "black": QColor(0, 0, 0),
@ -59,6 +60,10 @@ COLORS: Dict[str, QColor] = {
"night_overlay": QColor(12, 20, 69), "night_overlay": QColor(12, 20, 69),
"dawn_dust_overlay": QColor(46, 38, 85), "dawn_dust_overlay": QColor(46, 38, 85),
"grey": QColor(150, 150, 150),
"dark_grey": QColor(75, 75, 75),
"dark_dark_grey": QColor(48, 48, 48),
} }
CP_SIZE = 12 CP_SIZE = 12

View File

@ -4,8 +4,8 @@ import datetime
import logging import logging
from typing import List, Optional, Tuple from typing import List, Optional, Tuple
from PySide2.QtCore import Qt from PySide2.QtCore import Qt, QPointF
from PySide2.QtGui import QBrush, QColor, QPen, QPixmap, QWheelEvent from PySide2.QtGui import QBrush, QColor, QPen, QPixmap, QWheelEvent, QPolygonF
from PySide2.QtWidgets import ( from PySide2.QtWidgets import (
QFrame, QFrame,
QGraphicsItem, QGraphicsItem,
@ -470,23 +470,36 @@ class QLiberationMap(QGraphicsView):
def addBackground(self): def addBackground(self):
scene = self.scene() scene = self.scene()
bg = QPixmap("./resources/" + self.game.theater.overview_image) if not DisplayOptions.map_poly:
scene.addPixmap(bg) bg = QPixmap("./resources/" + self.game.theater.overview_image)
scene.addPixmap(bg)
# Apply graphical effects to simulate current daytime
if self.game.current_turn_daytime == "day":
pass
elif self.game.current_turn_daytime == "night":
ov = QPixmap(bg.width(), bg.height())
ov.fill(CONST.COLORS["night_overlay"])
overlay = scene.addPixmap(ov)
effect = QGraphicsOpacityEffect()
effect.setOpacity(0.7)
overlay.setGraphicsEffect(effect)
else:
ov = QPixmap(bg.width(), bg.height())
ov.fill(CONST.COLORS["dawn_dust_overlay"])
overlay = scene.addPixmap(ov)
effect = QGraphicsOpacityEffect()
effect.setOpacity(0.3)
overlay.setGraphicsEffect(effect)
# Apply graphical effects to simulate current daytime
if self.game.current_turn_daytime == "day":
pass
elif self.game.current_turn_daytime == "night":
ov = QPixmap(bg.width(), bg.height())
ov.fill(CONST.COLORS["night_overlay"])
overlay = scene.addPixmap(ov)
effect = QGraphicsOpacityEffect()
effect.setOpacity(0.7)
overlay.setGraphicsEffect(effect)
else: else:
ov = QPixmap(bg.width(), bg.height()) # Polygon display mode
ov.fill(CONST.COLORS["dawn_dust_overlay"]) for inclusion_zone in self.game.theater.landmap[0]:
overlay = scene.addPixmap(ov) poly = QPolygonF([QPointF(*self._transform_point(Point(point[0], point[1]))) for point in inclusion_zone])
effect = QGraphicsOpacityEffect() scene.addPolygon(poly, CONST.COLORS["grey"], CONST.COLORS["dark_grey"])
effect.setOpacity(0.3)
overlay.setGraphicsEffect(effect) 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"])