From abceeee92f99b84ebb79968269835a4f509bfb90 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 14 Nov 2011 00:19:48 +0200 Subject: Create framework for getting rid of global definitions of node/tool/item/whatever types --- src/environment.cpp | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'src/environment.cpp') diff --git a/src/environment.cpp b/src/environment.cpp index d9f24ede9..a7439e7bc 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "scriptapi.h" #include "mapnode_contentfeatures.h" #include "nodemetadata.h" +#include "main.h" // For g_settings, g_profiler #define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")" @@ -270,9 +271,11 @@ void ActiveBlockList::update(core::list &active_positions, ServerEnvironment */ -ServerEnvironment::ServerEnvironment(ServerMap *map, lua_State *L): +ServerEnvironment::ServerEnvironment(ServerMap *map, lua_State *L, + IGameDef *gamedef): m_map(map), m_lua(L), + m_gamedef(gamedef), m_random_spawn_timer(3), m_send_recommended_timer(0), m_game_time(0), @@ -312,7 +315,7 @@ void ServerEnvironment::serializePlayers(const std::string &savedir) //infostream<<"Checking player file "<deSerialize(is); + player->deSerialize(is, m_gamedef); } if(newplayer) @@ -1507,7 +1510,7 @@ u16 ServerEnvironment::addActiveObjectRaw(ServerActiveObject *object, // Register reference in scripting api (must be done before post-init) scriptapi_add_object_reference(m_lua, object); // Post-initialize object - object->addedToEnvironment(object->getId()); + object->addedToEnvironment(); return object->getId(); } @@ -1862,9 +1865,12 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete) ClientEnvironment */ -ClientEnvironment::ClientEnvironment(ClientMap *map, scene::ISceneManager *smgr): +ClientEnvironment::ClientEnvironment(ClientMap *map, scene::ISceneManager *smgr, + ITextureSource *texturesource, IGameDef *gamedef): m_map(map), - m_smgr(smgr) + m_smgr(smgr), + m_texturesource(texturesource), + m_gamedef(gamedef) { assert(m_map); assert(m_smgr); @@ -2166,9 +2172,9 @@ void ClientEnvironment::step(float dtime) } } -void ClientEnvironment::updateMeshes(v3s16 blockpos) +void ClientEnvironment::updateMeshes(v3s16 blockpos, ITextureSource *tsrc) { - m_map->updateMeshes(blockpos, getDayNightRatio()); + m_map->updateMeshes(blockpos, getDayNightRatio(), tsrc); } void ClientEnvironment::expireMeshes(bool only_daynight_diffed) @@ -2242,14 +2248,15 @@ u16 ClientEnvironment::addActiveObject(ClientActiveObject *object) infostream<<"ClientEnvironment::addActiveObject(): " <<"added (id="<getId()<<")"<getId(), object); - object->addToScene(m_smgr); + // TODO: Make g_texturesource non-global + object->addToScene(m_smgr, m_texturesource); return object->getId(); } void ClientEnvironment::addActiveObject(u16 id, u8 type, const std::string &init_data) { - ClientActiveObject* obj = ClientActiveObject::create(type); + ClientActiveObject* obj = ClientActiveObject::create(type, m_gamedef); if(obj == NULL) { infostream<<"ClientEnvironment::addActiveObject(): " -- cgit v1.2.3