ScummVM API documentation
qd_interface_save.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 
23 #ifndef QDENGINE_QDCORE_QD_INTERFACE_SAVE_H
24 #define QDENGINE_QDCORE_QD_INTERFACE_SAVE_H
25 
26 #include "qdengine/parser/xml_fwd.h"
27 #include "qdengine/qdcore/qd_interface_element.h"
28 #include "qdengine/qdcore/qd_interface_element_state.h"
29 
30 
31 namespace QDEngine {
32 
33 
36 public:
39  ~qdInterfaceSave();
40 
41  qdInterfaceSave &operator = (const qdInterfaceSave &sv);
42 
46  }
47 
49  bool mouse_handler(int x, int y, mouseDispatcher::mouseEvent ev);
51  bool keyboard_handler(Common::KeyCode vkey);
52 
54 
57  bool init(bool is_game_active = true);
58 
60  bool redraw() const;
61 
62  grScreenRegion screen_region() const;
63 
65  int size_x() const;
67  int size_y() const;
68 
70  int thumbnail_size_x() const {
71  return _thumbnail_size_x;
72  }
74  int thumbnail_size_y() const {
75  return _thumbnail_size_y;
76  }
77 
79  void set_thumbnail_size_x(int sx) {
80  _thumbnail_size_x = sx;
81  }
83  void set_thumbnail_size_y(int sy) {
84  _thumbnail_size_y = sy;
85  }
86 
88  int text_dx() const {
89  return _text_dx;
90  }
91  int text_dy() const {
92  return _text_dy;
93  }
94  void set_test_dx(int val) {
95  _text_dx = val;
96  }
97  void set_test_dy(int val) {
98  _text_dy = val;
99  }
100 
102  bool quant(float dt);
103 
105  bool hit_test(int x, int y) const;
106 
108  int save_ID() const {
109  return _save_ID;
110  }
112  void set_save_ID(int id) {
113  _save_ID = id;
114  }
115 
117  static void set_save_mode(bool state) {
118  _save_mode = state;
119  }
120 
122 
126  _frame.set_animation_file(name, mode);
127  }
130  return _frame.animation_file(mode);
131  }
134  return _frame.animation_flags(mode);
135  }
136 
139  _frame.set_animation_flag(fl, mode);
140  }
143  _frame.drop_animation_flag(fl, mode);
144  }
147  return _frame.check_animation_flag(fl, mode);
148  }
149 
152  return _frame.has_animation(mode);
153  }
154 
155  void set_frame_sound_file(const char *name, qdInterfaceElementState::state_mode_t mode = qdInterfaceElementState::MOUSE_HOVER_MODE) {
156  _frame.set_sound_file(name, mode);
157  }
159  return _frame.sound_file(mode);
160  }
161 
162  bool isAutosaveSlot() const {
163  return _isAutosaveSlot;
164  }
165  void setAutosaveSlot(bool state) {
166  _isAutosaveSlot = state;
167  }
168 
169  void set_title(const char *title) {
170  _save_title = title;
171  }
172  const char *title() const {
173  return _save_title.c_str();
174  }
175 
177  bool perform_save();
178 
179 protected:
180 
182  bool save_script_body(Common::WriteStream &fh, int indent = 0) const;
184  bool load_script_body(const xml::tag *p);
185 
186 private:
187 
189  int _thumbnail_size_x;
191  int _thumbnail_size_y;
192 
194  int _text_dx;
195  int _text_dy;
196 
198  int _save_ID;
199 
201  bool _isAutosaveSlot;
202 
204  qdInterfaceElementState _thumbnail;
205 
206  Common::String _save_title;
207 
210 
212  static bool _save_mode;
213 
215  static int _current_save_ID;
216 };
217 
218 } // namespace QDEngine
219 
220 #endif // QDENGINE_QDCORE_QD_INTERFACE_SAVE_H
void set_frame_animation_file(const Common::Path name, qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE)
Устанавливает имя файла для анимации.
Definition: qd_interface_save.h:125
int text_dx() const
Смещение текста, выводимого в сэйве, относительно левого-верхнего угла
Definition: qd_interface_save.h:88
Definition: str.h:59
void set_thumbnail_size_y(int sy)
Назначает размер картики-превью по вертикали в пикселах.
Definition: qd_interface_save.h:83
Definition: stream.h:77
bool frame_has_animation(qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE) const
Возвращает true, если к сейву привязана анимация рамки.
Definition: qd_interface_save.h:151
bool save_script_body(Common::WriteStream &fh, int indent=0) const
Запись данных в скрипт.
bool redraw() const
Отрисовка элемента.
const char * name() const
Возвращает имя объекта.
Definition: qd_named_object_base.h:40
Интерфейсный элемент - сэйв.
Definition: qd_interface_save.h:35
bool hit_test(int x, int y) const
Возвращает true, если точка с экранными координатами (x,у) попадает в элемент.
int save_ID() const
Возвращает номер сэйва.
Definition: qd_interface_save.h:108
void set_save_ID(int id)
Устанавливает номер сэйва.
Definition: qd_interface_save.h:112
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
static void set_save_mode(bool state)
Устанавливает режим работы - записывать (state == true) или загружать (state == false) сэйвы...
Definition: qd_interface_save.h:117
режим, который включается когда мышиный курсор находится над элементом-владельцем ...
Definition: qd_interface_element_state.h:163
Definition: path.h:52
void set_animation_file(const Common::Path name, state_mode_t anm_id=DEFAULT_MODE)
Устанавливает имя файла для анимации.
void set_animation_flag(int fl, state_mode_t anm_id=DEFAULT_MODE)
Устанавливает флаг анимации.
Definition: qd_interface_element_state.h:212
сэйв
Definition: qd_interface_element.h:73
bool has_animation(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает true, если к состоянию привязана анимация.
Definition: qd_interface_element_state.h:229
bool mouse_handler(int x, int y, mouseDispatcher::mouseEvent ev)
Обработчик событий мыши.
int frame_animation_flags(qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE) const
Возвращает флаги анимации.
Definition: qd_interface_save.h:133
Базовый класс для элементов GUI.
Definition: qd_interface_element.h:41
bool load_script_body(const xml::tag *p)
Загрузка данных из скрипта.
bool check_frame_animation_flag(int fl, qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE) const
Возвращает true, если для анимации установлен флаг fl.
Definition: qd_interface_save.h:146
bool perform_save()
Осуществить сохранение текущего состояния игры в ячейку сэйва.
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
void set_thumbnail_size_x(int sx)
Назначает размер картики-превью по горизонтали в пикселах.
Definition: qd_interface_save.h:79
Базовый класс для игровых ресурсов.
Definition: console.h:28
void set_frame_animation_flag(int fl, qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE)
Устанавливает флаг анимации.
Definition: qd_interface_save.h:138
const Common::Path animation_file(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает имя файла для анимации.
Definition: qd_interface_element_state.h:203
bool keyboard_handler(Common::KeyCode vkey)
Обработчик ввода с клавиатуры.
const Common::Path sound_file(state_mode_t snd_id=DEFAULT_MODE) const
Возвращает имя файла звукового эффекта, привязанного к состоянию.
Definition: qd_interface_element_state.h:185
void set_sound_file(const Common::Path str, state_mode_t snd_id=DEFAULT_MODE)
Устанавливает имя файла звукового эффекта, привязанного к состоянию.
int thumbnail_size_y() const
Возвращает размер картики-превью по вертикали в пикселах.
Definition: qd_interface_save.h:74
element_type
Типы элементов интерфейса.
Definition: qd_interface_element.h:65
mouseEvent
События.
Definition: mouse_input.h:41
int animation_flags(state_mode_t anm_id=DEFAULT_MODE) const
Возвращает флаги анимации.
Definition: qd_interface_element_state.h:207
Прямоугольная область на экране.
Definition: gr_screen_region.h:31
int size_x() const
Возвращает размер элемента по горизонтали в пикселах.
int size_y() const
Возвращает размер элемента по вертикали в пикселах.
int thumbnail_size_x() const
Возвращает размер картики-превью по горизонтали в пикселах.
Definition: qd_interface_save.h:70
bool init(bool is_game_active=true)
Инициализация элемента.
const Common::Path frame_animation_file(qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE) const
Возвращает имя файла для анимации.
Definition: qd_interface_save.h:129
qdInterfaceElement::element_type get_element_type() const
Возвращает тип элемента.
Definition: qd_interface_save.h:44
state_mode_t
Идентификаторы для режимов работы состояния.
Definition: qd_interface_element_state.h:159
bool quant(float dt)
Обсчет логики, параметр - время в секундах.
void drop_frame_animation_flag(int fl, qdInterfaceElementState::state_mode_t mode=qdInterfaceElementState::MOUSE_HOVER_MODE)
Скидывает флаг анимации.
Definition: qd_interface_save.h:142