]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/server.cpp
new adjustable finite liquid
[dragonfireclient.git] / src / server.cpp
index ec8f8a5e897c90b90440b1207a65ab4b827fad21..138f288c6c8dc8308536f92c75d0259398d8c6fa 100644 (file)
@@ -51,6 +51,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "sound.h" // dummySoundManager
 #include "event_manager.h"
 #include "hex.h"
+#include "serverlist.h"
 #include "util/string.h"
 #include "util/pointedthing.h"
 #include "util/mathconstants.h"
@@ -960,10 +961,13 @@ Server::Server(
        m_ignore_map_edit_events_peer_id(0)
 {
        m_liquid_transform_timer = 0.0;
+       m_liquid_transform_every = 1.0;
        m_print_info_timer = 0.0;
+       m_masterserver_timer = 0.0;
        m_objectdata_timer = 0.0;
        m_emergethread_trigger_timer = 0.0;
        m_savemap_timer = 0.0;
+       m_clients_number = 0;
 
        m_env_mutex.Init();
        m_con_mutex.Init();
@@ -1133,6 +1137,8 @@ Server::Server(
                Add some test ActiveBlockModifiers to environment
        */
        add_legacy_abms(m_env, m_nodedef);
+
+       m_liquid_transform_every = g_settings->getFloat("liquid_update");
 }
 
 Server::~Server()
@@ -1449,9 +1455,9 @@ void Server::AsyncRunStep()
 
        /* Transform liquids */
        m_liquid_transform_timer += dtime;
-       if(m_liquid_transform_timer >= 1.00)
+       if(m_liquid_transform_timer >= m_liquid_transform_every)
        {
-               m_liquid_transform_timer -= 1.00;
+               m_liquid_transform_timer -= m_liquid_transform_every;
 
                JMutexAutoLock lock(m_env_mutex);
 
@@ -1505,7 +1511,7 @@ void Server::AsyncRunStep()
                        counter = 0.0;
 
                        JMutexAutoLock lock2(m_con_mutex);
-
+                       m_clients_number = 0;
                        if(m_clients.size() != 0)
                                infostream<<"Players:"<<std::endl;
                        for(core::map<u16, RemoteClient*>::Iterator
@@ -1519,10 +1525,25 @@ void Server::AsyncRunStep()
                                        continue;
                                infostream<<"* "<<player->getName()<<"\t";
                                client->PrintInfo(infostream);
+                               ++m_clients_number;
                        }
                }
        }
 
+
+#if USE_CURL
+       // send masterserver announce
+       {
+               float &counter = m_masterserver_timer;
+               if((!counter || counter >= 300.0) && g_settings->getBool("server_announce") == true)
+               {
+                       ServerList::sendAnnounce(!counter ? "start" : "update", m_clients_number);
+                       counter = 0.01;
+               }
+               counter += dtime;
+       }
+#endif
+
        //if(g_settings->getBool("enable_experimental"))
        {
 
@@ -5186,6 +5207,10 @@ void dedicated_server_loop(Server &server, bool &kill)
                if(server.getShutdownRequested() || kill)
                {
                        infostream<<"Dedicated server quitting"<<std::endl;
+#if USE_CURL
+                       if(g_settings->getBool("server_announce") == true)
+                               ServerList::sendAnnounce("delete");
+#endif
                        break;
                }