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 
28 namespace 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 
67 const char *objectType2str(int id);
68 
71 public:
72  qdNamedObject();
73  qdNamedObject(const qdNamedObject &p);
74  ~qdNamedObject();
75 
76  qdNamedObject &operator = (const qdNamedObject &p);
77 
79  qdNamedObject *owner() const {
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 
140 private:
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: str.h:59
qdNamedObjectType
Типы поименованных объектов.
Definition: qd_named_object.h:31
void add_trigger_reference()
Добавляет ссылку из триггеров на объект.
Definition: qd_named_object.h:122
virtual bool save_data(Common::WriteStream &fh) const
Запись данных в сэйв.
Definition: stream.h:77
Поименованный объект.
Definition: qd_named_object.h:70
void clear_flags()
Очищает флаги.
Definition: qd_named_object.h:104
Definition: stream.h:745
virtual int named_object_type() const =0
Возвращает тип объекта.
bool check_flag(int fl) const
Возвращает true, если установлен флаг fl.
Definition: qd_named_object.h:99
Базовый класс для игровых ресурсов.
Definition: console.h:28
void remove_trigger_reference()
Удаляет ссылку из триггеров на объект.
Definition: qd_named_object.h:126
virtual bool load_data(Common::SeekableReadStream &fh, int save_version)
Загрузка данных из сэйва.
bool is_in_triggers() const
Возвращает true, если на объект есть ссылки из триггеров.
Definition: qd_named_object.h:134
void set_flag(int fl)
Устанавливает флаг.
Definition: qd_named_object.h:91
Базовый поименованный объект.
Definition: qd_named_object_base.h:30
void clear_trigger_references()
Очищает счётчик ссылок из триггеров на объект.
Definition: qd_named_object.h:130
void drop_flag(int fl)
Скидывает флаг.
Definition: qd_named_object.h:95
void set_owner(qdNamedObject *p)
Устанавливает владельца объекта.
Definition: qd_named_object.h:86
int flags() const
Возвращает значение флагов объекта.
Definition: qd_named_object.h:108
qdNamedObject * owner() const
Возвращает владельца объекта.
Definition: qd_named_object.h:79