ScummVM API documentation
qd_named_object.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_NAMED_OBJECT_H
23#define QDENGINE_QDCORE_QD_NAMED_OBJECT_H
24
25#include "common/stream.h"
26#include "qdengine/qdcore/qd_named_object_base.h"
27
28namespace QDEngine {
29
32 QD_NAMED_OBJECT_GENERIC,
33 QD_NAMED_OBJECT_SCALE_INFO,
34 QD_NAMED_OBJECT_TRIGGER_CHAIN,
35 QD_NAMED_OBJECT_SOUND,
36 QD_NAMED_OBJECT_ANIMATION,
37 QD_NAMED_OBJECT_ANIMATION_INFO,
38 QD_NAMED_OBJECT_COORDS_ANIMATION,
39 QD_NAMED_OBJECT_OBJ_STATE,
40 QD_NAMED_OBJECT_STATIC_OBJ,
41 QD_NAMED_OBJECT_ANIMATED_OBJ,
42 QD_NAMED_OBJECT_MOVING_OBJ,
43 QD_NAMED_OBJECT_MOUSE_OBJ,
44 QD_NAMED_OBJECT_SCENE,
45 QD_NAMED_OBJECT_LOCATION,
46 QD_NAMED_OBJECT_DISPATCHER,
47
48 QD_NAMED_OBJECT_ANIMATION_SET,
49 QD_NAMED_OBJECT_GRID_ZONE,
50 QD_NAMED_OBJECT_VIDEO,
51 QD_NAMED_OBJECT_INVENTORY,
52 QD_NAMED_OBJECT_MINIGAME,
53 QD_NAMED_OBJECT_MUSIC_TRACK,
54 QD_NAMED_OBJECT_GRID_ZONE_STATE,
55
56 QD_NAMED_OBJECT_SOUND_INFO,
57 QD_NAMED_OBJECT_ANIMATION_SET_INFO,
58
59 QD_NAMED_OBJECT_GAME_END,
60 QD_NAMED_OBJECT_COUNTER,
61
62 QD_NAMED_OBJECT_FONT_INFO,
63
64 QD_NAMED_OBJECT_MAX_TYPE
65};
66
67const char *objectType2str(int id);
68
71public:
75
76 qdNamedObject &operator = (const qdNamedObject &p);
77
80 return _owner;
81 }
84
87 _owner = p;
88 }
89
91 void set_flag(int fl) {
92 _flags |= fl;
93 }
95 void drop_flag(int fl) {
96 _flags &= ~fl;
97 }
99 bool check_flag(int fl) const {
100 if (_flags & fl) return true;
101 return false;
102 }
104 void clear_flags() {
105 _flags = 0;
106 }
108 int flags() const {
109 return _flags;
110 }
111
113 virtual int named_object_type() const = 0;
114
116 virtual bool load_data(Common::SeekableReadStream &fh, int save_version);
118 virtual bool save_data(Common::WriteStream &fh) const;
119
120
123 _trigger_reference_count++;
124 }
127 if (_trigger_reference_count) _trigger_reference_count--;
128 }
131 _trigger_reference_count = 0;
132 }
134 bool is_in_triggers() const {
135 return (_trigger_reference_count > 0);
136 }
137
138 Common::String toString() const;
139
140private:
141
143 int _flags;
144
146 int _trigger_reference_count;
147
149 mutable qdNamedObject *_owner;
150};
151
152} // namespace QDEngine
153
154#endif // QDENGINE_QDCORE_QD_NAMED_OBJECT_H
Definition: stream.h:745
Definition: str.h:59
Definition: stream.h:77
Базовый поименованный объект.
Definition: qd_named_object_base.h:30
Поименованный объект.
Definition: qd_named_object.h:70
bool is_in_triggers() const
Возвращает true, если на объект есть ссылки из триггеров.
Definition: qd_named_object.h:134
void set_owner(qdNamedObject *p)
Устанавливает владельца объекта.
Definition: qd_named_object.h:86
qdNamedObject * owner() const
Возвращает владельца объекта.
Definition: qd_named_object.h:79
virtual bool load_data(Common::SeekableReadStream &fh, int save_version)
Загрузка данных из сэйва.
void clear_trigger_references()
Очищает счётчик ссылок из триггеров на объект.
Definition: qd_named_object.h:130
void remove_trigger_reference()
Удаляет ссылку из триггеров на объект.
Definition: qd_named_object.h:126
void clear_flags()
Очищает флаги.
Definition: qd_named_object.h:104
bool check_flag(int fl) const
Возвращает true, если установлен флаг fl.
Definition: qd_named_object.h:99
void add_trigger_reference()
Добавляет ссылку из триггеров на объект.
Definition: qd_named_object.h:122
virtual bool save_data(Common::WriteStream &fh) const
Запись данных в сэйв.
qdNamedObject * owner(qdNamedObjectType tp) const
Возвращает владельца объекта, тип которого tp.
void set_flag(int fl)
Устанавливает флаг.
Definition: qd_named_object.h:91
void drop_flag(int fl)
Скидывает флаг.
Definition: qd_named_object.h:95
virtual int named_object_type() const =0
Возвращает тип объекта.
int flags() const
Возвращает значение флагов объекта.
Definition: qd_named_object.h:108
Базовый класс для игровых ресурсов.
Definition: console.h:28
qdNamedObjectType
Типы поименованных объектов.
Definition: qd_named_object.h:31