32 lines
802 B
C++
32 lines
802 B
C++
#pragma once
|
|
|
|
#include <modules/Maps.h>
|
|
#include <df/coord.h>
|
|
#include <df/tiletype.h>
|
|
#include <modules/EventManager.h> //hash functions (they should probably get moved at this point, the ones that aren't specifically for EM anyway)
|
|
|
|
#include <unordered_map>
|
|
|
|
class TileCache {
|
|
private:
|
|
TileCache() = default;
|
|
std::unordered_map<df::coord, df::tiletype> locations;
|
|
public:
|
|
static TileCache& Get() {
|
|
static TileCache instance;
|
|
return instance;
|
|
}
|
|
|
|
void cache(const df::coord &pos, df::tiletype type) {
|
|
locations.emplace(pos, type);
|
|
}
|
|
|
|
void uncache(const df::coord &pos) {
|
|
locations.erase(pos);
|
|
}
|
|
|
|
bool hasChanged(const df::coord &pos, const df::tiletype &type) {
|
|
return locations.count(pos) && type != locations[pos];
|
|
}
|
|
};
|