00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef __cplusplus
00024
00025 # ifndef OGS_FEATS_SINGLE_WEAPON_H
00026 # define OGS_FEATS_SINGLE_WEAPON_H
00027
00028 # include <ogs/feats/Namespace.h>
00029 # include <ogs/feats/WeaponProficiency.h>
00030 # include <ogs/items/Weapon.h>
00031
00032 OGS_BEGIN_FEATS_NAMESPACE
00033
00045 class AllWeapons: public WeaponProficiency {
00046 public:
00047 static AllWeapons* createSimple ();
00048 static AllWeapons* createMartial ();
00049
00050 bool isProficient (const ogs::items::Weapon& weapon) const;
00051
00052 private:
00053 AllWeapons (ogs::items::Weapon::Proficiency proficiency);
00054
00055 bool canAttach (const Object& object) const;
00056 };
00057
00063 inline AllWeapons*
00064 AllWeapons::createSimple () {
00065 return (new AllWeapons (ogs::items::Weapon::SIMPLE));
00066 }
00067
00073 inline AllWeapons*
00074 AllWeapons::createMartial () {
00075 return (new AllWeapons (ogs::items::Weapon::MARTIAL));
00076 }
00077
00086 inline bool
00087 AllWeapons::isProficient (const ogs::items::Weapon& weapon) const {
00088 return (weapon.getProficiency () == this->getProficiency ());
00089 }
00090
00097 inline
00098 AllWeapons::AllWeapons (ogs::items::Weapon::Proficiency proficiency):
00099 WeaponProficiency (EXCLUSIVE, proficiency) {
00100
00101 }
00102
00103 OGS_END_FEATS_NAMESPACE
00104
00105 # endif
00106
00107 #endif
00108