LoadingTrigger.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //============================================================================================
  2. // Spirenkov Maxim, 2006
  3. //============================================================================================
  4. // LoadingTrigger
  5. //============================================================================================
  6. #include "LoadingTrigger.h"
  7. LoadingTrigger::LoadingTrigger()
  8. {
  9. mission = null;
  10. }
  11. LoadingTrigger::~LoadingTrigger()
  12. {
  13. }
  14. //Инициализировать объект
  15. bool LoadingTrigger::Create(MOPReader & reader)
  16. {
  17. mission = reader.String().c_str();
  18. if(!mission || !mission[0])
  19. {
  20. if(!EditMode_IsOn())
  21. {
  22. return false;
  23. }
  24. }
  25. Activate(reader.Bool());
  26. trigger.Init(reader);
  27. return true;
  28. }
  29. //Активировать/деактивировать объект
  30. void LoadingTrigger::Activate(bool isActive)
  31. {
  32. MissionObject::Activate(isActive);
  33. if(!EditMode_IsOn())
  34. {
  35. if(isActive)
  36. {
  37. SetUpdate(&LoadingTrigger::Work, ML_TRIGGERS);
  38. }else{
  39. DelUpdate(&LoadingTrigger::Work);
  40. }
  41. }
  42. }
  43. //Исполнить событие
  44. void _cdecl LoadingTrigger::Work(float dltTime, long level)
  45. {
  46. if(!IsActive())
  47. {
  48. Activate(IsActive());
  49. return;
  50. }
  51. MissionsManager * mng = MissionsManager::Ptr();
  52. if(mng)
  53. {
  54. if(mng->IsLoadMission(mission))
  55. {
  56. Activate(false);
  57. trigger.Activate(Mission(), false);
  58. }
  59. }else{
  60. LogicDebugError("Mission manager not found (start from editor?)");
  61. Activate(false);
  62. }
  63. }
  64. //Пересоздать объект
  65. void LoadingTrigger::Restart()
  66. {
  67. DelUpdate();
  68. Unregistry();
  69. ReCreate();
  70. };
  71. //Инициализировать объект
  72. bool LoadingTrigger::EditMode_Create(MOPReader & reader)
  73. {
  74. return true;
  75. }
  76. MOP_BEGINLISTCG(LoadingTrigger, "Loading trigger", '1.00', 0, "Activete when selected mission loading done", "Managment")
  77. MOP_STRING("Mission", "")
  78. MOP_BOOL("Active", true)
  79. MOP_MISSIONTRIGGERC("Event", "End command up/down trigger")
  80. MOP_ENDLIST(LoadingTrigger)