OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
dialoguemanagerimp.hpp
Go to the documentation of this file.
1 #ifndef GAME_MWDIALOG_DIALOGUEMANAGERIMP_H
2 #define GAME_MWDIALOG_DIALOGUEMANAGERIMP_H
3 
4 #include "../mwbase/dialoguemanager.hpp"
5 
6 #include <map>
7 #include <set>
8 
12 
13 #include "../mwworld/ptr.hpp"
14 
15 #include "../mwscript/compilercontext.hpp"
16 
17 namespace ESM
18 {
19  struct Dialogue;
20 }
21 
22 namespace MWDialogue
23 {
25  {
26  std::set<std::string, Misc::StringUtils::CiComp> mKnownTopics;// Those are the topics the player knows.
27 
28  // Modified faction reactions. <Faction1, <Faction2, Difference> >
29  typedef std::map<std::string, std::map<std::string, int> > ModFactionReactionMap;
31 
32  std::set<std::string, Misc::StringUtils::CiComp> mActorKnownTopics;
33 
36  std::ostream mErrorStream;
38 
40  bool mTalkedTo;
41 
42  int mChoice;
43  std::string mLastTopic; // last topic ID, lowercase
45  bool mGoodbye;
46 
47  std::vector<std::pair<std::string, int> > mChoices;
48 
51 
52  void parseText (const std::string& text);
53 
55  void updateGlobals();
56 
57  bool compile (const std::string& cmd, std::vector<Interpreter::Type_Code>& code, const MWWorld::Ptr& actor);
58  void executeScript (const std::string& script, const MWWorld::Ptr& actor);
59 
60  void executeTopic (const std::string& topic, ResponseCallback* callback);
61 
62  const ESM::Dialogue* searchDialogue(const std::string& id);
63 
64  public:
65 
66  DialogueManager (const Compiler::Extensions& extensions, Translation::Storage& translationDataStorage);
67 
68  virtual void clear();
69 
70  virtual bool isInChoice() const;
71 
72  virtual bool startDialogue (const MWWorld::Ptr& actor, ResponseCallback* callback);
73 
74  std::list<std::string> getAvailableTopics();
75 
76  virtual void addTopic (const std::string& topic);
77 
78  virtual void addChoice (const std::string& text,int choice);
79  const std::vector<std::pair<std::string, int> >& getChoices();
80 
81  virtual bool isGoodbye();
82 
83  virtual void goodbye();
84 
85  virtual bool checkServiceRefused (ResponseCallback* callback);
86 
87  virtual void say(const MWWorld::Ptr &actor, const std::string &topic);
88 
89  //calbacks for the GUI
90  virtual void keywordSelected (const std::string& keyword, ResponseCallback* callback);
91  virtual void goodbyeSelected();
92  virtual void questionAnswered (int answer, ResponseCallback* callback);
93 
94  virtual void persuade (int type, ResponseCallback* callback);
95  virtual int getTemporaryDispositionChange () const;
96 
98  virtual void applyBarterDispositionChange (int delta);
99 
100  virtual int countSavedGameRecords() const;
101 
102  virtual void write (ESM::ESMWriter& writer, Loading::Listener& progress) const;
103 
104  virtual void readRecord (ESM::ESMReader& reader, uint32_t type);
105 
107  virtual void modFactionReaction (const std::string& faction1, const std::string& faction2, int diff);
108 
109  virtual void setFactionReaction (const std::string& faction1, const std::string& faction2, int absolute);
110 
112  virtual int getFactionReaction (const std::string& faction1, const std::string& faction2) const;
113 
115  virtual void clearInfoActor (const MWWorld::Ptr& actor) const;
116  };
117 }
118 
119 #endif
Interface for dialogue manager (implemented in MWDialogue)
Definition: dialoguemanager.hpp:29
virtual void keywordSelected(const std::string &keyword, ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:347
virtual void modFactionReaction(const std::string &faction1, const std::string &faction2, int diff)
Changes faction1's opinion of faction2 by diff.
Definition: dialoguemanagerimp.cpp:627
void updateGlobals()
Definition: dialoguemanagerimp.cpp:300
Definition: dialoguemanagerimp.hpp:24
virtual void readRecord(ESM::ESMReader &reader, uint32_t type)
Definition: dialoguemanagerimp.cpp:609
virtual bool isInChoice() const
Definition: dialoguemanagerimp.cpp:359
Definition: esmreader.hpp:21
void executeScript(const std::string &script, const MWWorld::Ptr &actor)
Definition: dialoguemanagerimp.cpp:220
virtual int countSavedGameRecords() const
Definition: dialoguemanagerimp.cpp:587
bool compile(const std::string &cmd, std::vector< Interpreter::Type_Code > &code, const MWWorld::Ptr &actor)
Definition: dialoguemanagerimp.cpp:166
virtual void goodbye()
Definition: dialoguemanagerimp.cpp:449
virtual void addTopic(const std::string &topic)
Definition: dialoguemanagerimp.cpp:76
Error handler implementation: Write errors into stream.
Definition: streamerrorhandler.hpp:12
int mChoice
Definition: dialoguemanagerimp.hpp:42
Definition: translation.hpp:9
virtual void applyBarterDispositionChange(int delta)
Definition: dialoguemanagerimp.cpp:512
Definition: loaddial.hpp:21
Definition: loadinglistener.hpp:8
MWScript::CompilerContext mCompilerContext
Definition: dialoguemanagerimp.hpp:35
virtual void clearInfoActor(const MWWorld::Ptr &actor) const
Removes the last added topic response for the given actor from the journal.
Definition: dialoguemanagerimp.cpp:675
std::map< std::string, std::map< std::string, int > > ModFactionReactionMap
Definition: dialoguemanagerimp.hpp:29
bool mIsInChoice
Definition: dialoguemanagerimp.hpp:44
virtual void goodbyeSelected()
Definition: dialoguemanagerimp.cpp:364
Definition: esmwriter.hpp:17
DialogueManager()
Definition: dialoguemanager.hpp:46
Collection of compiler extensions.
Definition: extensions.hpp:39
std::ostream mErrorStream
Definition: dialoguemanagerimp.hpp:36
std::string mLastTopic
Definition: dialoguemanagerimp.hpp:43
virtual void setFactionReaction(const std::string &faction1, const std::string &faction2, int absolute)
Definition: dialoguemanagerimp.cpp:642
bool mTalkedTo
Definition: dialoguemanagerimp.hpp:40
Compiler::StreamErrorHandler mErrorHandler
Definition: dialoguemanagerimp.hpp:37
virtual void addChoice(const std::string &text, int choice)
Definition: dialoguemanagerimp.cpp:433
virtual int getFactionReaction(const std::string &faction1, const std::string &faction2) const
Definition: dialoguemanagerimp.cpp:655
std::set< std::string, Misc::StringUtils::CiComp > mActorKnownTopics
Definition: dialoguemanagerimp.hpp:32
std::vector< std::pair< std::string, int > > mChoices
Definition: dialoguemanagerimp.hpp:47
float mPermanentDispositionChange
Definition: dialoguemanagerimp.hpp:50
virtual int getTemporaryDispositionChange() const
Definition: dialoguemanagerimp.cpp:507
void executeTopic(const std::string &topic, ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:239
virtual void say(const MWWorld::Ptr &actor, const std::string &topic)
Definition: dialoguemanagerimp.cpp:548
void updateActorKnownTopics()
Definition: dialoguemanagerimp.cpp:305
const std::vector< std::pair< std::string, int > > & getChoices()
Definition: dialoguemanagerimp.cpp:439
ModFactionReactionMap mChangedFactionReaction
Definition: dialoguemanagerimp.hpp:30
MWWorld::Ptr mActor
Definition: dialoguemanagerimp.hpp:39
virtual void clear()
Definition: dialoguemanagerimp.cpp:68
void parseText(const std::string &text)
Definition: dialoguemanagerimp.cpp:81
virtual void questionAnswered(int answer, ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:381
std::set< std::string, Misc::StringUtils::CiComp > mKnownTopics
Definition: dialoguemanagerimp.hpp:26
int code
Definition: crashcatcher.cpp:78
Definition: dialoguemanager.hpp:39
virtual void persuade(int type, ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:455
virtual void write(ESM::ESMWriter &writer, Loading::Listener &progress) const
Definition: dialoguemanagerimp.cpp:592
virtual bool isGoodbye()
Definition: dialoguemanagerimp.cpp:444
float mTemporaryDispositionChange
Definition: dialoguemanagerimp.hpp:49
Pointer to a LiveCellRef.
Definition: ptr.hpp:19
std::list< std::string > getAvailableTopics()
Definition: dialoguemanagerimp.cpp:329
virtual bool checkServiceRefused(ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:519
Translation::Storage & mTranslationDataStorage
Definition: dialoguemanagerimp.hpp:34
const ESM::Dialogue * searchDialogue(const std::string &id)
Definition: dialoguemanagerimp.cpp:295
Definition: compilercontext.hpp:8
bool mGoodbye
Definition: dialoguemanagerimp.hpp:45
virtual bool startDialogue(const MWWorld::Ptr &actor, ResponseCallback *callback)
Definition: dialoguemanagerimp.cpp:108