| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- SkillManager = {}
- local this = SkillManager
- local skillPool = BattleObjectPool.New(function ()
- return Skill:New()
- end)
- --
- this.SkillList = {}
- this.IsSkilling = false
- -- 初始化
- function this.Init()
- this.Clear()
- end
- -- 向技能列表中追加技能
- function this.AddSkill(caster, effectData, type, targets, isAdd)
-
- local skill = skillPool:Get()
- skill:Init(caster, effectData, type, targets, isAdd)
- table.insert(this.SkillList, skill)
-
- return skill
- end
- -- 插入技能到技能列表首位
- function this.InsertSkill(caster, effectData, type, targets, isAdd, skillSubType)
- local skill = skillPool:Get()
- skill:Init(caster, effectData, type, targets, isAdd, skillSubType)
- table.insert(this.SkillList, 1, skill)
- return skill
- end
- -- 插入技能到后一位
- function this.InsertSkillAfter(caster, effectData, type, targets, isAdd, skillSubType)
- local skill = skillPool:Get()
- skill:Init(caster, effectData, type, targets, isAdd, skillSubType)
- local index = #this.SkillList
- table.insert(this.SkillList, index + 1, skill)
- return skill
- end
- -- 获取是否拥有我的技能未释放
- function this.HaveMySkill(role)
- for _, skill in ipairs(this.SkillList) do
- if skill.owner == role then
- return true
- end
- end
- return false
- end
- --是否有追加技能
- function this.HaveAddSkill(role)
- local skill = this.SkillList[1]
- if skill.owner.Equle(role) then
- return true
- end
- return false
- end
- -- 设置用于轮转的方法
- function this.SetTurnRoundFunc(func)
-
-
- this.TurnRoundFunc = func
- end
- function this.CheckTurnRound()
- if this.IsSkilling then
- return
- end
- if this.SkillList and #this.SkillList > 0 then
- return
- end
- -- 没有技能释放的时候才轮转
-
-
- if this.TurnRoundFunc then
- BattleLogic.WaitForTrigger(0.3, function()
-
- this.TurnRoundFunc() --< 轮转时 会赋值 屏蔽置空
- -- this.TurnRoundFunc = nil
-
-
- end)
- end
- end
- --
- function this.Update()
- -- 如果正在引导战斗
- if BattleManager and BattleManager.IsGuidePause() then
- return
- end
- --
- if this.IsSkilling then
- return
- end
- if not this.SkillList or #this.SkillList == 0 then
- return
- end
-
- local skill = this.SkillList[1]
- table.remove(this.SkillList, 1)
- this.IsSkilling = true
- -- 检测技能释放
- skill.owner:SkillCast(skill, function()
- -- LogError("SkillCast"..skill.owner.roleId)
- skill:Dispose()
- skillPool:Put(skill)
- this.IsSkilling = false
- -- 检测一下轮转
- this.CheckTurnRound()
- end)
- end
- -- 清除
- function this.Clear()
- for _, skill in ipairs(this.SkillList) do
- skill:Dispose()
- skillPool:Put(skill)
- end
- this.SkillList = {}
- this.IsSkilling = false
- end
- return SkillManager
|