Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Dialog Triggers
- local arrivalDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Arrival'])
- dialogsData.triggers[Message.wMsgATCFlyHeading] = arrivalDialogTrigger
- dialogsData.triggers[Message.wMsgATCGoAround] = arrivalDialogTrigger
- dialogsData.triggers[Message.wMsgATCTaxiToParkingArea] = arrivalDialogTrigger
- local departureAirdromeDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Airdrome'])
- dialogsData.triggers[events.NOTIFY_BIRTH_ON_RAMP_HOT] = departureAirdromeDialogTrigger
- dialogsData.triggers[events.NOTIFY_BIRTH_ON_RUNWAY] = departureAirdromeDialogTrigger
- dialogsData.triggers[events.STARTUP_PERMISSION_FROM_AIRDROME] = departureAirdromeDialogTrigger
- dialogsData.triggers[Message.wMsgATCClearedToTaxiRunWay] = departureAirdromeDialogTrigger
- dialogsData.triggers[events.DENY_TAKEOFF_FROM_AIRDROME] = departureAirdromeDialogTrigger
- dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_AIRDROME] = departureAirdromeDialogTrigger
- local departureHelipadDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Helipad'])
- dialogsData.triggers[events.NOTIFY_BIRTH_ON_HELIPAD_HOT] = departureHelipadDialogTrigger
- dialogsData.triggers[events.STARTUP_PERMISSION_FROM_HELIPAD] = departureHelipadDialogTrigger
- dialogsData.triggers[events.DENY_TAKEOFF_FROM_HELIPAD] = departureHelipadDialogTrigger
- dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_HELIPAD] = departureHelipadDialogTrigger
- local departureShipDialogTrigger = DialogStartTrigger:new(dialogsData.dialogs['Departure Ship'])
- dialogsData.triggers[events.NOTIFY_BIRTH_ON_SHIP_HOT] = departureShipDialogTrigger
- dialogsData.triggers[events.STARTUP_PERMISSION_FROM_SHIP] = departureShipDialogTrigger
- dialogsData.triggers[events.DENY_TAKEOFF_FROM_SHIP] = departureShipDialogTrigger
- dialogsData.triggers[events.CLEAR_TO_TAKEOFF_FROM_SHIP] = departureShipDialogTrigger
- --Event Handler
- local enginesAreStarted = false
- local worldEventHandler = {
- onEvent = function(self, event)
- --print('data.pUnit = '..tostring(data.pUnit and data.pUnit))
- --print('event.id = '..tostring(event.id))
- --print('event.initiator = '..tostring(event.initiator))
- if event.initiator == data.pUnit then
- local airbaseCommunicator= nil
- if event.place ~= nil and event.place:isExist() then
- airbaseCommunicator = event.place:getCommunicator()
- end
- if event.id == world.event.S_EVENT_BIRTH then
- if event.place ~= nil then
- --print('event.subPlace = '..tostring(event.subPlace))
- if event.subPlace == world.BirthPlace.wsBirthPlace_Park then
- return events.NOTIFY_BIRTH_ON_RAMP_COLD, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_Park_Hot then
- enginesAreStarted = true
- return events.NOTIFY_BIRTH_ON_RAMP_HOT, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_RunWay then
- enginesAreStarted = true
- return events.NOTIFY_BIRTH_ON_RUNWAY, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_Heliport_Cold then
- return events.NOTIFY_BIRTH_ON_HELIPAD_COLD, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_Heliport_Hot then
- enginesAreStarted = true
- return events.NOTIFY_BIRTH_ON_HELIPAD_HOT, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_Ship_Cold then
- return events.NOTIFY_BIRTH_ON_SHIP_COLD, airbaseCommunicator
- elseif event.subPlace == world.BirthPlace.wsBirthPlace_Ship then
- enginesAreStarted = true
- return events.NOTIFY_BIRTH_ON_SHIP_HOT, airbaseCommunicator
- end
- end
- elseif event.id == world.event.S_EVENT_TAKEOFF then
- return events.TAKEOFF, airbaseCommunicator
- elseif event.id == world.event.S_EVENT_LAND then
- return events.LANDING, airbaseCommunicator
- elseif event.id == world.event.S_EVENT_ENGINE_STARTUP then
- enginesAreStarted = true
- return events.ENGINE_STARTUP, airbaseCommunicator
- elseif event.id == world.event.S_EVENT_ENGINE_SHUTDOWN then
- enginesAreStarted = false
- return events.ENGINE_SHUTDOWN, airbaseCommunicator
- end
- end
- end
- }
- table.insert(data.worldEventHandlers, worldEventHandler)
- --Message Handler
- local msgHandler = {
- onMsg = function(self, pMessage, pRecepient)
- self:onMsgEvent(pMessage:getEvent(), pMessage:getSender(), pRecepient)
- end,
- onMsgEvent = function(self, event, pMsgSender, pRecepient)
- local pUnit = pMsgSender:getUnit()
- local nUnitCategory = pUnit:getCategory()
- if nUnitCategory == Object.Category.BASE or nUnitCategory == Object.Category.UNIT then
- local airbaseCategory = pUnit:getDesc().category
- if event == Message.wMsgATCClearedForEngineStartUp then
- if airbaseCategory == Airbase.Category.HELIPAD then
- return events.STARTUP_PERMISSION_FROM_HELIPAD
- elseif airbaseCategory == Airbase.Category.AIRDROME then
- return events.STARTUP_PERMISSION_FROM_AIRDROME
- elseif airbaseCategory == Airbase.Category.SHIP then
- return events.STARTUP_PERMISSION_FROM_SHIP
- end
- elseif event == Message.wMsgATCTakeoffDenied then
- local typeName = pMsgSender:getUnit():getTypeName()
- if airbaseCategory == Airbase.Category.HELIPAD then
- return events.DENY_TAKEOFF_FROM_HELIPAD
- elseif airbaseCategory == Airbase.Category.AIRDROME then
- return events.DENY_TAKEOFF_FROM_AIRDROME
- elseif airbaseCategory == Airbase.Category.SHIP then
- return events.DENY_TAKEOFF_FROM_SHIP
- end
- elseif event == Message.wMsgATCYouAreClearedForTO then
- local typeName = pMsgSender:getUnit():getTypeName()
- if airbaseCategory == Airbase.Category.HELIPAD then
- return events.CLEAR_TO_TAKEOFF_FROM_HELIPAD
- elseif airbaseCategory == Airbase.Category.AIRDROME then
- return events.CLEAR_TO_TAKEOFF_FROM_AIRDROME
- elseif airbaseCategory == Airbase.Category.SHIP then
- return events.CLEAR_TO_TAKEOFF_FROM_SHIP
- end
- end
- end
- end
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement