源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

139 lines
2.9 KiB

local setmetatable = setmetatable
local xpcall = xpcall
local pcall = pcall
local assert = assert
local rawget = rawget
local error = error
local print = print
local traceback = traceback
-- local ilist = ilist
-- local _xpcall = {}
-- setmetatable(_xpcall, _xpcall)
-- _xpcall.__call = function(self, ...)
-- local flag = true
-- local msg = nil
-- if jit then
-- if nil == self.obj then
-- flag, msg = xpcall(self.func, traceback, ...)
-- else
-- flag, msg = xpcall(self.func, traceback, self.obj, ...)
-- end
-- else
-- local args = {...}
-- if nil == self.obj then
-- local func = function() self.func(unpack(args)) end
-- flag, msg = xpcall(func, traceback)
-- else
-- local func = function() self.func(self.obj, unpack(args)) end
-- flag, msg = xpcall(func, traceback)
-- end
-- end
-- return flag, msg
-- end
-- _xpcall.__eq = function(lhs, rhs)
-- return lhs.func == rhs.func and lhs.obj == rhs.obj
-- end
-- local function xfunctor(func, obj)
-- local st = {func = func, obj = obj}
-- setmetatable(st, _xpcall)
-- return st
-- end
-- local _pcall = {}
-- _pcall.__call = function(self, ...)
-- local flag = true
-- local msg = nil
-- if nil == self.obj then
-- flag, msg = pcall(self.func, ...)
-- else
-- flag, msg = pcall(self.func, self.obj, ...)
-- end
-- return flag, msg
-- end
-- _pcall.__eq = function(lhs, rhs)
-- return lhs.func == rhs.func and lhs.obj == rhs.obj
-- end
-- local function functor(func, obj)
-- local st = {func = func, obj = obj}
-- setmetatable(st, _pcall)
-- return st
-- end
-- setmetatable(_event, _event)
local function event()
local _event = {callback_list = {}}
function _event:Add(func, obj)
obj = obj or false
_event.callback_list[func] = obj
end
function _event:Remove(func, obj)
_event.callback_list[func] = nil
end
-- function _event:Count()
-- return _event.callback_list.length
-- end
-- function _event:Clear()
-- _event.callback_list:clear()
-- end
function _event:CallFunc(...)
local callback_list = _event.callback_list
for func, obj in pairs(callback_list) do
func(obj, ...)
end
end
return _event
end
UpdateBeat = event()
LateUpdateBeat = event()
FixedUpdateBeat = event()
-- CoUpdateBeat = event("CoUpdate") --只在协同使用
local Time = Time
local UpdateBeat = UpdateBeat
local LateUpdateBeat = LateUpdateBeat
local FixedUpdateBeat = FixedUpdateBeat
-- local CoUpdateBeat = CoUpdateBeat
--逻辑update
function Update(deltaTime, unscaledDeltaTime)
Time:SetDeltaTime(deltaTime, unscaledDeltaTime)
UpdateBeat:CallFunc()
end
function LateUpdate()
LateUpdateBeat:CallFunc()
-- CoUpdateBeat()
Time:SetFrameCount()
end
--物理update
function FixedUpdate(fixedDeltaTime)
Time:SetFixedDelta(fixedDeltaTime)
-- FixedUpdateBeat:CallFunc()
end
function PrintEvents()
UpdateBeat:Dump()
FixedUpdateBeat:Dump()
end