Advertisement
Guest User

Event Triggers/Auto Radio Open

a guest
May 28th, 2015
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. --Dialog Triggers
  2.  
  3. local arrivalDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Arrival'])
  4. dialogsData.triggers[Message.wMsgATCFlyHeading] = arrivalDialogTrigger
  5. dialogsData.triggers[Message.wMsgATCGoAround] = arrivalDialogTrigger
  6. dialogsData.triggers[Message.wMsgATCTaxiToParkingArea] = arrivalDialogTrigger
  7.  
  8. local departureAirdromeDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Airdrome'])
  9. dialogsData.triggers[events.NOTIFY_BIRTH_ON_RAMP_HOT] = departureAirdromeDialogTrigger
  10. dialogsData.triggers[events.NOTIFY_BIRTH_ON_RUNWAY] = departureAirdromeDialogTrigger
  11. dialogsData.triggers[events.STARTUP_PERMISSION_FROM_AIRDROME] = departureAirdromeDialogTrigger
  12. dialogsData.triggers[Message.wMsgATCClearedToTaxiRunWay] = departureAirdromeDialogTrigger
  13. dialogsData.triggers[events.DENY_TAKEOFF_FROM_AIRDROME] = departureAirdromeDialogTrigger
  14. dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_AIRDROME] = departureAirdromeDialogTrigger
  15.  
  16. local departureHelipadDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Helipad'])
  17. dialogsData.triggers[events.NOTIFY_BIRTH_ON_HELIPAD_HOT] = departureHelipadDialogTrigger
  18. dialogsData.triggers[events.STARTUP_PERMISSION_FROM_HELIPAD] = departureHelipadDialogTrigger
  19. dialogsData.triggers[events.DENY_TAKEOFF_FROM_HELIPAD] = departureHelipadDialogTrigger
  20. dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_HELIPAD] = departureHelipadDialogTrigger
  21.  
  22. local departureShipDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Ship'])
  23. dialogsData.triggers[events.NOTIFY_BIRTH_ON_SHIP_HOT] = departureShipDialogTrigger
  24. dialogsData.triggers[events.STARTUP_PERMISSION_FROM_SHIP] = departureShipDialogTrigger
  25. dialogsData.triggers[events.DENY_TAKEOFF_FROM_SHIP] = departureShipDialogTrigger
  26. dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_SHIP] = departureShipDialogTrigger
  27. --Event Handler
  28.  
  29. local enginesAreStarted = false
  30.  
  31. local worldEventHandler = {
  32. onEvent = function(self, event)
  33. --print('data.pUnit = '..tostring(data.pUnit and data.pUnit))
  34. --print('event.id = '..tostring(event.id))
  35. --print('event.initiator = '..tostring(event.initiator))
  36. if event.initiator == data.pUnit then
  37. local airbaseCommunicator= nil
  38. if event.place ~= nil and event.place:isExist() then
  39. airbaseCommunicator = event.place:getCommunicator()
  40. end
  41. if event.id == world.event.S_EVENT_BIRTH then
  42. if event.place ~= nil then
  43. --print('event.subPlace = '..tostring(event.subPlace))
  44. if event.subPlace == world.BirthPlace.wsBirthPlace_Park then
  45. return events.NOTIFY_BIRTH_ON_RAMP_COLD, airbaseCommunicator
  46. elseif event.subPlace == world.BirthPlace.wsBirthPlace_Park_Hot then
  47. enginesAreStarted = true
  48. return events.NOTIFY_BIRTH_ON_RAMP_HOT, airbaseCommunicator
  49. elseif event.subPlace == world.BirthPlace.wsBirthPlace_RunWay then
  50. enginesAreStarted = true
  51. return events.NOTIFY_BIRTH_ON_RUNWAY, airbaseCommunicator
  52. elseif event.subPlace == world.BirthPlace.wsBirthPlace_Heliport_Cold then
  53. return events.NOTIFY_BIRTH_ON_HELIPAD_COLD, airbaseCommunicator
  54. elseif event.subPlace == world.BirthPlace.wsBirthPlace_Heliport_Hot then
  55. enginesAreStarted = true
  56. return events.NOTIFY_BIRTH_ON_HELIPAD_HOT, airbaseCommunicator
  57. elseif event.subPlace == world.BirthPlace.wsBirthPlace_Ship_Cold then
  58. return events.NOTIFY_BIRTH_ON_SHIP_COLD, airbaseCommunicator
  59. elseif event.subPlace == world.BirthPlace.wsBirthPlace_Ship then
  60. enginesAreStarted = true
  61. return events.NOTIFY_BIRTH_ON_SHIP_HOT, airbaseCommunicator
  62. end
  63. end
  64. elseif event.id == world.event.S_EVENT_TAKEOFF then
  65. return events.TAKEOFF, airbaseCommunicator
  66. elseif event.id == world.event.S_EVENT_LAND then
  67. return events.LANDING, airbaseCommunicator
  68. elseif event.id == world.event.S_EVENT_ENGINE_STARTUP then
  69. enginesAreStarted = true
  70. return events.ENGINE_STARTUP, airbaseCommunicator
  71. elseif event.id == world.event.S_EVENT_ENGINE_SHUTDOWN then
  72. enginesAreStarted = false
  73. return events.ENGINE_SHUTDOWN, airbaseCommunicator
  74. end
  75. end
  76. end
  77. }
  78.  
  79. table.insert(data.worldEventHandlers, worldEventHandler)
  80.  
  81. --Message Handler
  82.  
  83. local msgHandler = {
  84. onMsg = function(self, pMessage, pRecepient)
  85. self:onMsgEvent(pMessage:getEvent(), pMessage:getSender(), pRecepient)
  86. end,
  87. onMsgEvent = function(self, event, pMsgSender, pRecepient)
  88. local pUnit = pMsgSender:getUnit()
  89. local nUnitCategory = pUnit:getCategory()
  90. if nUnitCategory == Object.Category.BASE or nUnitCategory == Object.Category.UNIT then
  91. local airbaseCategory = pUnit:getDesc().category
  92. if event == Message.wMsgATCClearedForEngineStartUp then
  93. if airbaseCategory == Airbase.Category.HELIPAD then
  94. return events.STARTUP_PERMISSION_FROM_HELIPAD
  95. elseif airbaseCategory == Airbase.Category.AIRDROME then
  96. return events.STARTUP_PERMISSION_FROM_AIRDROME
  97. elseif airbaseCategory == Airbase.Category.SHIP then
  98. return events.STARTUP_PERMISSION_FROM_SHIP
  99. end
  100. elseif event == Message.wMsgATCTakeoffDenied then
  101. local typeName = pMsgSender:getUnit():getTypeName()
  102. if airbaseCategory == Airbase.Category.HELIPAD then
  103. return events.DENY_TAKEOFF_FROM_HELIPAD
  104. elseif airbaseCategory == Airbase.Category.AIRDROME then
  105. return events.DENY_TAKEOFF_FROM_AIRDROME
  106. elseif airbaseCategory == Airbase.Category.SHIP then
  107. return events.DENY_TAKEOFF_FROM_SHIP
  108. end
  109. elseif event == Message.wMsgATCYouAreClearedForTO then
  110. local typeName = pMsgSender:getUnit():getTypeName()
  111. if airbaseCategory == Airbase.Category.HELIPAD then
  112. return events.CLEAR_TO_TAKEOFF_FROM_HELIPAD
  113. elseif airbaseCategory == Airbase.Category.AIRDROME then
  114. return events.CLEAR_TO_TAKEOFF_FROM_AIRDROME
  115. elseif airbaseCategory == Airbase.Category.SHIP then
  116. return events.CLEAR_TO_TAKEOFF_FROM_SHIP
  117. end
  118. end
  119. end
  120. end
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement