/* * Copyright 2007-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 . */ // Qt includes #include // Pokemod includes #include "Pokemod.h" // Header include #include "Store.h" Store::Store(const Store& store) : Object("Store", store.pokemod(), store.id()) { *this = store; } Store::Store(const Pokemod* pokemod, const int id) : Object("Store", pokemod, id), m_name("") { } Store::Store(const Store& store, const Pokemod* pokemod, const int id) : Object("Store", pokemod, id) { *this = store; } Store::Store(const QDomElement& xml, const Pokemod* pokemod, const int id) : Object("Store", pokemod, id) { load(xml, id); } bool Store::validate() const { bool valid = true; pokemod()->validationMsg(QString("---Store \"%1\" with id %2---").arg(m_name).arg(id()), Pokemod::V_Msg); if (m_name == "") { pokemod()->validationMsg("Name is noe defiend"); valid = false; } if (!m_items.size()) { pokemod()->validationMsg("There are no items"); valid = false; } QMap valueChecker; foreach (int item, m_items) { if (pokemod()->itemIndex(item) == INT_MAX) { pokemod()->validationMsg("Invalid item"); valid = false; } if (valueChecker[item]) pokemod()->validationMsg(QString("Duplicate of item %1").arg(item)); valueChecker[item] = true; } return valid; } void Store::load(const QDomElement& xml, int id) { LOAD_ID(); LOAD_LIST(int, items); } QDomElement Store::save() const { SAVE_CREATE(); SAVE_LIST(int, items); return xml; } void Store::setName(const QString& name) { m_name = name; } void Store::setItem(const int item, const bool state) throw(BoundsException) { if (pokemod()->itemIndex(item) == INT_MAX) error("item"); if (state) { if (!m_items.contains(item)) m_items.append(item); } else m_items.removeAll(item); } QString Store::name() const { return m_name; } bool Store::item(const int item) const { return m_items.contains(item); } Store& Store::operator=(const Store& rhs) { if (this == &rhs) return *this; COPY(name); COPY(items); return *this; }