diff options
Diffstat (limited to 'engines/neverhood/scene.h')
-rw-r--r-- | engines/neverhood/scene.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/engines/neverhood/scene.h b/engines/neverhood/scene.h index 09d34b5734..e962266168 100644 --- a/engines/neverhood/scene.h +++ b/engines/neverhood/scene.h @@ -64,6 +64,7 @@ public: void changeMouseCursor(uint32 fileHash); SmackerPlayer *addSmackerPlayer(SmackerPlayer *smackerPlayer); void update(); + void leaveScene(uint32 result); // Some crazy templated functions to make the logic code smaller/simpler (imo!) // insertKlayman template<class T> @@ -123,6 +124,35 @@ public: T* insertSprite(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6) { return (T*)addSprite(new T(_vm, arg1, arg2, arg3, arg4, arg5, arg6)); } + // createSprite + template<class T> + T* createSprite() { + return new T(_vm); + } + template<class T, class Arg1> + T* createSprite(Arg1 arg1) { + return new T(_vm, arg1); + } + template<class T, class Arg1, class Arg2> + T* createSprite(Arg1 arg1, Arg2 arg2) { + return new T(_vm, arg1, arg2); + } + template<class T, class Arg1, class Arg2, class Arg3> + T* createSprite(Arg1 arg1, Arg2 arg2, Arg3 arg3) { + return new T(_vm, arg1, arg2, arg3); + } + template<class T, class Arg1, class Arg2, class Arg3, class Arg4> + T* createSprite(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { + return new T(_vm, arg1, arg2, arg3, arg4); + } + template<class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> + T* createSprite(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) { + return new T(_vm, arg1, arg2, arg3, arg4, arg5); + } + template<class T, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6> + T* createSprite(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6) { + return new T(_vm, arg1, arg2, arg3, arg4, arg5, arg6); + } protected: Module *_parentModule; Common::Array<Entity*> _entities; |