From ae3518f450cd7b4035a74b02596ab401d4cda48c Mon Sep 17 00:00:00 2001 From: Donnie Date: Tue, 30 Jun 2020 16:44:04 -0400 Subject: [PATCH] Map cp lines and flight paths are now the color of your coalition (red or blue) --- game/game.py | 15 +++++++++ qt_ui/uiconstants.py | 38 ++++++++++++++--------- qt_ui/widgets/map/QLiberationMap.py | 48 ++++++++++++++++------------- qt_ui/widgets/map/QMapEvent.py | 13 +++++--- 4 files changed, 73 insertions(+), 41 deletions(-) diff --git a/game/game.py b/game/game.py index d825c3f9..93cdeb9a 100644 --- a/game/game.py +++ b/game/game.py @@ -175,6 +175,7 @@ class Game: else: return event.name == self.player_name + # 1 = red, 2 = blue def get_player_coalition_id(self): if self.player_country in db.BLUEFOR_FACTIONS: return 2 @@ -187,6 +188,20 @@ class Game: else: return 1 + def get_player_color(self): + if self.get_player_coalition_id() == 1: + return "red" + else: + return "blue" + + def get_enemy_color(self): + if self.get_player_coalition_id() == 1: + return "blue" + else: + return "red" + + + def pass_turn(self, no_action=False, ignored_cps: typing.Collection[ControlPoint] = None): logging.info("Pass turn") diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index bfd9f94c..56696477 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -43,24 +43,32 @@ THEMES: Dict[int, Dict[str, str]] = { } COLORS: Dict[str, QColor] = { - "dark_red": QColor(140, 20, 20), - "red": QColor(200, 80, 80), - "bright_red": QColor(150, 80, 80), - "super_red": QColor(227, 32, 0), - "blue": QColor(0, 132, 255), - "dark_blue": QColor(45, 62, 80), "white": QColor(255, 255, 255), - "green": QColor(128, 186, 128), - "bright_green": QColor(64, 200, 64), - "black": QColor(0, 0, 0), - "black_transparent": QColor(0, 0, 0, 5), - "blue_transparent": QColor(0, 132, 255, 20), - "red_transparent": QColor(227, 32, 0, 20), - "orange": QColor(254, 125, 10), - "night_overlay": QColor(12, 20, 69), - "dawn_dust_overlay": QColor(46, 38, 85), "white_transparent": QColor(255, 255, 255, 35), "grey_transparent": QColor(150, 150, 150, 30), + + "red": QColor(200, 80, 80), + "dark_red": QColor(140, 20, 20), + "red_transparent": QColor(227, 32, 0, 20), + + "blue": QColor(0, 132, 255), + "dark_blue": QColor(45, 62, 80), + "blue_transparent": QColor(0, 132, 255, 20), + + "bright_red": QColor(150, 80, 80), + "super_red": QColor(227, 32, 0), + + "green": QColor(128, 186, 128), + "bright_green": QColor(64, 200, 64), + + "black": QColor(0, 0, 0), + "black_transparent": QColor(0, 0, 0, 5), + + "orange": QColor(254, 125, 10), + + "night_overlay": QColor(12, 20, 69), + "dawn_dust_overlay": QColor(46, 38, 85), + } CP_SIZE = 24 diff --git a/qt_ui/widgets/map/QLiberationMap.py b/qt_ui/widgets/map/QLiberationMap.py index 7a093a9a..848d9649 100644 --- a/qt_ui/widgets/map/QLiberationMap.py +++ b/qt_ui/widgets/map/QLiberationMap.py @@ -113,6 +113,9 @@ class QLiberationMap(QGraphicsView): scene = self.scene() scene.clear() + playerColor = self.game.get_player_color() + enemyColor = self.game.get_enemy_color() + self.addBackground() # Uncomment below to help set up theater reference points @@ -128,11 +131,11 @@ class QLiberationMap(QGraphicsView): CONST.CP_SIZE, cp, self.game)) if cp.captured: - pen = QPen(brush=CONST.COLORS["blue"]) - brush = CONST.COLORS["blue_transparent"] + pen = QPen(brush=CONST.COLORS[playerColor]) + brush = CONST.COLORS[playerColor+"_transparent"] else: - pen = QPen(brush=CONST.COLORS["red"]) - brush = CONST.COLORS["red_transparent"] + pen = QPen(brush=CONST.COLORS[enemyColor]) + brush = CONST.COLORS[enemyColor+"_transparent"] added_objects = [] for ground_object in cp.ground_objects: @@ -162,29 +165,30 @@ class QLiberationMap(QGraphicsView): for cp in self.game.theater.enemy_points(): if self.get_display_rule("lines"): - self.scene_create_lines_for_cp(cp) + self.scene_create_lines_for_cp(cp, playerColor, enemyColor) + for cp in self.game.theater.player_points(): if self.get_display_rule("lines"): - self.scene_create_lines_for_cp(cp) + self.scene_create_lines_for_cp(cp, playerColor, enemyColor) for cp in self.game.theater.controlpoints: if cp.captured: - pen = QPen(brush=CONST.COLORS["blue"]) - brush = CONST.COLORS["blue_transparent"] + pen = QPen(brush=CONST.COLORS[playerColor]) + brush = CONST.COLORS[playerColor+"_transparent"] + + flight_path_pen = QPen(brush=CONST.COLORS[playerColor]) + flight_path_pen.setColor(CONST.COLORS[playerColor]) - flight_path_pen = QPen(brush=CONST.COLORS["blue"]) - flight_path_pen.setColor(CONST.COLORS["blue"]) - flight_path_pen.setWidth(1) - flight_path_pen.setStyle(Qt.DashDotLine) else: - pen = QPen(brush=CONST.COLORS["red"]) - brush = CONST.COLORS["red_transparent"] + pen = QPen(brush=CONST.COLORS[enemyColor]) + brush = CONST.COLORS[enemyColor+"_transparent"] - flight_path_pen = QPen(brush=CONST.COLORS["bright_red"]) - flight_path_pen.setColor(CONST.COLORS["bright_red"]) - flight_path_pen.setWidth(1) - flight_path_pen.setStyle(Qt.DashDotLine) + flight_path_pen = QPen(brush=CONST.COLORS[enemyColor]) + flight_path_pen.setColor(CONST.COLORS[enemyColor]) + + flight_path_pen.setWidth(1) + flight_path_pen.setStyle(Qt.DashDotLine) pos = self._transform_point(cp.position) if self.get_display_rule("flight_paths"): @@ -208,17 +212,17 @@ class QLiberationMap(QGraphicsView): text.setDefaultTextColor(Qt.white) text.setPos(pos[0] + CONST.CP_SIZE + 1, pos[1] - CONST.CP_SIZE / 2 + 1) - def scene_create_lines_for_cp(self, cp: ControlPoint): + def scene_create_lines_for_cp(self, cp: ControlPoint, playerColor, enemyColor): scene = self.scene() pos = self._transform_point(cp.position) for connected_cp in cp.connected_points: pos2 = self._transform_point(connected_cp.position) if not cp.captured: - color = CONST.COLORS["dark_red"] + color = CONST.COLORS["dark_"+enemyColor] elif cp.captured: - color = CONST.COLORS["dark_blue"] + color = CONST.COLORS["dark_"+playerColor] else: - color = CONST.COLORS["dark_red"] + color = CONST.COLORS["dark_"+enemyColor] pen = QPen(brush=color) pen.setColor(color) diff --git a/qt_ui/widgets/map/QMapEvent.py b/qt_ui/widgets/map/QMapEvent.py index 13570bdf..5e24f35e 100644 --- a/qt_ui/widgets/map/QMapEvent.py +++ b/qt_ui/widgets/map/QMapEvent.py @@ -17,17 +17,22 @@ class QMapEvent(QGraphicsRectItem): self.setToolTip(str(self.gameEvent)) self.playable = not isinstance(self.gameEvent, UnitsDeliveryEvent) + + def paint(self, painter, option, widget=None): + playerColor = self.game.get_player_color() + enemyColor = self.game.get_enemy_color() + if self.parent.get_display_rule("events"): painter.save() if self.gameEvent.is_player_attacking: - painter.setPen(QPen(brush=CONST.COLORS["blue"])) - painter.setBrush(CONST.COLORS["blue"]) + painter.setPen(QPen(brush=CONST.COLORS[playerColor])) + painter.setBrush(CONST.COLORS[playerColor]) else: - painter.setPen(QPen(brush=CONST.COLORS["red"])) - painter.setBrush(CONST.COLORS["red"]) + painter.setPen(QPen(brush=CONST.COLORS[enemyColor])) + painter.setBrush(CONST.COLORS[enemyColor]) if self.isUnderMouse() and self.playable: painter.setBrush(CONST.COLORS["white"])