local menu = {}

local RadianceListMenu = require "game.modules.menus.list"
local Widget  = require "core.modules.menusystem.widgets"

menu.DebugMenu = RadianceListMenu.ListMenu:extend()
menu.SceneWidget = RadianceListMenu.DualTextWidget:extend()

local CONST = {}
CONST.MENU = {}
CONST.MENU.X = 16
CONST.MENU.Y = 48
CONST.MENU.W = 424/2
CONST.MENU.ITEM_NUMBER = 8

-- Basic menu structure
function menu.DebugMenu:new(scene, name)
  local x, y = CONST.MENU.X, CONST.MENU.Y
  local w = CONST.MENU.W
  local itemNumber = CONST.MENU.ITEM_NUMBER
  menu.DebugMenu.super.new(self, scene, name, x, y, w, itemNumber, false)
end

function menu.DebugMenu:setPanel(panel, panelArgument)
  self.panel = panel
  self.panelArgument = panelArgument
end

function menu.DebugMenu:activationAction()
  if (self.panel ~= nil) then
    self.scene.panel = self.panel(self.panelArgument)
  end
end

function menu.DebugMenu:clone(name)
  return menu.DebugMenu(self.scene, name)
end

function menu.DebugMenu:draw()
  love.graphics.setColor(0, 0, 0, 0.5)
  love.graphics.rectangle("fill", self.x, self.y, self.w, self.h)
  utils.graphics.resetColor()
  menu.DebugMenu.super.draw(self)
end

-- SceneWidget
function menu.SceneWidget:new(scene, menuName, newScene, newSceneName, sceneArgument)
  menu.SceneWidget.super.new(self, scene, menuName, newSceneName, "")
  self.newScene = newScene
  self.sceneArgument = sceneArgument
end

function menu.SceneWidget:action()
  self.scene:flushKeys()
  if (self.sceneArgument ~= nil) then
    self.newScene(self.sceneArgument)
  else
    self.newScene()
  end
end


return menu
