/*
-Minetest-c55
-Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-/*
-(c) 2010 Perttu Ahola <celeron55@gmail.com>
-*/
-
#ifndef MAPSECTOR_HEADER
#define MAPSECTOR_HEADER
-#include <jmutex.h>
-#include "common_irrlicht.h"
-#include "exceptions.h"
+#include "irrlichttypes.h"
+#include "irr_v2d.h"
+#include "mapblock.h"
#include <ostream>
+#include <map>
+#include <vector>
-class MapBlock;
class Map;
class IGameDef;
class MapSector
{
public:
-
+
MapSector(Map *parent, v2s16 pos, IGameDef *gamedef);
virtual ~MapSector();
MapBlock * createBlankBlock(s16 y);
void insertBlock(MapBlock *block);
-
+
void deleteBlock(MapBlock *block);
-
- void getBlocks(core::list<MapBlock*> &dest);
-
+
+ void getBlocks(MapBlockVect &dest);
+
+ bool empty() const { return m_blocks.empty(); }
+
// Always false at the moment, because sector contains no metadata.
bool differs_from_disk;
protected:
-
+
// The pile of MapBlocks
- core::map<s16, MapBlock*> m_blocks;
+ UNORDERED_MAP<s16, MapBlock*> m_blocks;
Map *m_parent;
// Position on parent (in MapBlock widths)
v2s16 m_pos;
IGameDef *m_gamedef;
-
+
// Last-used block is cached here for quicker access.
- // Be sure to set this to NULL when the cached block is deleted
+ // Be sure to set this to NULL when the cached block is deleted
MapBlock *m_block_cache;
s16 m_block_cache_y;
-
+
/*
Private methods
*/
public:
ServerMapSector(Map *parent, v2s16 pos, IGameDef *gamedef);
~ServerMapSector();
-
+
u32 getId() const
{
return MAPSECTOR_SERVER;
*/
void serialize(std::ostream &os, u8 version);
-
+
static ServerMapSector* deSerialize(
std::istream &is,
Map *parent,
v2s16 p2d,
- core::map<v2s16, MapSector*> & sectors,
+ std::map<v2s16, MapSector*> & sectors,
IGameDef *gamedef
);
-
+
private:
};
public:
ClientMapSector(Map *parent, v2s16 pos, IGameDef *gamedef);
~ClientMapSector();
-
+
u32 getId() const
{
return MAPSECTOR_CLIENT;
private:
};
#endif
-
+
#endif