59 lines
2.1 KiB
C++
59 lines
2.1 KiB
C++
#include "movementpermissionsselector.h"
|
|
#include <QPainter>
|
|
|
|
void MovementPermissionsSelector::draw() {
|
|
QPixmap pixmap(":/images/collisions.png");
|
|
this->setPixmap(pixmap.scaled(64, 512));
|
|
this->drawSelection();
|
|
}
|
|
|
|
uint16_t MovementPermissionsSelector::getSelectedCollision() {
|
|
return static_cast<uint16_t>(this->selectionInitialX);
|
|
}
|
|
|
|
uint16_t MovementPermissionsSelector::getSelectedElevation() {
|
|
return static_cast<uint16_t>(this->selectionInitialY);
|
|
}
|
|
|
|
void MovementPermissionsSelector::select(uint16_t collision, uint16_t elevation) {
|
|
SelectablePixmapItem::select(collision, elevation, 0, 0);
|
|
}
|
|
|
|
void MovementPermissionsSelector::mousePressEvent(QGraphicsSceneMouseEvent* event) {
|
|
SelectablePixmapItem::mousePressEvent(event);
|
|
this->setSelectedMovementPermissions(event->pos());
|
|
}
|
|
|
|
void MovementPermissionsSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event) {
|
|
SelectablePixmapItem::mouseMoveEvent(event);
|
|
this->setSelectedMovementPermissions(event->pos());
|
|
}
|
|
|
|
void MovementPermissionsSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) {
|
|
SelectablePixmapItem::mouseReleaseEvent(event);
|
|
this->setSelectedMovementPermissions(event->pos());
|
|
}
|
|
|
|
void MovementPermissionsSelector::setSelectedMovementPermissions(QPointF pos) {
|
|
int x = static_cast<int>(pos.x()) / 32;
|
|
int y = static_cast<int>(pos.y()) / 32;
|
|
int width = this->pixmap().width() / 32;
|
|
int height = this->pixmap().height() / 32;
|
|
|
|
// Snap to a valid position inside the selection area.
|
|
if (x < 0) x = 0;
|
|
if (x >= width) x = width - 1;
|
|
if (y < 0) y = 0;
|
|
if (y >= height) y = height - 1;
|
|
}
|
|
|
|
void MovementPermissionsSelector::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {
|
|
QPoint pos = this->getCellPos(event->pos());
|
|
uint16_t collision = static_cast<uint16_t>(pos.x());
|
|
uint16_t elevation = static_cast<uint16_t>(pos.y());
|
|
emit this->hoveredMovementPermissionChanged(collision, elevation);
|
|
}
|
|
|
|
void MovementPermissionsSelector::hoverLeaveEvent(QGraphicsSceneHoverEvent *) {
|
|
emit this->hoveredMovementPermissionCleared();
|
|
}
|