diff options
Diffstat (limited to 'tools/mapedit/src/map.h')
| -rw-r--r-- | tools/mapedit/src/map.h | 72 |
1 files changed, 53 insertions, 19 deletions
| diff --git a/tools/mapedit/src/map.h b/tools/mapedit/src/map.h index 34dcb33..46e5790 100644 --- a/tools/mapedit/src/map.h +++ b/tools/mapedit/src/map.h | |||
| @@ -1,28 +1,17 @@ | |||
| 1 | #ifndef MAP_H | 1 | #ifndef MAP_H |
| 2 | #define MAP_H | 2 | #define MAP_H |
| 3 | 3 | ||
| 4 | class Map; | ||
| 5 | |||
| 6 | #include <string> | 4 | #include <string> |
| 7 | #include <exception> | 5 | #include <exception> |
| 8 | #include <utility> | 6 | #include <utility> |
| 9 | #include <list> | 7 | #include <list> |
| 10 | #include "object.h" | ||
| 11 | #include <memory> | 8 | #include <memory> |
| 12 | #include "world.h" | ||
| 13 | #include <wx/treectrl.h> | 9 | #include <wx/treectrl.h> |
| 14 | 10 | ||
| 11 | class MapObject; | ||
| 12 | class World; | ||
| 15 | class MapeditFrame; | 13 | class MapeditFrame; |
| 16 | 14 | ||
| 17 | const int TILE_WIDTH = 8; | ||
| 18 | const int TILE_HEIGHT = 8; | ||
| 19 | const int GAME_WIDTH = 320; | ||
| 20 | const int GAME_HEIGHT = 200; | ||
| 21 | const int MAP_WIDTH = GAME_WIDTH/TILE_WIDTH; | ||
| 22 | const int MAP_HEIGHT = GAME_HEIGHT/TILE_HEIGHT - 1; | ||
| 23 | const int PLAYER_WIDTH[5] = {10, 0, 0, 0, 0}; | ||
| 24 | const int PLAYER_HEIGHT[5] = {12, 0, 0, 0, 0}; | ||
| 25 | |||
| 26 | class MapLoadException: public std::exception | 15 | class MapLoadException: public std::exception |
| 27 | { | 16 | { |
| 28 | public: | 17 | public: |
| @@ -75,29 +64,54 @@ class Map { | |||
| 75 | Map& operator= (Map other); | 64 | Map& operator= (Map other); |
| 76 | friend void swap(Map& first, Map& second); | 65 | friend void swap(Map& first, Map& second); |
| 77 | 66 | ||
| 67 | enum class MoveType { | ||
| 68 | Wall, | ||
| 69 | Wrap, | ||
| 70 | Warp, | ||
| 71 | ReverseWarp | ||
| 72 | }; | ||
| 73 | |||
| 74 | static std::list<MoveType> listMoveTypes(); | ||
| 75 | static std::string stringForMoveType(MoveType type); | ||
| 76 | static bool moveTypeTakesMap(MoveType type); | ||
| 77 | static std::string shortForMoveType(MoveType type); | ||
| 78 | static MoveType moveTypeForShort(std::string str); | ||
| 79 | |||
| 78 | int getID() const; | 80 | int getID() const; |
| 79 | std::string getTitle() const; | 81 | std::string getTitle() const; |
| 80 | int getTileAt(int x, int y) const; | 82 | int getTileAt(int x, int y) const; |
| 81 | const std::list<std::shared_ptr<MapObjectEntry>>& getObjects() const; | 83 | const std::list<std::shared_ptr<MapObjectEntry>>& getObjects() const; |
| 82 | std::shared_ptr<Map> getLeftmap() const; | ||
| 83 | std::shared_ptr<Map> getRightmap() const; | ||
| 84 | wxTreeItemId getTreeItemId() const; | 84 | wxTreeItemId getTreeItemId() const; |
| 85 | std::list<std::shared_ptr<Map>> getChildren() const; | 85 | std::list<std::shared_ptr<Map>> getChildren() const; |
| 86 | bool getExpanded() const; | 86 | bool getExpanded() const; |
| 87 | World* getWorld() const; | 87 | World* getWorld() const; |
| 88 | bool getHidden() const; | 88 | bool getHidden() const; |
| 89 | MoveType getLeftMoveType() const; | ||
| 90 | MoveType getRightMoveType() const; | ||
| 91 | MoveType getUpMoveType() const; | ||
| 92 | MoveType getDownMoveType() const; | ||
| 93 | int getLeftMoveMapID() const; | ||
| 94 | int getRightMoveMapID() const; | ||
| 95 | int getUpMoveMapID() const; | ||
| 96 | int getDownMoveMapID() const; | ||
| 89 | 97 | ||
| 90 | void setTitle(std::string title, bool dirty = true); | 98 | void setTitle(std::string title, bool dirty = true); |
| 91 | void setTileAt(int x, int y, int tile, bool dirty = true); | 99 | void setTileAt(int x, int y, int tile, bool dirty = true); |
| 92 | void setMapdata(int* mapdata, bool dirty = true); | 100 | void setMapdata(int* mapdata, bool dirty = true); |
| 93 | void addObject(std::shared_ptr<MapObjectEntry> obj, bool dirty = true); | 101 | void addObject(std::shared_ptr<MapObjectEntry> obj, bool dirty = true); |
| 94 | void removeObject(std::shared_ptr<MapObjectEntry> obj, bool dirty = true); | 102 | void removeObject(std::shared_ptr<MapObjectEntry> obj, bool dirty = true); |
| 95 | void setLeftmap(int id, bool dirty = true); | ||
| 96 | void setRightmap(int id, bool dirty = true); | ||
| 97 | void setTreeItemId(wxTreeItemId id); | 103 | void setTreeItemId(wxTreeItemId id); |
| 98 | void addChild(int id); | 104 | void addChild(int id); |
| 99 | void setExpanded(bool exp); | 105 | void setExpanded(bool exp); |
| 100 | void setHidden(bool hid); | 106 | void setHidden(bool hid); |
| 107 | void setLeftMoveType(MoveType move, bool dirty = true); | ||
| 108 | void setRightMoveType(MoveType move, bool dirty = true); | ||
| 109 | void setUpMoveType(MoveType move, bool dirty = true); | ||
| 110 | void setDownMoveType(MoveType move, bool dirty = true); | ||
| 111 | void setLeftMoveMapID(int id, bool dirty = true); | ||
| 112 | void setRightMoveMapID(int id, bool dirty = true); | ||
| 113 | void setUpMoveMapID(int id, bool dirty = true); | ||
| 114 | void setDownMoveMapID(int id, bool dirty = true); | ||
| 101 | 115 | ||
| 102 | private: | 116 | private: |
| 103 | int id; | 117 | int id; |
| @@ -106,11 +120,31 @@ class Map { | |||
| 106 | int* mapdata; | 120 | int* mapdata; |
| 107 | std::string title {"Untitled Map"}; | 121 | std::string title {"Untitled Map"}; |
| 108 | std::list<int> children; | 122 | std::list<int> children; |
| 109 | int leftmap = -1; | ||
| 110 | int rightmap = -1; | ||
| 111 | wxTreeItemId treeItemId; | 123 | wxTreeItemId treeItemId; |
| 112 | bool expanded = false; | 124 | bool expanded = false; |
| 113 | bool hidden = false; | 125 | bool hidden = false; |
| 126 | MoveType leftType = MoveType::Wall; | ||
| 127 | MoveType rightType = MoveType::Wall; | ||
| 128 | MoveType upType = MoveType::Wall; | ||
| 129 | MoveType downType = MoveType::Wall; | ||
| 130 | int leftMap = 0; | ||
| 131 | int rightMap = 0; | ||
| 132 | int upMap = 0; | ||
| 133 | int downMap = 0; | ||
| 134 | }; | ||
| 135 | |||
| 136 | class MapPtrCtr : public wxTreeItemData { | ||
| 137 | public: | ||
| 138 | Map* map; | ||
| 139 | |||
| 140 | MapPtrCtr(Map* map) : map(map) {} | ||
| 141 | }; | ||
| 142 | |||
| 143 | class MoveTypeCtr { | ||
| 144 | public: | ||
| 145 | Map::MoveType type; | ||
| 146 | |||
| 147 | MoveTypeCtr(Map::MoveType type) : type(type) {} | ||
| 114 | }; | 148 | }; |
| 115 | 149 | ||
| 116 | #endif | 150 | #endif |
