diff options
author | Peter Kohaut | 2018-01-14 12:12:06 +0100 |
---|---|---|
committer | Peter Kohaut | 2018-01-28 10:57:16 +0100 |
commit | 1e5f9d3078f236f306b5d868bcd52f4e47f7b512 (patch) | |
tree | 0d402af27d75064d60e4674ab3bd4c9ad08759f1 /engines/bladerunner/scene_objects.h | |
parent | 3a937f19c0a5e347c801c62d345475be082f9e41 (diff) | |
download | scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.tar.gz scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.tar.bz2 scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.zip |
BLADERUNNER: Added basic KIA interface
Settings works
Help works
Clue database works
Fixed code for inserting objects into scene
Reorganization of few files
Unification & code formatting of few older files
Diffstat (limited to 'engines/bladerunner/scene_objects.h')
-rw-r--r-- | engines/bladerunner/scene_objects.h | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/engines/bladerunner/scene_objects.h b/engines/bladerunner/scene_objects.h index 010dc43532..b873980d05 100644 --- a/engines/bladerunner/scene_objects.h +++ b/engines/bladerunner/scene_objects.h @@ -33,66 +33,69 @@ class BladeRunnerEngine; class View; enum SceneObjectType { - SceneObjectTypeUnknown = -1, - SceneObjectTypeActor = 0, - SceneObjectTypeObject = 1, - SceneObjectTypeItem = 2 + kSceneObjectTypeUnknown = -1, + kSceneObjectTypeActor = 0, + kSceneObjectTypeObject = 1, + kSceneObjectTypeItem = 2 }; -#define SCENE_OBJECTS_COUNT 115 -#define SCENE_OBJECTS_ACTORS_OFFSET 0 -#define SCENE_OBJECTS_ITEMS_OFFSET 74 -#define SCENE_OBJECTS_OBJECTS_OFFSET 198 - -struct SceneObject { - int _sceneObjectId; - SceneObjectType _sceneObjectType; - BoundingBox _boundingBox; - Common::Rect _screenRectangle; - float _distanceToCamera; - int _present; - int _isClickable; - int _isObstacle; - int _unknown1; - int _isTarget; - int _isMoving; - int _isRetired; +enum SceneObjectOffset { + kSceneObjectOffsetActors = 0, + kSceneObjectOffsetItems = 74, + kSceneObjectOffsetObjects = 198 }; class SceneObjects { -#if _DEBUG +#if BLADERUNNER_DEBUG_RENDERING friend class BladeRunnerEngine; #endif + static const int kSceneObjectCount = 115; + + struct SceneObject { + int sceneObjectId; + SceneObjectType sceneObjectType; + BoundingBox boundingBox; + Common::Rect screenRectangle; + float distanceToCamera; + int present; + int isClickable; + int isObstacle; + int unknown1; + int isTarget; + int isMoving; + int isRetired; + }; + BladeRunnerEngine *_vm; -private: View *_view; int _count; - SceneObject *_sceneObjects; - int *_sceneObjectsSortedByDistance; + SceneObject _sceneObjects[kSceneObjectCount]; + int _sceneObjectsSortedByDistance[kSceneObjectCount]; public: SceneObjects(BladeRunnerEngine *vm, View *view); ~SceneObjects(); + bool addActor(int sceneObjectId, BoundingBox *boundingBox, Common::Rect *screenRectangle, uint8 isClickable, uint8 unknown1, uint8 isTarget, uint8 isRetired); bool addObject(int sceneObjectId, BoundingBox *boundingBox, uint8 isClickable, uint8 isObstacle, uint8 unknown1, uint8 isTarget); bool addItem(int sceneObjectId, BoundingBox *boundingBox, Common::Rect *screenRectangle, uint8 isTarget, uint8 isObstacle); bool remove(int sceneObjectId); void clear(); - int findByXYZ(int *isClickable, int *isObstacle, int *isTarget, float x, float y, float z, int findClickables, int findObstacles, int findTargets); - bool existsOnXZ(int exceptSceneObjectId, float x, float z, bool a5, bool a6); + int findByXYZ(int *isClickable, int *isObstacle, int *isTarget, float x, float y, float z, int findClickables, int findObstacles, int findTargets) const; + bool existsOnXZ(int exceptSceneObjectId, float x, float z, bool a5, bool a6) const; void setMoving(int sceneObjectId, bool isMoving); void setRetired(int sceneObjectId, bool isRetired); - bool isBetweenTwoXZ(int sceneObjectId, float x1, float z1, float x2, float z2); + bool isBetweenTwoXZ(int sceneObjectId, float x1, float z1, float x2, float z2) const; void setIsClickable(int sceneObjectId, bool isClickable); void setIsObstacle(int sceneObjectId, bool isObstacle); void setIsTarget(int sceneObjectId, bool isTarget); void updateObstacles(); private: - int findById(int sceneObjectId); + int findById(int sceneObjectId) const; bool addSceneObject(int sceneObjectId, SceneObjectType sceneObjectType, BoundingBox *boundingBox, Common::Rect *screenRectangle, uint8 isClickable, uint8 isObstacle, uint8 unknown1, uint8 isTarget, uint unknown2, uint isRetired); - int findEmpty(); + int findEmpty() const; }; } // End of namespace BladeRunner |