ManaPlus
speciallayer.h
Go to the documentation of this file.
1 /*
2  * The ManaPlus Client
3  * Copyright (C) 2011-2018 The ManaPlus Developers
4  *
5  * This file is part of The ManaPlus Client.
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef RESOURCES_MAP_SPECIALLAYER_H
22 #define RESOURCES_MAP_SPECIALLAYER_H
23 
25 
26 #include "position.h"
27 
28 #include "localconsts.h"
29 
30 class Graphics;
31 class MapItem;
32 
34 {
35  public:
36  friend class Map;
37  friend class MapLayer;
38 
39  SpecialLayer(const std::string &name,
40  const int width,
41  const int height);
42 
44 
46 
47  void draw(Graphics *const graphics,
48  int startX, int startY,
49  int endX, int endY,
50  const int scrollX, const int scrollY) const A_NONNULL(2);
51 
52  MapItem* getTile(const int x, const int y) const A_WARN_UNUSED;
53 
54  void setTile(const int x, const int y, MapItem *const item);
55 
56  void setTile(const int x, const int y, const int type);
57 
58  void addRoad(const Path &road);
59 
60  void clean();
61 
62  int calcMemoryLocal() const override final;
63 
64  std::string getCounterName() const override final
65  { return mName; }
66 
67  void updateCache();
68 
69 #ifdef UNITTESTS
70  const int *getCache() const
71  { return mCache; }
72 
73  MapItem **getTiles() const
74  { return mTiles; }
75 #endif // UNITTESTS
76 
77  private:
78  const std::string mName;
80  int *mCache;
81  int mWidth;
82  int mHeight;
83 };
84 
85 #endif // RESOURCES_MAP_SPECIALLAYER_H
#define A_DELETE_COPY(func)
Definition: localconsts.h:52
#define A_WARN_UNUSED
Definition: localconsts.h:152
#define final
Definition: localconsts.h:45
#define A_NONNULL(...)
Definition: localconsts.h:159
void setTile(const int x, const int y, MapItem *const item)
int calcMemoryLocal() const
SpecialLayer(const std::string &name, const int width, const int height)
void draw(Graphics *const graphics, int startX, int startY, int endX, int endY, const int scrollX, const int scrollY) const
MapItem ** mTiles
Definition: speciallayer.h:79
void updateCache()
MapItem * getTile(const int x, const int y) const
std::string getCounterName() const
Definition: speciallayer.h:64
void addRoad(const Path &road)
Definition: map.h:71
const std::string mName
Definition: speciallayer.h:78
std::list< Position > Path
Definition: position.h:48
#define override
Definition: localconsts.h:46