3eda3db6a5c011a9915e9d8b95c6a6865736ef9b
[matthijs/ABM2.git] / ABM2 / Engine / Kernel.h
1 // Kernel.h: interface for the CKernel class.\r
2 //\r
3 //////////////////////////////////////////////////////////////////////\r
4 \r
5 #if !defined(AFX_KERNEL_H__4E822B7D_1078_4F70_BC8F_3BB4F83ED0AF__INCLUDED_)\r
6 #define AFX_KERNEL_H__4E822B7D_1078_4F70_BC8F_3BB4F83ED0AF__INCLUDED_\r
7 \r
8 #if _MSC_VER > 1000\r
9 #pragma once\r
10 #endif // _MSC_VER > 1000\r
11 \r
12 #include "singleton.h"\r
13 #include "SpriteManager.h"\r
14 \r
15 \r
16 class CClient;\r
17 class CServer;\r
18 \r
19 class ITask;\r
20 \r
21 class CKernel : public Singleton<CKernel>\r
22 {\r
23 public:\r
24         CKernel();\r
25         virtual ~CKernel();\r
26 \r
27         int Execute();\r
28 \r
29         bool AddTask(const CMMPointer<ITask> &t);\r
30         void SuspendTask(const CMMPointer<ITask> &t);\r
31         void ResumeTask(const CMMPointer<ITask> &t);\r
32         void RemoveTask(const CMMPointer<ITask> &t);\r
33         void KillAllTasks();\r
34         \r
35         void setSpriteManager(CSpriteManager*) {this->sm = sm;}\r
36         CSpriteManager* getSpriteManager() {return this->sm;}\r
37 protected:\r
38         std::list< CMMPointer<ITask> > taskList;\r
39         std::list< CMMPointer<ITask> > pausedTaskList;\r
40         CSpriteManager *sm;\r
41 };\r
42 \r
43 class ITask : public IMMObject\r
44 {\r
45 public:\r
46         ITask(){canKill=false;priority=5000;}\r
47         virtual bool Start()=0;\r
48         virtual void OnSuspend(){};\r
49         virtual void Update()=0;\r
50         virtual void OnResume(){};\r
51         virtual void Stop()=0;\r
52 \r
53         bool canKill;\r
54         long priority;\r
55 };\r
56 \r
57 #endif // !defined(AFX_KERNEL_H__4E822B7D_1078_4F70_BC8F_3BB4F83ED0AF__INCLUDED_)\r