No Description

editor.h 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #ifndef EDITOR_H
  2. #define EDITOR_H
  3. #include <QGraphicsScene>
  4. #include <QGraphicsItemGroup>
  5. #include <QGraphicsSceneMouseEvent>
  6. #include "project.h"
  7. class DraggablePixmapItem : public QGraphicsPixmapItem {
  8. public:
  9. DraggablePixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
  10. }
  11. Event *event;
  12. DraggablePixmapItem(Event *event_) : QGraphicsPixmapItem(event_->pixmap) {
  13. event = event_;
  14. update();
  15. }
  16. bool active;
  17. bool right_click;
  18. int last_x;
  19. int last_y;
  20. void update() {
  21. int x = event->x() * 16;
  22. int y = event->y() * 16;
  23. x -= pixmap().width() / 32 * 16;
  24. y -= pixmap().height() - 16;
  25. setX(x);
  26. setY(y);
  27. setZValue(event->y());
  28. }
  29. protected:
  30. void mousePressEvent(QGraphicsSceneMouseEvent*);
  31. void mouseMoveEvent(QGraphicsSceneMouseEvent*);
  32. void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
  33. };
  34. class MapPixmapItem : public QGraphicsPixmapItem {
  35. public:
  36. MapPixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
  37. }
  38. Map *map;
  39. MapPixmapItem(Map *map_) {
  40. map = map_;
  41. }
  42. bool active;
  43. bool right_click;
  44. virtual void paint(QGraphicsSceneMouseEvent*);
  45. virtual void floodFill(QGraphicsSceneMouseEvent*);
  46. virtual void undo();
  47. virtual void redo();
  48. virtual void draw();
  49. protected:
  50. void mousePressEvent(QGraphicsSceneMouseEvent*);
  51. void mouseMoveEvent(QGraphicsSceneMouseEvent*);
  52. void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
  53. };
  54. class CollisionPixmapItem : public MapPixmapItem {
  55. public:
  56. CollisionPixmapItem(QPixmap pixmap): MapPixmapItem(pixmap) {
  57. }
  58. CollisionPixmapItem(Map *map_): MapPixmapItem(map_) {
  59. }
  60. public:
  61. virtual void paint(QGraphicsSceneMouseEvent*);
  62. virtual void floodFill(QGraphicsSceneMouseEvent*);
  63. virtual void draw();
  64. };
  65. class MetatilesPixmapItem : public QGraphicsPixmapItem {
  66. public:
  67. MetatilesPixmapItem(QPixmap pixmap): QGraphicsPixmapItem(pixmap) {
  68. }
  69. MetatilesPixmapItem(Map *map_) {
  70. map = map_;
  71. }
  72. Map* map;
  73. virtual void pick(uint);
  74. virtual void draw();
  75. protected:
  76. void mousePressEvent(QGraphicsSceneMouseEvent*);
  77. void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
  78. };
  79. class CollisionMetatilesPixmapItem : public MetatilesPixmapItem {
  80. public:
  81. CollisionMetatilesPixmapItem(Map *map_): MetatilesPixmapItem(map_) {
  82. }
  83. virtual void pick(uint collision) {
  84. map->paint_collision = collision;
  85. draw();
  86. }
  87. virtual void draw() {
  88. setPixmap(map->renderCollisionMetatiles());
  89. }
  90. };
  91. class ElevationMetatilesPixmapItem : public MetatilesPixmapItem {
  92. public:
  93. ElevationMetatilesPixmapItem(Map *map_): MetatilesPixmapItem(map_) {
  94. }
  95. virtual void pick(uint elevation) {
  96. map->paint_elevation = elevation;
  97. draw();
  98. }
  99. virtual void draw() {
  100. setPixmap(map->renderElevationMetatiles());
  101. }
  102. };
  103. class Editor
  104. {
  105. public:
  106. Editor();
  107. public:
  108. Project *project;
  109. Map *map;
  110. void saveProject();
  111. void save();
  112. void undo();
  113. void redo();
  114. void setMap(QString map_name);
  115. void displayMap();
  116. void displayMetatiles();
  117. void displayCollisionMetatiles();
  118. void displayElevationMetatiles();
  119. void displayMapObjects();
  120. void displayMapConnections();
  121. void displayMapBorder();
  122. void setEditingMap();
  123. void setEditingCollision();
  124. void setEditingObjects();
  125. QGraphicsScene *scene;
  126. QGraphicsPixmapItem *current_view;
  127. MapPixmapItem *map_item;
  128. CollisionPixmapItem *collision_item;
  129. QGraphicsItemGroup *objects_group;
  130. QGraphicsScene *scene_metatiles;
  131. QGraphicsScene *scene_collision_metatiles;
  132. QGraphicsScene *scene_elevation_metatiles;
  133. MetatilesPixmapItem *metatiles_item;
  134. CollisionMetatilesPixmapItem *collision_metatiles_item;
  135. ElevationMetatilesPixmapItem *elevation_metatiles_item;
  136. };
  137. #endif // EDITOR_H