|
|
/*************************************************************************** armour.h - description ------------------- begin : Sun Jan 23 2000 copyright : (C) 2000 by Daniel Roberge email : droberge@uvic.ca ***************************************************************************/ #ifndef _ARMOUR_H #define _ARMOUR_H #include "invitem.h" /**This is a representation of a basic suit of armour *@author Daniel Roberge */ class Shield; class Armour : public InventoryItem { private: int baseAC,ACMod[4]; bool shield; friend Shield; /**Adds a shield (only Shield class should call this)*/ void equipShield(); /**Removes a shield (only Shield class should call this)*/ void removeShield(); public: /**Makes an Armour object that represents no armour*/ Armour(void); Armour(int,int,int,int,int,char *,int); /**Makes an Armour object that is identical to that pointed to by model*/ Armour(Armour *model); /**Returns the AC for damage type DamageType*/ int getAC(int DamageType) const; /**Returns the AC unmodified for damage type*/ int getAC() const; virtual InventoryType getType(); /* static void initLibrary(); static Armour *None,*Leather,*StLeather,*Brigandine,*ChainMail,*Banded,*PlateMail,*FieldPlate,*FullPlate; static Armour * None; static Armour * Leather; static Armour * StLeather; static Armour * Brigandine; static Armour * ChainMail; static Armour * Banded; static Armour * PlateMail; static Armour * FieldPlate; static Armour * FullPlate;*/ }; typedef Armour &RArmour; typedef Armour *PArmour; /**Represents a basic shield. 'Attaches' to an Armour object whose AC it modifies. *@author Daniel Roberge */ class Shield: public InventoryItem { private: Armour *attachedTo; bool isAttached; public: /**Creates an unattached shield*/ Shield(); /**Creates a shield attached to Armour at*/ Shield(PArmour at); /**Detaches the shield before deletion*/ virtual ~Shield(); /**Attaches the shield to Armour at*/ void attach(PArmour at); /**Detaches the shield from its attached Armour*/ void detach(); /**Returns the inventory type*/ virtual InventoryType getType() { return SH_FLAG; }; }; #ifdef AR_LIB class ArmourLibrary { public: static const Armour* None; static const Armour* Leather; static const Armour* StLeather; static const Armour* Brigandine; static const Armour* ChainMail; static const Armour* Banded; static const Armour* PlateMail; static const Armour* FieldPlate; static const Armour* FullPlate; static void initLib(); }; #endif #endif
Generated by: droberge@magebook.localdomain on Mon Jul 3 13:20:08 200. |