/* * 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" // Pokescripting includes #include "MapEffectWrapper.h" #include "MapTrainerWrapper.h" #include "MapWarpWrapper.h" #include "MapWildListWrapper.h" #include "PokemodWrapper.h" Pokescripting::MapWrapper* Pokescripting::MapWrapper::create(const Pokemod::Map* map, PokemodWrapper* parent) { if (!m_instances.contains(Signiture(parent, map->id()))) m_instances[Signiture(parent, map->id())] = new MapWrapper(map, parent); return qobject_cast(m_instances[Signiture(parent, map->id())]); } Pokescripting::MapWrapper::MapWrapper(const Pokemod::Map* map, PokemodWrapper* parent) : ObjectWrapper(map, parent), m_map(map) { } Pokescripting::MapEffectWrapper* Pokescripting::MapWrapper::effect(const int id) { return MapEffectWrapper::create(m_map->effectById(id), this); } Pokescripting::MapTrainerWrapper* Pokescripting::MapWrapper::trainer(const int id) { return MapTrainerWrapper::create(m_map->trainerById(id), this); } Pokescripting::MapWarpWrapper* Pokescripting::MapWrapper::warp(const int id) { return MapWarpWrapper::create(m_map->warpById(id), this); } Pokescripting::MapWildListWrapper* Pokescripting::MapWrapper::wildList(const int id) { return MapWildListWrapper::create(m_map->wildListById(id), this); } Pokemod::Map::Type Pokescripting::MapWrapper::type(const QString& name) const { if (name == "Outdoor") return Pokemod::Map::Outdoor; else if (name == "Dungeon") return Pokemod::Map::Dungeon; else if (name == "Building") return Pokemod::Map::Building; return QVariant(-1).value(); } QString Pokescripting::MapWrapper::name() const { return m_map->name(); } Pokescripting::MapWarpWrapper* Pokescripting::MapWrapper::flyWarp() { return MapWarpWrapper::create(m_map->warpById(m_map->flyWarp()), this); } Pokemod::Map::Type Pokescripting::MapWrapper::type() const { return m_map->type(); } Pokescripting::TileWrapper* Pokescripting::MapWrapper::tile(const int row, const int column) { return pokemod()->tile(m_map->tile(row, column)); } QPoint Pokescripting::MapWrapper::mapSize() const { return m_map->size(); } Pokescripting::MapEffectWrapper* Pokescripting::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; } Pokescripting::MapTrainerWrapper* Pokescripting::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; } Pokescripting::MapWarpWrapper* Pokescripting::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; } Pokescripting::MapWildListWrapper* Pokescripting::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; }