ProcessEvents.cpp
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. void WINAPI ProcessEvents()
  3. {
  4. if (g_xEventList.GetCount())
  5. {
  6. PLISTNODE pListNode = g_xEventList.GetHead();
  7. while (pListNode)
  8. {
  9. CEvent* pEvent = g_xEventList.GetData(pListNode);
  10. if (pEvent->m_fActive && (GetTickCount() - pEvent->m_dwRunStart > pEvent->m_dwRunTick))
  11. {
  12. pEvent->m_dwRunStart = GetTickCount();
  13. pEvent->Run();
  14. if (pEvent->m_fClosed)
  15. {
  16. g_xEventCloseList.AddNewNode(pEvent);
  17. pListNode = g_xEventList.RemoveNode(pListNode);
  18. continue;
  19. }
  20. }
  21. pListNode = g_xEventList.GetNext(pListNode);
  22. }
  23. }
  24. if (g_xEventCloseList.GetCount())
  25. {
  26. PLISTNODE pListNode = g_xEventCloseList.GetHead();
  27. while (pListNode)
  28. {
  29. CEvent* pEvent = g_xEventCloseList.GetData(pListNode);
  30. if (GetTickCount() - pEvent->m_dwCloseTime > 5 * 60 * 1000)
  31. {
  32. delete pEvent;
  33. pEvent = NULL;
  34. pListNode = g_xEventCloseList.RemoveNode(pListNode);
  35. continue; // 捞傈 滚怜篮 茄锅俊 茄俺究父 瘤奎澜.
  36. }
  37. pListNode = g_xEventCloseList.GetNext(pListNode);
  38. }
  39. }
  40. // 搬拌
  41. if (g_xHolySeizeList.GetCount())
  42. {
  43. PLISTNODE pListNode = g_xHolySeizeList.GetHead();
  44. while (pListNode)
  45. {
  46. CHolySeizeInfo* pHolySeizeInfo = g_xHolySeizeList.GetData(pListNode);
  47. if (pHolySeizeInfo->SeizeList.GetCount())
  48. {
  49. PLISTNODE pNode = pHolySeizeInfo->SeizeList.GetHead();
  50. while (pNode)
  51. {
  52. CMonsterObject* pMonsterObject = (CMonsterObject*)pHolySeizeInfo->SeizeList.GetData(pNode);
  53. if (pMonsterObject->m_fIsDead || pMonsterObject->m_fIsGhost || !pMonsterObject->m_fBoHolySeize)
  54. pNode = pHolySeizeInfo->SeizeList.RemoveNode(pNode);
  55. else
  56. pNode = pHolySeizeInfo->SeizeList.GetNext(pNode);
  57. }
  58. }
  59. if ((pHolySeizeInfo->SeizeList.GetCount() <= 0) ||
  60. (GetTickCount() - pHolySeizeInfo->dwOpenTime > pHolySeizeInfo->dwSeizeTime) ||
  61. (GetTickCount() - pHolySeizeInfo->dwOpenTime > 3 * 60 * 1000))
  62. {
  63. pHolySeizeInfo->SeizeList.Clear();
  64. for (int i = 0; i < 8; i++)
  65. {
  66. if (pHolySeizeInfo->Event[i]) 
  67. pHolySeizeInfo->Event[i]->Close();
  68. }
  69. delete pHolySeizeInfo;
  70. pHolySeizeInfo = NULL;
  71. pListNode = g_xHolySeizeList.RemoveNode(pListNode);
  72. continue;
  73. }
  74. pListNode = g_xHolySeizeList.GetNext(pListNode);
  75. }
  76. }
  77. }