diff options
author | johndoe123 | 2011-07-08 19:09:33 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2013-05-08 20:38:46 +0200 |
commit | 5c69ae21ddf535f862585a4fa5892a9a1146618f (patch) | |
tree | d7c6bbe277a528bcbb1a2f00d91846cef9e01141 /engines/neverhood/entity.h | |
parent | 78d632b0eda3c7be13a265cfb9fa5d16c7b418eb (diff) | |
download | scummvm-rg350-5c69ae21ddf535f862585a4fa5892a9a1146618f.tar.gz scummvm-rg350-5c69ae21ddf535f862585a4fa5892a9a1146618f.tar.bz2 scummvm-rg350-5c69ae21ddf535f862585a4fa5892a9a1146618f.zip |
NEVERHOOD: More work on Klayman (still eye cancerous code)
- Start to implement KmScene1001
- Implement queryPositionSprite and queryPositionRectList
- Implement message list related code (setting and running them)
- Access to message params now with accessors (so compatible types can be converted)
Diffstat (limited to 'engines/neverhood/entity.h')
-rw-r--r-- | engines/neverhood/entity.h | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/engines/neverhood/entity.h b/engines/neverhood/entity.h index 64c1181089..29bf6be988 100644 --- a/engines/neverhood/entity.h +++ b/engines/neverhood/entity.h @@ -30,16 +30,43 @@ namespace Neverhood { class Entity; +enum MessageParamType { + mptInteger, + mptPoint, + mptEntity +}; + struct MessageParam { +public: + MessageParam(uint32 value) : _type(mptInteger), _integer(value) {} + MessageParam(NPoint value) : _type(mptPoint), _point(value) {} + MessageParam(Entity *entity) : _type(mptEntity), _entity(entity) {} + uint32 asInteger() const { + assert(_type == mptInteger); + return _integer; + } + NPoint asPoint() const { + assert(_type == mptInteger || _type == mptPoint); + if (_type == mptInteger) { + NPoint pt; + pt.x = (_integer >> 16) & 0xFFFF; + pt.y = _integer & 0xFFFF; + return pt; + } + return _point; + } + Entity *asEntity() const { + assert(_type == mptEntity); + return _entity; + } +protected: union { uint32 _integer; NPoint _point; Entity *_entity; // TODO: Other types... }; - MessageParam(uint32 value) { _integer = value; } - MessageParam(NPoint value) { _point = value; } - MessageParam(Entity *entity) { _entity = entity; } + MessageParamType _type; // TODO: Constructors for the param types... }; |