tibia-client/modules/client_options/options.lua

140 lines
3.9 KiB
Lua
Raw Normal View History

Options = {}
2012-01-07 21:00:07 +01:00
local optionsWindow
2012-01-07 18:36:58 +01:00
local optionsButton
local optionsTabBar
2012-06-07 05:49:40 +02:00
local options = { vsync = false,
showfps = true,
fullscreen = false,
classicControl = false,
showStatusMessagesInConsole = true,
showEventMessagesInConsole = true,
showInfoMessagesInConsole = true,
showTimestampsInConsole = true,
showLevelsInConsole = true,
showPrivateMessagesInConsole = false,
showPrivateMessagesOnScreen = true,
enableMusic = true }
local generalPanel
local graphicsPanel
local function setupGraphicsEngines()
local enginesRadioGroup = RadioGroup.create()
local ogl1 = graphicsPanel:getChildById('opengl1')
local ogl2 = graphicsPanel:getChildById('opengl2')
enginesRadioGroup:addWidget(ogl1)
enginesRadioGroup:addWidget(ogl2)
if g_graphics.getPainterEngine() == 2 then
enginesRadioGroup:selectWidget(ogl2)
else
enginesRadioGroup:selectWidget(ogl1)
end
ogl1:setEnabled(g_graphics.isPainterEngineAvailable(1))
ogl2:setEnabled(g_graphics.isPainterEngineAvailable(2))
enginesRadioGroup.onSelectionChange = function(self, selected)
if selected == ogl1 then
g_graphics.selectPainterEngine(1)
elseif selected == ogl2 then
g_graphics.selectPainterEngine(2)
end
end
2012-06-08 18:58:08 +02:00
local foregroundFrameRateScrollBar = graphicsPanel:getChildById('foregroundFrameRateScrollBar')
local foregroundFrameRateLimitLabel = graphicsPanel:getChildById('foregroundFrameRateLimitLabel')
if not g_graphics.canCacheBackbuffer() then
foregroundFrameRateScrollBar:setValue(61)
foregroundFrameRateScrollBar:disable()
foregroundFrameRateLimitLabel:disable()
end
end
2012-01-07 18:36:58 +01:00
function Options.init()
-- load options
for k,v in pairs(options) do
if type(v) == 'boolean' then
Settings.setDefault(k, v)
Options.setOption(k, Settings.getBoolean(k))
end
2012-01-06 10:10:55 +01:00
end
2012-01-07 22:19:40 +01:00
2012-06-08 18:58:08 +02:00
Keyboard.bindKeyDown('Ctrl+D', Options.toggle)
Keyboard.bindKeyDown('Ctrl+F', function() Options.toggleOption('fullscreen') end)
2012-01-07 22:19:40 +01:00
optionsWindow = displayUI('options.otui')
optionsWindow:hide()
2012-06-08 18:58:08 +02:00
optionsButton = TopMenu.addLeftButton('optionsButton', tr('Options') .. ' (Ctrl+D)', 'options.png', Options.toggle)
optionsTabBar = optionsWindow:getChildById('optionsTabBar')
optionsTabBar:setContentWidget(optionsWindow:getChildById('optionsTabContent'))
generalPanel = loadUI('general.otui')
optionsTabBar:addTab(tr('General'), generalPanel)
graphicsPanel = loadUI('graphics.otui')
optionsTabBar:addTab(tr('Graphics'), graphicsPanel)
setupGraphicsEngines()
2012-01-06 09:48:59 +01:00
end
2011-11-17 01:12:11 +01:00
2012-01-07 21:00:07 +01:00
function Options.terminate()
2012-06-08 18:58:08 +02:00
Keyboard.unbindKeyDown('Ctrl+D')
Keyboard.unbindKeyDown('Ctrl+F')
2012-01-07 21:00:07 +01:00
optionsWindow:destroy()
optionsWindow = nil
optionsButton:destroy()
optionsButton = nil
optionsTabBar = nil
generalPanel = nil
graphicsPanel = nil
2012-02-07 01:41:53 +01:00
Options = nil
2012-01-07 21:00:07 +01:00
end
function Options.toggle()
if optionsWindow:isVisible() then
Options.hide()
else
Options.show()
end
end
2012-01-06 09:48:59 +01:00
function Options.show()
2012-01-07 21:00:07 +01:00
optionsWindow:show()
optionsWindow:raise()
optionsWindow:focus()
2012-01-07 21:00:07 +01:00
end
function Options.hide()
optionsWindow:hide()
2011-11-17 01:12:11 +01:00
end
function Options.toggleOption(key)
Options.setOption(key, not Options.getOption(key))
end
function Options.setOption(key, value)
2012-01-06 10:10:55 +01:00
if key == 'vsync' then
g_window.setVerticalSync(value)
2012-01-06 10:10:55 +01:00
elseif key == 'showfps' then
2012-01-07 01:18:08 +01:00
addEvent(function()
local frameCounter = rootWidget:recursiveGetChildById('frameCounter')
if frameCounter then frameCounter:setVisible(value) end
2012-01-07 01:18:08 +01:00
end)
2012-01-06 10:10:55 +01:00
elseif key == 'fullscreen' then
2012-01-07 01:18:08 +01:00
addEvent(function()
g_window.setFullscreen(value)
2012-01-07 01:18:08 +01:00
end)
elseif key == 'enableMusic' then
addEvent(function()
g_sounds.enableMusic(value)
end)
2012-01-06 10:10:55 +01:00
end
Settings.set(key, value)
options[key] = value
end
function Options.getOption(key)
return options[key]
end