Adding Game Settings Gui Works

This commit is contained in:
Cooldude2606
2018-01-04 00:41:27 +00:00
parent 545a17d22a
commit fd308286de
3 changed files with 55 additions and 50 deletions

View File

@@ -11,8 +11,8 @@ Discord: https://discord.gg/r6dC2uK
--{type='slider',object='',key='',name='',min=x,max=y}
--{type='function',object='',key='',name='',param={}}
local basic_settings = {
-- mining
-- crafting
{type='slider',object='force',key='manual_mining_speed_modifier',name='mining-speed',min=0,max=10},
{type='slider',object='force',key='manual_crafting_speed_modifier',name='craft-speed',min=0,max=10}
-- running
-- build distance
-- reach
@@ -22,12 +22,12 @@ local basic_settings = {
}
local advanced_settings = {
-- hotbar count
{type='slider',object='force',key='quickbar_count',name='quickbar-count',min=1,max=5},
-- inventory size
-- mining prog
-- game speed
-- force crc -function
-- save game -function
{type='function',object='game',key='server_save',name='save'}
-- reset force -function
-- reload effects -function
-- kill bitters -function
@@ -35,8 +35,8 @@ local advanced_settings = {
}
local personal_settings = {
-- craft speed
-- mining speed
{type='slider',object='player',key='character_mining_speed_modifier',name='mining-speed',min=0,max=10},
{type='slider',object='player',key='character_crafting_speed_modifier',name='craft-speed',min=0,max=10}
-- running speed
-- build distance
-- reach distance
@@ -49,47 +49,48 @@ local _root_list = {basic_settings=basic_settings,advanced_settings=advanced_set
local function _get_data(root_frame)
local object = root_frame.name
local key = root_frame.setting_name.caption
local data = _root_list[object] and _root_list[object][key]
return data
for _,setting in pairs(_root_list[object]) do
if key == setting.key then return setting end
end
end
local function _object_list(player) return {game=game,player=player,force=player.force} end
for name,group in pairs(_root_list) do
for key,setting in pairs(group) do
if key ~= '_loaded' and key ~= key then
local _added = nil
if setting.type == 'slider' then
_added = Gui.inputs.add_slider('game-settings-'..setting.name,'horizontal',setting.min,setting.max,
function(player,root_frame)
local data = _get_data(root_frame)
local objects = _object_list(player)
local object = objects[data.object]
return object[data.key] or nil
end,
function(player,value,percent,element)
local data = _get_data(element.parent)
local objects = _object_list(player)
local object = objects[data.object]
object[key] = value
element.parent.counter.caption = tostring(value)
end
)
elseif setting.type == 'function' then
_added = Gui.add_check('game-settings-'..setting.name,true,nil,false,function(player,element)
local _added = nil
if setting.type == 'slider' then
_added = Gui.inputs.add_slider('game-settings-'..setting.name,'horizontal',setting.min,setting.max,
function(player,root_frame)
local data = _get_data(root_frame)
local objects = _object_list(player)
local object = objects[data.object]
return object[data.key] or 1
end,
function(player,value,percent,element)
local data = _get_data(element.parent)
local objects = _object_list(player)
local object = objects[data.object]
pcall(object[data.key],unpack(data.params))
end)
end
setting._loaded = _added
setting._group = name
object[data.key] = value
element.parent.counter.caption = tostring(value)
end
)
elseif setting.type == 'function' then
_added = Gui.inputs.add_checkbox('game-settings-'..setting.name,true,nil,false,function(player,element)
local data = _get_data(element.parent)
local objects = _object_list(player)
local object = objects[data.object]
pcall(object[data.key],unpack(data.params))
end)
if not setting.params then setting.params = {} end
end
setting._loaded = _added
setting._group = name
end
end
local function _draw_setting(frame,setting)
local frame = frame.add{type='flow'}
local frame = frame.add{
type='flow',
name=setting._group
@@ -101,15 +102,15 @@ local function _draw_setting(frame,setting)
}
frame.add{
type='label',
caption=settings.name,
caption=setting.key,
name='setting_name'
}
}.style.visible = false
if setting.type == 'slider' then
local slider = setting._loaded:draw(frame)
frame.add{
type='label',
name='counter',
caption=tostring(slider.value)
caption=tostring(slider.slider_value)
}
elseif setting.type == 'function' then
setting._loaded:draw(frame)
@@ -121,27 +122,27 @@ Gui.center.add{
caption='utility/no_building_material_icon',
tooltip={'game-settings.tooltip'}
}:add_tab('basic',{'game-settings.basic-name'},{'game-settings.basic-name'},function(frame)
frame.add{
type='label',
caption={'game-settings.basic-message'}
}.style.single_line = false
for _,setting in pairs(basic_settings) do
frame.add{
type='label',
caption={'game-settings.basic-message'}
}
_draw_setting(frame,setting)
end
end):add_tab('advanced',{'game-settings.advanced-name'},{'game-settings.advanced-tooltip'},function(frame)
frame.add{
type='label',
caption={'game-settings.advanced-message'}
}.style.single_line = false
for _,setting in pairs(advanced_settings) do
frame.add{
type='label',
caption={'game-settings.advanced-message'}
}
_draw_setting(frame,setting)
end
end):add_tab('personal',{'game-settings.personal-name'},{'game-settings.personal-tooltip'},function(frame)
frame.add{
type='label',
caption={'game-settings.personal-message'}
}.style.single_line = false
for _,setting in pairs(personal_settings) do
frame.add{
type='label',
caption={'game-settings.personal-message'}
}
_draw_setting(frame,setting)
end
end)

View File

@@ -128,7 +128,7 @@ groups['User']:add_rank{
power=4
}
rank['Admin']:edit('allow',false,{
ranks['Admin']:edit('allow',false,{
['game-settings']=true
})

View File

@@ -9,4 +9,8 @@ advanced-tooltip=These settings should be left alone unless you know what you ar
advanced-message=Please do not touch these settings at all unless you know 100% what they do and the effect of using them, leave game.speed alone it has a bigger effect then you think.
personal-name=Personal Settings
personal-tooltip=These will only effect you, if you are spoted you are on your own.
personal-message=These settings will only effect your player any changes you make are to be resposible ones and dont over do it or you may be caught using them.
personal-message=These settings will only effect your player any changes you make are to be resposible ones and dont over do it or you may be caught using them.
effect-mining-speed=Mining Speed
effect-craft-speed=Crafting Speed
effect-quickbar-count=Quickbar Count
effect-save=Save Game