OpenMW
apps/openmw/mwmechanics/actors.hpp
Go to the documentation of this file.
00001 #ifndef GAME_MWMECHANICS_ACTORS_H
00002 #define GAME_MWMECHANICS_ACTORS_H
00003 
00004 #include <set>
00005 #include <vector>
00006 #include <string>
00007 #include <map>
00008 
00009 #include "character.hpp"
00010 #include "movement.hpp"
00011 #include "../mwbase/world.hpp"
00012 
00013 namespace Ogre
00014 {
00015     class Vector3;
00016 }
00017 
00018 namespace MWWorld
00019 {
00020     class Ptr;
00021     class CellStore;
00022 }
00023 
00024 namespace MWMechanics
00025 {
00026     class Actors
00027     {
00028             typedef std::map<MWWorld::Ptr,CharacterController*> PtrControllerMap;
00029             PtrControllerMap mActors;
00030 
00031             std::map<std::string, int> mDeathCount;
00032 
00033             void updateNpc(const MWWorld::Ptr &ptr, float duration, bool paused);
00034 
00035             void adjustMagicEffects (const MWWorld::Ptr& creature);
00036 
00037             void calculateDynamicStats (const MWWorld::Ptr& ptr);
00038 
00039             void calculateCreatureStatModifiers (const MWWorld::Ptr& ptr, float duration);
00040             void calculateNpcStatModifiers (const MWWorld::Ptr& ptr);
00041 
00042             void calculateRestoration (const MWWorld::Ptr& ptr, float duration);
00043 
00044             void updateDrowning (const MWWorld::Ptr& ptr, float duration);
00045 
00046             void updateEquippedLight (const MWWorld::Ptr& ptr, float duration);
00047 
00048         public:
00049 
00050             Actors();
00051             ~Actors();
00052 
00055             void updateMagicEffects (const MWWorld::Ptr& ptr) { adjustMagicEffects(ptr); }
00056 
00057             void addActor (const MWWorld::Ptr& ptr);
00061 
00062             void removeActor (const MWWorld::Ptr& ptr);
00066 
00067             void updateActor(const MWWorld::Ptr &old, const MWWorld::Ptr& ptr);
00069 
00070             void dropActors (const MWWorld::CellStore *cellStore, const MWWorld::Ptr& ignore);
00072 
00073             void update (float duration, bool paused);
00075 
00076             void updateActor (const MWWorld::Ptr& ptr, float duration);
00079 
00080             void restoreDynamicStats();
00082             
00083             int countDeaths (const std::string& id) const;
00085 
00086         void forceStateUpdate(const MWWorld::Ptr &ptr);
00087 
00088         void playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number);
00089         void skipAnimation(const MWWorld::Ptr& ptr);
00090         bool checkAnimationPlaying(const MWWorld::Ptr& ptr, const std::string& groupName);
00091     };
00092 }
00093 
00094 #endif