First commit
This commit is contained in:
		@@ -0,0 +1,109 @@
 | 
			
		||||
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
 | 
			
		||||
		Reference in New Issue
	
	Block a user