diff options
author | Paul Gilbert | 2014-02-25 09:21:19 -0500 |
---|---|---|
committer | Paul Gilbert | 2014-02-25 09:21:19 -0500 |
commit | c9057bd6a8ee2b039e2ba528b1e2e59814b8ef88 (patch) | |
tree | a97576327830fb6b3f9183801ef98a98a8e6eac5 /engines/mads/scene_data.h | |
parent | cc16e42f2029955e066450d63bfb666b9ab47109 (diff) | |
download | scummvm-rg350-c9057bd6a8ee2b039e2ba528b1e2e59814b8ef88.tar.gz scummvm-rg350-c9057bd6a8ee2b039e2ba528b1e2e59814b8ef88.tar.bz2 scummvm-rg350-c9057bd6a8ee2b039e2ba528b1e2e59814b8ef88.zip |
MADS: Moved scene data classes into their own code file
Diffstat (limited to 'engines/mads/scene_data.h')
-rw-r--r-- | engines/mads/scene_data.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/engines/mads/scene_data.h b/engines/mads/scene_data.h new file mode 100644 index 0000000000..a4950dbc0a --- /dev/null +++ b/engines/mads/scene_data.h @@ -0,0 +1,227 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef MADS_SCENE_DATA_H +#define MADS_SCENE_DATA_H + +#include "common/scummsys.h" +#include "common/array.h" +#include "common/rect.h" +#include "mads/assets.h" + +namespace MADS { + +enum { + VERB_LOOK = 3, + VERB_TAKE = 4, + VERB_PUSH = 5, + VERB_OPEN = 6, + VERB_PUT = 7, + VERB_TALKTO = 8, + VERB_GIVE = 9, + VERB_PULL = 10, + VERB_CLOSE = 11, + VERB_THROW = 12, + VERB_WALKTO = 13 +}; + +class VerbInit { +public: + int _id; + int _action1; + int _action2; + + VerbInit() {} + VerbInit(int id, int action1, int action2): _id(id), _action1(action1), _action2(action2) {} +}; + +class ScreenObjects { +public: + int _v8333C; + int _v832EC; + int _yp; +}; + +enum SpriteType { + ST_NONE = 0, ST_FOREGROUND = 1, ST_BACKGROUND = -4, + ST_FULL_SCREEN_REFRESH = -2, ST_EXPIRED = -1 +}; + +class SpriteSlot { +public: + SpriteType _spriteType; + int _seqIndex; + int _spriteListIndex; + int _frameNumber; + Common::Point _position; + int _depth; + int _scale; +public: + SpriteSlot(); + SpriteSlot(SpriteType type, int seqIndex); +}; + +class TextDisplay { +public: + bool _active; + int _spacing; + Common::Rect _bounds; + int _expire; + int _col1; + int _col2; + Common::String _fontName; + Common::String _msg; + + TextDisplay(); +}; + +class DynamicHotspot { +public: + int _seqIndex; + Common::Rect _bounds; + Common::Point _feetPos; + int _facing; + int _descId; + int _field14; + int _articleNumber; + int _cursor; + + DynamicHotspot(); +}; + +class SequenceEntry { +public: + int _spriteListIndex; + int _flipped; + int _frameIndex; + int _frameStart; + int _numSprites; + int _animType; + int _frameInc; + int _depth; + int _scale; + int _dynamicHotspotIndex; + + Common::Point _msgPos; + + int _triggerCountdown; + bool _doneFlag; + struct { + int _count; + int _mode[5]; + int _frameIndex[5]; + int _abortVal[5]; + } _entries; + int _abortMode; + int _actionNouns[3]; + int _numTicks; + int _extraTicks; + int _timeout; + + SequenceEntry(); +}; + +class KernelMessage { +public: + int _flags; + int _seqInex; + char _asciiChar; + char _asciiChar2; + int _colors; + Common::Point _posiition; + int _msgOffset; + int _numTicks; + int _frameTimer2; + int _frameTimer; + int _timeout; + int _field1C; + int _abortMode; + int _nounList[3]; + Common::String _msg; + + KernelMessage(); +}; + +class Hotspot { +public: + Common::Rect _bounds; + Common::Point _feetPos; + int _facing; + int _articleNumber; + int _cursor; + int _vocabId; + int _verbId; + + Hotspot(); + Hotspot(Common::SeekableReadStream &f); +}; + +#define SPRITE_COUNT 50 +#define TEXT_DISPLAY_COUNT 40 +#define DYNAMIC_HOTSPOT_COUNT 8 + +class MADSEngine; +class Scene; + +class SceneLogic { +protected: + Scene *_scene; +public: + /** + * Constructor + */ + SceneLogic(Scene *scene): _scene(scene) {} + + /** + * Called to initially setup a scene + */ + virtual void setup() = 0; + + /** + * Called as the scene is entered (made active) + */ + virtual void enter() = 0; + + /** + * Called one per frame + */ + virtual void step() = 0; + + /** + * Called before an action is started + */ + virtual void preActions() = 0; + + /** + * Handles scene actions + */ + virtual void actions() = 0; + + /** + * Post-action handling + */ + virtual void postActions() = 0; +}; + +} // End of namespace MADS + +#endif /* MADS_SCENE_DATA_H */ |