Adonthell  0.4
dialog_screen.h
Go to the documentation of this file.
1 /*
2  (C) Copyright 2000/2001 Kai Sterker <kai.sterker@gmail.com>
3  Part of the Adonthell Project <http://adonthell.nongnu.org>
4 
5  Adonthell is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  Adonthell is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with Adonthell. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 
20 /**
21  * @file dialog_screen.h
22  * @author Kai Sterker <kai.sterker@gmail.com>
23  *
24  * @brief Declares the dialog_screen class.
25  *
26  *
27  */
28 
29 
30 #ifndef DLG_ENGINE_H__
31 #define DLG_ENGINE_H__
32 
33 #include "dialog.h"
34 #include "window.h"
35 #include "win_select.h"
36 #include "win_theme.h"
37 
38 /**
39  * Maximum number of colors used during a dialog.
40  *
41  */
42 #define MAX_COLOR 6
43 
44 /**
45  * Allows the running of dialogues through a nice interface.
46  *
47  */
49 {
50 public:
51 
52  /**
53  * Constructor.
54  *
55  * @param mynpc npc the player is talking with.
56  * @param dlg_file dialogue file to use.
57  * @param size if 1, use a large window, else a small one.
58  *
59  */
60  dialog_screen (character_base * mynpc, char * dlg_file, u_int8 size=1);
61 
62  /**
63  * Destructor.
64  *
65  */
66  ~dialog_screen ();
67 
68  /**
69  * Inits the dialogue engine (similar to a constructor call).
70  *
71  * @param mynpc npc the player is talking with.
72  * @param dlg_file dialogue file to use.
73  * @param size if 1, use a large window, else a small one.
74  *
75  */
76  void init(character_base *mynpc, char * dlg_file, u_int8 size=1);
77 
78  /**
79  * Changes the displayed NPC portrait.
80  *
81  * @param new_portrait file name of the new portrait image to set.
82  */
83  void set_portrait (const string & new_portrait);
84 
85  /**
86  * Changes the displayed NPC name.
87  *
88  * @param char* new name of the npc.
89  */
90  void set_name (const string & new_name);
91 
92  /**
93  * Changes the whole NPC.
94  *
95  * @param char* the name of the new npc to use.
96  */
97  void set_npc (const string & new_npc);
98 
99  /**
100  * React to (keyboard) input.
101  *
102  * @return true if the dialog is still running, false otherwise.
103  */
104  bool update ();
105 
106  /**
107  * Execute one step of the dialogue.
108  *
109  */
110  void run ();
111 
112 #ifndef SWIG
113 private:
114  /**
115  * 'Merges' a dialogue with the loaded one.
116  *
117  */
118  void insert_plugin ();
119 
120  /**
121  * Callback when item is "activated".
122  *
123  */
124  void on_select ();
125 
126  /**
127  * Widget holding NPC portrait.
128  *
129  */
130  win_image *face;
131 
132  /**
133  * Widget holding NPC name.
134  *
135  */
136  win_label *name;
137 
138  /**
139  * Window theme.
140  *
141  */
142  win_theme *theme;
143 
144  /**
145  * Selection of possible answers.
146  *
147  */
148  win_select *sel;
149 
150  /**
151  * As long as realtime coloring does not work.
152  *
153  */
154 
155  win_font *fonts[MAX_COLOR];
156 
157  /**
158  * Answers currently available for selection.
159  *
160  */
161  vector <win_label*> cur_answers;
162 
163  /**
164  * The Python/C interface for the dialogue.
165  *
166  */
167  dialog *dlg;
168 
169  /**
170  * The selected dialogue option.
171  *
172  */
173  s_int32 answer;
174 
175  /**
176  * Index of first selectible dialogue item.
177  *
178  */
179  u_int32 sel_start;
180 
181  /**
182  * True as long as we don't want to quit.
183  *
184  */
185  bool is_running;
186 
187  /**
188  * Image to display next to the NPC text
189  *
190  */
191  string portrait;
192 #endif // SWIG
193 };
194 
195 #endif // DLG_ENGINE_H__
Allows the running of dialogues through a nice interface.
Definition: dialog_screen.h:48
#define s_int32
32 bits long signed integer
Definition: types.h:50
void set_portrait(const string &new_portrait)
Changes the displayed NPC portrait.
#define u_int32
32 bits long unsigned integer
Definition: types.h:41
The lowlevel dialog class.
Definition: dialog.h:48
#define u_int8
8 bits long unsigned integer
Definition: types.h:35
Base character class containing attributes and dialog stuff.
~dialog_screen()
Destructor.
void run()
Execute one step of the dialogue.
bool update()
React to (keyboard) input.
dialog_screen(character_base *mynpc, char *dlg_file, u_int8 size=1)
Constructor.
void set_npc(const string &new_npc)
Changes the whole NPC.
#define MAX_COLOR
Maximum number of colors used during a dialog.
Definition: dialog_screen.h:42
Defines the dialog class.
void init(character_base *mynpc, char *dlg_file, u_int8 size=1)
Inits the dialogue engine (similar to a constructor call).
void set_name(const string &new_name)
Changes the displayed NPC name.