KTaskFuns.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef KTASKFUNCS_H
  2. #define KTASKFUNCS_H
  3. #include "KSubWorldSet.h"
  4. typedef int (* PF_TimerCallBackFun)(void * pOwner, char * szFileName);
  5. #define TASKVALUE_SAVEWAYPOINT_BEGIN 201
  6. #define TASKVALUE_MAXWAYPOINT_COUNT 3
  7. #define TASKVALUE_SAVESTATION_BEGIN  210
  8. #define TASKVALUE_MAXSTATION_COUNT 32
  9. #define TASKVALUE_TIMERTASK_TAST 220
  10. #define TASKVALUE_TIMERTASK_RESTTIME 221
  11. #define TIMERTASK_SETTINGFILE "\settings\TimerTask.txt"
  12. #define TASKVALUE_REPUTE 100
  13. class KPlayer;
  14. class KTaskFun
  15. {
  16. public:
  17. virtual BOOL SaveTask(KPlayer *) = 0;
  18. virtual BOOL LoadTask(KPlayer *) = 0;
  19. };
  20. class KTimerTaskFun :public KTaskFun
  21. {
  22. public:
  23. KTimerTaskFun();
  24. KTimerTaskFun(void * pOwner)
  25. {
  26. m_pTimerOwner = pOwner;
  27. };
  28. void SetOwner(void * pOwner) { m_pTimerOwner = pOwner;};
  29. static BOOL Init();
  30. BOOL SaveTask(KPlayer *);
  31. BOOL LoadTask(KPlayer *);
  32. void *  m_pTimerOwner;
  33. BOOL SetTimer(size_t ulTime, unsigned short usTimerTaskId)
  34. {
  35. //如果间隔时间为0,表示中止Timer;
  36. if (ulTime == 0) 
  37. {
  38. CloseTimer();
  39. return FALSE;
  40. }
  41. m_dwIntervalTime = ulTime;
  42. m_dwTimeTaskTime = g_SubWorldSet.GetGameTime() + ulTime;
  43. m_dwTimerTaskId = usTimerTaskId;
  44. return TRUE;
  45. };
  46. void CloseTimer()
  47. {
  48. m_dwTimeTaskTime = 0;
  49. m_dwTimerTaskId = 0;
  50. m_dwIntervalTime = 0;
  51. };
  52. unsigned long GetRestTime() const
  53. {
  54. DWORD dwGameTime = g_SubWorldSet.GetGameTime();
  55. return (dwGameTime > m_dwTimeTaskTime) ? 0 : (m_dwTimeTaskTime - dwGameTime);
  56. };
  57. void GetTimerTaskScript(char * szScriptFileName, unsigned short usTimerTaskId, size_t nScriptFileLen);
  58. BOOL Activate(PF_TimerCallBackFun TimerCallBackFun);
  59. static KTabFile m_TimerTaskTab;
  60. DWORD GetTaskId(){return m_dwTimerTaskId;};
  61. private:
  62. DWORD m_dwTimeTaskTime;
  63. DWORD m_dwTimerTaskId;
  64. DWORD m_dwIntervalTime;
  65. };
  66. typedef KTaskFun KTask;
  67. extern KTimerTaskFun g_TimerTask;
  68. #endif