34
34
class Loader : public Singleton<Loader>
37
/// Konstruktor von @p Loader.
39
/// Desktruktor von @p Loader.
42
/// L�dt alle allgemeinen Dateien.
43
bool LoadFilesAtStart(void);
44
/// L�dt die Spieldateien.
45
bool LoadFilesAtGame(unsigned char gfxset, bool *nations);
46
/// L�dt Dateien von Addons.
47
bool LoadFilesFromAddon(const AddonId id);
50
bool CreateTerrainTextures(void);
52
/// L�dt die Settings.
54
/// Speichert die Settings.
59
inline bool LoadSounds();
62
bool LoadFile(const std::string& pfad, const libsiedler2::ArchivItem_Palette *palette = NULL, bool load_always = true);
63
bool LoadFile(const std::string& pfad, const libsiedler2::ArchivItem_Palette *palette, libsiedler2::ArchivInfo *archiv);
64
bool LoadArchiv(const std::string& pfad, const libsiedler2::ArchivItem_Palette *palette, libsiedler2::ArchivInfo *archiv);
65
void ExtractTexture(libsiedler2::ArchivInfo *destination, Rect &rect);
66
void ExtractAnimatedTexture(libsiedler2::ArchivInfo *destination, Rect &rect, unsigned char color_count, unsigned char start_index);
68
bool LoadFilesFromArray(const unsigned int files_count, const unsigned int *files, bool load_always = true);
69
bool LoadLsts(unsigned int dir);
70
bool LoadFileOrDir(const std::string& file, const unsigned int file_id, bool load_always);
72
static bool SortFilesHelper(const std::string& lhs, const std::string& rhs);
73
static std::vector<std::string> ExplodeString(std::string const &line, const char delim, const unsigned int max = 0xFFFFFFFF);
76
inline glArchivItem_Bitmap *GetImageN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>( files[file].get(nr) ); }
77
inline glArchivItem_Font *GetFontN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Font*>( files[file].get(nr) ); }
78
inline libsiedler2::ArchivItem_Palette *GetPaletteN(std::string file, unsigned int nr = 0) { return dynamic_cast<libsiedler2::ArchivItem_Palette*>( files[file].get(nr) ); }
79
inline glArchivItem_Sound *GetSoundN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Sound*>( files[file].get(nr) ); }
80
inline const char *GetTextN(std::string file, unsigned int nr) { return dynamic_cast<libsiedler2::ArchivItem_Text*>( files[file].get(nr) ) ? dynamic_cast<libsiedler2::ArchivItem_Text*>( files[file].get(nr) )->getText() : "text missing"; }
81
inline libsiedler2::ArchivInfo *GetInfoN(std::string file) { return dynamic_cast<libsiedler2::ArchivInfo*>( &files[file] ); }
82
inline glArchivItem_Bob *GetBobN(std::string file) { return dynamic_cast<glArchivItem_Bob*>( files[file].get(0) ); };
83
inline glArchivItem_Bitmap *GetNationImageN(unsigned int nation, unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(nation_gfx[nation]->get(nr)); }
84
inline glArchivItem_Bitmap *GetMapImageN(unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(map_gfx->get(nr)); }
85
inline glArchivItem_Bitmap *GetTexImageN(unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(tex_gfx->get(nr)); }
86
inline libsiedler2::ArchivItem_Palette *GetTexPaletteN(unsigned int nr) { return dynamic_cast<libsiedler2::ArchivItem_Palette*>(tex_gfx->get(nr)); }
87
inline libsiedler2::ArchivItem_Ini *GetSettingsIniN(std::string name) { return static_cast<libsiedler2::ArchivItem_Ini*>( GetInfoN(CONFIG_NAME)->find(name.c_str()) ); }
89
// should not use this!
90
const std::map<std::string, libsiedler2::ArchivInfo> &GetFiles(void) const { return files; }
93
std::map<std::string, libsiedler2::ArchivInfo> files;
94
unsigned char lastgfx;
95
libsiedler2::ArchivInfo *nation_gfx[NATION_COUNT];
96
libsiedler2::ArchivInfo *map_gfx;
97
libsiedler2::ArchivInfo *tex_gfx;
100
libsiedler2::ArchivInfo sng_lst;
102
libsiedler2::ArchivInfo textures;
103
libsiedler2::ArchivInfo water;
104
libsiedler2::ArchivInfo lava;
105
libsiedler2::ArchivInfo borders;
106
libsiedler2::ArchivInfo roads;
107
libsiedler2::ArchivInfo roads_points;
109
glSmartTexturePacker *stp;
111
static glSmartBitmap animal_cache[8][6][9];
112
static glSmartBitmap building_cache[NATION_COUNT][40][2];
113
static glSmartBitmap flag_cache[NATION_COUNT][3][8];
114
static glSmartBitmap building_flag_cache[8];
115
static glSmartBitmap tree_cache[9][15];
116
static glSmartBitmap bob_jobs_cache[NATION_COUNT][33][6][8];
117
static glSmartBitmap granite_cache[2][6];
118
static glSmartBitmap grainfield_cache[2][4];
119
static glSmartBitmap carrier_cache[35][6][8][2];
120
static glSmartBitmap boundary_stone_cache[NATION_COUNT];
121
static glSmartBitmap boat_cache[6][8];
122
static glSmartBitmap donkey_cache[6][8];
123
static glSmartBitmap gateway_cache[5];
37
/// Konstruktor von @p Loader.
39
/// Desktruktor von @p Loader.
42
/// L�dt alle allgemeinen Dateien.
43
bool LoadFilesAtStart(void);
44
/// L�dt die Spieldateien.
45
bool LoadFilesAtGame(unsigned char gfxset, bool* nations);
46
/// L�dt Dateien von Addons.
47
bool LoadFilesFromAddon(const AddonId id);
50
bool CreateTerrainTextures(void);
52
/// L�dt die Settings.
54
/// Speichert die Settings.
59
inline bool LoadSounds();
62
bool LoadFile(const std::string& pfad, const libsiedler2::ArchivItem_Palette* palette = NULL, bool load_always = true);
63
bool LoadFile(const std::string& pfad, const libsiedler2::ArchivItem_Palette* palette, libsiedler2::ArchivInfo* archiv);
64
bool LoadArchiv(const std::string& pfad, const libsiedler2::ArchivItem_Palette* palette, libsiedler2::ArchivInfo* archiv);
65
void ExtractTexture(libsiedler2::ArchivInfo* destination, Rect& rect);
66
void ExtractAnimatedTexture(libsiedler2::ArchivInfo* destination, Rect& rect, unsigned char color_count, unsigned char start_index);
68
bool LoadFilesFromArray(const unsigned int files_count, const unsigned int* files, bool load_always = true);
69
bool LoadLsts(unsigned int dir);
70
bool LoadFileOrDir(const std::string& file, const unsigned int file_id, bool load_always);
72
static bool SortFilesHelper(const std::string& lhs, const std::string& rhs);
73
static std::vector<std::string> ExplodeString(std::string const& line, const char delim, const unsigned int max = 0xFFFFFFFF);
76
inline glArchivItem_Bitmap* GetImageN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>( files[file].get(nr) ); }
77
inline glArchivItem_Font* GetFontN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Font*>( files[file].get(nr) ); }
78
inline libsiedler2::ArchivItem_Palette* GetPaletteN(std::string file, unsigned int nr = 0) { return dynamic_cast<libsiedler2::ArchivItem_Palette*>( files[file].get(nr) ); }
79
inline glArchivItem_Sound* GetSoundN(std::string file, unsigned int nr) { return dynamic_cast<glArchivItem_Sound*>( files[file].get(nr) ); }
80
inline const char* GetTextN(std::string file, unsigned int nr) { return dynamic_cast<libsiedler2::ArchivItem_Text*>( files[file].get(nr) ) ? dynamic_cast<libsiedler2::ArchivItem_Text*>( files[file].get(nr) )->getText() : "text missing"; }
81
inline libsiedler2::ArchivInfo* GetInfoN(std::string file) { return dynamic_cast<libsiedler2::ArchivInfo*>( &files[file] ); }
82
inline glArchivItem_Bob* GetBobN(std::string file) { return dynamic_cast<glArchivItem_Bob*>( files[file].get(0) ); };
83
inline glArchivItem_Bitmap* GetNationImageN(unsigned int nation, unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(nation_gfx[nation]->get(nr)); }
84
inline glArchivItem_Bitmap* GetMapImageN(unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(map_gfx->get(nr)); }
85
inline glArchivItem_Bitmap* GetTexImageN(unsigned int nr) { return dynamic_cast<glArchivItem_Bitmap*>(tex_gfx->get(nr)); }
86
inline libsiedler2::ArchivItem_Palette* GetTexPaletteN(unsigned int nr) { return dynamic_cast<libsiedler2::ArchivItem_Palette*>(tex_gfx->get(nr)); }
87
inline libsiedler2::ArchivItem_Ini* GetSettingsIniN(std::string name) { return static_cast<libsiedler2::ArchivItem_Ini*>( GetInfoN(CONFIG_NAME)->find(name.c_str()) ); }
89
// should not use this!
90
const std::map<std::string, libsiedler2::ArchivInfo> &GetFiles(void) const { return files; }
93
std::map<std::string, libsiedler2::ArchivInfo> files;
94
unsigned char lastgfx;
95
libsiedler2::ArchivInfo* nation_gfx[NATION_COUNT];
96
libsiedler2::ArchivInfo* map_gfx;
97
libsiedler2::ArchivInfo* tex_gfx;
100
libsiedler2::ArchivInfo sng_lst;
102
libsiedler2::ArchivInfo textures;
103
libsiedler2::ArchivInfo water;
104
libsiedler2::ArchivInfo lava;
105
libsiedler2::ArchivInfo borders;
106
libsiedler2::ArchivInfo roads;
107
libsiedler2::ArchivInfo roads_points;
109
glSmartTexturePacker* stp;
111
static glSmartBitmap animal_cache[8][6][9];
112
static glSmartBitmap building_cache[NATION_COUNT][40][2];
113
static glSmartBitmap flag_cache[NATION_COUNT][3][8];
114
static glSmartBitmap building_flag_cache[8];
115
static glSmartBitmap tree_cache[9][15];
116
static glSmartBitmap bob_jobs_cache[NATION_COUNT][33][6][8];
117
static glSmartBitmap granite_cache[2][6];
118
static glSmartBitmap grainfield_cache[2][4];
119
static glSmartBitmap carrier_cache[35][6][8][2];
120
static glSmartBitmap boundary_stone_cache[NATION_COUNT];
121
static glSmartBitmap boat_cache[6][8];
122
static glSmartBitmap donkey_cache[6][8];
123
static glSmartBitmap gateway_cache[5];
126
126
///////////////////////////////////////////////////////////////////////////////