~flosoft/s25rttr/trunk

« back to all changes in this revision

Viewing changes to src/Loader.h

  • Committer: FloSoft
  • Date: 2014-04-25 15:35:50 UTC
  • Revision ID: flosoft@siedler25.org-20140425153550-9muu4vodhlqu58m0
committing subversion revision 9357 by FloSoft
astyle

modified:
s25client/trunk/
s25client/trunk/contrib/lua/lin32/include/
s25client/trunk/contrib/lua/lin64/include/
s25client/trunk/contrib/lua/mac/include/
s25client/trunk/contrib/lua/win32/include/
s25client/trunk/contrib/lua/win64/include/
s25client/trunk/driver/audio/SDL/src/
s25client/trunk/driver/src/
s25client/trunk/driver/video/GLFW/src/
s25client/trunk/driver/video/SDL/src/
s25client/trunk/driver/video/WinAPI/src/
s25client/trunk/src/
s25client/trunk/win32/
s25client/trunk/win32/prebuild-mutex/src/

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// $Id: Loader.h 9199 2014-02-27 10:21:26Z marcus $
 
1
// $Id: Loader.h 9357 2014-04-25 15:35:25Z FloSoft $
2
2
//
3
3
// Copyright (c) 2005 - 2011 Settlers Freaks (sf-team at siedler25.org)
4
4
//
33
33
/// Loader Klasse.
34
34
class Loader : public Singleton<Loader>
35
35
{
36
 
public:
37
 
        /// Konstruktor von @p Loader.
38
 
        Loader(void);
39
 
        /// Desktruktor von @p Loader.
40
 
        ~Loader(void);
41
 
 
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);
48
 
        void fillCaches();
49
 
        /// L�dt das Terrain.
50
 
        bool CreateTerrainTextures(void);
51
 
 
52
 
        /// L�dt die Settings.
53
 
        bool LoadSettings();
54
 
        /// Speichert die Settings.
55
 
        bool SaveSettings();
56
 
 
57
 
protected:
58
 
        /// L�dt alle Sounds.
59
 
        inline bool LoadSounds();
60
 
 
61
 
private:
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);
67
 
 
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);
71
 
 
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);
74
 
 
75
 
public:
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()) ); }
88
 
 
89
 
        // should not use this!
90
 
        const std::map<std::string, libsiedler2::ArchivInfo> &GetFiles(void) const { return files; }
91
 
 
92
 
private:
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;
98
 
 
99
 
public:
100
 
        libsiedler2::ArchivInfo sng_lst;
101
 
 
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;
108
 
 
109
 
        glSmartTexturePacker *stp;
110
 
 
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];
 
36
    public:
 
37
        /// Konstruktor von @p Loader.
 
38
        Loader(void);
 
39
        /// Desktruktor von @p Loader.
 
40
        ~Loader(void);
 
41
 
 
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);
 
48
        void fillCaches();
 
49
        /// L�dt das Terrain.
 
50
        bool CreateTerrainTextures(void);
 
51
 
 
52
        /// L�dt die Settings.
 
53
        bool LoadSettings();
 
54
        /// Speichert die Settings.
 
55
        bool SaveSettings();
 
56
 
 
57
    protected:
 
58
        /// L�dt alle Sounds.
 
59
        inline bool LoadSounds();
 
60
 
 
61
    private:
 
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);
 
67
 
 
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);
 
71
 
 
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);
 
74
 
 
75
    public:
 
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()) ); }
 
88
 
 
89
        // should not use this!
 
90
        const std::map<std::string, libsiedler2::ArchivInfo> &GetFiles(void) const { return files; }
 
91
 
 
92
    private:
 
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;
 
98
 
 
99
    public:
 
100
        libsiedler2::ArchivInfo sng_lst;
 
101
 
 
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;
 
108
 
 
109
        glSmartTexturePacker* stp;
 
110
 
 
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];
124
124
};
125
125
 
126
126
///////////////////////////////////////////////////////////////////////////////