OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
aisequence.hpp
Go to the documentation of this file.
1 #ifndef GAME_MWMECHANICS_AISEQUENCE_H
2 #define GAME_MWMECHANICS_AISEQUENCE_H
3 
4 #include <list>
5 
6 #include "aistate.hpp"
7 
9 
10 namespace MWWorld
11 {
12  class Ptr;
13 }
14 
15 namespace ESM
16 {
17  namespace AiSequence
18  {
19  struct AiSequence;
20  }
21 }
22 
23 
24 
25 namespace MWMechanics
26 {
27  class AiPackage;
28  class CharacterController;
29 
30  template< class Base > class DerivedClassStorage;
33 
35 
36  class AiSequence
37  {
39  std::list<AiPackage *> mPackages;
40 
42  bool mDone;
43 
45  bool mRepeat;
46 
48  void copy (const AiSequence& sequence);
49 
53 
54  public:
56  AiSequence();
57 
59  AiSequence (const AiSequence& sequence);
60 
62  AiSequence& operator= (const AiSequence& sequence);
63 
64  virtual ~AiSequence();
65 
67  std::list<AiPackage*>::const_iterator begin() const;
68  std::list<AiPackage*>::const_iterator end() const;
69 
70  void erase (std::list<AiPackage*>::const_iterator package);
71 
73 
74  int getTypeId() const;
75 
77 
80  int getLastRunTypeId() const { return mLastAiPackage; }
81 
83  bool getCombatTarget (MWWorld::Ptr &targetActor) const;
84 
86  bool getCombatTargets(std::vector<MWWorld::Ptr> &targetActors) const;
87 
89  bool isInCombat () const;
90 
92  bool isEngagedWithActor () const;
93 
95  bool hasPackage(int typeId) const;
96 
98  bool isInCombat (const MWWorld::Ptr& actor) const;
99 
100  bool canAddTarget(const ESM::Position& actorPos, float distToTarget) const;
102 
104  void stopCombat();
105 
107  bool isPackageDone() const;
108 
110  void stopPursuit();
111 
113  void execute (const MWWorld::Ptr& actor, CharacterController& characterController, float duration);
114 
116  void fastForward(const MWWorld::Ptr &actor);
117 
119  void clear();
120 
122 
124  void stack (const AiPackage& package, const MWWorld::Ptr& actor, bool cancelOther=true);
125 
127 
129 
131 
133  void fill (const ESM::AIPackageList& list);
134 
135  void writeState (ESM::AiSequence::AiSequence& sequence) const;
136  void readState (const ESM::AiSequence::AiSequence& sequence);
137  };
138 }
139 
140 #endif
base class for the temporary storage of AiPackages.
Definition: aistate.hpp:90
bool mRepeat
Does this AI sequence repeat (repeating of Wander packages handled separately)
Definition: aisequence.hpp:45
void stopCombat()
Removes all combat packages until first non-combat or stack empty.
Definition: aisequence.cpp:163
Definition: aipackage.hpp:90
stores one object of any class derived from Base. Requesting a certain derived class via get() either...
Definition: aisequence.hpp:30
bool isEngagedWithActor() const
Are we in combat with any other actor, who's also engaging us?
Definition: aisequence.cpp:126
bool isPackageDone() const
Has a package been completed during the last update?
Definition: aisequence.cpp:191
DerivedClassStorage< AiTemporaryBase > AiState
Container for AI package status.
Definition: aisequence.hpp:31
std::list< AiPackage * >::const_iterator end() const
Definition: aisequence.cpp:96
AiSequence()
Default constructor.
Definition: aisequence.cpp:34
void readState(const ESM::AiSequence::AiSequence &sequence)
Definition: aisequence.cpp:452
int list(Bsa::BSAFile &bsa, Arguments &info)
Definition: bsatool.cpp:182
void stopPursuit()
Removes all pursue packages until first non-pursue or stack empty.
Definition: aisequence.cpp:177
void writeState(ESM::AiSequence::AiSequence &sequence) const
Definition: aisequence.cpp:442
Base class for AI packages.
Definition: aipackage.hpp:33
virtual ~AiSequence()
Definition: aisequence.cpp:57
bool mDone
Finished with top AIPackage, set for one frame.
Definition: aisequence.hpp:42
void stack(const AiPackage &package, const MWWorld::Ptr &actor, bool cancelOther=true)
Definition: aisequence.cpp:313
Sequence of AI-packages for a single actor.
Definition: aisequence.hpp:36
void erase(std::list< AiPackage * >::const_iterator package)
Definition: aisequence.cpp:101
Definition: character.hpp:154
bool canAddTarget(const ESM::Position &actorPos, float distToTarget) const
Function assumes that actor can have only 1 target apart player.
bool getCombatTargets(std::vector< MWWorld::Ptr > &targetActors) const
Return true and assign targets for all combat packages, or return false if there are no combat packag...
Definition: aisequence.cpp:80
int getLastRunTypeId() const
Get the typeid of the Ai package that ran last.
Definition: aisequence.hpp:80
void fill(const ESM::AIPackageList &list)
Fills the AiSequence with packages.
Definition: aisequence.cpp:400
std::list< AiPackage * >::const_iterator begin() const
Iterator may be invalidated by any function calls other than begin() or end().
Definition: aisequence.cpp:91
void copy(const AiSequence &sequence)
Copy AiSequence.
Definition: aisequence.cpp:27
void fastForward(const MWWorld::Ptr &actor)
Simulate the passing of time using the currently active AI package.
Definition: aisequence.cpp:524
Definition: defs.hpp:38
Definition: aisequence.hpp:151
bool hasPackage(int typeId) const
Does this AI sequence have the given package type?
Definition: aisequence.cpp:140
bool getCombatTarget(MWWorld::Ptr &targetActor) const
Return true and assign target if combat package is currently active, return false otherwise...
Definition: aisequence.cpp:70
AiState mAiState
Definition: aisequence.hpp:52
bool isInCombat() const
Is there any combat package?
Definition: aisequence.cpp:116
int mLastAiPackage
The type of AI package that ran last.
Definition: aisequence.hpp:51
void clear()
Remove all packages.
Definition: aisequence.cpp:305
Pointer to a LiveCellRef.
Definition: ptr.hpp:19
AiSequence & operator=(const AiSequence &sequence)
Assignment operator.
Definition: aisequence.cpp:44
void execute(const MWWorld::Ptr &actor, CharacterController &characterController, float duration)
Execute current package, switching if needed.
Definition: aisequence.cpp:202
std::list< AiPackage * > mPackages
AiPackages to run though.
Definition: aisequence.hpp:39
int getTypeId() const
Returns currently executing AiPackage type.
Definition: aisequence.cpp:62
AiPackage * getActivePackage()
Return the current active package.
Definition: aisequence.cpp:392