aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/entity.h
diff options
context:
space:
mode:
authorjohndoe1232011-07-08 19:09:33 +0000
committerWillem Jan Palenstijn2013-05-08 20:38:46 +0200
commit5c69ae21ddf535f862585a4fa5892a9a1146618f (patch)
treed7c6bbe277a528bcbb1a2f00d91846cef9e01141 /engines/neverhood/entity.h
parent78d632b0eda3c7be13a265cfb9fa5d16c7b418eb (diff)
downloadscummvm-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.h33
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...
};