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" 36 const int QD_OBJ_MOVING_FLAG = 0x01;
37 const int QD_OBJ_HIDDEN_FLAG = 0x02;
38 const int QD_OBJ_INVERSE_PERSPECTIVE_FLAG = 0x04;
39 const int QD_OBJ_SHOW_NAME_FLAG = 0x08;
40 const int QD_OBJ_NO_SCALE_FLAG = 0x10;
41 const int QD_OBJ_SCREEN_COORDS_FLAG = 0x20;
42 const int QD_OBJ_NON_PLAYER_PERSONAGE_FLAG = 0x40;
43 const int QD_OBJ_HAS_BOUND_FLAG = 0x80;
44 const int QD_OBJ_DISABLE_MOVEMENT_FLAG = 0x100;
45 const int QD_OBJ_DISABLE_MOUSE_FLAG = 0x200;
46 const int QD_OBJ_IS_IN_TRIGGER_FLAG = 0x400;
47 const int QD_OBJ_STATE_CHANGE_FLAG = 0x800;
48 const int QD_OBJ_IS_IN_INVENTORY_FLAG = 0x1000;
49 const int QD_OBJ_KEYBOARD_CONTROL_FLAG = 0x2000;
50 const 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 {
100 return !check_flag(QD_OBJ_HIDDEN_FLAG);
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) {
180 #ifdef __QD_DEBUG_ENABLE__ 181 inline 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())) {
192 inline bool qdbg_is_object(
const qdNamedObject *,
const char *,
const char *) {
199 #endif // QDENGINE_QDCORE_QD_GAME_OBJECT_H Базовый класс для игровых объектов.
Definition: qd_game_object.h:53
Поименованный объект.
Definition: qd_named_object.h:70
virtual bool get_debug_info(Common::String &buf) const
Копирует в буфер отладочную информацию для вывода на экран в отладочном режиме.
Definition: qd_game_object.h:143
const char * name() const
Возвращает имя объекта.
Definition: qd_named_object_base.h:40
XML тег.
Definition: xml_tag.h:33
Базовый класс для игровых ресурсов.
Definition: console.h:28
Definition: algorithm.h:29
mouseEvent
События.
Definition: mouse_input.h:41
Прямоугольная область на экране.
Definition: gr_screen_region.h:31
qdNamedObject * owner() const
Возвращает владельца объекта.
Definition: qd_named_object.h:79