-- ===================================================================== -- Aether Core — NUI-Helfer -- Einheitliches Oeffnen/Schliessen von Benutzeroberflaechen. -- Damit muss nicht jedes Modul Fokus- und Cursor-Logik neu bauen. -- ===================================================================== Aether = Aether or {} -- Name der Ressource, deren Oberflaeche gerade offen ist (nil = keine) Aether.OffeneNui = nil --- Oeffnet eine NUI: setzt Fokus und Mauszeiger --- @param ressource string Name der Ressource, die die Oberflaeche besitzt --- @param nachricht table|nil Daten, die an die Oberflaeche geschickt werden function Aether.OeffneNui(ressource, nachricht) -- Es darf immer nur eine Oberflaeche gleichzeitig offen sein if Aether.OffeneNui and Aether.OffeneNui ~= ressource then Aether.SchliesseNui() end Aether.OffeneNui = ressource SetNuiFocus(true, true) if nachricht then SendNuiMessage(json.encode(nachricht)) end end --- Schliesst die aktuell offene NUI und gibt die Steuerung zurueck function Aether.SchliesseNui() if not Aether.OffeneNui then return end SetNuiFocus(false, false) Aether.OffeneNui = nil end --- Schickt Daten an die offene Oberflaeche, ohne den Fokus zu aendern --- @param nachricht table Zu sendende Daten function Aether.SendeAnNui(nachricht) SendNuiMessage(json.encode(nachricht)) end -- --------------------------------------------------------------------- -- Sicherheitsnetz: bei ESC immer den Fokus freigeben -- --------------------------------------------------------------------- CreateThread(function() while true do if Aether.OffeneNui then Wait(0) -- Taste 322 = ESC if IsControlJustReleased(0, 322) then Aether.SchliesseNui() -- Der offenen Ressource Bescheid geben, damit sie aufraeumen kann TriggerEvent('aether:client:nuiGeschlossen', Aether.OffeneNui) end else Wait(250) end end end) -- ===================================================================== -- EXPORTS fuer andere Module -- Beispiel: exports['aether-core']:OeffneNui('aether-phone', { aktion = 'oeffnen' }) -- ===================================================================== exports('OeffneNui', function(ressource, nachricht) Aether.OeffneNui(ressource, nachricht) end) exports('SchliesseNui', function() Aether.SchliesseNui() end) exports('SendeAnNui', function(nachricht) Aether.SendeAnNui(nachricht) end)