예제 #1
0
    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_"+enemyColor]
            elif cp.captured:
                color = CONST.COLORS["dark_"+playerColor]
            else:
                color = CONST.COLORS["dark_"+enemyColor]

            pen = QPen(brush=color)
            pen.setColor(color)
            pen.setWidth(6)
            if cp.captured and not connected_cp.captured and Conflict.has_frontline_between(cp, connected_cp):
                if not cp.captured:
                    scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)
                else:
                    posx, h = Conflict.frontline_position(self.game.theater, cp, connected_cp)
                    pos2 = self._transform_point(posx)
                    scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)

                    p1 = point_from_heading(pos2[0], pos2[1], h+180, 25)
                    p2 = point_from_heading(pos2[0], pos2[1], h, 25)
                    frontline_pen = QPen(brush=CONST.COLORS["bright_red"])
                    frontline_pen.setColor(CONST.COLORS["orange"])
                    frontline_pen.setWidth(8)
                    scene.addLine(p1[0], p1[1], p2[0], p2[1], pen=frontline_pen)

            else:
                scene.addLine(pos[0], pos[1], pos2[0], pos2[1], pen=pen)
예제 #2
0
    def front_lines(self) -> Iterator[FrontLine]:
        """Iterates over all active front lines in the theater."""
        for cp in self.friendly_control_points():
            for connected in cp.connected_points:
                if connected.is_friendly(self.is_player):
                    continue

                if Conflict.has_frontline_between(cp, connected):
                    yield FrontLine(cp, connected, self.game.theater)
 def scene_create_lines_for_cp(self, cp: ControlPoint, playerColor,
                               enemyColor):
     scene = self.scene()
     for connected_cp in cp.connected_points:
         pos2 = self._transform_point(connected_cp.position)
         if not cp.captured:
             color = CONST.COLORS["dark_" + enemyColor]
         else:
             color = CONST.COLORS["dark_" + playerColor]
         pen = QPen(brush=color)
         pen.setColor(color)
         pen.setWidth(6)
         frontline = FrontLine(cp, connected_cp, self.game.theater)
         if cp.captured and not connected_cp.captured and Conflict.has_frontline_between(
                 cp, connected_cp):
             if DisplayOptions.actual_frontline_pos:
                 self.draw_actual_frontline(frontline, scene, pen)
             else:
                 self.draw_frontline_approximation(frontline, scene, pen)
         else:
             self.draw_bezier_frontline(scene, pen, frontline)