22#ifndef QDENGINE_QDCORE_QD_GAME_OBJECT_H
23#define QDENGINE_QDCORE_QD_GAME_OBJECT_H
25#include "qdengine/parser/xml_fwd.h"
26#include "qdengine/system/input/mouse_input.h"
27#include "qdengine/system/graphics/gr_screen_region.h"
28#include "qdengine/qdcore/qd_named_object.h"
36const int QD_OBJ_MOVING_FLAG = 0x01;
37const int QD_OBJ_HIDDEN_FLAG = 0x02;
38const int QD_OBJ_INVERSE_PERSPECTIVE_FLAG = 0x04;
39const int QD_OBJ_SHOW_NAME_FLAG = 0x08;
40const int QD_OBJ_NO_SCALE_FLAG = 0x10;
41const int QD_OBJ_SCREEN_COORDS_FLAG = 0x20;
42const int QD_OBJ_NON_PLAYER_PERSONAGE_FLAG = 0x40;
43const int QD_OBJ_HAS_BOUND_FLAG = 0x80;
44const int QD_OBJ_DISABLE_MOVEMENT_FLAG = 0x100;
45const int QD_OBJ_DISABLE_MOUSE_FLAG = 0x200;
46const int QD_OBJ_IS_IN_TRIGGER_FLAG = 0x400;
47const int QD_OBJ_STATE_CHANGE_FLAG = 0x800;
48const int QD_OBJ_IS_IN_INVENTORY_FLAG = 0x1000;
49const int QD_OBJ_KEYBOARD_CONTROL_FLAG = 0x2000;
50const int QD_OBJ_FIXED_SCREEN_COORDS_FLAG = 0x4000;
61 void set_parallax_offset(
int offs_x,
int offs_y) {
62 _parallax_offset.x = offs_x;
63 _parallax_offset.y = offs_y;
65 const Vect2i &get_parallax_offset()
const {
66 return _parallax_offset;
69 virtual void redraw(
int offs_x = 0,
int offs_y = 0)
const = 0;
70 virtual void debug_redraw()
const = 0;
71 virtual void draw_contour(uint32 color)
const = 0;
72 virtual void draw_shadow(
int offs_x,
int offs_y, uint32 color,
int alpha)
const = 0;
74 virtual bool need_redraw()
const {
77 virtual void post_redraw() { }
80 return grScreenRegion_EMPTY;
87 virtual bool hit(
int x,
int y)
const = 0;
89 const Vect2i &screen_pos()
const {
92 virtual bool update_screen_pos();
93 virtual Vect2s screen_size()
const = 0;
95 float screen_depth()
const {
99 virtual bool is_visible()
const {
106 void set_pos(
const Vect3f &rr) {
110 virtual bool load_script(
const xml::tag *p) = 0;
113 virtual bool load_resources() {
116 virtual void free_resources() { };
121 virtual void quant(
float dt);
123 virtual bool init_grid_zone() {
126 virtual bool toggle_grid_zone(
bool make_walkable =
false) {
129 virtual bool save_grid_zone() {
132 virtual bool restore_grid_zone() {
135 virtual bool set_grid_zone_attributes(
int attr)
const {
138 virtual bool drop_grid_zone_attributes(
int attr)
const {
152 const Vect2i &get_screen_R()
const {
156 void setTempPosInList(uint pos) { _tempPosInList = pos; }
157 uint tempPosInList()
const {
return _tempPosInList; }
163 virtual bool load_script_body(
const xml::tag *p);
166 void set_screen_R(
const Vect2i &v) {
173 Vect2i _parallax_offset;
180#ifdef __QD_DEBUG_ENABLE__
181inline bool qdbg_is_object(
const qdNamedObject *obj,
const char *scene_name,
const char *object_name) {
182 if (
dynamic_cast<const qdGameObject *
>(obj)) {
183 if (obj->name() && !strcmp(object_name, obj->name())) {
184 if (!scene_name || (obj->owner() && obj->owner()->name() && !strcmp(obj->owner()->name(), scene_name)))
192inline bool qdbg_is_object(
const qdNamedObject *,
const char *,
const char *) {
Прямоугольная область на экране.
Definition: gr_screen_region.h:31
mouseEvent
События.
Definition: mouse_input.h:41
Базовый класс для игровых объектов.
Definition: qd_game_object.h:53
virtual bool get_debug_info(Common::String &buf) const
Копирует в буфер отладочную информацию для вывода на экран в отладочном режиме.
Definition: qd_game_object.h:143
bool load_data(Common::SeekableReadStream &fh, int saveVersion)
Загрузка данных из сэйва.
virtual bool init()
Инициализация объекта, вызывается при старте и перезапуске игры.
bool save_data(Common::WriteStream &fh) const
Запись данных в сэйв.
Поименованный объект.
Definition: qd_named_object.h:70
bool check_flag(int fl) const
Возвращает true, если установлен флаг fl.
Definition: qd_named_object.h:99
int flags() const
Возвращает значение флагов объекта.
Definition: qd_named_object.h:108
XML тег.
Definition: xml_tag.h:33
Definition: algorithm.h:29
Базовый класс для игровых ресурсов.
Definition: console.h:28