Exemplo n.º 1
0
    def sceneMouseMovedEvent(self, event: QGraphicsSceneMouseEvent):
        if self.game is None:
            return

        mouse_position = Point(event.scenePos().x(), event.scenePos().y())
        if self.state == QLiberationMapState.MOVING_UNIT:
            self.setCursor(Qt.PointingHandCursor)
            self.movement_line.setLine(
                QLineF(self.movement_line.line().p1(), event.scenePos())
            )

            if self.is_valid_ship_pos(mouse_position):
                self.movement_line.setPen(CONST.COLORS["green"])
            else:
                self.movement_line.setPen(CONST.COLORS["red"])

        mouse_world_pos = self._scene_to_dcs_coords(mouse_position)
        if DisplayOptions.navmeshes.blue_navmesh:
            self.highlight_mouse_navmesh(
                self.scene(),
                self.game.blue_navmesh,
                self._scene_to_dcs_coords(mouse_position),
            )
            if DisplayOptions.path_debug.shortest_path:
                self.draw_shortest_path(
                    self.scene(), self.game.blue_navmesh, mouse_world_pos, player=True
                )

        if DisplayOptions.navmeshes.red_navmesh:
            self.highlight_mouse_navmesh(
                self.scene(), self.game.red_navmesh, mouse_world_pos
            )

        debug_blue = DisplayOptions.path_debug_faction.blue
        if DisplayOptions.path_debug.shortest_path:
            self.draw_shortest_path(
                self.scene(),
                self.game.navmesh_for(player=debug_blue),
                mouse_world_pos,
                player=False,
            )
        elif not DisplayOptions.path_debug.hide:
            if DisplayOptions.path_debug.barcap:
                task = FlightType.BARCAP
            elif DisplayOptions.path_debug.cas:
                task = FlightType.CAS
            elif DisplayOptions.path_debug.sweep:
                task = FlightType.SWEEP
            elif DisplayOptions.path_debug.strike:
                task = FlightType.STRIKE
            elif DisplayOptions.path_debug.tarcap:
                task = FlightType.TARCAP
            else:
                raise ValueError("Unexpected value for DisplayOptions.path_debug")
            self.draw_test_flight_plan(
                self.scene(), task, mouse_world_pos, player=debug_blue
            )
Exemplo n.º 2
0
    def sceneMouseMovedEvent(self, event: QGraphicsSceneMouseEvent):
        if self.state == QLiberationMapState.MOVING_UNIT:
            self.setCursor(Qt.PointingHandCursor)
            self.movement_line.setLine(
                QLineF(self.movement_line.line().p1(), event.scenePos()))

            pos = Point(event.scenePos().x(), event.scenePos().y())
            if self.is_valid_ship_pos(pos):
                self.movement_line.setPen(CONST.COLORS["green"])
            else:
                self.movement_line.setPen(CONST.COLORS["red"])
    def sceneMousePressEvent(self, event: QGraphicsSceneMouseEvent):
        if self.state == QLiberationMapState.MOVING_UNIT:
            if event.buttons() == Qt.RightButton:
                pass
            elif event.buttons() == Qt.LeftButton:
                if self.selected_cp is not None:
                    # Set movement position for the cp
                    pos = event.scenePos()
                    point = Point(int(pos.x()), int(pos.y()))
                    proj = self._scene_to_dcs_coords(point)

                    if self.is_valid_ship_pos(point):
                        self.selected_cp.control_point.target_position = proj
                    else:
                        self.selected_cp.control_point.target_position = None

                    GameUpdateSignal.get_instance().updateGame(
                        self.game_model.game)
            else:
                return
            self.state = QLiberationMapState.NORMAL
            try:
                self.scene().removeItem(self.movement_line)
            except:
                pass
            self.selected_cp = None
Exemplo n.º 4
0
 def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
     super(QGraphicsBlockItem, self).mouseMoveEvent(event)
     self.setPos(event.scenePos() - event.buttonDownPos(Qt.MouseButton.LeftButton))
     self.c, self.cS = self.closestItem()
     imgPosibleConnectH = self.scene().imgPosibleConnectH
     imgPosibleConnectV = self.scene().imgPosibleConnectV
     if self.c is not None:
         if self.c.type is ConnectionType.TOP:
             imgPosibleConnectH.setPos(self.c.parent.pos())
             imgPosibleConnectH.setVisible(True)
             imgPosibleConnectH.setZValue(1)
         elif self.c.type is ConnectionType.BOTTOM:
             imgPosibleConnectH.setPos(self.c.parent.pos() + QPointF(0, self.c.parent.pixmap().height() - 5))
             imgPosibleConnectH.setVisible(True)
             imgPosibleConnectH.setZValue(1)
         elif self.c.type is ConnectionType.RIGHT:
             imgPosibleConnectV.setPos(
                 self.c.parent.pos() + QPointF(self.c.parent.pixmap().width() - 5, 0) + QPointF(0, 5))
             imgPosibleConnectV.setVisible(True)
             imgPosibleConnectV.setZValue(1)
         elif self.c.type is ConnectionType.LEFT:
             imgPosibleConnectV.setPos(self.c.parent.pos() + QPointF(0, 5))
             imgPosibleConnectV.setVisible(True)
             imgPosibleConnectV.setZValue(1)
         elif self.c.type is ConnectionType.BOTTOMIN:
             imgPosibleConnectH.setPos(self.c.parent.pos() + QPointF(16, 38))
             imgPosibleConnectH.setVisible(True)
             imgPosibleConnectH.setZValue(1)
     else:
         imgPosibleConnectH.setVisible(False)
         imgPosibleConnectV.setVisible(False)
Exemplo n.º 5
0
 def mouseMoveEvent(self, sceneMouseEvent: QGraphicsSceneMouseEvent):
     mousePoint = sceneMouseEvent.scenePos()
     mouseRow, mouseColumn = round(mousePoint.x()), round(mousePoint.y())
     row, column = self.tetris.falling_tetrimino.row, self.tetris.falling_tetrimino.column
     if mouseColumn - column > 0:
         self.tetris.move_right()
     if mouseColumn - column < 0:
         self.tetris.move_left()
Exemplo n.º 6
0
 def mouseMoveEvent(self, sceneMouseEvent: QGraphicsSceneMouseEvent):
     mousePoint = sceneMouseEvent.scenePos()
     mouseRow, mouseColumn = round(mousePoint.x()), round(
         mousePoint.y())
     row, column = self.tetris.falling_tetrimino.row, self.tetris.falling_tetrimino.column
     if mouseColumn - column > 0:
         self.tetris.move_right()
     if mouseColumn - column < 0:
         self.tetris.move_left()
Exemplo n.º 7
0
    def mousePressEvent(self, event: QGraphicsSceneMouseEvent):

        movingItem = self.itemAt(event.scenePos(), self.view.transform())
        if movingItem is None and event.button() is Qt.MouseButton.RightButton:
            self.popMenu.exec_(event.screenPos())
        if movingItem is not None and event.button(
        ) is Qt.MouseButton.LeftButton:
            self.oldPos = movingItem.pos()
        self.clearSelection()
        super(Scene, self).mousePressEvent(event)
Exemplo n.º 8
0
    def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
        """Implementation.

    Handles mouse movement events in the editor. Dragging the mouse with a
    button pressed will place or remove all tiles passed over.
    """

        editor = self._editor
        pos = event.scenePos()
        tilePos = editor.sceneToGrid(pos)
        item = editor.itemAt(pos, QTransform())

        if tilePos != self.lastTilePos:
            self.lastTilePos = tilePos
            if editor.validGridPos(tilePos):
                if event.buttons() & Qt.LeftButton:
                    return self.handleLeftButton(pos)
                elif event.buttons() & Qt.RightButton:
                    return self.handleRightButton(pos)
Exemplo n.º 9
0
    def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
        if event.buttons() and Qt.LeftButton:
            item = self.parentItem()
            dx = event.scenePos().x() - event.lastScenePos().x()
            dy = event.scenePos().y() - event.lastScenePos().y()
            if item.sourceNode or item.destNode:
                item.adjust()

            item.centerCp.setPoint(item.updateCenterPos())
            item.textCp.setPos(item.textPos)
            item.weightCp.setPos(item.weightPos)
            self.scene().update()
            if self.__m_type == PointType.Center:
                item.moveBy(dx, dy)
                self.scene().update()
            elif self.__m_type == PointType.Edge:
                self.__m_point = self.mapToParent(event.pos())
                #self.setPos(self.__m_point)
                item.setEdgeControlPoint(self.__m_point, self.__m_item_type)
                self.scene().update()
            elif self.__m_type == PointType.Special:
                self.__m_point = self.mapToParent(event.pos())
                #self.setPos(self.__m_point)
                item.setSpecialControlPoint(self.__m_point, self.__m_item_type)
                if self.collidingItem(item):
                    if self.itemType() == ItemType.DestType:
                        item.setDestNode(self.collidingItem(item))
                    if self.itemType() == ItemType.SourceType:
                        item.setSourceNode(self.collidingItem(item))
                    self.collidingItem(item).addBezierEdge(
                        item, self.itemType())

                self.scene().update()
            elif self.__m_type == PointType.Text:
                self.__m_point = self.mapToParent(event.pos())
                self.setPos(self.__m_point)
                self.scene().update()