📄 task.h
字号:
//--------------------------------------------------
// Desc: Task
// Date: 2006.11.21 /update
// Author: artsylee
//
// Copyright (C) 2006 artsylee
//
// 扩展: 更新时间间隔, 显示层次(2006_12_19)
// 基于消息与延时的任务(2007_2_6)
//
//--------------------------------------------------
#ifndef _TASK_
#define _TASK_
#include <list>
#include <Windows.h>
class CMessageManager;
//--------------------------------------------------
// 任务分层
// 1, 分四大层(海底,地面,天空,逻辑),每层64小层.
// 2, 逻辑层不可显示,其它层可显示.
// 3, 显示时可指定层
//--------------------------------------------------
enum TaskLayer
{
TL_SEA = 0,
TL_LAND,
TL_SKY,
TL_LOGIC,
};
// 定义子层数量
#define SUBLAYER 64
//---------------------------------------------------
// 任务基类(抽象基类)
//---------------------------------------------------
class ASE_DLL CTask
{
public:
CTask();
virtual ~CTask();
virtual void Destroy();
virtual void Update() = 0;
virtual void Render() {}
bool IsAutoDelete();
void SetAutoDelete(bool c);
unsigned char GetLayer(void);
void SetLayer(unsigned char layer);
protected:
bool m_bAutoDelete; //是否由管理器删除自身
unsigned char m_cLayer; //任务所在的层次
};
//---------------------------------------------------
// 基于消息的任务(抽象基类)
//---------------------------------------------------
class ASE_DLL CMessageTask : public CTask
{
public:
CMessageTask();
virtual ~CMessageTask();
virtual void Update() = 0;
virtual void Render() = 0;
virtual void EndMessage();
void SetMessage(CMessageManager *pmm, DWORD type);
void SetParam(DWORD p1, DWORD p2, void *p3 = NULL);
protected:
CMessageManager* m_pMsgmanager;
DWORD m_MsgType;
DWORD m_Param1;
DWORD m_Param2;
void* m_pParam3;
};
//---------------------------------------------------
// 帧延时任务(抽象基类)
//---------------------------------------------------
class ASE_DLL CDelayTask : public CMessageTask
{
public:
CDelayTask();
virtual ~CDelayTask();
virtual void Update() = 0;
virtual void Render() = 0;
void SetDelay(DWORD delay) { m_dwDelay = delay; }
DWORD GetDelay() { return m_dwDelay; }
protected:
DWORD m_dwDelay;
DWORD m_dwLastTime;
};
//---------------------------------------------------
// 任务管理器
//---------------------------------------------------
class ASE_DLL CTaskManager
{
public:
CTaskManager();
~CTaskManager();
void Update();
void Render(TaskLayer layer = TL_SEA);
void RemoveAll();
void AddTask(CTask *pTask);
bool RemoveTask(CTask *pTask);
int GetTaskCount(void) const;
private:
std::list<CTask*> m_TaskList;
};
#endif // _TASK_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -