1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-26 08:41:13 +02:00
vcmi/hch/CArtHandler.h
OnionKnight 9bc40f1a8d * Fixed bug #72
* Implemented artifacts: Wizard's Well, Ring of the Magi, Cornucopia.
* Partially implemented artifacts: Armageddon's Blade,  Angelic Alliance, Cloak of the Undead King, Armor of the Damned, Power of the Dragon Father, Titan's Thunder, Admiral's Hat, Bow of the Sharpshooter.
Most of these only have their bonuses set.
* Updated AUTHORS
2009-08-21 19:31:41 +00:00

65 lines
1.6 KiB
C++

#ifndef __CARTHANDLER_H__
#define __CARTHANDLER_H__
#include "../global.h"
#include "../lib/HeroBonus.h"
#include <list>
#include <string>
#include <vector>
#include <climits>
/*
* CArtHandler.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
class CDefHandler;
class DLL_EXPORT CArtifact //container for artifacts
{
std::string name, description; //set if custom
public:
enum EartClass {ART_SPECIAL=1, ART_TREASURE=2, ART_MINOR=4, ART_MAJOR=8, ART_RELIC=16}; //artifact classes
const std::string &Name() const; //getter
const std::string &Description() const; //getter
ui32 price;
std::vector<ui16> possibleSlots; //ids of slots where artifact can be placed
EartClass aClass;
ui32 id;
std::list<HeroBonus> bonuses; //bonuses given by artifact
template <typename Handler> void serialize(Handler &h, const int version)
{
h & name & description & price & possibleSlots & aClass & id & bonuses;
}
};
class DLL_EXPORT CArtHandler //handles artifacts
{
void giveArtBonus(int aid, HeroBonus::BonusType type, int val, int subtype = -1);
public:
std::vector<CArtifact*> treasures, minors, majors, relics;
std::vector<CArtifact> artifacts;
void loadArtifacts(bool onlyTxt);
void sortArts();
void addBonuses();
void clear();
static int convertMachineID(int id, bool creToArt);
CArtHandler();
template <typename Handler> void serialize(Handler &h, const int version)
{
h & artifacts;
if(!h.saving)
sortArts();
}
};
#endif // __CARTHANDLER_H__