]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/serverobject.cpp
Create framework for getting rid of global definitions of node/tool/item/whatever...
[dragonfireclient.git] / src / serverobject.cpp
index f0ef7d8d60225135ca31514305926e6fe3695377..428ad6484e320928be91a9f2111cb2e46c735ff7 100644 (file)
@@ -19,15 +19,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "serverobject.h"
 #include <fstream>
-#include "environment.h"
 #include "inventory.h"
 
-core::map<u16, ServerActiveObject::Factory> ServerActiveObject::m_types;
-
-ServerActiveObject::ServerActiveObject(ServerEnvironment *env, 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),
@@ -39,6 +37,10 @@ ServerActiveObject::~ServerActiveObject()
 {
 }
 
+void ServerActiveObject::addedToEnvironment()
+{
+}
+
 ServerActiveObject* ServerActiveObject::create(u8 type,
                ServerEnvironment *env, u16 id, v3f pos,
                const std::string &data)
@@ -55,7 +57,7 @@ ServerActiveObject* ServerActiveObject::create(u8 type,
        }
 
        Factory f = n->getValue();
-       ServerActiveObject *object = (*f)(env, id, pos, data);
+       ServerActiveObject *object = (*f)(env, pos, data);
        return object;
 }
 
@@ -69,137 +71,4 @@ void ServerActiveObject::registerType(u16 type, Factory f)
 }
 
 
-/*
-       TestSAO
-*/
-
-// Prototype
-TestSAO proto_TestSAO(NULL, 0, v3f(0,0,0));
-
-TestSAO::TestSAO(ServerEnvironment *env, u16 id, v3f pos):
-       ServerActiveObject(env, id, pos),
-       m_timer1(0),
-       m_age(0)
-{
-       ServerActiveObject::registerType(getType(), create);
-}
-
-ServerActiveObject* TestSAO::create(ServerEnvironment *env, u16 id, v3f pos,
-               const std::string &data)
-{
-       return new TestSAO(env, id, pos);
-}
-
-void TestSAO::step(float dtime, Queue<ActiveObjectMessage> &messages)
-{
-       m_age += dtime;
-       if(m_age > 10)
-       {
-               m_removed = true;
-               return;
-       }
-
-       m_base_position.Y += dtime * BS * 2;
-       if(m_base_position.Y > 8*BS)
-               m_base_position.Y = 2*BS;
-
-       m_timer1 -= dtime;
-       if(m_timer1 < 0.0)
-       {
-               m_timer1 += 0.125;
-               //dstream<<"TestSAO: id="<<getId()<<" sending data"<<std::endl;
-
-               std::string data;
-
-               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(), false, data);
-               messages.push_back(aom);
-       }
-}
-
-
-/*
-       ItemSAO
-*/
-
-// Prototype
-ItemSAO proto_ItemSAO(NULL, 0, v3f(0,0,0), "");
-
-ItemSAO::ItemSAO(ServerEnvironment *env, u16 id, v3f pos,
-               const std::string inventorystring):
-       ServerActiveObject(env, id, pos),
-       m_inventorystring(inventorystring)
-{
-       dstream<<"Server: ItemSAO created with inventorystring=\""
-                       <<m_inventorystring<<"\""<<std::endl;
-       ServerActiveObject::registerType(getType(), create);
-}
-
-ServerActiveObject* ItemSAO::create(ServerEnvironment *env, u16 id, v3f pos,
-               const std::string &data)
-{
-       std::istringstream is(data, std::ios::binary);
-       char buf[1];
-       is.read(buf, 1); // read version
-       std::string inventorystring = deSerializeString(is);
-       dstream<<"ItemSAO::create(): Creating item \""
-                       <<inventorystring<<"\""<<std::endl;
-       return new ItemSAO(env, id, pos, inventorystring);
-}
-
-void ItemSAO::step(float dtime, Queue<ActiveObjectMessage> &messages)
-{
-}
-
-std::string ItemSAO::getClientInitializationData()
-{
-       dstream<<__FUNCTION_NAME<<std::endl;
-       std::string data;
-       data += itos(m_base_position.X);
-       data += ",";
-       data += itos(m_base_position.Y);
-       data += ",";
-       data += itos(m_base_position.Z);
-       data += ":";
-       data += m_inventorystring;
-       return data;
-}
-
-std::string ItemSAO::getStaticData()
-{
-       dstream<<__FUNCTION_NAME<<std::endl;
-       std::ostringstream os(std::ios::binary);
-       char buf[1];
-       buf[0] = 0; //version
-       os.write(buf, 1);
-       os<<serializeString(m_inventorystring);
-       return os.str();
-}
-
-InventoryItem * ItemSAO::createInventoryItem()
-{
-       try{
-               std::istringstream is(m_inventorystring, std::ios_base::binary);
-               InventoryItem *item = InventoryItem::deSerialize(is);
-               dstream<<__FUNCTION_NAME<<": m_inventorystring=\""
-                               <<m_inventorystring<<"\" -> item="<<item
-                               <<std::endl;
-               return item;
-       }
-       catch(SerializationError &e)
-       {
-               dstream<<__FUNCTION_NAME<<": serialization error: "
-                               <<"m_inventorystring=\""<<m_inventorystring<<"\""<<std::endl;
-               return NULL;
-       }
-}
-
-