diff options
| author | ilotterytea <iltsu@alright.party> | 2025-02-01 21:34:22 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-02-01 21:34:22 +0500 |
| commit | 30e261ce0220110db201e522e751b1c82c0b5683 (patch) | |
| tree | 5d0c32423c8e97da986d68400aaa18b7a425abd4 /src | |
| parent | fcb69fd43a029db9f230f701a51338a9fe2ea60b (diff) | |
feat: tileset
Diffstat (limited to 'src')
| -rw-r--r-- | src/tileset.cpp | 28 | ||||
| -rw-r--r-- | src/tileset.hpp | 30 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/tileset.cpp b/src/tileset.cpp new file mode 100644 index 0000000..8651a8f --- /dev/null +++ b/src/tileset.cpp @@ -0,0 +1,28 @@ +#include "tileset.hpp" + +namespace silly::editor { + void Tileset::add_tile(const std::string &path, TilesetTileType type) { + TilesetTile tile; + tile.type = type; + tile.id = this->tiles.size(); + + if (!tile.texture.loadFromFile(path)) { + // TODO: add logging here + return; + } + + this->tiles.push_back(tile); + } + + void Tileset::remove_tile(const TilesetTile &tile) { + this->tiles.resize(std::distance( + this->tiles.begin(), + std::remove_if( + this->tiles.begin(), this->tiles.end(), + [&tile](const TilesetTile &t) { return t.id == tile.id; }))); + } + + const std::vector<TilesetTile> &Tileset::get_tiles() const { + return this->tiles; + } +}
\ No newline at end of file diff --git a/src/tileset.hpp b/src/tileset.hpp new file mode 100644 index 0000000..2b65356 --- /dev/null +++ b/src/tileset.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include <SFML/Graphics/Texture.hpp> +#include <string> +#include <vector> + +#define TILE_WIDTH 16 +#define TILE_HEIGHT 16 + +namespace silly::editor { + enum TilesetTileType { TILE_FLOOR = 0, TILE_WALL }; + struct TilesetTile { + int id; + sf::Texture texture; + TilesetTileType type; + }; + + class Tileset { + public: + Tileset() = default; + ~Tileset() = default; + + void add_tile(const std::string &path, TilesetTileType type); + void remove_tile(const TilesetTile &tile); + const std::vector<TilesetTile> &get_tiles() const; + + private: + std::vector<TilesetTile> tiles; + }; +}
\ No newline at end of file |
