-- globalAudio.lua

-- Inicializa um namespace para funções relacionadas a áudio global
globalAudio = {}

-- Variáveis para controle de estado de áudio e microfone
local audioEnabled = false
local microphoneEnabled = false

-- Função de inicialização do módulo de áudio global
function globalAudio.init()
  -- Verifica se não estamos em um dispositivo móvel
  if not g_app.isMobile() then
    -- Adiciona um botão no menu superior do jogo para controle de áudio
    modules.client_topmenu.addLeftGameButton('audioButton', 'Audio Global', '/images/topbuttons/audio', globalAudio.toggleAudioMicrophone, false, 8)
  end

  -- Conecta eventos do jogo para gerenciar online e offline
  connect(g_game, { onGameEnd = globalAudio.offline, onGameStart = globalAudio.online })
  globalAudio.online() -- Executa a lógica online ao inicializar
end

-- Função para encerrar o módulo de áudio global
function globalAudio.terminate()
  -- Desconecta os eventos do jogo
  disconnect(g_game, { onGameEnd = globalAudio.offline, onGameStart = globalAudio.online })
end

-- Função para alternar estado de áudio e microfone
function globalAudio.toggleAudioMicrophone()
  if audioEnabled and microphoneEnabled then
    print("Desativando áudio e microfone")
    audioEnabled = false
    microphoneEnabled = false
    globalAudio.showMessageBox("Áudio e microfone desativados")

    -- Lógica para desativar áudio e microfone

  else
    print("Ativando áudio e microfone")
    audioEnabled = true
    microphoneEnabled = true
    globalAudio.showMessageBox("Áudio e microfone ativados")

    -- Lógica para ativar áudio e microfone
  end
end

-- Função chamada quando o jogo está offline
function globalAudio.offline()
  -- Lógica para quando o jogo estiver offline, se necessário
end

-- Função chamada quando o jogo está online
function globalAudio.online()
  -- Lógica para quando o jogo estiver online, se necessário
end

-- Função para exibir uma caixa de mensagem
function globalAudio.showMessageBox(message)
  local rootWidget = g_ui.getRootWidget()
  if rootWidget then
    local messageBox = g_ui.createWidget('Window')
    messageBox:setId('messageBox')
    messageBox:setSize({ width = 200, height = 100 })
    messageBox:setText(message)
    
    local okButton = g_ui.createWidget('Button', messageBox)
    okButton:setId('messageBoxButton')
    okButton:setText('OK')
    okButton.onClick = function()
      messageBox:destroy()
    end
    
    -- Centraliza o messageBox na tela
    local screenWidth = g_window.getWidth()
    local screenHeight = g_window.getHeight()
    local boxWidth = messageBox:getWidth()
    local boxHeight = messageBox:getHeight()
    
    -- Converte para números inteiros antes de passar para setPosition
    local posX = math.floor((screenWidth - boxWidth) / 2)
    local posY = math.floor((screenHeight - boxHeight) / 2)
    
    messageBox:setPosition({x = posX, y = posY}) -- Passa um objeto com as coordenadas
    
    messageBox:show()
  else
    print("[ERROR] Não foi possível criar o box de mensagem.")
  end
end

-- Inicializa o módulo global de áudio
globalAudio.init()
