Scene = require("core.modules.scenes")
local PlayStyle = Scene:extend()

local PauseMenu = require("game.modules.subgames.pause")
local TestWorld = require("game.modules.world.parent")

function PlayStyle:new(supportedLevels, missionfile)

  PlayStyle.super.new(self)
  self.timer = 0
  self.assets:batchImport("game.modules.gui.assets")
  self.assets:batchImport("game.modules.subgames.assets")
  --self:loadMissionFile(supportedLevels, missionfile)

  PauseMenu(self)

  self:initWorld()
  self:initMission()
  self:initCharacters()

  self.haveStarted = false
end

function PlayStyle:loadMissionFile(supportedLevels, missionfile)
  self.mission = require("datas.gamedata.missions." .. missionfile)
  self.assets:setMusic("assets/music/" .. self.mission.music)
end

function PlayStyle:initWorld()
  TestWorld(self)
end

function PlayStyle:initMission()
  -- NOTHING
end

function PlayStyle:initCharacters()
  self.world:setPlayerNumber(1)
  self.world.cameras:setMode("split")
end

function PlayStyle:getCharacterName(charID)
  return self.characterList[charID]
end

function PlayStyle:update(dt)
  if (self.haveStarted) then
    PlayStyle.super.update(self, dt)
    self:updatePauseMenus(dt)
  else
    self:startLevel()
  end
end

function PlayStyle:updatePauseMenus(dt)
    if self.menusystem.menus["pauseMenu"].isActive == false then
      self.timer = self.timer + dt
    end

    local keys = self:getKeys(1);

    if keys["start"].isPressed then
      if not (self.menusystem.menus["pauseMenu"].isActive) then
        self.menusystem.menus["pauseMenu"].isActive   = true
        self.menusystem.menus["pauseMenu"].isVisible  = true
        self.menusystem.menus["pauseMenu"]:getFocus()
        self.assets.isActive = false
        self.world.isActive = false
      else
        self.menusystem.menus["pauseMenu"].isActive   = false
        self.menusystem.menus["pauseMenu"].isVisible  = false
        self.assets.isActive = true
        self.world.isActive = true
      end
    end
end

function PlayStyle:startLevel()
  self.haveStarted = true
  self.world:loadMap()
  --self.assets:playMusic()
end

function PlayStyle:restartLevel()
  self.world:reset()
end

function PlayStyle:exitLevel()
  scenes.title()
end

return PlayStyle
