/* * Copyright 2008 Ben Boeckel * * 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 . */ // Header include #include "MapWrapper.h" // Sigscript includes #include "MapEffectWrapper.h" #include "MapTileWrapper.h" #include "MapTrainerWrapper.h" #include "MapWarpWrapper.h" #include "MapWildListWrapper.h" #include "SigmodWrapper.h" Sigscript::MapWrapper* Sigscript::MapWrapper::create(const Sigmod::Map* map, SigmodWrapper* parent) { Signature sig = Signature(parent, Subsignature(map->className(), map->id())); if (!m_instances.contains(sig)) m_instances[sig] = new MapWrapper(map, parent); return qobject_cast(m_instances[sig]); } Sigscript::MapWrapper::MapWrapper(const Sigmod::Map* map, SigmodWrapper* parent) : ObjectWrapper(map, parent), m_map(map) { } Sigscript::MapEffectWrapper* Sigscript::MapWrapper::effect(const int id) { return MapEffectWrapper::create(m_map->effectById(id), this); } Sigscript::MapTileWrapper* Sigscript::MapWrapper::tile(const int id) { return MapTileWrapper::create(m_map->tileById(id), this); } Sigscript::MapTrainerWrapper* Sigscript::MapWrapper::trainer(const int id) { return MapTrainerWrapper::create(m_map->trainerById(id), this); } Sigscript::MapWarpWrapper* Sigscript::MapWrapper::warp(const int id) { return MapWarpWrapper::create(m_map->warpById(id), this); } Sigscript::MapWildListWrapper* Sigscript::MapWrapper::wildList(const int id) { return MapWildListWrapper::create(m_map->wildListById(id), this); } Sigmod::Map::Type Sigscript::MapWrapper::type(const QString& name) const { if (name == "Outdoor") return Sigmod::Map::Outdoor; else if (name == "Dungeon") return Sigmod::Map::Dungeon; else if (name == "Building") return Sigmod::Map::Building; return QVariant(-1).value(); } QString Sigscript::MapWrapper::name() const { return m_map->name(); } Sigscript::MapWarpWrapper* Sigscript::MapWrapper::flyWarp() { return MapWarpWrapper::create(m_map->warpById(m_map->flyWarp()), this); } Sigmod::Map::Type Sigscript::MapWrapper::type() const { return m_map->type(); } int Sigscript::MapWrapper::width() const { return m_map->width(); } int Sigscript::MapWrapper::height() const { return m_map->height(); } Sigscript::MapEffectWrapper* Sigscript::MapWrapper::effect(const QString& name) { for (int i = 0; i < m_map->effectCount(); ++i) { if (m_map->effect(i)->name() == name) return MapEffectWrapper::create(m_map->effect(i), this); } return NULL; } QList Sigscript::MapWrapper::tiles() { QList tiles; for (int i = 0; i < m_map->tileCount(); ++i) tiles.append(MapTileWrapper::create(m_map->tile(i), this)); return tiles; } Sigscript::MapTrainerWrapper* Sigscript::MapWrapper::trainer(const QString& name) { for (int i = 0; i < m_map->trainerCount(); ++i) { if (m_map->trainer(i)->name() == name) return MapTrainerWrapper::create(m_map->trainer(i), this); } return NULL; } Sigscript::MapWarpWrapper* Sigscript::MapWrapper::warp(const QString& name) { for (int i = 0; i < m_map->warpCount(); ++i) { if (m_map->warp(i)->name() == name) return MapWarpWrapper::create(m_map->warp(i), this); } return NULL; } Sigscript::MapWildListWrapper* Sigscript::MapWrapper::wildList(const QString& name) { for (int i = 0; i < m_map->wildListCount(); ++i) { if (m_map->wildList(i)->name() == name) return MapWildListWrapper::create(m_map->wildList(i), this); } return NULL; }