From b481cd74dfd1629ca7b045cde57562e752c49638 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 27 Feb 2014 12:48:21 +0300 Subject: Dehardcode swords, shields and bows for auto switching weapons. --- src/resources/db/weaponsdb.cpp | 81 ++++++++++++++++++++++++++++++++++++++++++ src/resources/db/weaponsdb.h | 45 +++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/resources/db/weaponsdb.cpp create mode 100644 src/resources/db/weaponsdb.h (limited to 'src/resources') diff --git a/src/resources/db/weaponsdb.cpp b/src/resources/db/weaponsdb.cpp new file mode 100644 index 000000000..82892cc5f --- /dev/null +++ b/src/resources/db/weaponsdb.cpp @@ -0,0 +1,81 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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 . + */ + +#include "resources/db/weaponsdb.h" + +#include "logger.h" + +#include "utils/gettext.h" +#include "utils/xmlutils.h" + +#include "configuration.h" + +#include "debug.h" + +namespace +{ + WeaponsInfos mBows; + WeaponsInfos mSwords; + WeaponsInfos mShields; + bool mLoaded = false; +} + +static void loadDB(const std::string name, WeaponsInfos &arr) +{ + readXmlIntVector("weapons.xml", + "weapons", + name, + "item", + "id", + arr); +} + +void WeaponsDB::load() +{ + if (mLoaded) + unload(); + + loadDB("swords", mSwords); + loadDB("bows", mBows); + loadDB("shields", mShields); +} + +void WeaponsDB::unload() +{ + mBows.clear(); + mSwords.clear(); + mShields.clear(); + mLoaded = false; +} + +const WeaponsInfos &WeaponsDB::getBows() +{ + return mBows; +} + +const WeaponsInfos &WeaponsDB::getSwords() +{ + return mSwords; +} + +const WeaponsInfos &WeaponsDB::getShields() +{ + return mShields; +} diff --git a/src/resources/db/weaponsdb.h b/src/resources/db/weaponsdb.h new file mode 100644 index 000000000..287237c48 --- /dev/null +++ b/src/resources/db/weaponsdb.h @@ -0,0 +1,45 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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 . + */ + +#ifndef RESOURCES_DB_WEAPONSDB_H +#define RESOURCES_DB_WEAPONSDB_H + +#include +#include + +#include "localconsts.h" + +typedef std::vector WeaponsInfos; +typedef WeaponsInfos::const_iterator WeaponsInfosIter; + +namespace WeaponsDB +{ + void load(); + + void unload(); + + const WeaponsInfos &getBows(); + + const WeaponsInfos &getSwords(); + + const WeaponsInfos &getShields(); +} // namespace WeaponsDB + +#endif // RESOURCES_DB_WEAPONSDB_H -- cgit v1.2.3-70-g09d2