summaryrefslogtreecommitdiffstats
path: root/sigmod/Tile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmod/Tile.cpp')
-rw-r--r--sigmod/Tile.cpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/sigmod/Tile.cpp b/sigmod/Tile.cpp
new file mode 100644
index 00000000..c58f7e01
--- /dev/null
+++ b/sigmod/Tile.cpp
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2007-2008 Ben Boeckel <MathStuf@gmail.com>
+ *
+ * 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 3 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.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Header include
+#include "Tile.h"
+
+// Pokemod includes
+#include "Macros.h"
+#include "Pokemod.h"
+#include "Sprite.h"
+
+Pokemod::Tile::Tile(const Tile& tile) :
+ Object(tile.parent(), tile.id())
+{
+ *this = tile;
+}
+
+Pokemod::Tile::Tile(const Pokemod* parent, const int id) :
+ Object(parent, id),
+ m_name(""),
+ m_sprite(-1),
+ m_from(D_End),
+ m_script("", "")
+{
+ for (int i = 0; i < m_from.size(); ++i)
+ m_from[i] = false;
+}
+
+Pokemod::Tile::Tile(const Tile& tile, const Pokemod* parent, const int id) :
+ Object(parent, id)
+{
+ *this = tile;
+}
+
+Pokemod::Tile::Tile(const QDomElement& xml, const Pokemod* parent, const int id) :
+ Object(parent, id)
+{
+ LOAD_ID();
+ load(xml);
+}
+
+void Pokemod::Tile::validate()
+{
+ TEST_BEGIN();
+ if (m_name.isEmpty())
+ emit(error("Name is empty"));
+ TEST(setSprite, sprite);
+ TEST_END();
+}
+
+void Pokemod::Tile::load(const QDomElement& xml)
+{
+ LOAD_BEGIN();
+ LOAD(name);
+ LOAD(sprite);
+ LOAD_ARRAY(from);
+ LOAD(script);
+}
+
+QDomElement Pokemod::Tile::save() const
+{
+ SAVE_CREATE();
+ SAVE(name);
+ SAVE(sprite);
+ SAVE_ARRAY(from);
+ SAVE(script);
+ return xml;
+}
+
+void Pokemod::Tile::setName(const QString& name)
+{
+ CHECK(name);
+}
+
+void Pokemod::Tile::setSprite(const int sprite)
+{
+ if (qobject_cast<const Pokemod*>(pokemod())->spriteIndex(sprite) == INT_MAX)
+ emit(error(bounds("sprite")));
+ // FIXME: remove if doing collaging
+ else if (qobject_cast<const Pokemod*>(pokemod())->spriteById(sprite)->sprite().size() != QSize(64, 64))
+ emit(error("Sprite is the wrong dimensions"));
+ else
+ CHECK(sprite);
+}
+
+void Pokemod::Tile::setFrom(const Direction direction, const bool state)
+{
+ CHECK_ARRAY(from[direction], state);
+}
+
+void Pokemod::Tile::setScript(const Script& script)
+{
+ CHECK(script);
+}
+
+QString Pokemod::Tile::name() const
+{
+ return m_name;
+}
+
+int Pokemod::Tile::sprite() const
+{
+ return m_sprite;
+}
+
+bool Pokemod::Tile::from(const Direction direction) const
+{
+ return m_from[direction];
+}
+
+Pokemod::Script Pokemod::Tile::script() const
+{
+ return m_script;
+}
+
+Pokemod::Tile& Pokemod::Tile::operator=(const Tile& rhs)
+{
+ if (this == &rhs)
+ return *this;
+ COPY(name);
+ COPY(sprite);
+ COPY(from);
+ COPY(script);
+ return *this;
+}