RandomSelector.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "RandomSelector.h"
  2. RandomSelector::RandomSelector() : events(_FL_)
  3. {
  4. }
  5. RandomSelector::~RandomSelector()
  6. {
  7. }
  8. //Инициализировать объект
  9. bool RandomSelector::Create(MOPReader & reader)
  10. {
  11. events.DelAll();
  12. long count = reader.Array();
  13. for(long i = 0; i < count; i++)
  14. {
  15. events[events.Add()].Init(reader);
  16. }
  17. return true;
  18. }
  19. //Активировать
  20. void RandomSelector::Activate(bool isActive)
  21. {
  22. MissionObject::Activate(isActive);
  23. if(isActive)
  24. {
  25. LogicDebug("Activate");
  26. LogicDebugLevel(true);
  27. if(events > 0)
  28. {
  29. long randCount = long(Rnd(events*1024.0f));
  30. long i = randCount % events;
  31. LogicDebug("Activate item %i", i);
  32. events[i].Activate(Mission(), false);
  33. }
  34. LogicDebugLevel(false);
  35. MissionObject::Activate(false);
  36. }else{
  37. LogicDebug("Deactivate");
  38. }
  39. }
  40. //Инициализировать объект
  41. bool RandomSelector::EditMode_Create(MOPReader & reader)
  42. {
  43. return Create(reader);
  44. }
  45. //Обновить параметры
  46. bool RandomSelector::EditMode_Update(MOPReader & reader)
  47. {
  48. events.DelAll();
  49. return Create(reader);
  50. }
  51. //Получить размеры описывающего ящика
  52. void RandomSelector::EditMode_GetSelectBox(Vector & min, Vector & max)
  53. {
  54. min = max = 0.0f;
  55. }
  56. MOP_BEGINLISTCG(RandomSelector, "Random selector", '1.00', 0x0fffffff, "When activate, random select trigger from array", "Logic")
  57. MOP_ARRAYBEG("Events", 1, 1000)
  58. MOP_MISSIONTRIGGER("")
  59. MOP_ARRAYEND
  60. MOP_ENDLIST(RandomSelector)