X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=ABM2%2FEngine%2FKernel.h;h=5e0df13539fb802f2215616a8bf78651ee347d6b;hb=c100d6f67b06abb348319e277a66b6b7ab0c4bd5;hp=60f6006c59fb1bc5dc2e603e6d7f6a9075845294;hpb=7e140e4a6676bed7583831251469fcee457f7654;p=matthijs%2FABM2.git diff --git a/ABM2/Engine/Kernel.h b/ABM2/Engine/Kernel.h index 60f6006..5e0df13 100755 --- a/ABM2/Engine/Kernel.h +++ b/ABM2/Engine/Kernel.h @@ -10,6 +10,7 @@ #endif // _MSC_VER > 1000 #include "singleton.h" +#include "SpriteManager.h" class CClient; @@ -25,29 +26,42 @@ public: int Execute(); - bool AddTask(CMMPointer t); - void SuspendTask(CMMPointer t); - void ResumeTask(CMMPointer t); - void RemoveTask(CMMPointer t); + bool AddTask(const CMMPointer &t); + void SuspendTask(const CMMPointer &t); + void ResumeTask(const CMMPointer &t); + void RemoveTask(const CMMPointer &t); void KillAllTasks(); - + + void setSpriteManager(CSpriteManager* sm) {this->sm = sm;} + CSpriteManager* getSpriteManager() {return this->sm;} protected: std::list< CMMPointer > taskList; std::list< CMMPointer > pausedTaskList; + CSpriteManager *sm; }; class ITask : public IMMObject { public: - ITask(){canKill=false;priority=5000;} + /** Keeps a normal pointer to the kernel, to prevent pointer loops */ + ITask(CKernel* kernel){this->kernel = kernel, this->canKill=false;this->priority=5000;} virtual bool Start()=0; virtual void OnSuspend(){}; virtual void Update()=0; virtual void OnResume(){}; virtual void Stop()=0; + + bool canKill; long priority; +protected: + /** + * Returns a pointer to the current kernel + */ + CKernel *getKernel() {return this->kernel;} +private: + CKernel* kernel; }; #endif // !defined(AFX_KERNEL_H__4E822B7D_1078_4F70_BC8F_3BB4F83ED0AF__INCLUDED_)