]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/environment.h
Properly and efficiently use split utility headers
[dragonfireclient.git] / src / environment.h
index fcd16e2967bebd271303940541af8894a08f991f..710b62ee0e62058892c1d7449cce462290ec4f9d 100644 (file)
@@ -3,16 +3,16 @@ Minetest-c55
 Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
 
 This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
 (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Lesser General Public License for more details.
 
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
@@ -35,8 +35,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "player.h"
 #include "map.h"
 #include <ostream>
-#include "utility.h"
 #include "activeobject.h"
+#include "util/container.h"
+#include "util/numeric.h"
 
 class Server;
 class ServerEnvironment;
@@ -45,6 +46,7 @@ class ServerActiveObject;
 typedef struct lua_State lua_State;
 class ITextureSource;
 class IGameDef;
+class ClientMap;
 
 class Environment
 {
@@ -73,27 +75,39 @@ class Environment
        core::list<Player*> getPlayers(bool ignore_disconnected);
        void printPlayers(std::ostream &o);
        
-       //void setDayNightRatio(u32 r);
        u32 getDayNightRatio();
        
        // 0-23999
        virtual void setTimeOfDay(u32 time)
        {
                m_time_of_day = time;
+               m_time_of_day_f = (float)time / 24000.0;
        }
 
        u32 getTimeOfDay()
-       {
-               return m_time_of_day;
-       }
+       { return m_time_of_day; }
+
+       float getTimeOfDayF()
+       { return m_time_of_day_f; }
+
+       void stepTimeOfDay(float dtime);
+
+       void setTimeOfDaySpeed(float speed)
+       { m_time_of_day_speed = speed; }
+       
+       float getTimeOfDaySpeed()
+       { return m_time_of_day_speed; }
 
 protected:
        // peer_ids in here should be unique, except that there may be many 0s
        core::list<Player*> m_players;
-       // Brightness
-       //u32 m_daynight_ratio;
        // Time of day in milli-hours (0-23999); determines day and night
        u32 m_time_of_day;
+       // Time of day in 0...1
+       float m_time_of_day_f;
+       float m_time_of_day_speed;
+       // Used to buffer dtime for adding to m_time_of_day
+       float m_time_counter;
 };
 
 /*
@@ -393,11 +407,8 @@ class ClientEnvironment : public Environment
                        IrrlichtDevice *device);
        ~ClientEnvironment();
 
-       Map & getMap()
-       { return *m_map; }
-
-       ClientMap & getClientMap()
-       { return *m_map; }
+       Map & getMap();
+       ClientMap & getClientMap();
 
        IGameDef *getGameDef()
        { return m_gamedef; }
@@ -407,24 +418,6 @@ class ClientEnvironment : public Environment
        virtual void addPlayer(Player *player);
        LocalPlayer * getLocalPlayer();
        
-       // Slightly deprecated
-       void updateMeshes(v3s16 blockpos);
-       void expireMeshes(bool only_daynight_diffed);
-
-       void setTimeOfDay(u32 time)
-       {
-               u32 old_dr = getDayNightRatio();
-
-               Environment::setTimeOfDay(time);
-
-               if(getDayNightRatio() != old_dr)
-               {
-                       /*infostream<<"ClientEnvironment: DayNightRatio changed"
-                                       <<" -> expiring meshes"<<std::endl;*/
-                       expireMeshes(true);
-               }
-       }
-
        /*
                ClientSimpleObjects
        */