examples/options: add basic switches widgets

This commit is contained in:
Kazhnuz 2019-04-13 10:27:08 +02:00
parent 0686b70b6a
commit defe5fea9a
2 changed files with 59 additions and 0 deletions

View file

@ -37,6 +37,10 @@ function OptionsMenu:new()
self:addSubMenu("lang", "lang") self:addSubMenu("lang", "lang")
self:addSubMenu("input", "input") self:addSubMenu("input", "input")
Widgets.Switch(self, "video", "fullscreen")
Widgets.Switch(self, "video", "borders")
Widgets.Switch(self, "video", "vsync")
Widgets.Exit(self, "main") Widgets.Exit(self, "main")
self.menusystem:switchMenu("main") self.menusystem:switchMenu("main")
end end

View file

@ -29,6 +29,7 @@ local DoubleTextWidget = Widget.Text:extend()
widgets.SubMenu = DoubleTextWidget:extend() widgets.SubMenu = DoubleTextWidget:extend()
widgets.Dummy = Widget.Text:extend() widgets.Dummy = Widget.Text:extend()
widgets.Exit = Widget.Text:extend() widgets.Exit = Widget.Text:extend()
widgets.Switch = DoubleTextWidget:extend()
-- BASIC WIDGETS -- BASIC WIDGETS
-- Simple and reusables widgets -- Simple and reusables widgets
@ -90,4 +91,58 @@ function widgets.Exit:action()
core.scenemanager:setStoredScene("mainmenu") core.scenemanager:setStoredScene("mainmenu")
end end
-- VIDEO WIDGETS
-- Handle graphical settings
-- Switch widget (One widget to handle graphical switch)
function widgets.Switch:new(scene, menu, keyname)
self.scene = scene
local widgetmenu = self.scene.menusystem.menus[menu]
local font = self.scene.assets.fonts["medium"]
self.keyname = keyname
local label2 = self:getLabel()
widgets.Switch.super.new(self, widgetmenu, font, keyname, label2)
self.order = order or 0
end
function widgets.Switch:modifyKey()
--self.key = (self.key == false)
if self.keyname == "fullscreen" then
core.options.data.video.fullscreen = (core.options.data.video.fullscreen == false)
elseif self.keyname == "borders" then
core.options.data.video.border = (core.options.data.video.border == false)
elseif self.keyname == "vsync" then
core.options.data.video.vsync = (core.options.data.video.vsync == false)
end
core.screen:applySettings()
end
function widgets.Switch:getKey()
if self.keyname == "fullscreen" then
self.key = core.options.data.video.fullscreen
elseif self.keyname == "borders" then
self.key = (core.options.data.video.border)
elseif self.keyname == "vsync" then
self.key = (core.options.data.video.vsync)
end
end
function widgets.Switch:getLabel()
self:getKey()
if (self.key) then
return "true"
else
return "false"
end
end
function widgets.Switch:action()
self:modifyKey()
self.label2 = self:getLabel()
self.needRedraw = true
core.options:write()
end
return widgets return widgets