#include "common_irrlicht.h"
#include "mapnode.h"
-#include "mapblock_nodemod.h"
#include "constants.h"
#include "voxel.h"
+#include "utility.h" // Needed for UniqueQueue, a member of Map
+#include "modifiedstate.h"
extern "C" {
#include "sqlite3.h"
class ClientMapSector;
class MapBlock;
class NodeMetadata;
+class IGameDef;
namespace mapgen{
struct BlockMakeData;
{
public:
- Map(std::ostream &dout);
+ Map(std::ostream &dout, IGameDef *gamedef);
virtual ~Map();
/*virtual u16 nodeContainerId() const
These handle lighting but not faces.
*/
void addNodeAndUpdate(v3s16 p, MapNode n,
- core::map<v3s16, MapBlock*> &modified_blocks, std::string &player_name);
+ core::map<v3s16, MapBlock*> &modified_blocks);
void removeNodeAndUpdate(v3s16 p,
core::map<v3s16, MapBlock*> &modified_blocks);
virtual void beginSave() {return;};
virtual void endSave() {return;};
- virtual void save(bool only_changed){assert(0);};
+ virtual void save(ModifiedState save_level){assert(0);};
// Server implements this.
// Client leaves it as no-op.
protected:
- std::ostream &m_dout;
+ std::ostream &m_dout; // A bit deprecated, could be removed
+
+ IGameDef *m_gamedef;
core::map<MapEventReceiver*, bool> m_event_receivers;
/*
savedir: directory to which map data should be saved
*/
- ServerMap(std::string savedir);
+ ServerMap(std::string savedir, IGameDef *gamedef);
~ServerMap();
s32 mapType() const
void beginSave();
void endSave();
- void save(bool only_changed);
+ void save(ModifiedState save_level);
//void loadAll();
void listAllLoadableBlocks(core::list<v3s16> &dst);
u64 getSeed(){ return m_seed; }
private:
- // Seed used for all kinds of randomness
+ // Seed used for all kinds of randomness in generation
u64 m_seed;
-
+
std::string m_savedir;
bool m_map_saving_enabled;
};
class Client;
+class ITextureSource;
/*
ClientMap
public:
ClientMap(
Client *client,
+ IGameDef *gamedef,
MapDrawControl &control,
scene::ISceneNode* parent,
scene::ISceneManager* mgr,
void renderPostFx();
- /*
- Methods for setting temporary modifications to nodes for
- drawing.
-
- Returns true if something changed.
-
- All blocks whose mesh could have been changed are inserted
- to affected_blocks.
- */
- bool setTempMod(v3s16 p, NodeMod mod,
- core::map<v3s16, MapBlock*> *affected_blocks=NULL);
- bool clearTempMod(v3s16 p,
- core::map<v3s16, MapBlock*> *affected_blocks=NULL);
- // Efficient implementation needs a cache of TempMods
- //void clearTempMods();
-
- void expireMeshes(bool only_daynight_diffed);
-
- /*
- Update the faces of the given block and blocks on the
- leading edge.
- */
- void updateMeshes(v3s16 blockpos, u32 daynight_ratio);
-
- // Update meshes that touch the node
- //void updateNodeMeshes(v3s16 nodepos, u32 daynight_ratio);
-
// For debug printing
virtual void PrintInfo(std::ostream &out);