30#ifndef HORIZON_LIBRARIES_MAPCACHE_HPP
31#define HORIZON_LIBRARIES_MAPCACHE_HPP
37#include <boost/optional.hpp>
38#include <unordered_map>
91 auto it =
maps.find(name);
97 boost::optional<map_data>
getMap(std::string name)
99 auto it =
maps.find(name);
101 if (it !=
maps.end())
102 return boost::optional<map_data>(it->second);
104 return boost::optional<map_data>();
109 std::map<std::string, map_data>
maps;
189 std::pair<uint8_t, grf_load_result_type>
LoadGRFs();
217 const boost::filesystem::path &
getGRFPath(uint8_t
id) {
return _grfs[id].getGRFPath(); }
237 std::unordered_map<uint8_t, GRF>
_grfs;
grf_read_error_type
Definition: GRF.hpp:66
mcache_grf_config_error_type
Definition: MapCache.hpp:134
@ MCACHE_GRF_CONF_OK
Definition: MapCache.hpp:135
@ MCACHE_GRF_CONF_INVALID_VALUE_TYPE
Definition: MapCache.hpp:138
@ MCACHE_GRF_CONF_INVALID_FILE
Definition: MapCache.hpp:136
@ MCACHE_GRF_CONF_PARSE_ERROR
Definition: MapCache.hpp:137
mcache_map_cell_type
Definition: MapCache.hpp:153
@ MAP_CELL_WALKABLE_UNDER_WATER
Definition: MapCache.hpp:155
@ MAP_CELL_WALKABLE
Definition: MapCache.hpp:154
mcache_import_error_type
Definition: MapCache.hpp:142
@ MCACHE_IMPORT_INVALID_CHECKSUM
Definition: MapCache.hpp:146
@ MCACHE_IMPORT_NONEXISTENT_FILE
Definition: MapCache.hpp:144
@ MCACHE_IMPORT_OK
Definition: MapCache.hpp:143
@ MCACHE_IMPORT_READ_ERROR
Definition: MapCache.hpp:145
@ MCACHE_IMPORT_DECOMPRESS_ERROR
Definition: MapCache.hpp:147
@ MCACHE_IMPORT_MAPINFO_ERROR
Definition: MapCache.hpp:148
@ MCACHE_IMPORT_CELLINFO_ERROR
Definition: MapCache.hpp:149
mcache_error_type
Definition: MapCache.hpp:116
@ MCACHE_INVALID_OUTPUT_PATH
Definition: MapCache.hpp:120
@ MCACHE_INVALID_GRF_PATH
Definition: MapCache.hpp:118
@ MCACHE_CONFIG_READ_ERROR
Definition: MapCache.hpp:121
@ MCACHE_INVALID_CONFIG_PATH
Definition: MapCache.hpp:119
@ MCACHE_OK
Definition: MapCache.hpp:117
@ MCACHE_GRF_LOAD_ERROR
Definition: MapCache.hpp:123
@ MCACHE_GRF_CONFIG_READ_ERROR
Definition: MapCache.hpp:122
mcache_config_error_type
Definition: MapCache.hpp:127
@ MCACHE_CONFIG_PARSE_ERROR
Definition: MapCache.hpp:129
@ MCACHE_CONFIG_INVALID_VALUE_TYPE
Definition: MapCache.hpp:130
@ MCACHE_CONFIG_OK
Definition: MapCache.hpp:128
Definition: MapCache.hpp:164
const std::unordered_map< uint8_t, GRF > & getGRFs()
Definition: MapCache.hpp:232
bool getVerbose()
Definition: MapCache.hpp:227
void unsetVerbose()
Definition: MapCache.hpp:226
boost::filesystem::path _resource_path
Definition: MapCache.hpp:235
int getCompressionLevel()
Definition: MapCache.hpp:202
boost::filesystem::path _map_list_path
Definition: MapCache.hpp:234
int _compression_level
Definition: MapCache.hpp:238
std::shared_ptr< map_cache > m_cache
Definition: MapCache.hpp:241
const boost::filesystem::path & getGRFListPath() const
Definition: MapCache.hpp:210
void PrintCacheForMap(std::string const &map_name)
Definition: MapCache.cpp:304
bool CreateNewCacheWithHeader()
void setVerbose()
Definition: MapCache.hpp:225
void setResourcePath(std::string const &path)
Definition: MapCache.hpp:222
bool AppendToCache(std::string const &name)
bool GetMapFromGRF(GRF &grf, std::string const &name)
Reads a map from GRF's GAT and RSW files.
Definition: MapCache.cpp:423
mcache_error_type initialize()
Definition: MapCache.cpp:146
mcache_config_error_type ReadMapListConfig()
Definition: MapCache.cpp:172
std::unordered_map< uint8_t, GRF > _grfs
Definition: MapCache.hpp:237
bool BuildExternalCache()
Definition: MapCache.cpp:349
void setMapListPath(std::string const &path)
Definition: MapCache.hpp:207
void setMapCachePath(std::string const &file)
Definition: MapCache.hpp:199
boost::filesystem::path & getMapCachePath()
Definition: MapCache.hpp:198
GRF & getGRF(uint8_t id)
Definition: MapCache.hpp:194
MapCache()
Definition: MapCache.cpp:46
void setCompressionLevel(int level)
Definition: MapCache.hpp:203
const boost::filesystem::path & getResourcePath()
Definition: MapCache.hpp:221
int BuildInternalCache()
Definition: MapCache.cpp:284
~MapCache()
Definition: MapCache.cpp:52
void addGRF(uint8_t id, GRF &grf)
Definition: MapCache.hpp:195
std::pair< uint8_t, grf_load_result_type > LoadGRFs()
Definition: MapCache.cpp:273
const boost::filesystem::path & getGRFPath(uint8_t id)
Definition: MapCache.hpp:217
bool ParseGRFReadResult(GRF &grf, std::string const &filename, grf_read_error_type error)
Definition: MapCache.cpp:395
std::map< std::string, map_data > _map_cache_data
Definition: MapCache.hpp:239
void setGRFPath(uint8_t id, std::string const &path)
Definition: MapCache.hpp:218
const boost::filesystem::path & getMapListPath() const
Definition: MapCache.hpp:206
mcache_grf_config_error_type ReadGRFListConfig()
Definition: MapCache.cpp:221
std::vector< std::string > _map_list
Definition: MapCache.hpp:240
std::shared_ptr< map_cache > getMCache()
Definition: MapCache.hpp:230
boost::filesystem::path _map_cache_path
Definition: MapCache.hpp:236
bool Exists()
Definition: MapCache.cpp:166
void setGRFListPath(std::string const &path)
Definition: MapCache.hpp:211
mcache_import_error_type ImportFromCacheFile()
Definition: MapCache.cpp:56
boost::filesystem::path _grf_list_path
Definition: MapCache.hpp:235
bool _verbose
Definition: MapCache.hpp:242
void addToMapList(std::string const &map)
Definition: MapCache.hpp:214
size_t count(GridTypeListContainer< SPECIFIC_TYPE > const &elements, SPECIFIC_TYPE *)
Definition: GridReferenceContainer.hpp:100
Definition: Element.hpp:7
Definition: MapCache.hpp:84
void removeMap(std::string &name)
Definition: MapCache.hpp:89
std::map< std::string, map_data > maps
Definition: MapCache.hpp:109
std::size_t getMapCount()
Definition: MapCache.hpp:107
mapcache_header & getHeader()
Definition: MapCache.hpp:85
boost::optional< map_data > getMap(std::string name)
Definition: MapCache.hpp:97
void addMap(map_data &data)
Definition: MapCache.hpp:88
mapcache_header _header
Definition: MapCache.hpp:112
void setHeader(mapcache_header &header)
Definition: MapCache.hpp:86
Definition: MapCache.hpp:72
uint16_t height()
Definition: MapCache.hpp:76
std::vector< uint8_t > cells
Definition: MapCache.hpp:80
std::string name()
Definition: MapCache.hpp:74
uint16_t width()
Definition: MapCache.hpp:75
map_info info
Definition: MapCache.hpp:79
uint32_t size()
Definition: MapCache.hpp:77
const std::vector< uint8_t > & getCells()
Definition: MapCache.hpp:73
Definition: MapCache.hpp:63
int16_t total_x
Definition: MapCache.hpp:65
char name[12]
Definition: MapCache.hpp:64
uint32_t length
Definition: MapCache.hpp:67
int16_t total_y
Definition: MapCache.hpp:66