OpenMW
apps/openmw/mwclass/npc.hpp
Go to the documentation of this file.
00001 #ifndef GAME_MWCLASS_NPC_H
00002 #define GAME_MWCLASS_NPC_H
00003 
00004 #include "../mwworld/class.hpp"
00005 
00006 namespace ESM
00007 {
00008     class GameSetting;
00009 }
00010 
00011 namespace MWClass
00012 {
00013     class Npc : public MWWorld::Class
00014     {
00015             void ensureCustomData (const MWWorld::Ptr& ptr) const;
00016 
00017             virtual MWWorld::Ptr
00018             copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
00019 
00020             static const ESM::GameSetting *fMinWalkSpeed;
00021             static const ESM::GameSetting *fMaxWalkSpeed;
00022             static const ESM::GameSetting *fEncumberedMoveEffect;
00023             static const ESM::GameSetting *fSneakSpeedMultiplier;
00024             static const ESM::GameSetting *fAthleticsRunBonus;
00025             static const ESM::GameSetting *fBaseRunMultiplier;
00026             static const ESM::GameSetting *fMinFlySpeed;
00027             static const ESM::GameSetting *fMaxFlySpeed;
00028             static const ESM::GameSetting *fSwimRunBase;
00029             static const ESM::GameSetting *fSwimRunAthleticsMult;
00030             static const ESM::GameSetting *fJumpEncumbranceBase;
00031             static const ESM::GameSetting *fJumpEncumbranceMultiplier;
00032             static const ESM::GameSetting *fJumpAcrobaticsBase;
00033             static const ESM::GameSetting *fJumpAcroMultiplier;
00034             static const ESM::GameSetting *fJumpRunMultiplier;
00035             static const ESM::GameSetting *fWereWolfRunMult;
00036 
00037         public:
00038 
00039             virtual std::string getId (const MWWorld::Ptr& ptr) const;
00041 
00042             virtual void insertObjectRendering (const MWWorld::Ptr& ptr, MWRender::RenderingInterface& renderingInterface) const;
00044 
00045             virtual void insertObject(const MWWorld::Ptr& ptr, MWWorld::PhysicsSystem& physics) const;
00046 
00047             virtual void adjustPosition(const MWWorld::Ptr& ptr) const;
00048 
00049             virtual std::string getName (const MWWorld::Ptr& ptr) const;
00052 
00053             virtual MWMechanics::CreatureStats& getCreatureStats (const MWWorld::Ptr& ptr) const;
00055 
00056             virtual MWMechanics::NpcStats& getNpcStats (const MWWorld::Ptr& ptr) const;
00058 
00059             virtual MWWorld::ContainerStore& getContainerStore (const MWWorld::Ptr& ptr) const;
00061 
00062             virtual bool hasToolTip (const MWWorld::Ptr& ptr) const;
00064 
00065             virtual MWGui::ToolTipInfo getToolTipInfo (const MWWorld::Ptr& ptr) const;
00067 
00068             virtual MWWorld::InventoryStore& getInventoryStore (const MWWorld::Ptr& ptr) const;
00070 
00071             virtual void hit(const MWWorld::Ptr& ptr, int type) const;
00072 
00073             virtual void onHit(const MWWorld::Ptr &ptr, float damage, bool ishealth, const MWWorld::Ptr &object, const MWWorld::Ptr &attacker, bool successful) const;
00074 
00075             virtual void setActorHealth(const MWWorld::Ptr& ptr, float health, const MWWorld::Ptr& attacker) const;
00076 
00077             virtual boost::shared_ptr<MWWorld::Action> activate (const MWWorld::Ptr& ptr,
00078                 const MWWorld::Ptr& actor) const;
00080 
00081             virtual std::string getScript (const MWWorld::Ptr& ptr) const;
00083 
00084             virtual void setForceStance (const MWWorld::Ptr& ptr, Stance stance, bool force) const;
00086 
00087             virtual void setStance (const MWWorld::Ptr& ptr, Stance stance, bool set) const;
00089 
00090             virtual bool getStance (const MWWorld::Ptr& ptr, Stance stance, bool ignoreForce = false)
00091                 const;
00093 
00094             virtual float getSpeed (const MWWorld::Ptr& ptr) const;
00096 
00097             virtual float getJump(const MWWorld::Ptr &ptr) const;
00099 
00100             virtual float getFallDamage(const MWWorld::Ptr &ptr, float fallHeight) const;
00102 
00103             virtual MWMechanics::Movement& getMovementSettings (const MWWorld::Ptr& ptr) const;
00105 
00106             virtual Ogre::Vector3 getMovementVector (const MWWorld::Ptr& ptr) const;
00109 
00110             virtual Ogre::Vector3 getRotationVector (const MWWorld::Ptr& ptr) const;
00112 
00113             virtual float getCapacity (const MWWorld::Ptr& ptr) const;
00116 
00117             virtual float getEncumbrance (const MWWorld::Ptr& ptr) const;
00120 
00121             virtual float getArmorRating (const MWWorld::Ptr& ptr) const;
00123 
00124             virtual bool apply (const MWWorld::Ptr& ptr, const std::string& id,
00125                 const MWWorld::Ptr& actor) const;
00129 
00130             virtual void adjustScale (const MWWorld::Ptr &ptr, float &scale) const;
00131 
00132             virtual void skillUsageSucceeded (const MWWorld::Ptr& ptr, int skill, int usageType) const;
00134 
00135             virtual void adjustRotation(const MWWorld::Ptr& ptr,float& x,float& y,float& z) const;
00136 
00137             virtual bool isEssential (const MWWorld::Ptr& ptr) const;
00139 
00140             virtual int getServices (const MWWorld::Ptr& actor) const;
00141             
00142             virtual bool isPersistent (const MWWorld::Ptr& ptr) const;
00143 
00144             virtual std::string getSoundIdFromSndGen(const MWWorld::Ptr &ptr, const std::string &name) const;
00145 
00146             static void registerSelf();
00147 
00148             virtual std::string getModel(const MWWorld::Ptr &ptr) const;
00149 
00150             virtual bool isActor() const {
00151                 return true;
00152             }
00153 
00154             virtual bool isNpc() const {
00155                 return true;
00156             }
00157     };
00158 }
00159 
00160 #endif