X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FItem.h;h=06c0f83588d9ca8e9bc4d95dfc29a7a9f8f98a27;hb=1338442a6db3a706d09622188aad1cdfe183a70b;hp=1af15f3de365fc289d5e74a62ac14b0908b63b94;hpb=b02da898c7c8a08141df4e797774a61cf5e0163f;p=l2e.git diff --git a/src/common/Item.h b/src/common/Item.h index 1af15f3..06c0f83 100644 --- a/src/common/Item.h +++ b/src/common/Item.h @@ -8,22 +8,20 @@ #ifndef COMMON_ITEM_H_ #define COMMON_ITEM_H_ -#include "HeroGroup.h" +#include "fwd.h" +#include "Hero.h" #include "TargetingMode.h" +#include "../graphics/fwd.h" #include -namespace graphics { - class Animation; - class Sprite; -} - namespace common { -class Ikari; - class Item { +public: + static const int TYPE_ID = 303; + public: Item(); @@ -31,7 +29,7 @@ public: const char *Name() const { return name; } bool IsMostUseful() const { return mostUseful; } - bool IsEquipable() const { return equipable; } + bool IsEquipable() const { return equipability; } bool IsCursed() const { return cursed; } bool IsFruit() const { return fruit; } bool IsScenario() const { return scenario; } @@ -63,8 +61,7 @@ public: bool CanEquipRing() const { return equipability & EQUIPPABLE_RING; } bool CanEquipJewel() const { return equipability & EQUIPPABLE_JEWEL; } - HeroGroup &EquipableBy() { return equipableBy; } - const HeroGroup &EquipableBy() const { return equipableBy; } + int HeroMask() const { return heroMask; } bool HasEffectOnStatusScreen() const { return properties & PROPERTY_HAS_EFFECT_STATUS; } bool HasEffectInBattle() const { return properties & PROPERTY_HAS_EFFECT_BATTLE; } @@ -80,6 +77,8 @@ public: bool HasBattleAnimation() const { return properties & PROPERTY_HAS_BATTLE_ANIMATION; } bool HasIkariEffect() const { return properties & PROPERTY_HAS_IKARI_EFFECT; } + static bool Less(const Item &, const Item &); + // temporary setters public: void SetName(const char *n) { name = n; } @@ -94,12 +93,12 @@ public: private: enum Equipable { EQUIPPABLE_NONE = 0, - EQUIPPABLE_WEAPON = 1, - EQUIPPABLE_ARMOR = 2, - EQUIPPABLE_SHIELD = 4, - EQUIPPABLE_HELMET = 8, - EQUIPPABLE_RING = 16, - EQUIPPABLE_JEWEL = 32, + EQUIPPABLE_WEAPON = 1 << Hero::EQUIP_WEAPON, + EQUIPPABLE_ARMOR = 1 << Hero::EQUIP_ARMOR, + EQUIPPABLE_SHIELD = 1 << Hero::EQUIP_SHIELD, + EQUIPPABLE_HELMET = 1 << Hero::EQUIP_HELMET, + EQUIPPABLE_RING = 1 << Hero::EQUIP_RING, + EQUIPPABLE_JEWEL = 1 << Hero::EQUIP_JEWEL, }; enum Property { PROPERTY_HAS_EFFECT_STATUS = 1, @@ -131,12 +130,11 @@ private: Uint16 properties; TargetingMode targettingMode; - Uint8 equipability; - HeroGroup equipableBy; + int equipability; + int heroMask; // TODO: turn these back into bits as soon as fields are implemented in the loader bool mostUseful; - bool equipable; bool cursed; bool fruit; bool scenario;