implement options

This commit is contained in:
Eduardo Bart 2011-11-16 22:12:11 -02:00
parent b913381d2f
commit 69ae043001
6 changed files with 76 additions and 103 deletions

4
TODO
View File

@ -1,17 +1,15 @@
modules managment interface modules managment interface
clean sprites cache periodically clean sprites cache periodically
load modules from zip packages load modules from zip packages
ip/host/rsa configuration
review directories search review directories search
left panel with dragging windows left panel with dragging windows
console history console history
console text selection console text selection
console scrolling console scrolling
padding padding
remember password/account
scrollbar scrollbar
make otui syntax more like css make otui syntax more like css
a real working border and background property in otui a real working border and background property in otui
setIcon() for buttons
load state styles in order load state styles in order
grid layout grid layout
fix moving windows and tooltips conflicts

View File

@ -2,11 +2,62 @@ Options = {}
-- private variables -- private variables
local options local options
local fpsEnabled = false
local vsyncEnabled = false
function getConfig(name, default)
if Configs.exists(name) then
local val = string.trim(Configs.get(name))
if val == 'true' or val == 'false' then
return toboolean(val)
else
return val
end
else
if default ~= nil then
Configs.set(name, default)
return default
else
return nil
end
end
end
function setConfig(name, value)
Configs.set(name, tostring(value))
end
-- private functions
function Options.enableVsync(on)
vsyncEnabled = on
setVerticalSync(on)
setConfig('vsync', on)
end
function Options.enableFps(on)
fpsEnabled = on
local frameCounter = UI.root:recursiveGetChildById('frameCounter')
frameCounter:setVisible(on)
setConfig('showfps', on)
end
-- public functions -- public functions
function Options.create() function Options.create()
options = UI.loadAndDisplay("/options/options.otui") options = UI.loadAndDisplayLocked("/options/options.otui")
UI.root:lockChild(options)
local fpsBox = options:getChildById('fpsCheckBox')
local vsyncBox = options:getChildById('vsyncCheckBox')
fpsBox:setChecked(fpsEnabled)
vsyncBox:setChecked(vsyncEnabled)
fpsBox.onCheckChange = function(self, checked) Options.enableFps(checked) end
vsyncBox.onCheckChange = function(self, checked) Options.enableVsync(checked) end
end
function Options.load()
Options.enableVsync(getConfig('vsync', true))
Options.enableFps(getConfig('showfps', true))
end end
function Options.destroy() function Options.destroy()
@ -17,3 +68,5 @@ end
function Options.openWebpage() function Options.openWebpage()
displayErrorBox("Error", "Not implemented yet") displayErrorBox("Error", "Not implemented yet")
end end
addEvent(Options.load)

View File

@ -1,111 +1,29 @@
MainWindow MainWindow
id: optionsWindow id: optionsWindow
title: Options title: Options
size: 286 262 size: 286 100
// general CheckBox
Button id: vsyncCheckBox
text: General text: Enable vertical synchronization
anchors.left: parent.left tooltip: Limits FPS to 60
anchors.top: parent.top
margin.left: 18
margin.top: 32
@onClick: displayErrorBox("Error", "Not implemented yet")
Label
text: |-
Change general
game options
anchors.left: prev.right
anchors.top: prev.top
margin.left: 10
margin.top: -2
// graphics
Button
text: Graphics
anchors.left: parent.left
anchors.top: parent.top
margin.left: 18
margin.top: 65
@onClick: displayErrorBox("Error", "Not implemented yet")
Label
text: |-
Change graphics and
performance settings
anchors.left: prev.right
anchors.top: prev.top
margin.left: 10
margin.top: -2
// console
Button
text: Console
anchors.left: parent.left
anchors.top: parent.top
margin.left: 18
margin.top: 98
@onClick: displayErrorBox("Error", "Not implemented yet")
Label
text: Customise the console
anchors.left: prev.right
anchors.top: prev.top
margin.left: 10
margin.top: -2
// hotkeys
Button
text: Hotkeys
anchors.left: parent.left
anchors.top: parent.top
margin.left: 18
margin.top: 131
@onClick: displayErrorBox("Error", "Not implemented yet")
Label
text: Edit your hotkey texts
anchors.left: prev.right
anchors.top: prev.top
margin.left: 10
margin.top: -2
HorizontalSeparator
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.top: parent.top
margin.bottom: 97 margin.top: 28
margin.left: 18 margin.left: 18
margin.right: 18 margin.right: 18
// motd CheckBox
Button id: fpsCheckBox
text: Motd text: Show frame rate
anchors.left: parent.left
anchors.bottom: parent.bottom
margin.left: 18
margin.bottom: 60
@onClick: displayErrorBox("Error", "Not implemented yet")
Label
text: |-
Show the most recent
Message of the Day
anchors.left: prev.right
anchors.top: prev.top
margin.left: 10
margin.top: -2
HorizontalSeparator
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.top: prev.bottom
margin.bottom: 40 margin.top: 10
margin.left: 13 margin.left: 18
margin.right: 13 margin.right: 18
// ok button
Button Button
text: Ok text: Ok
width: 64 width: 64

View File

@ -64,6 +64,7 @@ TopPanel
@onClick: About.create() @onClick: About.create()
FrameCounter FrameCounter
id: frameCounter
anchors.top: parent.top anchors.top: parent.top
anchors.right: prev.left anchors.right: prev.left
margin.top: 8 margin.top: 8

View File

@ -31,6 +31,7 @@ public:
bool load(const std::string& file); bool load(const std::string& file);
bool save(); bool save();
bool exists(const std::string& key) { return m_confsMap.find(key) != m_confsMap.end(); }
void set(const std::string& key, const std::string& value) { m_confsMap[key] = value; } void set(const std::string& key, const std::string& value) { m_confsMap[key] = value; }
std::string get(const std::string& key) { return m_confsMap[key]; } std::string get(const std::string& key) { return m_confsMap[key]; }

View File

@ -154,6 +154,7 @@ void LuaInterface::registerFunctions()
g_lua.registerClass<Configs>(); g_lua.registerClass<Configs>();
g_lua.bindClassStaticFunction<Configs>("set", std::bind(&Configs::set, &g_configs, _1, _2)); g_lua.bindClassStaticFunction<Configs>("set", std::bind(&Configs::set, &g_configs, _1, _2));
g_lua.bindClassStaticFunction<Configs>("get", std::bind(&Configs::get, &g_configs, _1)); g_lua.bindClassStaticFunction<Configs>("get", std::bind(&Configs::get, &g_configs, _1));
g_lua.bindClassStaticFunction<Configs>("exists", std::bind(&Configs::exists, &g_configs, _1));
// Logger // Logger
g_lua.registerClass<Logger>(); g_lua.registerClass<Logger>();
@ -170,5 +171,6 @@ void LuaInterface::registerFunctions()
g_lua.bindGlobalFunction("addEvent", std::bind(&EventDispatcher::addEvent, &g_dispatcher, _1, false)); g_lua.bindGlobalFunction("addEvent", std::bind(&EventDispatcher::addEvent, &g_dispatcher, _1, false));
g_lua.bindGlobalFunction("scheduleEvent", std::bind(&EventDispatcher::scheduleEvent, &g_dispatcher, _1, _2)); g_lua.bindGlobalFunction("scheduleEvent", std::bind(&EventDispatcher::scheduleEvent, &g_dispatcher, _1, _2));
g_lua.bindGlobalFunction("getMouseCursorPos", std::bind(&Platform::getMouseCursorPos, &g_platform)); g_lua.bindGlobalFunction("getMouseCursorPos", std::bind(&Platform::getMouseCursorPos, &g_platform));
g_lua.bindGlobalFunction("setVerticalSync", std::bind(&Platform::setVerticalSync, &g_platform, _1));
g_lua.bindGlobalFunction("getScreenSize", std::bind(&Graphics::getScreenSize, &g_graphics)); g_lua.bindGlobalFunction("getScreenSize", std::bind(&Graphics::getScreenSize, &g_graphics));
} }