aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/character.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/character.h')
-rw-r--r--engines/xeen/character.h217
1 files changed, 1 insertions, 216 deletions
diff --git a/engines/xeen/character.h b/engines/xeen/character.h
index 649da7ec12..05a61c3f2e 100644
--- a/engines/xeen/character.h
+++ b/engines/xeen/character.h
@@ -28,6 +28,7 @@
#include "common/rect.h"
#include "common/serializer.h"
#include "xeen/combat.h"
+#include "xeen/item.h"
#include "xeen/sprites.h"
namespace Xeen {
@@ -47,11 +48,6 @@ enum BonusFlags {
ITEMFLAG_BONUS_MASK = 0xBF, ITEMFLAG_CURSED = 0x40, ITEMFLAG_BROKEN = 0x80
};
-enum ItemCategory {
- CATEGORY_WEAPON = 0, CATEGORY_ARMOR = 1, CATEGORY_ACCESSORY = 2, CATEGORY_MISC = 3,
- NUM_ITEM_CATEGORIES = 4
-};
-
enum Sex { MALE = 0, FEMALE = 1, YES_PLEASE = 2 };
enum Race { HUMAN = 0, ELF = 1, DWARF = 2, GNOME = 3, HALF_ORC = 4 };
@@ -83,222 +79,11 @@ enum Condition {
NO_CONDITION = 16
};
-enum AttributeCategory {
- ATTR_MIGHT = 0, ATTR_INTELLECT = 1, ATTR_PERSONALITY = 2, ATTR_SPEED = 3,
- ATTR_ACCURACY = 4, ATTR_LUCK = 5, ATTR_HIT_POINTS = 6, ATTR_SPELL_POINTS = 7,
- ATTR_ARMOR_CLASS = 8, ATTR_THIEVERY = 9
-};
-
enum QuickAction {
QUICK_ATTACK = 0, QUICK_SPELL = 1, QUICK_BLOCK = 2, QUICK_RUN = 3
};
class XeenEngine;
-class Character;
-
-class XeenItem {
-public:
- int _material;
- uint _id;
- int _bonusFlags;
- int _frame;
-public:
- /**
- * Return the name of the item
- */
- static const char *getItemName(ItemCategory category, uint id);
-public:
- XeenItem();
-
- /**
- * Clear the data for the item
- */
- void clear();
-
- /**
- * Returns true if no item is set
- */
- bool empty() const { return _id != 0; }
-
- /**
- * Synchronizes the data for the item
- */
- void synchronize(Common::Serializer &s);
-
- /**
- * Gets the elemental category for the item
- */
- ElementalCategory getElementalCategory() const;
-
- /**
- * Gets the attribute category for the item
- */
- AttributeCategory getAttributeCategory() const;
-};
-
-class InventoryItems : public Common::Array<XeenItem> {
-protected:
- Character *_character;
- ItemCategory _category;
- const char **_names;
-
- XeenEngine *getVm();
- void equipError(int itemIndex1, ItemCategory category1, int itemIndex2,
- ItemCategory category2);
-
- virtual Common::String getAttributes(XeenItem &item, const Common::String &classes) = 0;
-public:
- InventoryItems(Character *character, ItemCategory category);
- virtual ~InventoryItems() {}
-
- /**
- * Clears the set of items
- */
- void clear();
-
- /**
- * Return whether a given item passes class-based usage restrictions
- */
- bool passRestrictions(int itemId, bool showError) const;
-
- /**
- * Return the bare name of a given inventory item
- */
- Common::String getName(int itemIndex);
-
- virtual Common::String getFullDescription(int itemIndex, int displayNum = 15) = 0;
-
- /**
- * Returns the identified details for an item
- */
- Common::String getIdentifiedDetails(int itemIndex);
-
- /**
- * Discard an item from the inventory
- */
- bool discardItem(int itemIndex);
-
- /**
- * Equips an item
- */
- virtual void equipItem(int itemIndex) {}
-
- /**
- * Un-equips the given item
- */
- void removeItem(int itemIndex);
-
- /**
- * Sorts the items list, removing any empty item slots to the end of the array
- */
- void sort();
-
- /**
- * Enchants an item
- */
- virtual void enchantItem(int itemIndex, int amount);
-
- /**
- * Return if the given inventory items list is full
- */
- bool isFull() const;
-};
-
-class WeaponItems: public InventoryItems {
-protected:
- virtual Common::String getAttributes(XeenItem &item, const Common::String &classes);
-public:
- WeaponItems(Character *character) : InventoryItems(character, CATEGORY_WEAPON) {}
- virtual ~WeaponItems() {}
-
- /**
- * Equip a given weapon
- */
- virtual void equipItem(int itemIndex);
-
- /**
- * Assembles a full lines description for a specified item for use in
- * the Items dialog
- */
- virtual Common::String getFullDescription(int itemIndex, int displayNum);
-
- /**
- * Enchants a weapon
- */
- virtual void enchantItem(int itemIndex, int amount);
-};
-
-class ArmorItems : public InventoryItems {
-protected:
- virtual Common::String getAttributes(XeenItem &item, const Common::String &classes);
-public:
- ArmorItems(Character *character) : InventoryItems(character, CATEGORY_ARMOR) {}
- virtual ~ArmorItems() {}
-
- /**
- * Equip a given piece of armor
- */
- virtual void equipItem(int itemIndex);
-
- /**
- * Assembles a full lines description for a specified item for use in
- * the Items dialog
- */
- virtual Common::String getFullDescription(int itemIndex, int displayNum);
-
- /**
- * Enchants an armor
- */
- virtual void enchantItem(int itemIndex, int amount);
-};
-
-class AccessoryItems : public InventoryItems {
-protected:
- virtual Common::String getAttributes(XeenItem &item, const Common::String &classes);
-public:
- AccessoryItems(Character *character) : InventoryItems(character, CATEGORY_ACCESSORY) {}
-
- /**
- * Equip a given accessory
- */
- virtual void equipItem(int itemIndex);
-
- /**
- * Assembles a full lines description for a specified item for use in
- * the Items dialog
- */
- virtual Common::String getFullDescription(int itemIndex, int displayNum);
-};
-
-class MiscItems : public InventoryItems {
-protected:
- virtual Common::String getAttributes(XeenItem &item, const Common::String &classes);
-public:
- MiscItems(Character *character) : InventoryItems(character, CATEGORY_MISC) {}
- virtual ~MiscItems() {}
-
- /**
- * Assembles a full lines description for a specified item for use in
- * the Items dialog
- */
- virtual Common::String getFullDescription(int itemIndex, int displayNum);
-};
-
-class InventoryItemsGroup {
-private:
- InventoryItems *_itemSets[4];
-public:
- InventoryItemsGroup(InventoryItems &weapons, InventoryItems &armor,
- InventoryItems &accessories, InventoryItems &misc);
-
- InventoryItems &operator[](ItemCategory category);
-
- /**
- * Breaks all the items in a given character's inventory
- */
- void breakAllItems();
-};
-
class AttributePair {
public: