]> git.lizzy.rs Git - minetest.git/blobdiff - src/map.h
Update ContentFeatures serialization format now as PROTOCOL_VERSION was changed
[minetest.git] / src / map.h
index b84e123e4d8fc478da7c40e20083c069de3e843b..30cf626bb7d7aa15b06ea5684483dc6d724d35e3 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -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.
 */
@@ -26,12 +26,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <iostream>
 #include <sstream>
 
-#include "common_irrlicht.h"
+#include "irrlichttypes_bloated.h"
 #include "mapnode.h"
 #include "constants.h"
 #include "voxel.h"
-#include "utility.h" // Needed for UniqueQueue, a member of Map
 #include "modifiedstate.h"
+#include "util/container.h"
+#include "nodetimer.h"
 
 extern "C" {
        #include "sqlite3.h"
@@ -43,6 +44,7 @@ class ServerMapSector;
 class MapBlock;
 class NodeMetadata;
 class IGameDef;
+class IRollbackReportSink;
 
 namespace mapgen{
        struct BlockMakeData;
@@ -98,6 +100,38 @@ struct MapEditEvent
                }
                return event;
        }
+
+       VoxelArea getArea()
+       {
+               switch(type){
+               case MEET_ADDNODE:
+                       return VoxelArea(p);
+               case MEET_REMOVENODE:
+                       return VoxelArea(p);
+               case MEET_BLOCK_NODE_METADATA_CHANGED:
+               {
+                       v3s16 np1 = p*MAP_BLOCKSIZE;
+                       v3s16 np2 = np1 + v3s16(1,1,1)*MAP_BLOCKSIZE - v3s16(1,1,1);
+                       return VoxelArea(np1, np2);
+               }
+               case MEET_OTHER:
+               {
+                       VoxelArea a;
+                       for(core::map<v3s16, bool>::Iterator
+                                       i = modified_blocks.getIterator();
+                                       i.atEnd()==false; i++)
+                       {
+                               v3s16 p = i.getNode()->getKey();
+                               v3s16 np1 = p*MAP_BLOCKSIZE;
+                               v3s16 np2 = np1 + v3s16(1,1,1)*MAP_BLOCKSIZE - v3s16(1,1,1);
+                               a.addPoint(np1);
+                               a.addPoint(np2);
+                       }
+                       return a;
+               }
+               }
+               return VoxelArea();
+       }
 };
 
 class MapEventReceiver
@@ -136,7 +170,7 @@ class Map /*: public NodeContainer*/
        void removeEventReceiver(MapEventReceiver *event_receiver);
        // event shall be deleted by caller after the call.
        void dispatchEvent(MapEditEvent *event);
-
+       
        // On failure returns NULL
        MapSector * getSectorNoGenerateNoExNoLock(v2s16 p2d);
        // Same as the above (there exists no lock anymore)
@@ -277,9 +311,16 @@ class Map /*: public NodeContainer*/
        NodeMetadata* getNodeMetadata(v3s16 p);
        void setNodeMetadata(v3s16 p, NodeMetadata *meta);
        void removeNodeMetadata(v3s16 p);
-       void nodeMetadataStep(float dtime,
-                       core::map<v3s16, MapBlock*> &changed_blocks);
+
+       /*
+               Node Timers
+               These are basically coordinate wrappers to MapBlock
+       */
        
+       NodeTimer getNodeTimer(v3s16 p);
+       void setNodeTimer(v3s16 p, NodeTimer t);
+       void removeNodeTimer(v3s16 p);
+
        /*
                Misc.
        */
@@ -296,7 +337,7 @@ class Map /*: public NodeContainer*/
        IGameDef *m_gamedef;
 
        core::map<MapEventReceiver*, bool> m_event_receivers;
-       
+
        core::map<v2s16, MapSector*> m_sectors;
 
        // Be sure to set this to NULL when the cached sector is deleted