* Make every ITask know about the Kernel in which the run.
[matthijs/ABM2.git] / ABM2 / Engine / Kernel.h
index 0e1c39d8a584fe9e4959925de89854aa97f4c9e9..5e0df13539fb802f2215616a8bf78651ee347d6b 100755 (executable)
@@ -10,6 +10,7 @@
 #endif // _MSC_VER > 1000\r
 \r
 #include "singleton.h"\r
+#include "SpriteManager.h"\r
 \r
 \r
 class CClient;\r
@@ -30,24 +31,37 @@ public:
        void ResumeTask(const CMMPointer<ITask> &t);\r
        void RemoveTask(const CMMPointer<ITask> &t);\r
        void KillAllTasks();\r
-\r
+       \r
+       void setSpriteManager(CSpriteManager* sm) {this->sm = sm;}\r
+       CSpriteManager* getSpriteManager() {return this->sm;}\r
 protected:\r
        std::list< CMMPointer<ITask> > taskList;\r
        std::list< CMMPointer<ITask> > pausedTaskList;\r
+       CSpriteManager *sm;\r
 };\r
 \r
 class ITask : public IMMObject\r
 {\r
 public:\r
-       ITask(){canKill=false;priority=5000;}\r
+       /** Keeps a normal pointer to the kernel, to prevent pointer loops */\r
+       ITask(CKernel* kernel){this->kernel = kernel, this->canKill=false;this->priority=5000;}\r
        virtual bool Start()=0;\r
        virtual void OnSuspend(){};\r
        virtual void Update()=0;\r
        virtual void OnResume(){};\r
        virtual void Stop()=0;\r
 \r
+\r
+\r
        bool canKill;\r
        long priority;\r
+protected:\r
+       /**\r
+        * Returns a pointer to the current kernel\r
+        */\r
+       CKernel *getKernel() {return this->kernel;}\r
+private:\r
+       CKernel* kernel;\r
 };\r
 \r
 #endif // !defined(AFX_KERNEL_H__4E822B7D_1078_4F70_BC8F_3BB4F83ED0AF__INCLUDED_)\r