X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmapsector.h;h=dede364f6fe1f41a046210c36d336abf69ba25f2;hb=617d94c8038e3ff035eaeef7ccdfa4f442feb873;hp=44f45d8f03ec98fd971307ef44d2510f2392955a;hpb=2915bd5518150955ed1581110527f4bb4adadfe8;p=dragonfireclient.git diff --git a/src/mapsector.h b/src/mapsector.h index 44f45d8f0..dede364f6 100644 --- a/src/mapsector.h +++ b/src/mapsector.h @@ -1,36 +1,33 @@ /* -Minetest-c55 -Copyright (C) 2010 celeron55, Perttu Ahola +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola 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. */ -/* -(c) 2010 Perttu Ahola -*/ +#pragma once -#ifndef MAPSECTOR_HEADER -#define MAPSECTOR_HEADER - -#include -#include "common_irrlicht.h" -#include "exceptions.h" +#include "irrlichttypes.h" +#include "irr_v2d.h" +#include "mapblock.h" #include +#include +#include -class MapBlock; class Map; +class IGameDef; /* This is an Y-wise stack of MapBlocks. @@ -42,11 +39,9 @@ class Map; class MapSector { public: - - MapSector(Map *parent, v2s16 pos); - virtual ~MapSector(); - virtual u32 getId() const = 0; + MapSector(Map *parent, v2s16 pos, IGameDef *gamedef); + virtual ~MapSector(); void deleteBlocks(); @@ -60,78 +55,32 @@ class MapSector MapBlock * createBlankBlock(s16 y); void insertBlock(MapBlock *block); - + void deleteBlock(MapBlock *block); - - void getBlocks(core::list &dest); - - // Always false at the moment, because sector contains no metadata. - bool differs_from_disk; + + void getBlocks(MapBlockVect &dest); + + bool empty() const { return m_blocks.empty(); } protected: - + // The pile of MapBlocks - core::map m_blocks; + std::unordered_map m_blocks; Map *m_parent; // Position on parent (in MapBlock widths) v2s16 m_pos; - + + IGameDef *m_gamedef; + // Last-used block is cached here for quicker access. - // Be sure to set this to NULL when the cached block is deleted - MapBlock *m_block_cache; + // Be sure to set this to nullptr when the cached block is deleted + MapBlock *m_block_cache = nullptr; s16 m_block_cache_y; - + /* Private methods */ MapBlock *getBlockBuffered(s16 y); }; - -class ServerMapSector : public MapSector -{ -public: - ServerMapSector(Map *parent, v2s16 pos); - ~ServerMapSector(); - - u32 getId() const - { - return MAPSECTOR_SERVER; - } - - /* - These functions handle metadata. - They do not handle blocks. - */ - - void serialize(std::ostream &os, u8 version); - - static ServerMapSector* deSerialize( - std::istream &is, - Map *parent, - v2s16 p2d, - core::map & sectors - ); - -private: -}; - -#ifndef SERVER -class ClientMapSector : public MapSector -{ -public: - ClientMapSector(Map *parent, v2s16 pos); - ~ClientMapSector(); - - u32 getId() const - { - return MAPSECTOR_CLIENT; - } - -private: -}; -#endif - -#endif -