summaryrefslogblamecommitdiffstats
path: root/src/MapManager.h
blob: 5da8be035390b2e1b552ea59004345170d9ddee5 (plain) (tree)






















                                         
              




                                                                
                    
















                                                                                              
                                                                                     






                                                                                               
                                                            

















                                               
                  


 

// MapManager.h





#pragma once





#include "Map.h"




typedef cItemCallback<cMap> cMapCallback;




// tolua_begin

/** Manages the in-game maps of a single world - Thread safe. */
class cMapManager
{
public:
	// tolua_end

	cMapManager(cWorld * a_World);

	/** Returns the map with the specified ID, NULL if out of range.
	 *
	 * WARNING: The returned map object is not thread safe.
	 */
	cMap * GetMapData(unsigned int a_ID);

	/** Creates a new map. Returns NULL on error */
	cMap * CreateMap(int a_CenterX, int a_CenterY, int a_Scale = 3);

	/** Calls the callback for the map with the specified ID.
	 *
	 * Returns true if the map was found and the callback called, false if map not found. 
	 * Callback return ignored.
	 */
	bool DoWithMap(unsigned int a_ID, cMapCallback & a_Callback); // tolua_export

	/** Calls the callback for each map. 
	 *
	 * Returns true if all maps processed, false if the callback aborted by returning true.
	 */
	bool ForEachMap(cMapCallback & a_Callback);

	unsigned int GetNumMaps(void) const; // tolua_export

	/** Loads the map data from the disk */
	void LoadMapData(void);

	/** Saves the map data to the disk */
	void SaveMapData(void);


private:

	typedef std::vector<cMap> cMapList;

	cCriticalSection m_CS;

	cMapList m_MapData;

	cWorld * m_World;

}; // tolua_export