dobrograd-13-06-2022/garrysmod/addons/util-dlib/lua/dlib/classes/collector.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

201 lines
4.6 KiB
Lua

do
local _class_0
local _base_0 = {
Add = function(self, ...)
return self:add(...)
end,
Rebuild = function(self, ...)
return self:rebuild(...)
end,
Update = function(self, ...)
return self:update(...)
end,
Calculate = function(self, ...)
return self:calculate(...)
end,
SetSteps = function(self, ...)
return self:setSteps(...)
end,
SetTimeout = function(self, ...)
return self:setTimeout(...)
end,
SetDefault = function(self, ...)
return self:setDefault(...)
end,
add = function(self, val, update)
if val == nil then
val = self.def
end
if update == nil then
update = true
end
local time = CurTimeL()
self.values[self.nextvalue] = {
val,
time
}
self.nextvalue = self.nextvalue + 1
if self.nextvalue > self.steps then
self.nextvalue = 1
end
if update then
return self:update()
end
end,
rebuild = function(self)
local time = CurTimeL()
do
local _accum_0 = { }
local _len_0 = 1
for i = 1, self.steps do
_accum_0[_len_0] = {
self.def,
time
}
_len_0 = _len_0 + 1
end
self.values = _accum_0
end
end,
update = function(self)
local time = CurTimeL()
do
local _accum_0 = { }
local _len_0 = 1
local _list_0 = self.values
for _index_0 = 1, #_list_0 do
local valData = _list_0[_index_0]
if valData[2] + self.timeout < time then
_accum_0[_len_0] = {
self.def,
time
}
else
_accum_0[_len_0] = valData
end
_len_0 = _len_0 + 1
end
self.values = _accum_0
end
end,
calculate = function(self)
local output = 0
local _list_0 = self.values
for _index_0 = 1, #_list_0 do
local val = _list_0[_index_0]
output = output + val[1]
end
return output
end,
think = function(self)
return self:update()
end,
Think = function(self)
return self:update()
end,
Update = function(self)
return self:update()
end,
setSteps = function(self, steps)
if steps == nil then
steps = self.steps
end
self.steps = steps
self.nextvalue = 1
return self:rebuild()
end,
setTimeout = function(self, timeout)
if timeout == nil then
timeout = self.timeout
end
self.timeout = timeout
return self:rebuild()
end,
setDefault = function(self, def)
if def == nil then
def = self.def
end
self.def = def
return self:rebuild()
end
}
_base_0.__index = _base_0
_class_0 = setmetatable({
__init = function(self, steps, timeout, def)
if steps == nil then
steps = 100
end
if timeout == nil then
timeout = 1
end
if def == nil then
def = 0
end
self.steps = steps
self.nextvalue = 1
self.timeout = timeout
self.def = def
return self:rebuild()
end,
__base = _base_0,
__name = "Collector"
}, {
__index = _base_0,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
DLib.Collector = _class_0
end
do
local _class_0
local _parent_0 = DLib.Collector
local _base_0 = {
calculate = function(self)
local average = 0
local values = self.steps
local _list_0 = self.values
for _index_0 = 1, #_list_0 do
local val = _list_0[_index_0]
average = average + val[1]
end
return average / values
end
}
_base_0.__index = _base_0
setmetatable(_base_0, _parent_0.__base)
_class_0 = setmetatable({
__init = function(self, ...)
return _class_0.__parent.__init(self, ...)
end,
__base = _base_0,
__name = "Average",
__parent = _parent_0
}, {
__index = function(cls, name)
local val = rawget(_base_0, name)
if val == nil then
local parent = rawget(cls, "__parent")
if parent then
return parent[name]
end
else
return val
end
end,
__call = function(cls, ...)
local _self_0 = setmetatable({}, _base_0)
cls.__init(_self_0, ...)
return _self_0
end
})
_base_0.__class = _class_0
if _parent_0.__inherited then
_parent_0.__inherited(_parent_0, _class_0)
end
DLib.Average = _class_0
return _class_0
end