ScummVM API documentation
qd_game_object_state.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_GAME_OBJECT_STATE_H
23 #define QDENGINE_QDCORE_QD_GAME_OBJECT_STATE_H
24 
25 #include "qdengine/parser/xml_fwd.h"
26 #include "qdengine/qdcore/qd_contour.h"
27 #include "qdengine/qdcore/qd_sound_info.h"
28 #include "qdengine/qdcore/qd_animation_info.h"
29 #include "qdengine/qdcore/qd_animation_set_info.h"
30 #include "qdengine/qdcore/qd_conditional_object.h"
31 #include "qdengine/qdcore/qd_named_object.h"
32 #include "qdengine/qdcore/qd_coords_animation.h"
33 #include "qdengine/qdcore/qd_camera_mode.h"
34 #include "qdengine/qdcore/qd_sound_handle.h"
35 #include "qdengine/qdcore/qd_screen_text.h"
36 #include "qdengine/qdcore/qd_grid_zone.h"
37 #include "qdengine/system/sound/snd_sound.h"
38 
39 namespace QDEngine {
40 
42 public:
43  qdScreenTransform(float angle = 0.f, const Vect2f &scale = Vect2f(1.f, 1.f)) : _angle(angle), _scale(scale) { }
44 
45  bool operator == (const qdScreenTransform &trans) const;
46  bool operator != (const qdScreenTransform &trans) const {
47  return !(*this == trans);
48  }
49  bool operator()() const {
50  return _angle != 0.f || _scale.x != 1.f || _scale.y != 1.f;
51  }
52 
53  qdScreenTransform operator *(float value) const {
54  return qdScreenTransform(_angle *value, _scale *value);
55  }
56 
57  qdScreenTransform &operator += (const qdScreenTransform &trans) {
58  _angle += trans._angle;
59  _scale += trans._scale;
60 
61  return *this;
62  }
63 
64  bool change(float dt, const qdScreenTransform &target_trans, const qdScreenTransform &speed);
65 
66  float angle() const {
67  return _angle;
68  }
69  void set_angle(float angle) {
70  _angle = angle;
71  }
72 
73  const Vect2f &scale() const {
74  return _scale;
75  }
76  void set_scale(const Vect2f &scale) {
77  _scale = scale;
78  }
79  bool has_scale() const {
80  return fabs(_scale.x - 1.f) > FLT_EPS || fabs(_scale.y - 1.f) > FLT_EPS;
81  }
82 
83 private:
84 
85  float _angle;
86  Vect2f _scale;
87 
88 };
89 
92 public:
94  enum {
96  QD_OBJ_STATE_FLAG_HIDDEN = 0x01,
98  QD_OBJ_STATE_FLAG_NOT_IN_TRIGGERS = 0x02,
100  QD_OBJ_STATE_FLAG_RESTORE_PREV_STATE = 0x04,
102  QD_OBJ_STATE_FLAG_HIDE_OBJECT = 0x08,
104  QD_OBJ_STATE_FLAG_GLOBAL_OWNER = 0x10,
106  QD_OBJ_STATE_FLAG_INVENTORY = 0x20,
108  QD_OBJ_STATE_FLAG_MOVE_TO_INVENTORY = 0x40,
110  QD_OBJ_STATE_FLAG_MOVE_TO_INVENTORY_FAILED = 0x80,
112  QD_OBJ_STATE_FLAG_HAS_BOUND = 0x100,
114  QD_OBJ_STATE_FLAG_ACTIVATION_TIMER = 0x200,
116  QD_OBJ_STATE_FLAG_ACTIVATION_TIMER_END = 0x400,
118 
122  QD_OBJ_STATE_FLAG_DIALOG_PHRASE = 0x800,
124 
128  QD_OBJ_STATE_FLAG_SOUND_SYNC = 0x1000,
130 
134  QD_OBJ_STATE_FLAG_ENABLE_INTERRUPT = 0x2000,
136 
139  QD_OBJ_STATE_FLAG_WAS_ACTIVATED = 0x4000,
141 
145  QD_OBJ_STATE_FLAG_DISABLE_WALK_INTERRUPT = 0x8000,
147  QD_OBJ_STATE_FLAG_MOUSE_STATE = 0x10000,
149  QD_OBJ_STATE_FLAG_MOUSE_HOVER_STATE = 0x20000,
151  QD_OBJ_STATE_FLAG_STAY_IN_INVENTORY = 0x40000,
156  QD_OBJ_STATE_FLAG_FORCED_LOAD = 0x80000,
158  QD_OBJ_STATE_FLAG_ENABLE_SKIP = 0x100000,
160  QD_OBJ_STATE_FLAG_MOVE_TO_ZONE = 0x200000,
162  QD_OBJ_STATE_FLAG_MOVE_ON_OBJECT = 0x400000,
164  QD_OBJ_STATE_FLAG_ACTIVATE_PERSONAGE = 0x800000,
166  QD_OBJ_STATE_FLAG_AUTO_LOAD = 0x1000000,
168  QD_OBJ_STATE_FLAG_AUTO_SAVE = 0x2000000,
169  QD_OBJ_STATE_FLAG_FADE_IN = 0x4000000,
170  QD_OBJ_STATE_FLAG_FADE_OUT = 0x8000000,
171  };
172 
174  enum StateType {
180  STATE_MASK
181  };
182 
183  enum {
184  CURSOR_UNASSIGNED = -1
185  };
186 
189  virtual ~qdGameObjectState();
190 
191  virtual qdGameObjectState &operator = (const qdGameObjectState &st);
192 
193  int named_object_type() const {
194  return QD_NAMED_OBJECT_OBJ_STATE;
195  }
196 
199  return &_coords_animation;
200  }
203  return &_coords_animation;
204  }
205 
207  virtual bool load_script(const xml::tag *p) = 0;
209  virtual bool save_script(Common::WriteStream &fh, int indent = 0) const = 0;
210 
212  bool init();
213 
215  bool load_data(Common::SeekableReadStream &fh, int save_version);
217  bool save_data(Common::WriteStream &fh) const;
218 
220  virtual bool register_resources();
222  virtual bool unregister_resources();
224  virtual bool load_resources();
226  virtual bool free_resources();
227 
229  bool check_conditions();
230 
232  const Vect2s &center_offset() const {
233  return _center_offset;
234  }
236  void set_center_offset(const Vect2s offs) {
237  _center_offset = offs;
238  }
239 
241  void quant(float dt);
242 
245  return _prev_state;
246  }
249  _prev_state = p;
250  }
251 
254  return _state_type;
255  }
256 
258  int mouse_cursor_ID() const {
259  return _mouse_cursor_id;
260  }
262 
266  void set_mouse_cursor_ID(int id) {
267  _mouse_cursor_id = id;
268  }
270  bool has_mouse_cursor_ID() const {
271  return _mouse_cursor_id != CURSOR_UNASSIGNED;
272  }
273 
275  const char *sound_name() const {
276  return _sound_info.name();
277  }
279  void set_sound_name(const char *p) {
280  _sound_info.set_name(p);
281  }
283  qdSound *sound() const;
285  bool has_sound() const {
286  if (sound_name()) return true;
287  else return false;
288  }
290  const qdSoundHandle *sound_handle() const {
291  return &_sound_handle;
292  }
294  bool play_sound();
296  bool stop_sound() const;
298  bool set_sound_frequency(float frequency_coeff) const;
299  bool is_sound_finished() const;
300  bool is_sound_playing() const;
301 
303  void set_sound_flag(int fl) {
304  _sound_info.set_flag(fl);
305  }
307  void drop_sound_flag(int fl) {
308  _sound_info.drop_flag(fl);
309  }
311  bool check_sound_flag(int fl) const {
312  return _sound_info.check_flag(fl);
313  }
314 
316  virtual bool is_state_empty() const;
317 
319  bool is_active() const;
321  bool is_default() const;
322 
324  float activation_delay() const {
325  return _activation_delay;
326  }
328  void set_activation_delay(float tm) {
329  _activation_delay = tm;
330  }
333  _activation_timer = _activation_delay;
334  }
335 
337  void start() {
338  _cur_time = 0.0f;
339  _is_sound_started = false;
340  }
341 
343  float cur_time() const {
344  return _cur_time;
345  }
347  float work_time() const;
349  void set_work_time(float tm) {
350  _work_time = tm;
351  }
352 
354  bool need_to_walk() const {
355  if (!_coords_animation.is_empty()
356  && _coords_animation.check_flag(QD_COORDS_ANM_OBJECT_START_FLAG))
357  return true;
358  else
359  return false;
360  }
361 
362  virtual qdGameObjectState *clone() const = 0;
363 
364  virtual float adjust_direction_angle(float angle) const {
365  return angle;
366  }
367 
369  const Vect3f start_pos() const {
370  if (!_coords_animation.is_empty()) {
371  return _coords_animation.get_point(0)->dest_pos();
372  } else
373  return Vect3f(0, 0, 0);
374  }
376  float start_direction_angle() const {
377  if (!_coords_animation.is_empty()) {
378  return _coords_animation.get_point(0)->direction_angle();
379  } else
380  return -1.0f;
381  }
382 
384  int reference_count() const {
385  return _reference_count;
386  }
389  _reference_count++;
390  }
393  if (_reference_count) _reference_count--;
394  }
395 
397  bool has_text() const {
398  return (!_text_ID.empty() || !_short_text_ID.empty());
399  }
401  const char *text() const {
402  if (has_full_text()) return full_text();
403  else return short_text();
404  }
406  const char *full_text() const;
408  const char *short_text() const;
409 
411  bool has_full_text() const {
412  return !_text_ID.empty();
413  }
415  bool has_short_text() const {
416  return !_short_text_ID.empty();
417  }
419  const char *full_text_ID() const {
420  return _text_ID.c_str();
421  }
423 
426  void set_full_text_ID(const char *p) {
427  if (p) _text_ID = p;
428  else _text_ID.clear();
429  }
431  const char *short_text_ID() const {
432  return _short_text_ID.c_str();
433  }
435 
438  void set_short_text_ID(const char *p) {
439  if (p) _short_text_ID = p;
440  else _short_text_ID.clear();
441  }
442 
444  bool has_bound() const {
445  return check_flag(QD_OBJ_STATE_FLAG_HAS_BOUND);
446  }
448  const Vect3f &bound() const {
449  return _bound;
450  }
452  float radius() const {
453  return _radius;
454  }
456  void set_bound(const Vect3f &b);
458  virtual bool auto_bound() {
459  return false;
460  }
461 
463  void set_camera_mode(const qdCameraMode &mode) {
464  _camera_mode = mode;
465  }
467  const qdCameraMode &camera_mode() const {
468  return _camera_mode;
469  }
471  bool has_camera_mode() const {
472  return _camera_mode.camera_mode() != qdCameraMode::MODE_UNASSIGNED;
473  }
474 
475  float rnd_move_radius() const {
476  return _rnd_move_radius;
477  }
478  void set_rnd_move_radius(float radius) {
479  _rnd_move_radius = radius;
480  }
481 
482  float rnd_move_speed() const {
483  return _rnd_move_speed;
484  }
485  void set_rnd_move_speed(float speed) {
486  _rnd_move_speed = speed;
487  }
488 
490  bool trigger_can_start() const;
491 
492  bool forced_load() const {
493  return check_flag(QD_OBJ_STATE_FLAG_FORCED_LOAD);
494  }
495 
496  float text_delay() const {
497  return _text_delay;
498  }
499  bool has_text_delay() const {
500  return _text_delay > FLT_EPS;
501  }
502  void set_text_delay(float delay) {
503  _text_delay = delay;
504  }
505 
506  float sound_delay() const {
507  return _sound_delay;
508  }
509  bool has_sound_delay() const {
510  return _sound_delay > FLT_EPS;
511  }
512  void set_sound_delay(float delay) {
513  _sound_delay = delay;
514  }
515 
516  int autosave_slot() const {
517  return _autosave_slot;
518  }
519  void set_autosave_slot(int slot) {
520  _autosave_slot = slot;
521  }
522 
523  float fade_time() const {
524  return _fade_time;
525  }
526  void set_fade_time(float time) {
527  _fade_time = time;
528  }
529 
530  uint32 shadow_color() const {
531  return _shadow_color;
532  }
533  int shadow_alpha() const {
534  return _shadow_alpha;
535  }
536 
537  void set_shadow(uint32 color, int alpha) {
538  _shadow_color = color;
539  _shadow_alpha = alpha;
540  }
541 
542  const qdScreenTextFormat &text_format(bool topic_mode = false) const {
543  if (_text_format.is_global_depend()) {
544  return (topic_mode && check_flag(QD_OBJ_STATE_FLAG_DIALOG_PHRASE)) ?
545  qdScreenTextFormat::global_topic_format() : qdScreenTextFormat::global_text_format();
546  }
547  return _text_format;
548  }
549  void set_text_format(const qdScreenTextFormat &text_format) {
550  _text_format = text_format;
551  }
552 
553  bool has_transform() const {
554  return _transform() || _transform_speed();
555  }
556 
557  const qdScreenTransform &transform() const {
558  return _transform;
559  }
560  void set_transform(const qdScreenTransform &tr) {
561  _transform = tr;
562  }
563  const qdScreenTransform &transform_speed() const {
564  return _transform_speed;
565  }
566  void set_transform_speed(const qdScreenTransform &tr_speed) {
567  _transform_speed = tr_speed;
568  }
569 
570  static Common::String flag2str(int fl, bool truncate = false, bool icon = false);
571 
572 protected:
573 
575  bool load_script_body(const xml::tag *p);
577  bool save_script_body(Common::WriteStream &fh, int indent = 0) const;
578 
580  virtual bool need_sound_restart() const;
581 
582 private:
583 
585  StateType _state_type;
586 
588  Vect2s _center_offset;
590  Vect3f _bound;
592  float _radius;
593 
595  qdCoordsAnimation _coords_animation;
596 
598  float _activation_delay;
600  float _activation_timer;
601 
603 
607  float _work_time;
609  float _cur_time;
610 
612  qdSoundInfo _sound_info;
614  qdSoundHandle _sound_handle;
616  float _sound_delay;
618  bool _is_sound_started;
619 
621  float _text_delay;
623  bool _is_text_shown;
624 
626  int _mouse_cursor_id;
627 
629  Common::String _text_ID;
631  Common::String _short_text_ID;
632 
634  qdCameraMode _camera_mode;
635 
636  float _rnd_move_radius;
637  float _rnd_move_speed;
638 
640  int _autosave_slot;
641 
643  float _fade_time;
644 
646  uint32 _shadow_color;
648  int _shadow_alpha;
649 
651  qdScreenTransform _transform;
652  qdScreenTransform _transform_speed;
653 
655  qdScreenTextFormat _text_format;
656 
658 
662  int _reference_count;
663 
665  qdGameObjectState *_prev_state;
666 
667 };
668 
670 
673 public:
677 
678  qdGameObjectState &operator = (const qdGameObjectState &st);
679  qdGameObjectStateStatic &operator = (const qdGameObjectStateStatic &st);
680 
681  qdAnimation *animation() {
682  return _animation_info.animation();
683  }
684  const qdAnimation *animation() const {
685  return _animation_info.animation();
686  }
687  qdAnimationInfo *animation_info() {
688  return &_animation_info;
689  }
690 
691  bool load_script(const xml::tag *p);
692  bool save_script(Common::WriteStream &fh, int indent = 0) const;
693 
695  bool register_resources();
697  bool unregister_resources();
698  bool load_resources();
699  bool free_resources();
700 
701  bool is_state_empty() const;
702 
703  qdGameObjectState *clone() const {
704  return new qdGameObjectStateStatic(*this);
705  }
706 
708  bool auto_bound();
709 
710 private:
711  qdAnimationInfo _animation_info;
712 };
713 
716 public:
720 
721  qdGameObjectState &operator = (const qdGameObjectState &st);
722  qdGameObjectStateWalk &operator = (const qdGameObjectStateWalk &st);
723 
744 
752  MOVEMENT_DOWN_LEFT
753  };
754 
755  enum OffsetType {
756  OFFSET_STATIC = 0,
757  OFFSET_WALK,
758  OFFSET_START,
759  OFFSET_END
760  };
761 
762  qdAnimationSet *animation_set() const;
763 
764  qdAnimation *animation(float direction_angle);
765  qdAnimation *static_animation(float direction_angle);
766 
767  qdAnimationInfo *animation_info(float direction_angle);
768  qdAnimationInfo *static_animation_info(float direction_angle);
769 
770  const Vect2i &center_offset(int direction_index, OffsetType offset_type = OFFSET_WALK) const;
771  const Vect2i &center_offset(float direction_angle, OffsetType offset_type = OFFSET_WALK) const;
772  void set_center_offset(int direction_index, const Vect2i &offs, OffsetType offset_type = OFFSET_WALK);
773 
774  float walk_sound_frequency(int direction_index) const;
775  float walk_sound_frequency(float direction_angle) const;
776  void set_walk_sound_frequency(int direction_index, float freq);
777 
779  bool update_sound_frequency(float direction_angle) const;
780 
781  qdAnimationSetInfo *animation_set_info() {
782  return &_animation_set_info;
783  }
784 
785  float adjust_direction_angle(float angle) const;
786 
787  float direction_angle() const {
788  return _direction_angle;
789  }
790  void set_direction_angle(float ang) {
791  _direction_angle = ang;
792  }
793 
794  bool load_script(const xml::tag *p);
795  bool save_script(Common::WriteStream &fh, int indent = 0) const;
796 
798  bool register_resources();
800  bool unregister_resources();
801  bool load_resources();
802  bool free_resources();
803 
804  bool is_state_empty() const;
805 
806  qdGameObjectState *clone() const {
807  return new qdGameObjectStateWalk(*this);
808  }
809 
811  bool auto_bound();
812 
813  float acceleration() const {
814  return _acceleration;
815  }
816  void set_acceleration(float acc) {
817  _acceleration = acc;
818  }
819 
820  float max_speed() const {
821  return _max_speed;
822  }
823  void set_max_speed(float max_sp) {
824  _max_speed = max_sp;
825  }
826 
827  void set_movement_type(movement_type_t type) {
828  _movement_type = type;
829  }
830  movement_type_t movement_type() const {
831  return _movement_type;
832  }
833 
834 protected:
835 
837  bool need_sound_restart() const;
838 
839 private:
840 
841  float _direction_angle;
842  qdAnimationSetInfo _animation_set_info;
843 
845  float _acceleration;
847 
850  float _max_speed;
851 
853  movement_type_t _movement_type;
854 
856  Std::vector<Vect2i> _center_offsets;
858  Std::vector<Vect2i> _static_center_offsets;
860  Std::vector<Vect2i> _start_center_offsets;
862  Std::vector<Vect2i> _stop_center_offsets;
863 
865  Std::vector<float> _walk_sound_frequency;
866 };
867 
870 public:
874 
875  qdGameObjectState &operator = (const qdGameObjectState &st);
876  qdGameObjectStateMask &operator = (const qdGameObjectStateMask &st);
877 
878  const char *parent_name() const {
879  return _parent_name.c_str();
880  }
881  void set_parent_name(const char *p) {
882  _parent_name = p;
883  _parent = 0;
884  }
885 
886  qdGameObject *parent();
887  const qdGameObject *parent() const;
888 
889  bool hit(int x, int y) const;
890  bool draw_mask(uint32 color) const;
891 
892  bool can_be_closed() const {
893  return (contour_size() > 2);
894  }
895 
896  bool load_script(const xml::tag *p);
897  bool save_script(Common::WriteStream &fh, int indent = 0) const;
898 
899  bool is_state_empty() const;
900 
901  bool load_resources();
902 
903  qdGameObjectState *clone() const {
904  return new qdGameObjectStateMask(*this);
905  }
906 
907 private:
908 
910  Common::String _parent_name;
911 
913  qdGameObject *_parent;
914 };
915 
916 #ifdef __QD_DEBUG_ENABLE__
917 inline bool qdbg_is_object_state(const qdNamedObject *obj, const char *scene_name, const char *object_name, const char *state_name) {
918  if (dynamic_cast<const qdGameObjectState *>(obj)) {
919  if (obj->name() && !strcmp(state_name, obj->name())) {
920  if (!object_name || (obj->owner() && obj->owner()->name() && !strcmp(object_name, obj->owner()->name()))) {
921  if (!scene_name || (obj->owner()->owner() && obj->owner()->owner()->name() && !strcmp(obj->owner()->owner()->name(), scene_name)))
922  return true;
923  }
924  }
925  }
926  return false;
927 }
928 #else
929 inline bool qdbg_is_object_state(const qdNamedObject *obj, const char *scene_name, const char *object_name, const char *state_name) {
930  return false;
931 }
932 #endif
933 
934 } // namespace QDEngine
935 
936 #endif // QDENGINE_QDCORE_QD_GAME_OBJECT_STATE_H
Базовый класс для игровых объектов.
Definition: qd_game_object.h:53
bool has_mouse_cursor_ID() const
Возвращает true, если состоянию назначен особый мышиный курсор.
Definition: qd_game_object_state.h:270
qdGameObjectState * prev_state()
Возвращает указатель на предыдущее состояние.
Definition: qd_game_object_state.h:244
const char * sound_name() const
Устанавливает имя звукового эффекта, привязанного к состоянию.
Definition: qd_game_object_state.h:275
Definition: str.h:59
StateType
Тип состояния.
Definition: qd_game_object_state.h:174
float start_direction_angle() const
Возвращает направление объекта в точке, в которой должно активироваться состояние.
Definition: qd_game_object_state.h:376
bool check_sound_flag(int fl) const
Возвращает true, если установлен флаг для звука.
Definition: qd_game_object_state.h:311
Definition: qd_coords_animation.h:37
void inc_reference_count()
Инкремент количества ссылок на состояние.
Definition: qd_game_object_state.h:388
const char * short_text_ID() const
Возвращает сокращенный текст субтитров.
Definition: qd_game_object_state.h:431
Класс для управления звуками.
Definition: qd_sound_handle.h:31
int reference_count() const
Возвращает количество ссылок на состояние.
Definition: qd_game_object_state.h:384
Definition: stream.h:77
Поименованный объект.
Definition: qd_named_object.h:70
ходит только вверх
Definition: qd_game_object_state.h:729
void set_activation_timer()
Устанавливает таймер перед активацией состояния.
Definition: qd_game_object_state.h:332
Информация об анимации.
Definition: qd_animation_info.h:34
void dec_reference_count()
Декремент количества ссылок на состояние.
Definition: qd_game_object_state.h:392
ходит только вправо
Definition: qd_game_object_state.h:731
Definition: qd_animation_set.h:34
const char * name() const
Возвращает имя объекта.
Definition: qd_named_object_base.h:40
Definition: xmath.h:117
ходит по восьми и больше направлениям со сглаживанием
Definition: qd_game_object_state.h:743
bool has_bound() const
Возвращает true, если у состояния задан баунд.
Definition: qd_game_object_state.h:444
ходит по восьми направлениям
Definition: qd_game_object_state.h:741
void set_short_text_ID(const char *p)
Устанавливает сокращенный текст субтитров.
Definition: qd_game_object_state.h:438
Звук.
Definition: qd_sound.h:35
void set_work_time(float tm)
Устанавливает длительность состояния в секундах.
Definition: qd_game_object_state.h:349
Статическая анимация.
Definition: qd_game_object_state.h:176
режим не установлен
Definition: qd_camera_mode.h:56
int mouse_cursor_ID() const
Возвращает идентификатор мышиного курсора для состояния.
Definition: qd_game_object_state.h:258
const Vect3f start_pos() const
Возвращает координаты точки, в которой должно активироваться состояние.
Definition: qd_game_object_state.h:369
Definition: stream.h:745
const Vect3f & bound() const
Возвращает баунд состояния.
Definition: qd_game_object_state.h:448
void start()
Вызывается при активации состояния.
Definition: qd_game_object_state.h:337
const qdSoundHandle * sound_handle() const
Возвращает хэндл звука.
Definition: qd_game_object_state.h:290
Контур.
Definition: qd_contour.h:39
Обозначает отсутствие шрифта
Definition: qd_screen_text.h:39
Definition: xmath.h:419
const char * text() const
Возвращает текст субтитров.
Definition: qd_game_object_state.h:401
bool has_camera_mode() const
Возвращает true, если у состояния задан режим работы камеры.
Definition: qd_game_object_state.h:471
qdCoordsAnimation * coords_animation()
Возвращает указатель на траекторию движения объекта для состояния.
Definition: qd_game_object_state.h:198
Состояние динамического объекта - базовый класс.
Definition: qd_game_object_state.h:91
void set_prev_state(qdGameObjectState *p)
Устанавливает предыдущее состояние.
Definition: qd_game_object_state.h:248
Объект с условиями.
Definition: qd_conditional_object.h:37
Состояние динамического объекта - маска на статическом объекте.
Definition: qd_game_object_state.h:869
Информация о наборе анимаций.
Definition: qd_animation_set_info.h:34
void set_camera_mode(const qdCameraMode &mode)
Устанавливает режим работы камеры, включается при активации состояния.
Definition: qd_game_object_state.h:463
virtual bool auto_bound()
Устанавливает баунд состояния по анимации.
Definition: qd_game_object_state.h:458
ходит только по вертикали
Definition: qd_game_object_state.h:737
ходит только по горизонтали
Definition: qd_game_object_state.h:735
StateType state_type() const
Возвращает тип состояния.
Definition: qd_game_object_state.h:253
XML тег.
Definition: xml_tag.h:33
Походка.
Definition: qd_game_object_state.h:178
Базовый класс для игровых ресурсов.
Definition: console.h:28
Definition: xmath.h:268
float cur_time() const
Возвращает время в секундах, прошедшее с момента активации состояния.
Definition: qd_game_object_state.h:343
Режим работы камеры.
Definition: qd_camera_mode.h:40
void set_center_offset(const Vect2s offs)
Устанавливает смещение центра объекта для состояния (в экранных координатах).
Definition: qd_game_object_state.h:236
Анимация.
Definition: qd_animation.h:57
Definition: qd_game_object_state.h:41
const qdCoordsAnimation * coords_animation() const
Возвращает указатель на траекторию движения объекта для состояния.
Definition: qd_game_object_state.h:202
movement_type_t
режимы передвижения для персонажа
Definition: qd_game_object_state.h:725
ходит только влево-вверх
Definition: qd_game_object_state.h:746
trigger_start_mode
Варианты старта триггера.
Definition: qd_conditional_object.h:122
const Vect2s & center_offset() const
Возвращет смещение центра объекта для состояния (в экранных координатах).
Definition: qd_game_object_state.h:232
void set_full_text_ID(const char *p)
Устанавливает полный текст субтитров.
Definition: qd_game_object_state.h:426
ходит только влево
Definition: qd_game_object_state.h:727
float radius() const
Возвращает радиус состояния.
Definition: qd_game_object_state.h:452
ходит по четырем направлениям
Definition: qd_game_object_state.h:739
void set_activation_delay(float tm)
Устанавливает задержку (в секундах) перед активацией состояния.
Definition: qd_game_object_state.h:328
Состояние динамического объекта - походка.
Definition: qd_game_object_state.h:715
const qdCameraMode & camera_mode() const
Режим работы камеры, включается при активации состояния.
Definition: qd_game_object_state.h:467
Информация о звуке.
Definition: qd_sound_info.h:34
Definition: xmath.h:533
void set_sound_name(const char *p)
Возвращает имя звукового эффекта, привязанного к состоянию.
Definition: qd_game_object_state.h:279
bool has_text() const
Возвращает true, если у состояния задан текст субтитров.
Definition: qd_game_object_state.h:397
ходит только вправо-вниз
Definition: qd_game_object_state.h:750
bool has_full_text() const
Возвращает true, если у состояния задан текст субтитров.
Definition: qd_game_object_state.h:411
ходит только вниз
Definition: qd_game_object_state.h:733
bool has_sound() const
Возвращает true, если для состояния задан звук.
Definition: qd_game_object_state.h:285
float activation_delay() const
Возвращает задержку (в секундах) перед активацией состояния.
Definition: qd_game_object_state.h:324
int named_object_type() const
Возвращает тип объекта.
Definition: qd_game_object_state.h:193
void drop_sound_flag(int fl)
Скидывает флаг для звука.
Definition: qd_game_object_state.h:307
void set_sound_flag(int fl)
Устанавливает флаг для звука.
Definition: qd_game_object_state.h:303
bool has_short_text() const
Возвращает true, если у состояния задан сокращенный текст субтитров.
Definition: qd_game_object_state.h:415
Состояние динамического объекта - статическая анимация.
Definition: qd_game_object_state.h:672
bool need_to_walk() const
Возвращает true, если персонажу требуется подойти к точке включения состояния.
Definition: qd_game_object_state.h:354
const char * full_text_ID() const
Возвращает полный текст субтитров.
Definition: qd_game_object_state.h:419
void set_mouse_cursor_ID(int id)
Устанавливает идентификатор мышиного курсора для состояния.
Definition: qd_game_object_state.h:266
qdNamedObject * owner() const
Возвращает владельца объекта.
Definition: qd_named_object.h:79
ходит только вправо-вверх
Definition: qd_game_object_state.h:748