------------------------------------------------ --作者: yangqf --日期: 2021-03-26 --文件: PlayerSkillCell.lua --模块: PlayerSkillCell --描述: 玩家技能格子 ------------------------------------------------ local L_PlayerSkill = require "Logic.PlayerSkill.PlayerSkill" local PlayerSkillCell = { --配置ID CfgID = 0, --当前配置 Cfg = nil, --当前技能索引 CurIndex = 0, --索引倒计时,倒计时结束后索引归0 IndexTimer = 0, --技能列表 SkillList = nil, --技能数量 SkillCount = 0, --刷新回调 RereshCallBack = nil, } function PlayerSkillCell:New(cfg, useSkills) local _m = Utils.DeepCopy(self) _m.CfgID = cfg.Id _m.Cfg = cfg _m.CurIndex = 1 if cfg.Id == 1007000 then local dad = 0 end _m.SkillList = List:New() if useSkills ~= nil then for i = 1, #useSkills do local _skillCfg = DataConfig.DataSkill[useSkills[i]] if _skillCfg ~= nil then _m.SkillList:Add(L_PlayerSkill:New(_skillCfg, true)) end end else local _skillIds = Utils.SplitNumber(cfg.SkillId, '_') for i = 1, #_skillIds do local _skillCfg = DataConfig.DataSkill[_skillIds[i]] if _skillCfg ~= nil then _m.SkillList:Add(L_PlayerSkill:New(_skillCfg, true)) end end end _m.SkillCount = #_m.SkillList return _m end --当前技能 function PlayerSkillCell:GetCurSkill() if self.CurIndex < 1 or self.CurIndex > self.SkillCount then CurIndex = 1 end if self.CurIndex <= self.SkillCount then return self.SkillList[self.CurIndex] end return nil end --更新CD function PlayerSkillCell:Update(dt) if self.SkillCount > 0 then if self.IndexTimer > 0 then self.IndexTimer = self.IndexTimer - dt if self.IndexTimer <= 0 then self.CurIndex = 1 self.IndexTimer = 0 if self.RereshCallBack ~= nil then self.RereshCallBack() end end end end for i = 1, self.SkillCount do self.SkillList[i]:Update(dt) end end --填充技能列表 function PlayerSkillCell:FillSkillList(skillList) for i = 1, self.SkillCount do skillList:Add(self.SkillList[i]) end end --使用技能回调 function PlayerSkillCell:OnUseSkill(skillId) local _selfSkill = false for i = 1, self.SkillCount do if self.SkillList[i].CfgID == skillId then _selfSkill = true break end end if _selfSkill then self.CurIndex = self.CurIndex + 1 if self.CurIndex > self.SkillCount then self.CurIndex = 1 self.IndexTimer = 0 else self.IndexTimer = 2 end if self.RereshCallBack ~= nil then self.RereshCallBack() end end end return PlayerSkillCell