mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 20:41:41 +09:00
Added Sliders
This commit is contained in:
@@ -51,9 +51,14 @@ function inputs._input:draw(root)
|
|||||||
return root.add(data)
|
return root.add(data)
|
||||||
elseif is_type(self.data._state,'function') then
|
elseif is_type(self.data._state,'function') then
|
||||||
local data = table.deepcopy(self.draw_data)
|
local data = table.deepcopy(self.draw_data)
|
||||||
local success, err = pcall(self.data._state,root)
|
local success, err = pcall(self.data._state,player,root)
|
||||||
if success then data.state = err else error(err) end
|
if success then data.state = err else error(err) end
|
||||||
return root.add(data)
|
return root.add(data)
|
||||||
|
elseif is_type(self.data._start,'function') then
|
||||||
|
local data = table.deepcopy(self.draw_data)
|
||||||
|
local success, err = pcall(self.data._start,player,root)
|
||||||
|
if success then data.value = err else error(err) end
|
||||||
|
return root.add(data)
|
||||||
else
|
else
|
||||||
return root.add(self.draw_data)
|
return root.add(self.draw_data)
|
||||||
end
|
end
|
||||||
@@ -74,7 +79,8 @@ function inputs.add(obj)
|
|||||||
type == 'radiobutton' or
|
type == 'radiobutton' or
|
||||||
type == 'textfield' or
|
type == 'textfield' or
|
||||||
type == 'text-box' or
|
type == 'text-box' or
|
||||||
type == 'slider'
|
type == 'slider' or
|
||||||
|
type == 'drop-down'
|
||||||
then else return end
|
then else return end
|
||||||
if obj.type == 'button' or obj.type == 'sprite-button' then obj.style = mod_gui.button_style end
|
if obj.type == 'button' or obj.type == 'sprite-button' then obj.style = mod_gui.button_style end
|
||||||
obj.draw_data = table.deepcopy(obj)
|
obj.draw_data = table.deepcopy(obj)
|
||||||
@@ -108,6 +114,7 @@ Event.register(inputs.events.click,inputs._event_handler)
|
|||||||
Event.register(inputs.events.elem,inputs._event_handler)
|
Event.register(inputs.events.elem,inputs._event_handler)
|
||||||
Event.register(inputs.events.state,inputs._event_handler)
|
Event.register(inputs.events.state,inputs._event_handler)
|
||||||
Event.register(inputs.events.text,inputs._event_handler)
|
Event.register(inputs.events.text,inputs._event_handler)
|
||||||
|
Event.register(inputs.events.slider,inputs._event_handler)
|
||||||
|
|
||||||
-- the folwing functions are just to make inputs easier but if what you want is not include use inputs.add(obj)
|
-- the folwing functions are just to make inputs easier but if what you want is not include use inputs.add(obj)
|
||||||
--- Used to define a button, can have many function
|
--- Used to define a button, can have many function
|
||||||
@@ -263,6 +270,40 @@ function inputs.add_text(name,box,text,callback)
|
|||||||
return textbox
|
return textbox
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Used to define a slider callback only on value_changed
|
||||||
|
-- @usage Gui.inputs.add_slider('test','horizontal',1,10,5,function)
|
||||||
|
-- @tparam string name the name of this button
|
||||||
|
-- @tapram string text the caption to go with the slider
|
||||||
|
-- @tparam number min the lowest number
|
||||||
|
-- @tparam number max the highest number
|
||||||
|
-- @param start_callback either a number or a function to return a number
|
||||||
|
-- @tparam function callback the function to be called on value_changed function(player,value,percent,element)
|
||||||
|
-- @treturn table the slider object that was made, to allow a custom error event if wanted
|
||||||
|
function inputs.add_slider(name,orientation,min,max,start_callback,callback)
|
||||||
|
local slider = inputs.add{
|
||||||
|
type='slider',
|
||||||
|
name=name,
|
||||||
|
orientation=orientation,
|
||||||
|
minimum_value=min,
|
||||||
|
maximum_value=max,
|
||||||
|
value=start
|
||||||
|
}
|
||||||
|
slider.data._start = start_callback
|
||||||
|
slider.data._callback = callback
|
||||||
|
slider.data.max = max
|
||||||
|
slider:on_event('slider',function(event)
|
||||||
|
local player = Game.get_player(event)
|
||||||
|
local value = event.element.slider_value
|
||||||
|
local data = slider.data
|
||||||
|
local percent = value/data.max
|
||||||
|
if is_type(data._callback,'function') then
|
||||||
|
local success, err = pcall(data._callback,player,value,percent,event.element)
|
||||||
|
if not success then error(err) end
|
||||||
|
else error('Invalid Callback Condition Format') end
|
||||||
|
end)
|
||||||
|
return slider
|
||||||
|
end
|
||||||
|
|
||||||
return inputs
|
return inputs
|
||||||
|
|
||||||
-- to see examples look at GuiParts/test.lua
|
-- to see examples look at GuiParts/test.lua
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ local elem_test = Gui.inputs.add_elem_button('test-elem','item','Testing Elems',
|
|||||||
player_return(elem.type..' '..elem.value,nil,player)
|
player_return(elem.type..' '..elem.value,nil,player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local check_test = Gui.inputs.add_checkbox('test-check',false,'Cheat Mode',function(parent)
|
local check_test = Gui.inputs.add_checkbox('test-check',false,'Cheat Mode',function(player,parent)
|
||||||
return game.players[parent.player_index].cheat_mode
|
return game.players[parent.player_index].cheat_mode
|
||||||
end,function(player,element)
|
end,function(player,element)
|
||||||
player.cheat_mode = true
|
player.cheat_mode = true
|
||||||
@@ -57,8 +57,8 @@ end,function(player,element)
|
|||||||
player.cheat_mode = false
|
player.cheat_mode = false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local radio_test = Gui.inputs.add_checkbox('test-radio',true,'Kill Self',function(parent)
|
local radio_test = Gui.inputs.add_checkbox('test-radio',true,'Kill Self',function(player,parent)
|
||||||
return game.players[parent.player_index].in_combat
|
return player.in_combat
|
||||||
end,function(player,element)
|
end,function(player,element)
|
||||||
if player.character then player.character.die() end
|
if player.character then player.character.die() end
|
||||||
Gui.inputs.reset_radio(element.parent['test-radio-reset'])
|
Gui.inputs.reset_radio(element.parent['test-radio-reset'])
|
||||||
@@ -78,6 +78,13 @@ local box_test = Gui.inputs.add_text('test-box',true,'default text but a box',fu
|
|||||||
player_return(text,nil,player)
|
player_return(text,nil,player)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
slider_test = Gui.inputs.add_slider('test-slider','vertical',0,5,function(player,parent)
|
||||||
|
return player.character_running_speed_modifier
|
||||||
|
end,function(player,value,percent,element)
|
||||||
|
player.character_running_speed_modifier = value
|
||||||
|
player_return('Value In Percent of Max '..percent*100,nil,player)
|
||||||
|
end)
|
||||||
|
|
||||||
local function test_gui(event)
|
local function test_gui(event)
|
||||||
if not game.player and not event.player_index then return end
|
if not game.player and not event.player_index then return end
|
||||||
local player = game.player or Game.get_player(event)
|
local player = game.player or Game.get_player(event)
|
||||||
@@ -93,6 +100,7 @@ local function test_gui(event)
|
|||||||
radio_test_reset:draw(frame)
|
radio_test_reset:draw(frame)
|
||||||
text_test:draw(frame)
|
text_test:draw(frame)
|
||||||
box_test:draw(frame)
|
box_test:draw(frame)
|
||||||
|
slider_test:draw(frame)
|
||||||
end
|
end
|
||||||
|
|
||||||
Gui.toolbar.add('open-gui-test','Open Test Gui','Opens the test gui with every input',test_gui)
|
Gui.toolbar.add('open-gui-test','Open Test Gui','Opens the test gui with every input',test_gui)
|
||||||
|
|||||||
Reference in New Issue
Block a user