diff options
Diffstat (limited to 'engines/sherlock/scene.h')
-rw-r--r-- | engines/sherlock/scene.h | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/engines/sherlock/scene.h b/engines/sherlock/scene.h index 806726868a..50f8f07ef4 100644 --- a/engines/sherlock/scene.h +++ b/engines/sherlock/scene.h @@ -140,7 +140,6 @@ struct SceneTripEntry { class Scene { private: - SherlockEngine *_vm; Common::String _rrmName; bool _loadingSavedGame; @@ -180,13 +179,6 @@ private: void transitionToScene(); /** - * Checks all the background shapes. If a background shape is animating, - * it will flag it as needing to be drawn. If a non-animating shape is - * colliding with another shape, it will also flag it as needing drawing - */ - void checkBgShapes(); - - /** * Restores objects to the correct status. This ensures that things like being opened or moved * will remain the same on future visits to the scene */ @@ -196,6 +188,17 @@ private: * Draw all the shapes, people and NPCs in the correct order */ void drawAllShapes(); +protected: + SherlockEngine *_vm; + + /** + * Checks all the background shapes. If a background shape is animating, + * it will flag it as needing to be drawn. If a non-animating shape is + * colliding with another shape, it will also flag it as needing drawing + */ + virtual void checkBgShapes(); + + Scene(SherlockEngine *vm); public: int _currentScene; int _goToScene; @@ -228,8 +231,8 @@ public: int _cAnimFramePause; Common::Array<SceneTripEntry> _sceneTripCounters; public: - Scene(SherlockEngine *vm); - ~Scene(); + static Scene *init(SherlockEngine *vm); + virtual ~Scene(); /** * Handles loading the scene specified by _goToScene @@ -315,6 +318,32 @@ public: void setNPCPath(int npc); }; +class ScalpelScene : public Scene { +protected: + /** + * Checks all the background shapes. If a background shape is animating, + * it will flag it as needing to be drawn. If a non-animating shape is + * colliding with another shape, it will also flag it as needing drawing + */ + virtual void checkBgShapes(); +public: + ScalpelScene(SherlockEngine *vm) : Scene(vm) {} +}; + +class TattooScene : public Scene { +private: + CAnimStream _activeCAnim; +protected: + /** + * Checks all the background shapes. If a background shape is animating, + * it will flag it as needing to be drawn. If a non-animating shape is + * colliding with another shape, it will also flag it as needing drawing + */ + virtual void checkBgShapes(); +public: + TattooScene(SherlockEngine *vm) : Scene(vm) {} +}; + } // End of namespace Sherlock #endif |