mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 20:41:41 +09:00
Added Drop Down
This commit is contained in:
@@ -59,6 +59,24 @@ function inputs._input:draw(root)
|
|||||||
local success, err = pcall(self.data._start,player,root)
|
local success, err = pcall(self.data._start,player,root)
|
||||||
if success then data.value = err else error(err) end
|
if success then data.value = err else error(err) end
|
||||||
return root.add(data)
|
return root.add(data)
|
||||||
|
elseif is_type(self.data._index,'function') then
|
||||||
|
local data = table.deepcopy(self.draw_data)
|
||||||
|
local success, err = pcall(self.data._index,player,root)
|
||||||
|
if success then data.selected_index = err else error(err) end
|
||||||
|
if is_type(self.data._items,'function') then
|
||||||
|
local success, err = pcall(self.data._items,player,root)
|
||||||
|
if success then data.items = err else error(err) end
|
||||||
|
end
|
||||||
|
return root.add(data)
|
||||||
|
elseif is_type(self.data._items,'function') then
|
||||||
|
local data = table.deepcopy(self.draw_data)
|
||||||
|
local success, err = pcall(self.data._items,player,root)
|
||||||
|
if success then data.items = err else error(err) end
|
||||||
|
if is_type(self.data._index,'function') then
|
||||||
|
local success, err = pcall(self.data._index,player,root)
|
||||||
|
if success then data.selected_index = err else error(err) end
|
||||||
|
end
|
||||||
|
return root.add(data)
|
||||||
else
|
else
|
||||||
return root.add(self.draw_data)
|
return root.add(self.draw_data)
|
||||||
end
|
end
|
||||||
@@ -115,6 +133,7 @@ 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)
|
Event.register(inputs.events.slider,inputs._event_handler)
|
||||||
|
Event.register(inputs.events.selection,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
|
||||||
@@ -238,7 +257,7 @@ function inputs.reset_radio(elements)
|
|||||||
local state = false
|
local state = false
|
||||||
local success, err = pcall(_element.data._state,elements.parent)
|
local success, err = pcall(_element.data._state,elements.parent)
|
||||||
if success then state = err else error(err) end
|
if success then state = err else error(err) end
|
||||||
element.state = state
|
elements.state = state
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -286,7 +305,7 @@ function inputs.add_slider(name,orientation,min,max,start_callback,callback)
|
|||||||
orientation=orientation,
|
orientation=orientation,
|
||||||
minimum_value=min,
|
minimum_value=min,
|
||||||
maximum_value=max,
|
maximum_value=max,
|
||||||
value=start
|
value=start_callback
|
||||||
}
|
}
|
||||||
slider.data._start = start_callback
|
slider.data._start = start_callback
|
||||||
slider.data._callback = callback
|
slider.data._callback = callback
|
||||||
@@ -304,6 +323,36 @@ function inputs.add_slider(name,orientation,min,max,start_callback,callback)
|
|||||||
return slider
|
return slider
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Used to define a drop down callback only on value_changed
|
||||||
|
-- @usage Gui.inputs.add_drop_down('test',{1,2,3},1,function)
|
||||||
|
-- @param items either a list or a function which returns a list
|
||||||
|
-- @param index either a number or a function which returns a number
|
||||||
|
-- @tparam function callback the callback which is called when a new index is selected function(player,selected,items,element)
|
||||||
|
-- @treturn table the drop-down object that was made, to allow a custom error event if wanted
|
||||||
|
function inputs.add_drop_down(name,items,index,callback)
|
||||||
|
local drop_down = inputs.add{
|
||||||
|
type='drop-down',
|
||||||
|
name=name,
|
||||||
|
items=items,
|
||||||
|
selected_index=index
|
||||||
|
}
|
||||||
|
drop_down.data._items = items
|
||||||
|
drop_down.data._index = index
|
||||||
|
drop_down.data._callback = callback
|
||||||
|
drop_down:on_event('selection',function(event)
|
||||||
|
local player = Game.get_player(event)
|
||||||
|
local element = event.element
|
||||||
|
local items = element.items
|
||||||
|
local selected = items[element.selected_index]
|
||||||
|
local callback = drop_down.data._callback
|
||||||
|
if is_type(callback,'function') then
|
||||||
|
local success, err = pcall(callback,player,selected,items,element)
|
||||||
|
if not success then error(err) end
|
||||||
|
else error('Invalid Callback Condition Format') end
|
||||||
|
end)
|
||||||
|
return drop_down
|
||||||
|
end
|
||||||
|
|
||||||
return inputs
|
return inputs
|
||||||
|
|
||||||
-- to see examples look at GuiParts/test.lua
|
-- to see examples look at GuiParts/test.lua
|
||||||
|
|||||||
@@ -58,14 +58,14 @@ end,function(player,element)
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
local radio_test = Gui.inputs.add_checkbox('test-radio',true,'Kill Self',function(player,parent)
|
local radio_test = Gui.inputs.add_checkbox('test-radio',true,'Kill Self',function(player,parent)
|
||||||
return player.in_combat
|
return false
|
||||||
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'])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local radio_test_reset = Gui.inputs.add_checkbox('test-radio-reset',true,'Reset Kill Self',function(parent)
|
local radio_test_reset = Gui.inputs.add_checkbox('test-radio-reset',true,'Reset Kill Self',function(player,parent)
|
||||||
return false
|
return not parent['test-radio'].state
|
||||||
end,function(player,element)
|
end,function(player,element)
|
||||||
Gui.inputs.reset_radio(element.parent['test-radio'])
|
Gui.inputs.reset_radio(element.parent['test-radio'])
|
||||||
end)
|
end)
|
||||||
@@ -78,11 +78,16 @@ 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)
|
local slider_test = Gui.inputs.add_slider('test-slider','vertical',0,5,function(player,parent)
|
||||||
return player.character_running_speed_modifier
|
return player.character_running_speed_modifier
|
||||||
end,function(player,value,percent,element)
|
end,function(player,value,percent,element)
|
||||||
player.character_running_speed_modifier = value
|
player.character_running_speed_modifier = value
|
||||||
player_return('Value In Percent of Max '..percent*100,nil,player)
|
player_return('Value In Percent of Max '..math.floor(percent*100)-(math.floor(percent*100)%5),nil,player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local drop_test = Gui.inputs.add_drop_down('test-drop',table.keys(defines.color),1,function(player,selected,items,element)
|
||||||
|
player.color = defines.color[selected]
|
||||||
|
player.chat_color = defines.color[selected]
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local function test_gui(event)
|
local function test_gui(event)
|
||||||
@@ -101,6 +106,7 @@ local function test_gui(event)
|
|||||||
text_test:draw(frame)
|
text_test:draw(frame)
|
||||||
box_test:draw(frame)
|
box_test:draw(frame)
|
||||||
slider_test:draw(frame)
|
slider_test:draw(frame)
|
||||||
|
drop_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