ScummVM API documentation
qd_interface_element_state.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef QDENGINE_QDCORE_QD_INTERFACE_ELEMENT_STATE_H
23 #define QDENGINE_QDCORE_QD_INTERFACE_ELEMENT_STATE_H
24 
25 #include "qdengine/parser/xml_fwd.h"
26 #include "qdengine/qdcore/qd_animation_info.h"
27 #include "qdengine/qdcore/qd_interface_object_base.h"
28 #include "qdengine/qdcore/qd_interface_element_state_mode.h"
29 
30 
31 namespace QDEngine {
32 
33 
36 public:
38  enum event_t {
39  EVENT_NONE = 0,
41  EVENT_EXIT, // 1
53  // (парметер имя элемента)
56  // (парметер имя элемента)
59  // (парметер имя элемента)
64 
70 
91  EVENT_SCROLL_RIGHT, // 21
92  EVENT_SCROLL_UP, // 22
93  EVENT_SCROLL_DOWN, // 23
106  };
107 
114  };
115 
116  qdInterfaceEvent(event_t id, const char *data, bool anm_flag, activation_t activation = EVENT_ACTIVATION_CLICK) : _event(id), _event_data(data), _is_before_animation(anm_flag), _activation(activation) { }
117  ~qdInterfaceEvent() {}
118 
119  bool operator == (event_t id) const {
120  return (_event == id);
121  }
122 
124  event_t event() const {
125  return _event;
126  }
128  bool has_data() const {
129  return !_event_data.empty();
130  }
132  const char *event_data() const {
133  return _event_data.c_str();
134  }
136  bool is_before_animation() const {
137  return _is_before_animation;
138  }
139  activation_t activation() const {
140  return _activation;
141  }
142 
143 private:
144 
146  event_t _event;
148  Common::String _event_data;
150  bool _is_before_animation;
152  activation_t _activation;
153 };
154 
157 public:
161  DEFAULT_MODE = 0,
165  EVENT_MODE
166  };
167 
168  enum {
170  NUM_MODES = 3
171  };
172 
176 
177  qdInterfaceElementState &operator = (const qdInterfaceElementState &st);
178 
180 
183  void set_sound_file(const Common::Path str, state_mode_t snd_id = DEFAULT_MODE);
185  const Common::Path sound_file(state_mode_t snd_id = DEFAULT_MODE) const {
186  return _modes[snd_id].sound_file();
187  }
189  const qdSound *sound(state_mode_t snd_id = DEFAULT_MODE) const {
190  return _modes[snd_id].sound();
191  }
193  bool has_sound(state_mode_t snd_id = DEFAULT_MODE) const {
194  return _modes[snd_id].has_sound();
195  }
196 
198 
201  void set_animation_file(const Common::Path name, state_mode_t anm_id = DEFAULT_MODE);
203  const Common::Path animation_file(state_mode_t anm_id = DEFAULT_MODE) const {
204  return _modes[anm_id].animation_file();
205  }
207  int animation_flags(state_mode_t anm_id = DEFAULT_MODE) const {
208  return _modes[anm_id].animation_flags();
209  }
210 
212  void set_animation_flag(int fl, state_mode_t anm_id = DEFAULT_MODE) {
213  _modes[anm_id].set_animation_flag(fl);
214  }
216  void drop_animation_flag(int fl, state_mode_t anm_id = DEFAULT_MODE) {
217  _modes[anm_id].drop_animation_flag(fl);
218  }
220  bool check_animation_flag(int fl, state_mode_t anm_id = DEFAULT_MODE) const {
221  return _modes[anm_id].check_animation_flag(fl);
222  }
223 
225  const qdAnimation *animation(state_mode_t anm_id = DEFAULT_MODE) const {
226  return _modes[anm_id].animation();
227  }
229  bool has_animation(state_mode_t anm_id = DEFAULT_MODE) const {
230  return _modes[anm_id].has_animation();
231  }
232 
234  bool register_resources();
236  bool unregister_resources();
237 
239  bool save_script(Common::WriteStream &fh, int indent = 0) const;
241  bool load_script(const xml::tag *p);
242 
244 
247  bool quant(float dt);
248 
251  _state_mode = mode;
252  }
255  return _state_mode;
256  }
258  bool has_state_mode(state_mode_t mode) const;
259 
261  bool has_contour(state_mode_t mode) const {
262  return _modes[mode].has_contour();
263  }
265  bool get_contour(state_mode_t mode, qdContour &cnt) const;
267  bool set_contour(state_mode_t mode, const qdContour &cnt);
268 
270  bool hit_test(int x, int y, state_mode_t mode) const {
271  return _modes[mode].hit_test(x, y);
272  }
273 
275  bool mouse_handler(int x, int y, mouseDispatcher::mouseEvent ev);
277  bool keyboard_handler(Common::KeyCode vkey);
278 
281  const events_container_t &events() const {
282  return _events;
283  }
285  void add_event(const qdInterfaceEvent &ev) {
286  _events.push_back(ev);
287  }
289  void erase_event(int iNum) {
290  _events.erase(_events.begin() + iNum);
291  }
294  _events.clear();
295  }
296 
301  bool need_active_game() const;
302 
303  const qdInterfaceEvent *find_event(qdInterfaceEvent::event_t type) const;
304  bool has_event(qdInterfaceEvent::event_t type, const char *ev_data = NULL) const;
305 
306 private:
307 
309  events_container_t _events;
310 
312  qdInterfaceElementStateMode _modes[NUM_MODES];
313 
315  state_mode_t _state_mode;
317  state_mode_t _prev_state_mode;
318 
320 
324  bool handle_events(qdInterfaceEvent::activation_t activation_type, bool before_animation);
325 };
326 
327 } // namespace QDEngine
328 
329 #endif // QDENGINE_QDCORE_QD_INTERFACE_ELEMENT_STATE_H
продолжить игру
Definition: qd_interface_element_state.h:62
Интерфейсное событие.
Definition: qd_interface_element_state.h:35
Текущие очки игрока на экране таблицы рекордов
Definition: qd_interface_element_state.h:105
state_mode_t state_mode() const
Возвращает режим работы состояния.
Definition: qd_interface_element_state.h:254
перейти на другой интерфейсный экран (парметер имя экрана)
Definition: qd_interface_element_state.h:49
Definition: str.h:59
включить режим загрузки игры
Definition: qd_interface_element_state.h:74
Имя игрока в таблице рекордов, параметр - номер места
Definition: qd_interface_element_state.h:101
сделать персонажа активным, имя персонажа - в данных события
Definition: qd_interface_element_state.h:76
показать элемент активного экрана
Definition: qd_interface_element_state.h:60
const events_container_t & events() const
Список событий.
Definition: qd_interface_element_state.h:281
Definition: stream.h:77
bool hit_test(int x, int y, state_mode_t mode) const
Возвращает true, если точка с экранными координатами (x,у) попадает внутрь контура режима mode...
Definition: qd_interface_element_state.h:270
играть видеоролик (параметр - имя видеоролика из списка в qdGameDispatcher)
Definition: qd_interface_element_state.h:84
записать игру [не используется].
Definition: qd_interface_element_state.h:45
bool has_sound(state_mode_t snd_id=DEFAULT_MODE) const
Возвращает true, если к состоянию привязан звук.
Definition: qd_interface_element_state.h:193
activation_t
Способы запуска события
Definition: qd_interface_element_state.h:109
сменить активного персонажа
Definition: qd_interface_element_state.h:51
void erase_all_events()
Удаление всех событий
Definition: qd_interface_element_state.h:293
Звук.
Definition: qd_sound.h:35
void drop_animation_flag(int fl, state_mode_t anm_id=DEFAULT_MODE)
Скидывает флаг анимации.
Definition: qd_interface_element_state.h:216
Состояние элемента интерфейса.
Definition: qd_interface_element_state.h:156
режим, который включается когда мышиный курсор находится над элементом-владельцем ...
Definition: qd_interface_element_state.h:163
включить определенное состояние кнопки, параметр - имя кнопки
Definition: qd_interface_element_state.h:86
Definition: path.h:52
void set_animation_flag(int fl, state_mode_t anm_id=DEFAULT_MODE)
Устанавливает флаг анимации.
Definition: qd_interface_element_state.h:212
левый клик по кнопке
Definition: qd_interface_element_state.h:111
Контур.
Definition: qd_contour.h:39
bool is_before_animation() const
Возвращает true, если событие должно происходить до включения анимации.
Definition: qd_interface_element_state.h:136
Событие, привязанное к состоянию интерфейсного элемента.
Definition: qd_interface_element_state_mode.h:36
void erase_event(int iNum)
Уделение события
Definition: qd_interface_element_state.h:289
void add_event(const qdInterfaceEvent &ev)
Добавление события.
Definition: qd_interface_element_state.h:285
новая игра
Definition: qd_interface_element_state.h:47
bool has_animation(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает true, если к состоянию привязана анимация.
Definition: qd_interface_element_state.h:229
перейти на сцену, параметр - имя сцены
Definition: qd_interface_element_state.h:43
пользователь завершил работу с модальным окном и ответил Ок
Definition: qd_interface_element_state.h:97
показать экран интерфейса, как модальный
Definition: qd_interface_element_state.h:95
event_t
События, производимые элементами интерфейса.
Definition: qd_interface_element_state.h:38
XML тег.
Definition: xml_tag.h:33
bool check_animation_flag(int fl, state_mode_t anm_id=DEFAULT_MODE) const
Возвращает true, если для анимации установлен флаг fl.
Definition: qd_interface_element_state.h:220
bool has_data() const
Возвращает true, если у события есть данные.
Definition: qd_interface_element_state.h:128
const char * event_data() const
Возвращает данные для события.
Definition: qd_interface_element_state.h:132
Базовый класс для игровых ресурсов.
Definition: console.h:28
Базовый класс для всех интерфейсных объектов.
Definition: qd_interface_object_base.h:32
const qdSound * sound(state_mode_t snd_id=DEFAULT_MODE) const
Возвращает указатель на звуковой эффект, привязанный к состоянию.
Definition: qd_interface_element_state.h:189
перейти в main menu.
Definition: qd_interface_element_state.h:82
спрятать элемент активного экрана (насовсем)
Definition: qd_interface_element_state.h:57
наведение мышиного курсора
Definition: qd_interface_element_state.h:113
Анимация.
Definition: qd_animation.h:57
const Common::Path animation_file(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает имя файла для анимации.
Definition: qd_interface_element_state.h:203
void set_state_mode(state_mode_t mode)
Устанавливает режим работы состояния.
Definition: qd_interface_element_state.h:250
const Common::Path sound_file(state_mode_t snd_id=DEFAULT_MODE) const
Возвращает имя файла звукового эффекта, привязанного к состоянию.
Definition: qd_interface_element_state.h:185
включить следующее состояние кнопки (парметер имя кнопки)
Definition: qd_interface_element_state.h:80
mouseEvent
События.
Definition: mouse_input.h:41
int animation_flags(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает флаги анимации.
Definition: qd_interface_element_state.h:207
bool has_contour(state_mode_t mode) const
Возвращает true, если у состояния задан контур для режима mode.
Definition: qd_interface_element_state.h:261
Очки игрока в таблице рекордов, параметр - номер места
Definition: qd_interface_element_state.h:103
пользователь завершил работу с модальным окном и ответил Отмена
Definition: qd_interface_element_state.h:99
скроллинг
Definition: qd_interface_element_state.h:90
const qdAnimation * animation(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает указатель на анимацию, привязанную к состоянию.
Definition: qd_interface_element_state.h:225
временно спрятать элемент активного экрана (до перехода на другой экран)
Definition: qd_interface_element_state.h:54
включить режим записи игры
Definition: qd_interface_element_state.h:68
скинуть с мыши объект в инвентори
Definition: qd_interface_element_state.h:88
state_mode_t
Идентификаторы для режимов работы состояния.
Definition: qd_interface_element_state.h:159
выйти из игры
Definition: qd_interface_element_state.h:41
включить предыдущее состояние кнопки (парметер имя кнопки)
Definition: qd_interface_element_state.h:78
event_t event() const
Код события.
Definition: qd_interface_element_state.h:124