mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-04-29 18:59:20 +02:00
109 lines
2.9 KiB
Lua
109 lines
2.9 KiB
Lua
local feedbackWindow
|
|
local textEdit
|
|
local okButton
|
|
local cancelButton
|
|
local postId = 0
|
|
local tries = 0
|
|
local replyEvent = nil
|
|
|
|
function init()
|
|
feedbackWindow = g_ui.displayUI('feedback')
|
|
feedbackWindow:hide()
|
|
|
|
textEdit = feedbackWindow:getChildById('text')
|
|
okButton = feedbackWindow:getChildById('okButton')
|
|
cancelButton = feedbackWindow:getChildById('cancelButton')
|
|
|
|
okButton.onClick = send
|
|
cancelButton.onClick = hide
|
|
feedbackWindow.onEscape = hide
|
|
end
|
|
|
|
function terminate()
|
|
feedbackWindow:destroy()
|
|
removeEvent(replyEvent)
|
|
end
|
|
|
|
function show()
|
|
if not Services or not Services.feedback or Services.feedback:len() < 4 then
|
|
return
|
|
end
|
|
|
|
feedbackWindow:show()
|
|
feedbackWindow:raise()
|
|
feedbackWindow:focus()
|
|
|
|
textEdit:setMaxLength(8192)
|
|
textEdit:setText('')
|
|
textEdit:setEditable(true)
|
|
textEdit:setCursorVisible(true)
|
|
feedbackWindow:focusChild(textEdit, KeyboardFocusReason)
|
|
|
|
tries = 0
|
|
end
|
|
|
|
function hide()
|
|
feedbackWindow:hide()
|
|
textEdit:setEditable(false)
|
|
textEdit:setCursorVisible(false)
|
|
end
|
|
|
|
function send()
|
|
local text = textEdit:getText()
|
|
if text:len() > 1 then
|
|
local localPlayer = g_game.getLocalPlayer()
|
|
local playerData = nil
|
|
if localPlayer ~= nil then
|
|
playerData = {
|
|
name = localPlayer:getName(),
|
|
position = localPlayer:getPosition()
|
|
}
|
|
end
|
|
local details = {
|
|
report_delay = sendInterval,
|
|
os = g_app.getOs(),
|
|
graphics_vendor = g_graphics.getVendor(),
|
|
graphics_renderer = g_graphics.getRenderer(),
|
|
graphics_version = g_graphics.getVersion(),
|
|
fps = g_app.getFps(),
|
|
maxFps = g_app.getMaxFps(),
|
|
atlas = g_atlas.getStats(),
|
|
classic = tostring(g_settings.getBoolean("classicView")),
|
|
fullscreen = tostring(g_window.isFullscreen()),
|
|
vsync = tostring(g_settings.getBoolean("vsync")),
|
|
window_width = g_window.getWidth(),
|
|
window_height = g_window.getHeight(),
|
|
player_name = g_game.getCharacterName(),
|
|
world_name = g_game.getWorldName(),
|
|
otserv_host = G.host,
|
|
otserv_protocol = g_game.getProtocolVersion(),
|
|
otserv_client = g_game.getClientVersion(),
|
|
build_version = g_app.getVersion(),
|
|
build_revision = g_app.getBuildRevision(),
|
|
build_commit = g_app.getBuildCommit(),
|
|
build_date = g_app.getBuildDate(),
|
|
display_width = g_window.getDisplayWidth(),
|
|
display_height = g_window.getDisplayHeight(),
|
|
cpu = g_platform.getCPUName(),
|
|
mem = g_platform.getTotalSystemMemory(),
|
|
os_name = g_platform.getOSName()
|
|
}
|
|
local data = json.encode({
|
|
text = text,
|
|
version = g_app.getVersion(),
|
|
host = g_settings.get('host'),
|
|
player = playerData,
|
|
details = details
|
|
})
|
|
|
|
postId = HTTP.post(Services.feedback, data, function(ret, err)
|
|
if err then
|
|
tries = tries + 1
|
|
if tries < 3 then
|
|
replyEvent = scheduleEvent(send, 1000)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
hide()
|
|
end |