OpenMW
|
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