2025-06-04 05:02:57 +08:00

97 lines
1.9 KiB
Plaintext

autoImport ("SkillInVisiblePlayerCmd")
FunctionVisibleSkill = class("FunctionVisibleSkill")
function FunctionVisibleSkill.Me()
if nil == FunctionVisibleSkill.me then
FunctionVisibleSkill.me = FunctionVisibleSkill.new()
end
return FunctionVisibleSkill.me
end
function FunctionVisibleSkill:ctor()
self.coCmds = {}
self:Reset()
end
function FunctionVisibleSkill:Reset()
self:ShutdownAll()
end
function FunctionVisibleSkill:ResetCmd(cmdClass)
if(self.cmd) then
if(cmdClass and self.cmd.__cname == cmdClass.__cname) then
return false
end
self.cmd:End()
end
self.cmd = nil
if(cmdClass) then
self.cmd = cmdClass.new()
self.cmd:Start()
end
end
function FunctionVisibleSkill:Start(master,cmdClass)
return self:ResetCmd(cmdClass)
end
function FunctionVisibleSkill:End(master,cmdClass)
if(self.cmd) then
if(self.cmd.__cname ~= cmdClass.__cname) then
return
end
end
self:ResetCmd(nil)
end
function FunctionVisibleSkill:ShutdownAll()
self:Shutdown()
self:ShutdownCo()
end
function FunctionVisibleSkill:Shutdown()
self:End(nil,self.cmd)
end
function FunctionVisibleSkill:ShutdownCo()
for k,v in pairs(self.coCmds) do
v:End()
end
self.coCmds = {}
end
function FunctionVisibleSkill:IsRunning(cmdClass)
if(cmdClass) then
if(self.cmd and self.cmd.__cname == cmdClass.__cname) then
return true
elseif(self.coCmds[cmdClass.__cname]) then
return true
end
return false
end
return self.cmd~=nil
end
function FunctionVisibleSkill:CoStart(master,cmdClass)
if(cmdClass) then
local cmd = self.coCmds[cmdClass.__cname]
if(not cmd) then
cmd = cmdClass.new()
self.coCmds[cmdClass.__cname] = cmd
cmd:Start()
end
return cmd
end
return nil
end
function FunctionVisibleSkill:CoEnd(master,cmdClass)
if(cmdClass) then
local cmd = self.coCmds[cmdClass.__cname]
if(cmd) then
cmd:End()
self.coCmds[cmdClass.__cname] = nil
end
end
end