1 /*
2  *  The ManaPlus Client
3  *  Copyright (C) 2011-2019  The ManaPlus Developers
4  *  Copyright (C) 2019-2021  Andrei Karas
5  *
6  *  This file is part of The ManaPlus Client.
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef RESOURCES_MAP_OBJECTSLAYER_H
23 #define RESOURCES_MAP_OBJECTSLAYER_H
24 
25 #include "resources/memorycounter.h"
26 
27 #include "localconsts.h"
28 
29 class MapObjectList;
30 
31 class ObjectsLayer final : public MemoryCounter
32 {
33     public:
34         ObjectsLayer(const unsigned width, const unsigned height);
35 
36         A_DELETE_COPY(ObjectsLayer)
37 
38         ~ObjectsLayer() override final;
39 
40         void addObject(const std::string &name, const int type,
41                        const unsigned x, const unsigned y,
42                        unsigned dx, unsigned dy);
43 
44         MapObjectList *getAt(const unsigned x,
45                              const unsigned y) const A_WARN_UNUSED;
46 
47         int calcMemoryLocal() const override final;
48 
getCounterName()49         std::string getCounterName() const override final
50         { return "objects layer"; }
51 
52     private:
53         MapObjectList **mTiles;
54         unsigned mWidth;
55         unsigned mHeight;
56 };
57 
58 #endif  // RESOURCES_MAP_OBJECTSLAYER_H
59