forgottenserver/data/scripts/creaturescripts/player/text_window_helper.lua
Sarah Wesker 1387a7de2f
Text Window helper functions (#4668)
Helper functions in lua for Text Windows
2024-05-14 17:07:40 +02:00

83 lines
2 KiB
Lua

if not TextWindows then TextWindows = {} end
local textWindow = {}
textWindow.__index = textWindow
function TextWindow(window) return setmetatable(window, textWindow) end
function textWindow.setCallback(window, callback)
window.callback = callback
return true
end
function textWindow.setItemId(window, itemId)
window.itemId = itemId
return true
end
function textWindow.setText(window, text)
window.text = text
return true
end
function textWindow.setCanWrite(window, canWrite)
window.canWrite = canWrite
return true
end
function textWindow.setLength(window, length)
window.length = length
return true
end
function textWindow.sendToPlayer(window, player)
player:registerEvent("TextWindowHelperClearLogout")
player:registerEvent("TextWindowHelperClearDeath")
player:registerEvent("TextWindowHelper")
window.id = player:showTextDialog(window.itemId, window.text, window.canWrite, window.length)
local playerGuid = player:getGuid()
local windows = TextWindows[playerGuid]
if not windows then
windows = {}
TextWindows[playerGuid] = windows
end
windows[window.id] = window
return window.id
end
local textWindowHelper = CreatureEvent("TextWindowHelper")
function textWindowHelper.onTextEdit(player, item, text, windowTextId)
player:unregisterEvent("TextWindowHelper")
local playerGuid = player:getGuid()
local windows = TextWindows[playerGuid]
if not windows then return true end
local window = windows[windowTextId]
if not window then return true end
windows[windowTextId] = nil
if window.id == windowTextId and window.callback then
return window.callback(player, item, text)
end
return true
end
textWindowHelper:register()
local clearWindows = CreatureEvent("TextWindowHelperClearLogout")
function clearWindows.onLogout(player)
TextWindows[player:getGuid()] = nil
return true
end
clearWindows:register()
local clearWindows = CreatureEvent("TextWindowHelperClearDeath")
function clearWindows.onDeath(player)
TextWindows[player:getGuid()] = nil
return true
end
clearWindows:register()