]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/server.cpp
Fix building under MSVC
[dragonfireclient.git] / src / server.cpp
index d8bedb260a39a9c7883680d977545e0663eb1a37..50141f843c64b9a8a95877755fc6ea0f6d5dcbba 100644 (file)
@@ -90,14 +90,15 @@ class ServerThread : public JThread
 
 void * ServerThread::Thread()
 {
-       ThreadStarted();
-
        log_register_thread("ServerThread");
 
        DSTACK(__FUNCTION_NAME);
-
        BEGIN_DEBUG_EXCEPTION_HANDLER
 
+       m_server->AsyncRunStep(true);
+
+       ThreadStarted();
+
        while(!StopRequested())
        {
                try{
@@ -1018,7 +1019,7 @@ void Server::step(float dtime)
        }
 }
 
-void Server::AsyncRunStep()
+void Server::AsyncRunStep(bool initial_step)
 {
        DSTACK(__FUNCTION_NAME);
 
@@ -1035,7 +1036,7 @@ void Server::AsyncRunStep()
                SendBlocks(dtime);
        }
 
-       if(dtime < 0.001)
+       if((dtime < 0.001) && (initial_step == false))
                return;
 
        g_profiler->add("Server::AsyncRunStep with dtime (num)", 1);
@@ -1528,7 +1529,7 @@ void Server::AsyncRunStep()
                                memcpy((char*)&reply[2], unreliable_data.c_str(),
                                                unreliable_data.size());
                                // Send as unreliable
-                               m_con.Send(client->peer_id, 0, reply, false);
+                               m_con.Send(client->peer_id, 1, reply, false);
                        }
 
                        /*if(reliable_data.size() > 0 || unreliable_data.size() > 0)
@@ -3572,7 +3573,7 @@ void Server::SendShowFormspecMessage(u16 peer_id, const std::string formspec,
 // Spawns a particle on peer with peer_id
 void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f acceleration,
                                float expirationtime, float size, bool collisiondetection,
-                               std::string texture)
+                               bool vertical, std::string texture)
 {
        DSTACK(__FUNCTION_NAME);
 
@@ -3585,6 +3586,7 @@ void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f accelerat
        writeF1000(os, size);
        writeU8(os,  collisiondetection);
        os<<serializeLongString(texture);
+       writeU8(os, vertical);
 
        // Make data buffer
        std::string s = os.str();
@@ -3596,7 +3598,7 @@ void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f accelerat
 // Spawns a particle on all peers
 void Server::SendSpawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
                                float expirationtime, float size, bool collisiondetection,
-                               std::string texture)
+                               bool vertical, std::string texture)
 {
        for(std::map<u16, RemoteClient*>::iterator
                i = m_clients.begin();
@@ -3609,14 +3611,14 @@ void Server::SendSpawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
                        continue;
 
                SendSpawnParticle(client->peer_id, pos, velocity, acceleration,
-                       expirationtime, size, collisiondetection, texture);
+                       expirationtime, size, collisiondetection, vertical, texture);
        }
 }
 
 // Adds a ParticleSpawner on peer with peer_id
 void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3f minpos, v3f maxpos,
        v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, float minexptime, float maxexptime,
-       float minsize, float maxsize, bool collisiondetection, std::string texture, u32 id)
+       float minsize, float maxsize, bool collisiondetection, bool vertical, std::string texture, u32 id)
 {
        DSTACK(__FUNCTION_NAME);
 
@@ -3638,6 +3640,7 @@ void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3
        writeU8(os,  collisiondetection);
        os<<serializeLongString(texture);
        writeU32(os, id);
+       writeU8(os, vertical);
 
        // Make data buffer
        std::string s = os.str();
@@ -3649,7 +3652,7 @@ void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3
 // Adds a ParticleSpawner on all peers
 void Server::SendAddParticleSpawnerAll(u16 amount, float spawntime, v3f minpos, v3f maxpos,
        v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, float minexptime, float maxexptime,
-       float minsize, float maxsize, bool collisiondetection, std::string texture, u32 id)
+       float minsize, float maxsize, bool collisiondetection, bool vertical, std::string texture, u32 id)
 {
        for(std::map<u16, RemoteClient*>::iterator
                i = m_clients.begin();
@@ -3663,7 +3666,7 @@ void Server::SendAddParticleSpawnerAll(u16 amount, float spawntime, v3f minpos,
 
                SendAddParticleSpawner(client->peer_id, amount, spawntime,
                        minpos, maxpos, minvel, maxvel, minacc, maxacc,
-                       minexptime, maxexptime, minsize, maxsize, collisiondetection, texture, id);
+                       minexptime, maxexptime, minsize, maxsize, collisiondetection, vertical, texture, id);
        }
 }
 
@@ -3721,7 +3724,7 @@ void Server::SendHUDAdd(u16 peer_id, u32 id, HudElement *form)
        std::string s = os.str();
        SharedBuffer<u8> data((u8*)s.c_str(), s.size());
        // Send as reliable
-       m_con.Send(peer_id, 0, data, true);
+       m_con.Send(peer_id, 1, data, true);
 }
 
 void Server::SendHUDRemove(u16 peer_id, u32 id)
@@ -3736,7 +3739,8 @@ void Server::SendHUDRemove(u16 peer_id, u32 id)
        std::string s = os.str();
        SharedBuffer<u8> data((u8*)s.c_str(), s.size());
        // Send as reliable
-       m_con.Send(peer_id, 0, data, true);
+
+       m_con.Send(peer_id, 1, data, true);
 }
 
 void Server::SendHUDChange(u16 peer_id, u32 id, HudElementStat stat, void *value)
@@ -4204,7 +4208,7 @@ void Server::SendBlockNoLock(u16 peer_id, MapBlock *block, u8 ver, u16 net_proto
        /*
                Send packet
        */
-       m_con.Send(peer_id, 1, reply, true);
+       m_con.Send(peer_id, 2, reply, true);
 }
 
 void Server::SendBlocks(float dtime)
@@ -4566,7 +4570,7 @@ void Server::sendRequestedMedia(u16 peer_id,
                                <<" size=" <<s.size()<<std::endl;
                SharedBuffer<u8> data((u8*)s.c_str(), s.size());
                // Send as reliable
-               m_con.Send(peer_id, 0, data, true);
+               m_con.Send(peer_id, 2, data, true);
        }
 }
 
@@ -5049,21 +5053,21 @@ void Server::notifyPlayers(const std::wstring msg)
 void Server::spawnParticle(const char *playername, v3f pos,
                v3f velocity, v3f acceleration,
                float expirationtime, float size, bool
-               collisiondetection, std::string texture)
+               collisiondetection, bool vertical, std::string texture)
 {
        Player *player = m_env->getPlayer(playername);
        if(!player)
                return;
        SendSpawnParticle(player->peer_id, pos, velocity, acceleration,
-                       expirationtime, size, collisiondetection, texture);
+                       expirationtime, size, collisiondetection, vertical, texture);
 }
 
 void Server::spawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
                float expirationtime, float size,
-               bool collisiondetection, std::string texture)
+               bool collisiondetection, bool vertical, std::string texture)
 {
        SendSpawnParticleAll(pos, velocity, acceleration,
-                       expirationtime, size, collisiondetection, texture);
+                       expirationtime, size, collisiondetection, vertical, texture);
 }
 
 u32 Server::addParticleSpawner(const char *playername,
@@ -5073,7 +5077,7 @@ u32 Server::addParticleSpawner(const char *playername,
                v3f minacc, v3f maxacc,
                float minexptime, float maxexptime,
                float minsize, float maxsize,
-               bool collisiondetection, std::string texture)
+               bool collisiondetection, bool vertical, std::string texture)
 {
        Player *player = m_env->getPlayer(playername);
        if(!player)
@@ -5095,7 +5099,7 @@ u32 Server::addParticleSpawner(const char *playername,
        SendAddParticleSpawner(player->peer_id, amount, spawntime,
                minpos, maxpos, minvel, maxvel, minacc, maxacc,
                minexptime, maxexptime, minsize, maxsize,
-               collisiondetection, texture, id);
+               collisiondetection, vertical, texture, id);
 
        return id;
 }
@@ -5106,7 +5110,7 @@ u32 Server::addParticleSpawnerAll(u16 amount, float spawntime,
                v3f minacc, v3f maxacc,
                float minexptime, float maxexptime,
                float minsize, float maxsize,
-               bool collisiondetection, std::string texture)
+               bool collisiondetection, bool vertical, std::string texture)
 {
        u32 id = 0;
        for(;;) // look for unused particlespawner id
@@ -5124,7 +5128,7 @@ u32 Server::addParticleSpawnerAll(u16 amount, float spawntime,
        SendAddParticleSpawnerAll(amount, spawntime,
                minpos, maxpos, minvel, maxvel, minacc, maxacc,
                minexptime, maxexptime, minsize, maxsize,
-               collisiondetection, texture, id);
+               collisiondetection, vertical, texture, id);
 
        return id;
 }