No Description

map.h 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #ifndef MAP_H
  2. #define MAP_H
  3. #include "tileset.h"
  4. #include "blockdata.h"
  5. #include "event.h"
  6. #include <QPixmap>
  7. #include <QObject>
  8. #include <QDebug>
  9. template <typename T>
  10. class History {
  11. public:
  12. QList<T> history;
  13. int head;
  14. History() {
  15. head = -1;
  16. }
  17. T pop() {
  18. if (head > 0) {
  19. return history.at(--head);
  20. }
  21. return NULL;
  22. }
  23. T next() {
  24. if (head + 1 < history.length()) {
  25. return history.at(++head);
  26. }
  27. return NULL;
  28. }
  29. void push(T commit) {
  30. while (head + 1 < history.length()) {
  31. history.removeLast();
  32. }
  33. history.append(commit);
  34. head++;
  35. }
  36. };
  37. class Connection {
  38. public:
  39. Connection() {
  40. }
  41. public:
  42. QString direction;
  43. QString offset;
  44. QString map_name;
  45. };
  46. class Map : public QObject
  47. {
  48. Q_OBJECT
  49. public:
  50. explicit Map(QObject *parent = 0);
  51. public:
  52. QString name;
  53. QString attributes_label;
  54. QString events_label;
  55. QString scripts_label;
  56. QString connections_label;
  57. QString song;
  58. QString index;
  59. QString location;
  60. QString visibility;
  61. QString weather;
  62. QString type;
  63. QString unknown;
  64. QString show_location;
  65. QString battle_scene;
  66. QString width;
  67. QString height;
  68. QString border_label;
  69. QString blockdata_label;
  70. QString tileset_primary_label;
  71. QString tileset_secondary_label;
  72. Tileset *tileset_primary;
  73. Tileset *tileset_secondary;
  74. Blockdata* blockdata;
  75. public:
  76. int getWidth();
  77. int getHeight();
  78. Tileset* getBlockTileset(uint);
  79. Metatile* getMetatile(uint);
  80. QImage getMetatileImage(uint);
  81. QImage getMetatileTile(uint);
  82. QPixmap render();
  83. QPixmap renderMetatiles();
  84. QPixmap renderCollision();
  85. QImage collision_image;
  86. QPixmap collision_pixmap;
  87. QImage getCollisionMetatileImage(Block);
  88. QImage getElevationMetatileImage(Block);
  89. QImage getCollisionMetatileImage(int);
  90. QImage getElevationMetatileImage(int);
  91. QPixmap renderCollisionMetatiles();
  92. QPixmap renderElevationMetatiles();
  93. void drawSelection(int i, int w, QPainter *painter);
  94. bool blockChanged(int, Blockdata*);
  95. Blockdata* cached_blockdata;
  96. void cacheBlockdata();
  97. Blockdata* cached_collision;
  98. void cacheCollision();
  99. QImage image;
  100. QPixmap pixmap;
  101. QList<QImage> metatile_images;
  102. int paint_tile;
  103. int paint_collision;
  104. int paint_elevation;
  105. Block *getBlock(int x, int y);
  106. void setBlock(int x, int y, Block block);
  107. void _setBlock(int x, int y, Block block);
  108. void floodFill(int x, int y, uint tile);
  109. void _floodFill(int x, int y, uint tile);
  110. void floodFillCollision(int x, int y, uint collision);
  111. void _floodFillCollision(int x, int y, uint collision);
  112. void floodFillElevation(int x, int y, uint elevation);
  113. void _floodFillElevation(int x, int y, uint elevation);
  114. void floodFillCollisionElevation(int x, int y, uint collision, uint elevation);
  115. void _floodFillCollisionElevation(int x, int y, uint collision, uint elevation);
  116. History<Blockdata*> history;
  117. void undo();
  118. void redo();
  119. void commit();
  120. QString object_events_label;
  121. QString warps_label;
  122. QString coord_events_label;
  123. QString bg_events_label;
  124. QList<ObjectEvent*> object_events;
  125. QList<Warp*> warps;
  126. QList<CoordEvent*> coord_events;
  127. QList<Sign*> signs;
  128. QList<HiddenItem*> hidden_items;
  129. QList<Connection*> connections;
  130. QPixmap renderConnection(Connection);
  131. QImage border_image;
  132. QPixmap border_pixmap;
  133. Blockdata *border;
  134. Blockdata *cached_border;
  135. QPixmap renderBorder();
  136. void cacheBorder();
  137. signals:
  138. public slots:
  139. };
  140. #endif // MAP_H