mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-31 04:51:40 +09:00
More Code Cleaning
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
local Gui = require './core'
|
||||
local Game = require 'utils.game'
|
||||
|
||||
local function get_instances(define,element)
|
||||
local function get_labels(define,element)
|
||||
local function cat(e)
|
||||
return e.player_index
|
||||
end
|
||||
@@ -11,7 +11,7 @@ local function get_instances(define,element)
|
||||
|
||||
local categorize = define.categorize or not define.store and cat
|
||||
local category = categorize and categorize(element) or nil
|
||||
local instances = Gui.get_instances({
|
||||
local instances = Gui.get_labels({
|
||||
name=name,
|
||||
categorize=categorize
|
||||
},category)
|
||||
@@ -19,8 +19,8 @@ local function get_instances(define,element)
|
||||
return instances
|
||||
end
|
||||
|
||||
local function update_instances(define,element)
|
||||
local instances = get_instances(define,element)
|
||||
local function update_lables(define,element)
|
||||
local instances = get_labels(define,element)
|
||||
local value = element.slider_value
|
||||
if instances then
|
||||
for k,instance in pairs(instances) do
|
||||
@@ -33,20 +33,30 @@ local function update_instances(define,element)
|
||||
end
|
||||
end
|
||||
|
||||
local function event_call(define,element,value)
|
||||
local player = Game.get_player_by_index(element.player_index)
|
||||
|
||||
local min,max = element.get_slider_minimum(),element.get_slider_maximum()
|
||||
local delta = max-min
|
||||
local percent = delta == 0 and 0 or (value-min)/delta
|
||||
|
||||
if define.events.on_change then
|
||||
define.events.on_change(player,element,value,percent)
|
||||
end
|
||||
|
||||
update_lables(define,element)
|
||||
end
|
||||
|
||||
local function store_call(self,element,value)
|
||||
element.slider_value = value
|
||||
event_call(self,element,value)
|
||||
end
|
||||
|
||||
local Slider = {
|
||||
_prototype=Gui._extend_prototype{
|
||||
on_change = Gui._new_event_adder('on_change'),
|
||||
add_store = Gui._new_store_adder(function(self,element,value)
|
||||
element.slider_value = value
|
||||
local min,max = element.get_slider_minimum(),element.get_slider_maximum()
|
||||
local delta = max-min
|
||||
local percent = delta == 0 and 0 or (value-min)/delta
|
||||
local player = Game.get_player_by_index(element.player_index)
|
||||
if self.events.on_change then
|
||||
self.events.on_change(player,element,value,percent)
|
||||
end
|
||||
update_instances(self,element)
|
||||
end)
|
||||
add_store = Gui._new_store_adder(store_call),
|
||||
add_sync_store = Gui._new_sync_store_adder(store_call)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,18 +72,23 @@ function Slider.new_slider(name)
|
||||
self.post_draw = function(element)
|
||||
local player = Game.get_player_by_index(element.player_index)
|
||||
local min,max = element.get_slider_minimum(),element.get_slider_maximum()
|
||||
|
||||
if type(self.min) == 'function' then
|
||||
min = self.min(player,element)
|
||||
end
|
||||
|
||||
if type(self.max) == 'function' then
|
||||
max = self.max(player,element)
|
||||
end
|
||||
|
||||
element.set_slider_minimum_maximum(min,max)
|
||||
|
||||
if self.store then
|
||||
local category = self.categorize and self.categorize(element) or nil
|
||||
local value = self:get_store(category)
|
||||
if value then element.slider_value = value end
|
||||
end
|
||||
|
||||
if self.auto_label then
|
||||
self:draw_label(element.parent)
|
||||
end
|
||||
@@ -82,17 +97,14 @@ function Slider.new_slider(name)
|
||||
Gui.on_value_changed(self.name,function(event)
|
||||
local element = event.element
|
||||
local value = element.slider_value
|
||||
local min,max = element.get_slider_minimum(),element.get_slider_maximum()
|
||||
local delta = max-min
|
||||
local percent = delta == 0 and 0 or (value-min)/delta
|
||||
local category = self.categorize and self.categorize(element) or value
|
||||
|
||||
if self.store then
|
||||
local category = self.categorize and self.categorize(element) or value
|
||||
self:set_store(category,value)
|
||||
|
||||
elseif self.events.on_change then
|
||||
self.events.on_change(event.player,element,value,percent)
|
||||
update_instances(self,element)
|
||||
else
|
||||
event_call(self,element,value)
|
||||
|
||||
end
|
||||
|
||||
end)
|
||||
@@ -103,31 +115,39 @@ end
|
||||
function Slider._prototype:set_range(min,max)
|
||||
self.min = min
|
||||
self.max = max
|
||||
|
||||
if type(min) == 'number' then
|
||||
self.draw_data.minimum_value = min
|
||||
end
|
||||
|
||||
if type(max) == 'number' then
|
||||
self.draw_data.maximum_value = max
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function Slider._prototype:draw_label(element)
|
||||
local name = self.name..'-label'
|
||||
if element[name] then return end
|
||||
|
||||
local value = 0
|
||||
if self.store then
|
||||
local category = self.categorize and self.categorize(element) or value
|
||||
value = self:get_store(category) or 0
|
||||
end
|
||||
|
||||
local new_element = element.add{
|
||||
name=name,
|
||||
type='label',
|
||||
caption=tostring(math.round(value,2))
|
||||
}
|
||||
|
||||
if not Gui.instances[name] then Gui.instances[name] = {} end
|
||||
local instances = get_instances(self,element)
|
||||
|
||||
local instances = get_labels(self,element)
|
||||
table.insert(instances,new_element)
|
||||
|
||||
return new_element
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user