Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
TilesetCache.h
Go to the documentation of this file.
1/*
2 * TilesetCache.h - Cache for loaded external tilesets
3 *
4 * Singleton cache that stores loaded tilesets to avoid
5 * re-parsing the same tileset file multiple times.
6 * Useful when multiple maps reference the same tileset.
7 */
8
9#pragma once
10
11#include "TiledStructures.h"
12#include <string>
13#include <map>
14#include <memory>
15#include <mutex>
16
17namespace Olympe {
18namespace Tiled {
19
21 {
22 public:
23 // Get singleton instance
24 static TilesetCache& GetInstance();
25
26 // Get tileset from cache or load if not cached
27 // Returns nullptr on failure
28 std::shared_ptr<TiledTileset> GetTileset(const std::string& filepath);
29
30 // Add tileset to cache
31 void AddTileset(const std::string& filepath, std::shared_ptr<TiledTileset> tileset);
32
33 // Clear all cached tilesets
34 void Clear();
35
36 // Check if tileset is cached
37 bool HasTileset(const std::string& filepath) const;
38
39 private:
40 TilesetCache() = default;
41 ~TilesetCache() = default;
42 TilesetCache(const TilesetCache&) = delete;
44
45 std::map<std::string, std::shared_ptr<TiledTileset>> cache_;
46 mutable std::mutex mutex_;
47 };
48
49} // namespace Tiled
50} // namespace Olympe
std::map< std::string, std::shared_ptr< TiledTileset > > cache_
TilesetCache & operator=(const TilesetCache &)=delete
TilesetCache(const TilesetCache &)=delete
std::shared_ptr< TiledTileset > GetTileset(const std::string &filepath)
void AddTileset(const std::string &filepath, std::shared_ptr< TiledTileset > tileset)
bool HasTileset(const std::string &filepath) const
static TilesetCache & GetInstance()