summaryrefslogtreecommitdiffstats
path: root/pokemodr/TilemapModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/TilemapModel.cpp')
-rw-r--r--pokemodr/TilemapModel.cpp115
1 files changed, 115 insertions, 0 deletions
diff --git a/pokemodr/TilemapModel.cpp b/pokemodr/TilemapModel.cpp
new file mode 100644
index 00000000..6618f7d8
--- /dev/null
+++ b/pokemodr/TilemapModel.cpp
@@ -0,0 +1,115 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: pokegen/TilemapModel.cpp
+// Purpose: Provides a model for tiles in the tilemap editor
+// Author: Ben Boeckel
+// Modified by: Ben Boeckel
+// Created: Tue Feb 5 19:43:22 2008
+// Copyright: ©2007-2008 Ben Boeckel and Nerdy Productions
+// Licence:
+// 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
+// MERCHANTMap 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 <kcombobox.h>
+#include "../general/ImageCache.h"
+#include "../pokemod/Tile.h"
+#include "ObjectUI.h"
+#include "MapUI.h"
+#include "TilemapModel.h"
+
+TilemapModel::TilemapModel(QObject* parent, Matrix<int>& tilemap, const Pokemod& mod) :
+ QAbstractTableModel(parent),
+ map(tilemap),
+ pokemod(mod)
+{
+ updateData();
+}
+
+void TilemapModel::updateData()
+{
+}
+
+int TilemapModel::rowCount(const QModelIndex&) const
+{
+ return map.getHeight();
+}
+
+int TilemapModel::columnCount(const QModelIndex&) const
+{
+ return map.getWidth();
+}
+
+QVariant TilemapModel::data(const QModelIndex& index, int role) const
+{
+ QVariant ret;
+ switch (role)
+ {
+ case Qt::DisplayRole:
+ ret = QVariant(ImageCache::open(pokemod.getTileByID(map.at(index.row(), index.column())).getPic()));
+ break;
+ case Qt::EditRole:
+ ret = QVariant(map.at(index.row(), index.column()));
+ break;
+ case Qt::ToolTipRole:
+ ret = QVariant(pokemod.getTileByID(map.at(index.row(), index.column())).getName());
+ break;
+ default:
+ break;
+ }
+ return ret;
+}
+
+QVariant TilemapModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+}
+
+bool TilemapModel::setData(const QModelIndex& index, const QVariant& value, int role)
+{
+ if (role != Qt::EditRole)
+ return false;
+ map.set(index.row(), index.column(), pokemod.getTile(value.toInt()).getId());
+ return true;
+}
+
+Qt::ItemFlags TilemapModel::flags(const QModelIndex&) const
+{
+ return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+bool TilemapModel::insertRows(int row, int count, const QModelIndex&)
+{
+ for (int i = 0; i < count; ++i)
+ map.insertRow(row);
+ return true;
+}
+
+bool TilemapModel::insertColumns(int column, int count, const QModelIndex&)
+{
+ for (int i = 0; i < count; ++i)
+ map.insertCol(column);
+ return true;
+}
+
+bool TilemapModel::removeRows(int row, int count, const QModelIndex&)
+{
+ for (int i = 0; i < count; ++i)
+ map.deleteRow(row);
+ return true;
+}
+
+bool TilemapModel::removeColumns(int column, int count, const QModelIndex&)
+{
+ for (int i = 0; i < count; ++i)
+ map.deleteCol(column);
+ return true;
+}