Skip to content

Commit

Permalink
ServerEnvironment: Remove direct dependency on EmergeManager
Browse files Browse the repository at this point in the history
  • Loading branch information
kwolekr committed Feb 9, 2014
1 parent a0683b8 commit 89f7dc1
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 24 deletions.
10 changes: 1 addition & 9 deletions src/emerge.h
Expand Up @@ -70,15 +70,7 @@ struct BlockEmergeData {
u8 flags;
};

class IBackgroundBlockEmerger
{
public:
virtual bool enqueueBlockEmerge(u16 peer_id, v3s16 p,
bool allow_generate) = 0;
virtual ~IBackgroundBlockEmerger() {}
};

class EmergeManager : public IBackgroundBlockEmerger {
class EmergeManager {
public:
INodeDefManager *ndef;

Expand Down
9 changes: 2 additions & 7 deletions src/environment.cpp
Expand Up @@ -312,12 +312,10 @@ void ActiveBlockList::update(std::list<v3s16> &active_positions,
*/

ServerEnvironment::ServerEnvironment(ServerMap *map,
GameScripting *scriptIface,
IGameDef *gamedef, IBackgroundBlockEmerger *emerger):
GameScripting *scriptIface, IGameDef *gamedef):
m_map(map),
m_script(scriptIface),
m_gamedef(gamedef),
m_emerger(emerger),
m_random_spawn_timer(3),
m_send_recommended_timer(0),
m_active_block_interval_overload_skip(0),
Expand Down Expand Up @@ -1148,11 +1146,8 @@ void ServerEnvironment::step(float dtime)
{
v3s16 p = *i;

MapBlock *block = m_map->getBlockNoCreateNoEx(p);
MapBlock *block = m_map->getBlockOrEmerge(p);
if(block==NULL){
// Block needs to be fetched first
m_emerger->enqueueBlockEmerge(
PEER_ID_INEXISTENT, p, false);
m_active_blocks.m_list.erase(p);
continue;
}
Expand Down
6 changes: 1 addition & 5 deletions src/environment.h
Expand Up @@ -44,7 +44,6 @@ class ActiveBlockModifier;
class ServerActiveObject;
class ITextureSource;
class IGameDef;
class IBackgroundBlockEmerger;
class Map;
class ServerMap;
class ClientMap;
Expand Down Expand Up @@ -194,8 +193,7 @@ class ServerEnvironment : public Environment
{
public:
ServerEnvironment(ServerMap *map, GameScripting *scriptIface,
IGameDef *gamedef,
IBackgroundBlockEmerger *emerger);
IGameDef *gamedef);
~ServerEnvironment();

Map & getMap();
Expand Down Expand Up @@ -367,8 +365,6 @@ class ServerEnvironment : public Environment
GameScripting* m_script;
// Game definition
IGameDef *m_gamedef;
// Background block emerger (the EmergeManager, in practice)
IBackgroundBlockEmerger *m_emerger;
// Active object list
std::map<u16, ServerActiveObject*> m_active_objects;
// Outgoing network message buffer for active objects
Expand Down
16 changes: 14 additions & 2 deletions src/map.cpp
Expand Up @@ -3126,7 +3126,9 @@ MapBlock * ServerMap::emergeBlock(v3s16 p, bool create_blank)

return block;
}
/*if(allow_generate)

#if 0
if(allow_generate)
{
std::map<v3s16, MapBlock*> modified_blocks;
MapBlock *block = generateBlock(p, modified_blocks);
Expand All @@ -3149,11 +3151,21 @@ MapBlock * ServerMap::emergeBlock(v3s16 p, bool create_blank)

return block;
}
}*/
}
#endif

return NULL;
}

MapBlock *ServerMap::getBlockOrEmerge(v3s16 p3d)
{
MapBlock *block = getBlockNoCreateNoEx(p3d);
if (block == NULL)
m_emerge->enqueueBlockEmerge(PEER_ID_INEXISTENT, p3d, false);

return block;
}

void ServerMap::prepareBlock(MapBlock *block) {
ServerEnvironment *senv = &((Server *)m_gamedef)->getEnv();

Expand Down
8 changes: 8 additions & 0 deletions src/map.h
Expand Up @@ -424,6 +424,14 @@ class ServerMap : public Map
*/
MapBlock * emergeBlock(v3s16 p, bool create_blank=true);

/*
Try to get a block.
If it does not exist in memory, add it to the emerge queue.
- Memory
- Emerge Queue (deferred disk or generate)
*/
MapBlock *getBlockOrEmerge(v3s16 p3d);

// Carries out any initialization necessary before block is sent
void prepareBlock(MapBlock *block);

Expand Down
2 changes: 1 addition & 1 deletion src/server.cpp
Expand Up @@ -343,7 +343,7 @@ Server::Server(

// Initialize Environment
ServerMap *servermap = new ServerMap(path_world, this, m_emerge);
m_env = new ServerEnvironment(servermap, m_script, this, m_emerge);
m_env = new ServerEnvironment(servermap, m_script, this);

m_clients.setEnv(m_env);

Expand Down

0 comments on commit 89f7dc1

Please sign in to comment.