OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
mechanicsmanagerimp.hpp
Go to the documentation of this file.
1 #ifndef GAME_MWMECHANICS_MECHANICSMANAGERIMP_H
2 #define GAME_MWMECHANICS_MECHANICSMANAGERIMP_H
3 
4 #include "../mwbase/mechanicsmanager.hpp"
5 
6 #include "../mwworld/ptr.hpp"
7 
8 #include "creaturestats.hpp"
9 #include "npcstats.hpp"
10 #include "objects.hpp"
11 #include "actors.hpp"
12 
13 namespace MWWorld
14 {
15  class CellStore;
16 }
17 
18 namespace MWMechanics
19 {
21  {
23 
26 
30 
32 
37  bool mAI;
38 
41 
42  typedef std::pair<std::string, bool> Owner; // < Owner id, bool isFaction >
43  typedef std::map<Owner, int> OwnerMap; // < Owner, number of stolen items with this id from this owner >
44  typedef std::map<std::string, OwnerMap> StolenItemsMap;
46 
47  public:
48 
49  void buildPlayer();
52 
54 
55  virtual void add (const MWWorld::Ptr& ptr);
57 
58  virtual void remove (const MWWorld::Ptr& ptr);
60 
61  virtual void updateCell(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr);
63 
64  virtual void drop(const MWWorld::CellStore *cellStore);
66 
67  virtual void watchActor(const MWWorld::Ptr& ptr);
70 
71  virtual void update (float duration, bool paused);
76 
77  virtual void advanceTime (float duration);
78 
79  virtual void setPlayerName (const std::string& name);
81 
82  virtual void setPlayerRace (const std::string& id, bool male, const std::string &head, const std::string &hair);
84 
85  virtual void setPlayerBirthsign (const std::string& id);
87 
88  virtual void setPlayerClass (const std::string& id);
90 
91  virtual void setPlayerClass (const ESM::Class& class_);
93 
94  virtual void restoreDynamicStats(MWWorld::Ptr actor, bool sleep);
95 
96  virtual void rest(bool sleep);
99 
100  virtual int getHoursToRest() const;
102 
103  virtual int getBarterOffer(const MWWorld::Ptr& ptr,int basePrice, bool buying);
105 
106  virtual int getDerivedDisposition(const MWWorld::Ptr& ptr, bool addTemporaryDispositionChange = true);
108 
109  virtual int countDeaths (const std::string& id) const;
111 
112  virtual void getPersuasionDispositionChange (const MWWorld::Ptr& npc, PersuasionType type, bool& success, float& tempChange, float& permChange);
114 
116  virtual bool awarenessCheck (const MWWorld::Ptr& ptr, const MWWorld::Ptr& observer);
117 
119  virtual void startCombat (const MWWorld::Ptr& ptr, const MWWorld::Ptr& target);
120 
128  virtual bool commitCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
129  OffenseType type, int arg=0, bool victimAware=false);
131  virtual bool actorAttacked (const MWWorld::Ptr& victim, const MWWorld::Ptr& attacker);
132 
135  virtual void actorKilled (const MWWorld::Ptr& victim, const MWWorld::Ptr& attacker);
136 
141  virtual bool canCommitCrimeAgainst(const MWWorld::Ptr& victim, const MWWorld::Ptr& attacker);
142 
145  virtual void itemTaken (const MWWorld::Ptr& ptr, const MWWorld::Ptr& item, const MWWorld::Ptr& container,
146  int count, bool alarm = true);
148  virtual void objectOpened (const MWWorld::Ptr& ptr, const MWWorld::Ptr& item);
151  virtual bool sleepInBed (const MWWorld::Ptr& ptr, const MWWorld::Ptr& bed);
152 
153  virtual void forceStateUpdate(const MWWorld::Ptr &ptr);
154 
157  virtual bool playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number, bool persist=false);
158  virtual void skipAnimation(const MWWorld::Ptr& ptr);
159  virtual bool checkAnimationPlaying(const MWWorld::Ptr& ptr, const std::string &groupName);
160  virtual void persistAnimationStates();
161 
164  virtual void updateMagicEffects (const MWWorld::Ptr& ptr);
165 
166  virtual void getObjectsInRange (const osg::Vec3f& position, float radius, std::vector<MWWorld::Ptr>& objects);
167  virtual void getActorsInRange(const osg::Vec3f &position, float radius, std::vector<MWWorld::Ptr> &objects);
168 
170  virtual bool isAnyActorInRange(const osg::Vec3f &position, float radius);
171 
172  virtual std::list<MWWorld::Ptr> getActorsSidingWith(const MWWorld::Ptr& actor);
173  virtual std::list<MWWorld::Ptr> getActorsFollowing(const MWWorld::Ptr& actor);
174  virtual std::list<int> getActorsFollowingIndices(const MWWorld::Ptr& actor);
175 
176  virtual std::list<MWWorld::Ptr> getActorsFighting(const MWWorld::Ptr& actor);
177  virtual std::list<MWWorld::Ptr> getEnemiesNearby(const MWWorld::Ptr& actor);
178 
180  virtual void getActorsFollowing(const MWWorld::Ptr& actor, std::set<MWWorld::Ptr>& out);
182  virtual void getActorsSidingWith(const MWWorld::Ptr& actor, std::set<MWWorld::Ptr>& out);
183 
184  virtual bool toggleAI();
185  virtual bool isAIActive();
186 
187  virtual void playerLoaded();
188 
189  virtual int countSavedGameRecords() const;
190 
191  virtual void write (ESM::ESMWriter& writer, Loading::Listener& listener) const;
192 
193  virtual void readRecord (ESM::ESMReader& reader, uint32_t type);
194 
195  virtual void clear();
196 
197  virtual bool isAggressive (const MWWorld::Ptr& ptr, const MWWorld::Ptr& target);
198 
199  virtual void keepPlayerAlive();
200 
201  virtual bool isCastingSpell (const MWWorld::Ptr& ptr) const;
202 
203  virtual bool isReadyToBlock (const MWWorld::Ptr& ptr) const;
205  virtual bool isAttackingOrSpell(const MWWorld::Ptr &ptr) const;
206 
207  virtual void castSpell(const MWWorld::Ptr& ptr, const std::string spellId, bool manualSpell=false);
208 
211  virtual bool isActorDetected(const MWWorld::Ptr& actor, const MWWorld::Ptr& observer);
212 
213  virtual void confiscateStolenItems (const MWWorld::Ptr& player, const MWWorld::Ptr& targetContainer);
214 
217  virtual std::vector<std::pair<std::string, int> > getStolenItemOwners(const std::string& itemid);
218 
220  virtual bool isItemStolenFrom(const std::string& itemid, const MWWorld::Ptr& ptr);
221 
222  virtual bool isBoundItem(const MWWorld::Ptr& item);
223 
225  virtual bool isAllowedToUse (const MWWorld::Ptr& ptr, const MWWorld::Ptr& target, MWWorld::Ptr& victim);
226 
227  virtual void setWerewolf(const MWWorld::Ptr& actor, bool werewolf);
228  virtual void applyWerewolfAcrobatics(const MWWorld::Ptr& actor);
229 
230  virtual void cleanupSummonedCreature(const MWWorld::Ptr& caster, int creatureActorId);
231 
232  virtual void confiscateStolenItemToOwner(const MWWorld::Ptr &player, const MWWorld::Ptr &item, const MWWorld::Ptr& victim, int count);
233 
234  virtual bool isAttackPreparing(const MWWorld::Ptr& ptr);
235  virtual bool isRunning(const MWWorld::Ptr& ptr);
236  virtual bool isSneaking(const MWWorld::Ptr& ptr);
237 
238  private:
239  bool canReportCrime(const MWWorld::Ptr &actor, const MWWorld::Ptr &victim, std::set<MWWorld::Ptr> &playerFollowers);
240 
241  bool reportCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
242  OffenseType type, int arg=0);
243 
244 
245  };
246 }
247 
248 #endif
DynamicStat< float > mWatchedHealth
Definition: mechanicsmanagerimp.hpp:27
virtual bool isReadyToBlock(const MWWorld::Ptr &ptr) const
Definition: mechanicsmanagerimp.cpp:1779
virtual int getDerivedDisposition(const MWWorld::Ptr &ptr, bool addTemporaryDispositionChange=true)
Calculate the diposition of an NPC toward the player.
Definition: mechanicsmanagerimp.cpp:543
DynamicStat< float > mWatchedMagicka
Definition: mechanicsmanagerimp.hpp:28
Definition: stat.hpp:123
virtual int getBarterOffer(const MWWorld::Ptr &ptr, int basePrice, bool buying)
This is used by every service to determine the price of objects given the trading skills of the playe...
Definition: mechanicsmanagerimp.cpp:629
virtual void setPlayerName(const std::string &name)
Set player name.
Definition: mechanicsmanagerimp.cpp:472
virtual std::list< MWWorld::Ptr > getEnemiesNearby(const MWWorld::Ptr &actor)
Definition: mechanicsmanagerimp.cpp:1688
virtual bool toggleAI()
Definition: mechanicsmanagerimp.cpp:837
virtual void confiscateStolenItemToOwner(const MWWorld::Ptr &player, const MWWorld::Ptr &item, const MWWorld::Ptr &victim, int count)
Definition: mechanicsmanagerimp.cpp:1028
virtual bool isAttackPreparing(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:439
virtual bool isSneaking(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:449
bool mUpdatePlayer
Definition: mechanicsmanagerimp.hpp:34
Definition: esmreader.hpp:21
Definition: actors.hpp:24
PersuasionType
Definition: mechanicsmanager.hpp:152
virtual bool playAnimationGroup(const MWWorld::Ptr &ptr, const std::string &groupName, int mode, int number, bool persist=false)
Definition: mechanicsmanagerimp.cpp:804
StolenItemsMap mStolenItems
Definition: mechanicsmanagerimp.hpp:45
virtual bool isItemStolenFrom(const std::string &itemid, const MWWorld::Ptr &ptr)
Has the player stolen this item from the given owner?
Definition: mechanicsmanagerimp.cpp:1006
virtual void add(const MWWorld::Ptr &ptr)
Register an object for management.
Definition: mechanicsmanagerimp.cpp:249
virtual bool isAnyActorInRange(const osg::Vec3f &position, float radius)
Check if there are actors in selected range.
Definition: mechanicsmanagerimp.cpp:1664
virtual void drop(const MWWorld::CellStore *cellStore)
Deregister all objects in the given cell.
Definition: mechanicsmanagerimp.cpp:283
virtual void skipAnimation(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:811
virtual void advanceTime(float duration)
Definition: mechanicsmanagerimp.cpp:295
virtual void actorKilled(const MWWorld::Ptr &victim, const MWWorld::Ptr &attacker)
Definition: mechanicsmanagerimp.cpp:1512
virtual bool isBoundItem(const MWWorld::Ptr &item)
Definition: mechanicsmanagerimp.cpp:856
virtual bool canCommitCrimeAgainst(const MWWorld::Ptr &victim, const MWWorld::Ptr &attacker)
Definition: mechanicsmanagerimp.cpp:1504
virtual void setPlayerBirthsign(const std::string &id)
Set player birthsign.
Definition: mechanicsmanagerimp.cpp:504
virtual bool sleepInBed(const MWWorld::Ptr &ptr, const MWWorld::Ptr &bed)
Definition: mechanicsmanagerimp.cpp:957
virtual bool isActorDetected(const MWWorld::Ptr &actor, const MWWorld::Ptr &observer)
Definition: mechanicsmanagerimp.cpp:434
Definition: loadinglistener.hpp:8
virtual void readRecord(ESM::ESMReader &reader, uint32_t type)
Definition: mechanicsmanagerimp.cpp:1717
virtual std::vector< std::pair< std::string, int > > getStolenItemOwners(const std::string &itemid)
Definition: mechanicsmanagerimp.cpp:991
Definition: objects.hpp:17
virtual int getHoursToRest() const
Calculate how many hours the player needs to rest in order to be fully healed.
Definition: mechanicsmanagerimp.cpp:467
virtual bool isAggressive(const MWWorld::Ptr &ptr, const MWWorld::Ptr &target)
Definition: mechanicsmanagerimp.cpp:1737
virtual void clear()
Definition: mechanicsmanagerimp.cpp:1729
virtual void confiscateStolenItems(const MWWorld::Ptr &player, const MWWorld::Ptr &targetContainer)
Definition: mechanicsmanagerimp.cpp:1072
virtual bool isCastingSpell(const MWWorld::Ptr &ptr) const
Definition: mechanicsmanagerimp.cpp:1774
Definition: esmwriter.hpp:17
virtual void getPersuasionDispositionChange(const MWWorld::Ptr &npc, PersuasionType type, bool &success, float &tempChange, float &permChange)
Perform a persuasion action on NPC.
Definition: mechanicsmanagerimp.cpp:661
bool mClassSelected
Definition: mechanicsmanagerimp.hpp:35
virtual std::list< MWWorld::Ptr > getActorsSidingWith(const MWWorld::Ptr &actor)
Returns the list of actors which are siding with the given actor in fights.
Definition: mechanicsmanagerimp.cpp:1669
virtual void rest(bool sleep)
Definition: mechanicsmanagerimp.cpp:454
virtual int countDeaths(const std::string &id) const
Return the number of deaths for actors with the given ID.
Definition: mechanicsmanagerimp.cpp:656
virtual bool awarenessCheck(const MWWorld::Ptr &ptr, const MWWorld::Ptr &observer)
Check if observer is potentially aware of ptr. Does not do a line of sight check! ...
Definition: mechanicsmanagerimp.cpp:1545
virtual void startCombat(const MWWorld::Ptr &ptr, const MWWorld::Ptr &target)
Makes ptr fight target. Also shouts a combat taunt.
Definition: mechanicsmanagerimp.cpp:1618
std::map< Owner, int > OwnerMap
Definition: mechanicsmanagerimp.hpp:43
bool mRaceSelected
Definition: mechanicsmanagerimp.hpp:36
bool mAI
is AI active?
Definition: mechanicsmanagerimp.hpp:37
virtual void updateMagicEffects(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:832
DynamicStat< float > mWatchedFatigue
Definition: mechanicsmanagerimp.hpp:29
virtual void updateCell(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr)
Moves an object to a new cell.
Definition: mechanicsmanagerimp.cpp:271
virtual bool checkAnimationPlaying(const MWWorld::Ptr &ptr, const std::string &groupName)
Definition: mechanicsmanagerimp.cpp:818
Mutable state of a cell.
Definition: cellstore.hpp:51
virtual void watchActor(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:290
virtual bool isAttackingOrSpell(const MWWorld::Ptr &ptr) const
Is ptr casting spell or using weapon now?
Definition: mechanicsmanagerimp.cpp:1784
bool reportCrime(const MWWorld::Ptr &ptr, const MWWorld::Ptr &victim, OffenseType type, int arg=0)
Definition: mechanicsmanagerimp.cpp:1261
bool mWatchedStatsEmpty
Definition: mechanicsmanagerimp.hpp:33
virtual int countSavedGameRecords() const
Definition: mechanicsmanagerimp.cpp:1700
virtual void playerLoaded()
Definition: mechanicsmanagerimp.cpp:848
virtual bool actorAttacked(const MWWorld::Ptr &victim, const MWWorld::Ptr &attacker)
Definition: mechanicsmanagerimp.cpp:1452
MechanicsManager()
Definition: mechanicsmanagerimp.cpp:242
virtual void write(ESM::ESMWriter &writer, Loading::Listener &listener) const
Definition: mechanicsmanagerimp.cpp:1706
virtual void itemTaken(const MWWorld::Ptr &ptr, const MWWorld::Ptr &item, const MWWorld::Ptr &container, int count, bool alarm=true)
Definition: mechanicsmanagerimp.cpp:1102
Actors mActors
Definition: mechanicsmanagerimp.hpp:40
virtual bool isAllowedToUse(const MWWorld::Ptr &ptr, const MWWorld::Ptr &target, MWWorld::Ptr &victim)
Definition: mechanicsmanagerimp.cpp:895
virtual std::list< MWWorld::Ptr > getActorsFollowing(const MWWorld::Ptr &actor)
Definition: mechanicsmanagerimp.cpp:1674
virtual void update(float duration, bool paused)
Definition: mechanicsmanagerimp.cpp:303
virtual void setPlayerRace(const std::string &id, bool male, const std::string &head, const std::string &hair)
Set player race.
Definition: mechanicsmanagerimp.cpp:485
Definition: mechanicsmanagerimp.hpp:20
virtual void restoreDynamicStats(MWWorld::Ptr actor, bool sleep)
Definition: mechanicsmanagerimp.cpp:462
virtual bool commitCrime(const MWWorld::Ptr &ptr, const MWWorld::Ptr &victim, OffenseType type, int arg=0, bool victimAware=false)
Definition: mechanicsmanagerimp.cpp:1161
virtual void keepPlayerAlive()
Resurrects the player if necessary.
Definition: mechanicsmanagerimp.cpp:1766
virtual void persistAnimationStates()
Save the current animation state of managed references to their RefData.
Definition: mechanicsmanagerimp.cpp:826
virtual bool isRunning(const MWWorld::Ptr &ptr)
Definition: mechanicsmanagerimp.cpp:444
virtual void setWerewolf(const MWWorld::Ptr &actor, bool werewolf)
Turn actor into werewolf or normal form.
Definition: mechanicsmanagerimp.cpp:1789
Objects mObjects
Definition: mechanicsmanagerimp.hpp:39
Definition: loadclas.hpp:18
Definition: stat.hpp:152
virtual std::list< int > getActorsFollowingIndices(const MWWorld::Ptr &actor)
Definition: mechanicsmanagerimp.cpp:1679
Interface for game mechanics manager (implemented in MWMechanics)
Definition: mechanicsmanager.hpp:40
virtual void applyWerewolfAcrobatics(const MWWorld::Ptr &actor)
Definition: mechanicsmanagerimp.cpp:1884
void buildPlayer()
Definition: mechanicsmanagerimp.cpp:72
virtual bool isAIActive()
Definition: mechanicsmanagerimp.cpp:843
Pointer to a LiveCellRef.
Definition: ptr.hpp:19
virtual void forceStateUpdate(const MWWorld::Ptr &ptr)
Forces an object to refresh its animation state.
Definition: mechanicsmanagerimp.cpp:798
virtual void castSpell(const MWWorld::Ptr &ptr, const std::string spellId, bool manualSpell=false)
Definition: mechanicsmanagerimp.cpp:257
virtual void getActorsInRange(const osg::Vec3f &position, float radius, std::vector< MWWorld::Ptr > &objects)
Definition: mechanicsmanagerimp.cpp:1659
std::map< std::string, OwnerMap > StolenItemsMap
Definition: mechanicsmanagerimp.hpp:44
virtual void cleanupSummonedCreature(const MWWorld::Ptr &caster, int creatureActorId)
Definition: mechanicsmanagerimp.cpp:1892
virtual void setPlayerClass(const std::string &id)
Set player class to stock class.
Definition: mechanicsmanagerimp.cpp:511
MWWorld::Ptr mWatched
Definition: mechanicsmanagerimp.hpp:22
SkillValue mWatchedSkills[27]
Definition: mechanicsmanagerimp.hpp:25
virtual std::list< MWWorld::Ptr > getActorsFighting(const MWWorld::Ptr &actor)
Returns a list of actors who are fighting the given actor within the fAlarmDistance.
Definition: mechanicsmanagerimp.cpp:1684
virtual void getObjectsInRange(const osg::Vec3f &position, float radius, std::vector< MWWorld::Ptr > &objects)
Definition: mechanicsmanagerimp.cpp:1653
bool canReportCrime(const MWWorld::Ptr &actor, const MWWorld::Ptr &victim, std::set< MWWorld::Ptr > &playerFollowers)
Definition: mechanicsmanagerimp.cpp:1238
OffenseType
Definition: mechanicsmanager.hpp:117
std::pair< std::string, bool > Owner
Definition: mechanicsmanagerimp.hpp:42
float mWatchedTimeToStartDrowning
Definition: mechanicsmanagerimp.hpp:31
AttributeValue mWatchedAttributes[8]
Definition: mechanicsmanagerimp.hpp:24
const char * name
Definition: crashcatcher.cpp:67
virtual void objectOpened(const MWWorld::Ptr &ptr, const MWWorld::Ptr &item)
Utility to check if opening (i.e. unlocking) this object is illegal and calling commitCrime if so...
Definition: mechanicsmanagerimp.cpp:983