123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #ifndef EDITOR_H
- #define EDITOR_H
-
- #include <QGraphicsScene>
- #include <QGraphicsItemGroup>
- #include <QGraphicsSceneMouseEvent>
-
- #include "project.h"
-
-
- class DraggablePixmapItem : public QGraphicsPixmapItem {
- public:
- DraggablePixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
- }
- Event *event;
- DraggablePixmapItem(Event *event_) : QGraphicsPixmapItem(event_->pixmap) {
- event = event_;
- update();
- }
- bool active;
- bool right_click;
- int last_x;
- int last_y;
- void update() {
- int x = event->x() * 16;
- int y = event->y() * 16;
- x -= pixmap().width() / 32 * 16;
- y -= pixmap().height() - 16;
- setX(x);
- setY(y);
- setZValue(event->y());
- }
-
- protected:
- void mousePressEvent(QGraphicsSceneMouseEvent*);
- void mouseMoveEvent(QGraphicsSceneMouseEvent*);
- void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
- };
-
- class MapPixmapItem : public QGraphicsPixmapItem {
- public:
- MapPixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
- }
- Map *map;
- MapPixmapItem(Map *map_) {
- map = map_;
- }
- bool active;
- bool right_click;
- virtual void paint(QGraphicsSceneMouseEvent*);
- virtual void floodFill(QGraphicsSceneMouseEvent*);
- virtual void undo();
- virtual void redo();
- virtual void draw();
-
- protected:
- void mousePressEvent(QGraphicsSceneMouseEvent*);
- void mouseMoveEvent(QGraphicsSceneMouseEvent*);
- void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
- };
-
- class CollisionPixmapItem : public MapPixmapItem {
- public:
- CollisionPixmapItem(QPixmap pixmap): MapPixmapItem(pixmap) {
- }
- CollisionPixmapItem(Map *map_): MapPixmapItem(map_) {
- }
-
- public:
- virtual void paint(QGraphicsSceneMouseEvent*);
- virtual void floodFill(QGraphicsSceneMouseEvent*);
- virtual void draw();
- };
-
- class MetatilesPixmapItem : public QGraphicsPixmapItem {
- public:
- MetatilesPixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
- }
- MetatilesPixmapItem(Map *map_) {
- map = map_;
- }
- Map* map;
- virtual void pick(uint);
- virtual void draw();
- protected:
- void mousePressEvent(QGraphicsSceneMouseEvent*);
- void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
- };
-
- class CollisionMetatilesPixmapItem : public MetatilesPixmapItem {
- public:
- CollisionMetatilesPixmapItem(Map *map_): MetatilesPixmapItem(map_) {
- }
- virtual void pick(uint collision) {
- map->paint_collision = collision;
- draw();
- }
- virtual void draw() {
- setPixmap(map->renderCollisionMetatiles());
- }
- };
-
- class ElevationMetatilesPixmapItem : public MetatilesPixmapItem {
- public:
- ElevationMetatilesPixmapItem(Map *map_): MetatilesPixmapItem(map_) {
- }
- virtual void pick(uint elevation) {
- map->paint_elevation = elevation;
- draw();
- }
- virtual void draw() {
- setPixmap(map->renderElevationMetatiles());
- }
- };
-
-
- class Editor
- {
- public:
- Editor();
- public:
- Project *project;
- Map *map;
- void saveProject();
- void save();
- void undo();
- void redo();
- void setMap(QString map_name);
- void displayMap();
- void displayMetatiles();
- void displayCollisionMetatiles();
- void displayElevationMetatiles();
- void displayMapObjects();
- void displayMapConnections();
- void displayMapBorder();
-
- void setEditingMap();
- void setEditingCollision();
- void setEditingObjects();
-
- QGraphicsScene *scene;
- QGraphicsPixmapItem *current_view;
- MapPixmapItem *map_item;
- CollisionPixmapItem *collision_item;
- QGraphicsItemGroup *objects_group;
-
- QGraphicsScene *scene_metatiles;
- QGraphicsScene *scene_collision_metatiles;
- QGraphicsScene *scene_elevation_metatiles;
- MetatilesPixmapItem *metatiles_item;
- CollisionMetatilesPixmapItem *collision_metatiles_item;
- ElevationMetatilesPixmapItem *elevation_metatiles_item;
- };
-
- #endif // EDITOR_H
|