summaryrefslogtreecommitdiff
path: root/src/resources/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources/map')
-rw-r--r--src/resources/map/map.cpp1
-rw-r--r--src/resources/map/maplayer.cpp51
-rw-r--r--src/resources/map/maplayer.h21
-rw-r--r--src/resources/map/objectslayer.cpp76
-rw-r--r--src/resources/map/objectslayer.h51
5 files changed, 128 insertions, 72 deletions
diff --git a/src/resources/map/map.cpp b/src/resources/map/map.cpp
index 9cffaa422..cd94c6ae6 100644
--- a/src/resources/map/map.cpp
+++ b/src/resources/map/map.cpp
@@ -32,6 +32,7 @@
#include "resources/map/mapheights.h"
#include "resources/map/maplayer.h"
#include "resources/map/mapitem.h"
+#include "resources/map/objectslayer.h"
#include "resources/map/speciallayer.h"
#include "resources/map/tileset.h"
#include "resources/map/walklayer.h"
diff --git a/src/resources/map/maplayer.cpp b/src/resources/map/maplayer.cpp
index e5036676d..1bcd65681 100644
--- a/src/resources/map/maplayer.cpp
+++ b/src/resources/map/maplayer.cpp
@@ -582,54 +582,3 @@ int MapLayer::getTileDrawWidth(const Image *img,
BLOCK_END("MapLayer::getTileDrawWidth")
return c;
}
-
-ObjectsLayer::ObjectsLayer(const unsigned width, const unsigned height) :
- mTiles(new MapObjectList*[width * height]),
- mWidth(width),
- mHeight(height)
-{
- std::fill_n(mTiles, width * height, static_cast<MapObjectList*>(nullptr));
-}
-
-ObjectsLayer::~ObjectsLayer()
-{
- const unsigned size = mWidth * mHeight;
- for (unsigned f = 0; f < size; f ++)
- delete mTiles[f];
-
- delete [] mTiles;
- mTiles = nullptr;
-}
-
-void ObjectsLayer::addObject(const std::string &name, const int type,
- const unsigned x, const unsigned y,
- unsigned dx, unsigned dy)
-{
- if (!mTiles)
- return;
-
- if (x + dx > mWidth)
- dx = mWidth - x;
- if (y + dy > mHeight)
- dy = mHeight - y;
-
- for (unsigned y1 = y; y1 < y + dy; y1 ++)
- {
- const unsigned idx1 = x + y1 * mWidth;
- const unsigned idx2 = idx1 + dx;
-
- for (unsigned i = idx1; i < idx2; i ++)
- {
- if (!mTiles[i])
- mTiles[i] = new MapObjectList();
- mTiles[i]->objects.push_back(MapObject(type, name));
- }
- }
-}
-
-MapObjectList *ObjectsLayer::getAt(const unsigned x, const unsigned y) const
-{
- if (x >= mWidth || y >= mHeight)
- return nullptr;
- return mTiles[x + y * mWidth];
-}
diff --git a/src/resources/map/maplayer.h b/src/resources/map/maplayer.h
index 59e9db2b5..3656194b6 100644
--- a/src/resources/map/maplayer.h
+++ b/src/resources/map/maplayer.h
@@ -157,25 +157,4 @@ class MapLayer final: public ConfigListener
bool mHighlightAttackRange;
};
-class ObjectsLayer final
-{
- public:
- ObjectsLayer(const unsigned width, const unsigned height);
-
- A_DELETE_COPY(ObjectsLayer)
-
- ~ObjectsLayer();
-
- void addObject(const std::string &name, const int type,
- const unsigned x, const unsigned y,
- unsigned dx, unsigned dy);
-
- MapObjectList *getAt(const unsigned x,
- const unsigned y) const A_WARN_UNUSED;
- private:
- MapObjectList **mTiles;
- unsigned mWidth;
- unsigned mHeight;
-};
-
#endif // RESOURCES_MAP_MAPLAYER_H
diff --git a/src/resources/map/objectslayer.cpp b/src/resources/map/objectslayer.cpp
new file mode 100644
index 000000000..a1edc29f7
--- /dev/null
+++ b/src/resources/map/objectslayer.cpp
@@ -0,0 +1,76 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * 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
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "resources/map/objectslayer.h"
+
+#include "resources/map/mapobjectlist.h"
+
+#include "debug.h"
+
+ObjectsLayer::ObjectsLayer(const unsigned width, const unsigned height) :
+ mTiles(new MapObjectList*[width * height]),
+ mWidth(width),
+ mHeight(height)
+{
+ std::fill_n(mTiles, width * height, static_cast<MapObjectList*>(nullptr));
+}
+
+ObjectsLayer::~ObjectsLayer()
+{
+ const unsigned size = mWidth * mHeight;
+ for (unsigned f = 0; f < size; f ++)
+ delete mTiles[f];
+
+ delete [] mTiles;
+ mTiles = nullptr;
+}
+
+void ObjectsLayer::addObject(const std::string &name, const int type,
+ const unsigned x, const unsigned y,
+ unsigned dx, unsigned dy)
+{
+ if (!mTiles)
+ return;
+
+ if (x + dx > mWidth)
+ dx = mWidth - x;
+ if (y + dy > mHeight)
+ dy = mHeight - y;
+
+ for (unsigned y1 = y; y1 < y + dy; y1 ++)
+ {
+ const unsigned idx1 = x + y1 * mWidth;
+ const unsigned idx2 = idx1 + dx;
+
+ for (unsigned i = idx1; i < idx2; i ++)
+ {
+ if (!mTiles[i])
+ mTiles[i] = new MapObjectList();
+ mTiles[i]->objects.push_back(MapObject(type, name));
+ }
+ }
+}
+
+MapObjectList *ObjectsLayer::getAt(const unsigned x, const unsigned y) const
+{
+ if (x >= mWidth || y >= mHeight)
+ return nullptr;
+ return mTiles[x + y * mWidth];
+}
diff --git a/src/resources/map/objectslayer.h b/src/resources/map/objectslayer.h
new file mode 100644
index 000000000..c0ce88b33
--- /dev/null
+++ b/src/resources/map/objectslayer.h
@@ -0,0 +1,51 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * 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
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RESOURCES_MAP_OBJECTSLAYER_H
+#define RESOURCES_MAP_OBJECTSLAYER_H
+
+#include <string>
+
+#include "localconsts.h"
+
+class MapObjectList;
+
+class ObjectsLayer final
+{
+ public:
+ ObjectsLayer(const unsigned width, const unsigned height);
+
+ A_DELETE_COPY(ObjectsLayer)
+
+ ~ObjectsLayer();
+
+ void addObject(const std::string &name, const int type,
+ const unsigned x, const unsigned y,
+ unsigned dx, unsigned dy);
+
+ MapObjectList *getAt(const unsigned x,
+ const unsigned y) const A_WARN_UNUSED;
+ private:
+ MapObjectList **mTiles;
+ unsigned mWidth;
+ unsigned mHeight;
+};
+
+#endif // RESOURCES_MAP_OBJECTSLAYER_H