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 |