00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIFE_MAPLOADER_H_
00023 #define FIFE_MAPLOADER_H_
00024
00025
00026 #include <string>
00027 #include <vector>
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "imaploader.h"
00037 #include "ianimationloader.h"
00038 #include "percentdonelistener.h"
00039
00040 namespace FIFE {
00041 class Model;
00042 class Map;
00043 class VFS;
00044 class Layer;
00045 class ImageManager;
00046 class RenderBackend;
00047 class PercentDoneListener;
00048
00049 class MapLoader : public IMapLoader {
00050 public:
00051 MapLoader(Model* model, VFS* vfs, ImageManager* imageManager, RenderBackend* renderBackend);
00052
00053 ~MapLoader();
00054
00058 void setObjectLoader(const FIFE::ObjectLoaderPtr& objectLoader);
00059
00063 void setAnimationLoader(const FIFE::AnimationLoaderPtr& animationLoader);
00064
00068 void setAtlasLoader(const FIFE::AtlasLoaderPtr& atlasLoader);
00069
00073 bool isLoadable(const std::string& filename) const;
00074
00078 Map* load(const std::string& filename);
00079
00085 void loadImportFile(const std::string& file, const std::string& directory="");
00086
00091 void loadImportDirectory(const std::string& directory);
00092
00097 void addPercentDoneListener(PercentDoneListener* listener);
00098
00103 const std::string& getLoaderName() const;
00104
00105 private:
00106 Model* m_model;
00107 VFS* m_vfs;
00108 ImageManager* m_imageManager;
00109 ObjectLoaderPtr m_objectLoader;
00110 AtlasLoaderPtr m_atlasLoader;
00111 RenderBackend* m_renderBackend;
00112 PercentDoneCallback m_percentDoneListener;
00113
00114 std::string m_loaderName;
00115 std::string m_mapDirectory;
00116 std::vector<std::string> m_importDirectories;
00117
00118 };
00119
00124 MapLoader* createDefaultMapLoader(Model* model, VFS* vfs, ImageManager* imageManager, RenderBackend* renderBackend);
00125 }
00126
00127 #endif