/* * The ManaPlus Client * Copyright (C) 2004-2009 The Mana World Development Team * Copyright (C) 2009-2010 The Mana Developers * Copyright (C) 2011-2020 The ManaPlus Developers * Copyright (C) 2020-2023 The ManaVerse 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 . */ #ifndef RESOURCES_MAP_TILESET_H #define RESOURCES_MAP_TILESET_H #include "resources/imageset.h" #include /** * A tileset, which is basically just an image set but it stores a firstgid. */ class Tileset final : public ImageSet { public: /** * Constructor. */ Tileset(Image *const img, const int w, const int h, const int firstGid, const int margin, const int spacing) : ImageSet(img, w, h, margin, spacing), mProperties(), mFirstGid(firstGid), mIsEmpty(false) { } A_DELETE_COPY(Tileset) /** * Returns the first gid. */ int getFirstGid() const noexcept2 A_WARN_UNUSED { return mFirstGid; } /** * Set tileset property. */ void setProperties(const std::map &props) noexcept2 { mProperties = props; } /** * Returns property value. */ std::string getProperty(const std::string &name) A_WARN_UNUSED { const std::map::const_iterator it = mProperties.find(name); if (it == mProperties.end()) return ""; return mProperties[name]; } int calcMemoryLocal() const override final { int sz = ImageSet::calcMemoryLocal() + static_cast(sizeof(Tileset)); const std::map::const_iterator it_end = mProperties.end(); std::map::const_iterator it = mProperties.begin(); while (it != it_end) { sz += static_cast((*it).first.capacity() + (*it).second.capacity()); ++ it; } return sz; } void setEmpty(const bool b) { mIsEmpty = b; } bool isEmpty() const { return mIsEmpty; } private: std::map mProperties; int mFirstGid; bool mIsEmpty; }; #endif // RESOURCES_MAP_TILESET_H