diff options
-rw-r--r-- | engines/supernova/msn_def.h | 6 | ||||
-rw-r--r-- | engines/supernova/supernova.cpp | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/engines/supernova/msn_def.h b/engines/supernova/msn_def.h index 1bd81ddc0f..d19dd1ed6a 100644 --- a/engines/supernova/msn_def.h +++ b/engines/supernova/msn_def.h @@ -371,8 +371,10 @@ enum ObjectID { }; ObjectType operator|(ObjectType a, ObjectType b); +ObjectType operator&(ObjectType a, ObjectType b); ObjectType operator^(ObjectType a, ObjectType b); ObjectType &operator|=(ObjectType &a, ObjectType b); +ObjectType &operator&=(ObjectType &a, ObjectType b); ObjectType &operator^=(ObjectType &a, ObjectType b); struct Object { @@ -410,6 +412,10 @@ struct Object { _type ^= type; } + bool hasProperty(ObjectType type) const { + return _type & type; + } + const char *_name; const char *_description; ObjectID _id; diff --git a/engines/supernova/supernova.cpp b/engines/supernova/supernova.cpp index a24af84aca..6bd50f9572 100644 --- a/engines/supernova/supernova.cpp +++ b/engines/supernova/supernova.cpp @@ -47,6 +47,10 @@ ObjectType operator|(ObjectType a, ObjectType b) { return static_cast<ObjectType>(+a | +b); } +ObjectType operator&(ObjectType a, ObjectType b) { + return static_cast<ObjectType>(+a & +b); +} + ObjectType operator^(ObjectType a, ObjectType b) { return static_cast<ObjectType>(+a ^ +b); } @@ -55,6 +59,10 @@ ObjectType &operator|=(ObjectType &a, ObjectType b) { return a = a | b; } +ObjectType &operator&=(ObjectType &a, ObjectType b) { + return a = a & b; +} + ObjectType &operator^=(ObjectType &a, ObjectType b) { return a = a ^ b; } |