22 #ifndef QDENGINE_QDCORE_QD_GAME_OBJECT_ANIMATED_H 23 #define QDENGINE_QDCORE_QD_GAME_OBJECT_ANIMATED_H 25 #include "qdengine/parser/xml_fwd.h" 26 #include "qdengine/qdcore/qd_animation.h" 27 #include "qdengine/qdcore/qd_coords_animation.h" 28 #include "qdengine/qdcore/qd_game_object.h" 29 #include "qdengine/qdcore/qd_game_object_state.h" 53 return QD_NAMED_OBJECT_ANIMATED_OBJ;
57 virtual const Vect3f &
bound(
bool perspective_correction =
true)
const;
62 virtual float radius()
const;
67 if (
check_flag(QD_OBJ_HAS_BOUND_FLAG))
return true;
68 if (_cur_state != -1 && _states[_cur_state]->
has_bound())
return true;
87 return _states.
size();
102 if (_cur_state != -1 && _states[_cur_state] == p)
112 return (_last_state == p);
121 if (_queued_state == p)
return true;
125 bool is_state_waiting(
const char *state_name)
const;
152 return _queued_state;
155 return _queued_state;
168 virtual void set_state(
int st);
170 void restore_state();
172 bool has_camera_mode()
const;
178 const Vect3f &default_R()
const {
181 void set_default_pos(
const Vect3f &r) {
185 void set_default_state();
193 bool update_screen_pos();
205 Vect2s screen_size()
const {
206 return Vect2s(_animation.size_x(), _animation.size_y());
209 void set_screen_rotation(
float target_angle,
float speed);
210 float screen_rotation()
const;
213 const Vect2f &screen_scale()
const;
215 bool has_screen_transform()
const {
216 return _current_transform();
220 int inventory_type()
const {
221 return _inventory_type;
223 void set_inventory_type(
int tp) {
224 _inventory_type = tp;
228 bool hit(
int x,
int y)
const;
230 void quant(
float dt);
235 void redraw(
int offs_x = 0,
int offs_y = 0)
const;
236 bool need_redraw()
const;
239 void draw_shadow(
int offs_x,
int offs_y, uint32 color,
int alpha)
const;
243 void debug_redraw()
const;
244 void draw_contour(uint32 color)
const;
245 void draw_grid_zone(
const Vect2s sz)
const;
247 int mouse_cursor_ID()
const;
249 bool load_script(
const xml::tag *p);
257 bool load_resources();
258 void free_resources();
263 bool is_visible()
const;
265 const Vect2s &grid_size()
const {
269 bool init_grid_zone();
270 virtual bool toggle_grid_zone(
bool make_walkable =
false);
271 bool save_grid_zone();
272 bool restore_grid_zone();
273 bool set_grid_zone_attributes(
int attr)
const;
274 bool check_grid_zone_attributes(
int attr)
const;
275 bool drop_grid_zone_attributes(
int attr)
const;
276 bool set_grid_zone_attributes(
const Vect2f &r,
int attr)
const;
277 bool check_grid_zone_attributes(
const Vect2f &r,
int attr)
const;
278 bool drop_grid_zone_attributes(
const Vect2f &r,
int attr)
const;
280 const char *inventory_name()
const {
281 return _inventory_name.c_str();
283 void set_inventory_name(
const char *
name) {
285 _inventory_name =
name;
287 _inventory_name.
clear();
289 bool has_inventory_name()
const {
290 return !_inventory_name.empty();
294 return _last_screen_region;
298 int inventory_cell_index()
const {
299 return _inventory_cell_index;
301 void set_inventory_cell_index(
int idx) {
302 _inventory_cell_index = idx;
305 int last_chg_time()
const {
306 return _last_chg_time;
308 void set_last_chg_time(
int time) {
309 _last_chg_time = time;
311 int idle_time()
const;
313 int shadow_color()
const;
314 int shadow_alpha()
const;
315 void set_shadow(uint32 color,
int alpha) {
316 _shadow_color = color;
317 _shadow_alpha = alpha;
319 void clear_shadow() {
320 set_shadow(0, QD_NO_SHADOW_ALPHA);
325 bool load_script_body(
const xml::tag *p);
335 _last_inventory_state = p;
369 int _inventory_cell_index;
373 float _last_screen_depth;
375 uint32 _lastShadowColor;
376 int _lastShadowAlpha;
382 uint32 _shadow_color;
391 #endif // QDENGINE_QDCORE_QD_GAME_OBJECT_ANIMATED_H
Базовый класс для игровых объектов.
Definition: qd_game_object.h:53
virtual bool can_change_state(const qdGameObjectState *state=NULL) const
Возвращает true, если объект в данный момент может менять состояние.
Кадр анимации.
Definition: qd_animation_frame.h:31
bool auto_bound()
Устанавливает баунд объекта по текущему состоянию.
int get_state_index(const qdGameObjectState *p) const
Возвращает номер состояния или -1 если не может такое состояние найти.
bool is_state_active(const char *state_name) const
Возвращает true, если состояние с именем state_name активно.
bool init()
Инициализация объекта, вызывается при старте и перезапуске игры.
Информация об анимации.
Definition: qd_animation_info.h:34
const char * name() const
Возвращает имя объекта.
Definition: qd_named_object_base.h:40
bool load_data(Common::SeekableReadStream &fh, int save_version)
Загрузка данных из сэйва.
void set_cur_state(int st)
Устанавливает номер текущего состояния объекта.
Definition: qd_game_object_animated.h:82
Состояние для инвентори.
Definition: qd_game_object_state.h:106
void draw_bound() const
Отрисовка баунда (для отладки).
int num_directions() const
Возвращает количество имеющихся у объекта направлений.
bool is_state_active(const qdGameObjectState *p) const
Возвращает true, если состояние state активно.
Definition: qd_game_object_animated.h:101
bool has_bound() const
Возвращает true, если у объекта выставлен баунд.
Definition: qd_game_object_animated.h:66
Dynamic object.
Definition: qd_game_object_animated.h:37
bool inters_with_bound(Vect3f bnd, Vect3f cen, bool perspective_correction=true) const
Пересекается ли баунд, расположенный в точке с заданным баундом с центром в cen.
Состояние динамического объекта - базовый класс.
Definition: qd_game_object_state.h:91
Включать состояние, когда мышь над объектом в инвентори.
Definition: qd_game_object_state.h:149
Graphics::Surface * scale(const Graphics::Surface &srcImage, int xSize, int ySize)
bool check_flag(int fl) const
Возвращает true, если установлен флаг fl.
Definition: qd_named_object.h:99
bool was_state_active(const qdGameObjectState *p) const
Возвращает true, если состояние state было активировано.
Definition: qd_game_object_animated.h:116
bool save_data(Common::WriteStream &fh) const
Запись данных в сэйв.
virtual const Vect3f & bound(bool perspective_correction=true) const
Возвращает баунд объекта.
XML тег.
Definition: xml_tag.h:33
Базовый класс для игровых ресурсов.
Definition: console.h:28
int named_object_type() const
Возвращает тип объекта.
Definition: qd_game_object_animated.h:52
Режим работы камеры.
Definition: qd_camera_mode.h:40
const qdGameObjectStateVector & state_vector() const
Возвращает состояния объекта.
Definition: qd_game_object_animated.h:128
Анимация.
Definition: qd_animation.h:57
bool handle_state_end()
Обработка окончания текущего состояния.
size_type size() const
Definition: array.h:315
Включать состояние, когда объект взят на мышь.
Definition: qd_game_object_state.h:147
mouseEvent
События.
Definition: mouse_input.h:41
Прямоугольная область на экране.
Definition: gr_screen_region.h:31
int cur_state() const
Возвращает номер текущего состояния объекта.
Definition: qd_game_object_animated.h:78
void set_bound(const Vect3f &b)
Устанавливает баунд объекта.
bool was_state_active(const char *state_name) const
Возвращает true, если состояние с именем state_name было активировано.
int max_state() const
Возвращает количество состояний объекта.
Definition: qd_game_object_animated.h:86
virtual float radius() const
Возвращает радиус объекта.
bool was_state_previous(const qdGameObjectState *p) const
Возвращает true, если состояние p было активно перед активным в данный момент состоянием.
Definition: qd_game_object_animated.h:111
Состояние уже было активировано.
Definition: qd_game_object_state.h:139
bool was_state_previous(const char *state_name) const
Возвращает true, если состояние с именем state_name было активно перед активным в данный момент состо...
bool get_debug_info(Common::String &buf) const
Копирует в буфер отладочную информацию для вывода на экран в отладочном режиме.
void set_states_owner()
Установка владельца состояний.