X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FItem.h;h=afd802ea838c9b964dc80fc0ceb202d7638723fa;hb=4309d259becd96ead792678257e910c03a6b4a3d;hp=1af15f3de365fc289d5e74a62ac14b0908b63b94;hpb=b02da898c7c8a08141df4e797774a61cf5e0163f;p=l2e.git diff --git a/src/common/Item.h b/src/common/Item.h index 1af15f3..afd802e 100644 --- a/src/common/Item.h +++ b/src/common/Item.h @@ -1,29 +1,26 @@ -/* - * Item.h - * - * Created on: Aug 9, 2012 - * Author: holy - */ - #ifndef COMMON_ITEM_H_ #define COMMON_ITEM_H_ -#include "HeroGroup.h" -#include "TargetingMode.h" - -#include - +namespace common { + class Ikari; +} namespace graphics { class Animation; class Sprite; } -namespace common { +#include "Hero.h" +#include "TargetingMode.h" + +#include -class Ikari; +namespace common { class Item { +public: + static const int TYPE_ID = 303; + public: Item(); @@ -31,7 +28,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; } @@ -56,15 +53,9 @@ public: Uint16 Value() const { return value; } - bool CanEquipWeapon() const { return equipability & EQUIPPABLE_WEAPON; } - bool CanEquipArmor() const { return equipability & EQUIPPABLE_ARMOR; } - bool CanEquipShield() const { return equipability & EQUIPPABLE_SHIELD; } - bool CanEquipHelmet() const { return equipability & EQUIPPABLE_HELMET; } - bool CanEquipRing() const { return equipability & EQUIPPABLE_RING; } - bool CanEquipJewel() const { return equipability & EQUIPPABLE_JEWEL; } + bool EquipableAt(Hero::EquipSlot slot) const { return equipability & (1 << slot); } - 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 +71,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; } @@ -92,15 +85,6 @@ public: static void Construct(void *); private: - enum Equipable { - EQUIPPABLE_NONE = 0, - EQUIPPABLE_WEAPON = 1, - EQUIPPABLE_ARMOR = 2, - EQUIPPABLE_SHIELD = 4, - EQUIPPABLE_HELMET = 8, - EQUIPPABLE_RING = 16, - EQUIPPABLE_JEWEL = 32, - }; enum Property { PROPERTY_HAS_EFFECT_STATUS = 1, PROPERTY_HAS_EFFECT_BATTLE = 2, @@ -131,12 +115,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; @@ -147,4 +130,4 @@ private: } -#endif /* COMMON_ITEM_H_ */ +#endif