X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fserverobject.cpp;h=ca3d2c3b98d2790de87d64905446a6fb0e273e99;hb=581f950e10b40f2af4ede56c3fa78f13eccb610b;hp=ffb6059dc6902fa1c25736c925d95d40d976f731;hpb=c57637b4c39319e0c0d5d80d0ae2884aec66d691;p=dragonfireclient.git diff --git a/src/serverobject.cpp b/src/serverobject.cpp index ffb6059dc..ca3d2c3b9 100644 --- a/src/serverobject.cpp +++ b/src/serverobject.cpp @@ -18,11 +18,18 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "serverobject.h" +#include +#include "inventory.h" +#include "tooldef.h" -ServerActiveObject::ServerActiveObject(u16 id, v3f pos): - ActiveObject(id), +ServerActiveObject::ServerActiveObject(ServerEnvironment *env, v3f pos): + ActiveObject(0), m_known_by_count(0), m_removed(false), + m_pending_deactivation(false), + m_static_exists(false), + m_static_block(1337,1337,1337), + m_env(env), m_base_position(pos) { } @@ -31,45 +38,39 @@ ServerActiveObject::~ServerActiveObject() { } -TestSAO::TestSAO(u16 id, v3f pos): - ServerActiveObject(id, pos), - m_timer1(0), - m_age(0) +ServerActiveObject* ServerActiveObject::create(u8 type, + ServerEnvironment *env, u16 id, v3f pos, + const std::string &data) { -} - -void TestSAO::step(float dtime, Queue &messages) -{ - m_age += dtime; - if(m_age > 10) + // Find factory function + core::map::Node *n; + n = m_types.find(type); + if(n == NULL) { - m_removed = true; - return; + // If factory is not found, just return. + dstream<<"WARNING: ServerActiveObject: No factory for type=" + < 8*BS) - m_base_position.Y = 2*BS; + Factory f = n->getValue(); + ServerActiveObject *object = (*f)(env, pos, data); + return object; +} - m_timer1 -= dtime; - if(m_timer1 < 0.0) - { - m_timer1 += 0.125; - //dstream<<"TestSAO: id="<::Node *n; + n = m_types.find(type); + if(n) + return; + m_types.insert(type, f); +} - std::string data; +void ServerActiveObject::getWieldDiggingProperties(ToolDiggingProperties *dst) +{ + *dst = ToolDiggingProperties(); +} - data += itos(0); // 0 = position - data += " "; - data += itos(m_base_position.X); - data += " "; - data += itos(m_base_position.Y); - data += " "; - data += itos(m_base_position.Z); - //ActiveObjectMessage aom(getId(), true, data); - ActiveObjectMessage aom(getId(), false, data); - messages.push_back(aom); - } -}