-/*
- * Hero.h
- *
- * Created on: Oct 7, 2012
- * Author: holy
- */
-
#ifndef COMMON_HERO_H_
#define COMMON_HERO_H_
~Hero() { }
public:
+ enum EquipSlot {
+ EQUIP_WEAPON,
+ EQUIP_ARMOR,
+ EQUIP_SHIELD,
+ EQUIP_HELMET,
+ EQUIP_RING,
+ EQUIP_JEWEL,
+ EQUIP_COUNT,
+ };
+
const char *Name() const { return name; }
Uint16 MaxHealth() const { return maxHealth; }
Uint8 Level() const { return level; }
int Experience() const { return experience; }
+ int NextLevel() const;
+
+ bool CanEquip(const Item &) const;
+ bool CanInvoke(const Spell &) const;
- Item *Weapon() { return weapon; }
- Item *Armor() { return armor; }
- Item *Shield() { return shield; }
- Item *Helmet() { return helmet; }
- Item *Ring() { return ring; }
- Item *Jewel() { return jewel; }
-
- const Item *Weapon() const { return weapon; }
- const Item *Armor() const { return armor; }
- const Item *Shield() const { return shield; }
- const Item *Helmet() const { return helmet; }
- const Item *Ring() const { return ring; }
- const Item *Jewel() const { return jewel; }
-
- bool HasWeapon() const { return weapon; }
- bool HasArmor() const { return armor; }
- bool HasShield() const { return shield; }
- bool HasHelmet() const { return helmet; }
- bool HasRing() const { return ring; }
- bool HasJewel() const { return jewel; }
+ const Item *Equipment(EquipSlot i) const { return equipment[i]; }
+ bool Equipped(EquipSlot i) const { return equipment[i]; }
+ void RemoveEquipment(EquipSlot i) { equipment[i] = 0; }
+ void SetEquipment(EquipSlot i, const Item *item) { equipment[i] = item; }
+ std::vector<const Spell *> &Spells() { return spells; }
const std::vector<const Spell *> &Spells() const { return spells; }
graphics::Sprite *BattleSprite() { return battleSprite; }
// temporary setters
public:
- void SetWeapon(common::Item *i) { weapon = i; }
- void SetArmor(common::Item *i) { armor = i; }
- void SetShield(common::Item *i) { shield = i; }
- void SetHelmet(common::Item *i) { helmet = i; }
- void SetRing(common::Item *i) { ring = i; }
- void SetJewel(common::Item *i) { jewel = i; }
-
void AddSpell(Spell *s) { spells.push_back(s); }
private:
int level;
int experience;
- Item *weapon;
- Item *armor;
- Item *shield;
- Item *helmet;
- Item *ring;
- Item *jewel;
+ int *levelLadder;
+ int numLevels;
+
+ int useMask;
+
+ const Item *equipment[EQUIP_COUNT];
// TODO: vector does not seem to be a good choice
std::vector<const Spell *> spells;