From 210be03aa46291d6250a0a491026d3ae74c375d6 Mon Sep 17 00:00:00 2001 From: chenxi Date: Sun, 16 Apr 2023 23:06:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/component/battle_unit_comp.lua | 32 ++++++++++++++++--- .../battle/controller/battle_controller.lua | 7 +++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index 3ac23cb6..90bc4ec6 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -44,7 +44,7 @@ function BattleUnitComp:_initBase() self.buffList = {} self.sameBuffCount = {} self.shieldBuffList = {} - self.activeSkillIndex = 1 + self.activeSkillIndex = nil self.currActiveSkill = nil self.targetX = nil self.currState = UNIT_STATE.INIT @@ -89,6 +89,21 @@ function BattleUnitComp:getAnimationDuration(aniName) return duration or 0 end +function BattleUnitComp:useSkill(index, callback) + self.actionOverCallback = callback + self.activeSkillIndex = nil + self.currActiveSkill = self.unitEntity:getActiveSkill(index) + if self.currActiveSkill == nil then + self.actionOverCallback = nil + callback() + return + end + if not self:changeState(UNIT_STATE.SKILL_ATTACK) then + self.actionOverCallback = nil + callback() + end +end + function BattleUnitComp:useAllSkills(callback) self.actionOverCallback = callback self.activeSkillIndex = 1 @@ -294,8 +309,12 @@ function BattleUnitComp:updateSkillAttack(dt) self.isMove = false self.positionX = self.targetX if self.attackOver then -- 归位后该进行下一次攻击了 - self.activeSkillIndex = self.activeSkillIndex + 1 - self.currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + if self.activeSkillIndex then + self.activeSkillIndex = self.activeSkillIndex + 1 + self.currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + else + self.currActiveSkill = nil + end if self.currActiveSkill == nil then self:changeState(UNIT_STATE.IDLE) local callback = self.actionOverCallback @@ -325,8 +344,11 @@ function BattleUnitComp:updateSkillAttack(dt) self.attackTime = self.attackTime + dt if self.attackTime >= self.currAttackDuration then self.attackOver = true - self.activeSkillIndex = self.activeSkillIndex + 1 - local currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + local currActiveSkill = nil + if self.activeSkillIndex then + self.activeSkillIndex = self.activeSkillIndex + 1 + currActiveSkill = self.unitEntity:getActiveSkill(self.activeSkillIndex) + end if currActiveSkill == nil then if self.targetX then -- 移动过,准备归位 self.isMove = true diff --git a/lua/app/module/battle/controller/battle_controller.lua b/lua/app/module/battle/controller/battle_controller.lua index 0e1f319d..520b6718 100644 --- a/lua/app/module/battle/controller/battle_controller.lua +++ b/lua/app/module/battle/controller/battle_controller.lua @@ -1227,7 +1227,12 @@ local function _generalAttack(self, instruction, callback) end local function _playSkill(self, instruction, callback) - callback() + local hero = self.atkUnits[instruction.skillMatch] + if hero == nil then + return callback() + end + self.atkMainUnit = hero + hero:useSkill(1, callback) end