From 09e85e9dba611ece53fd7989721e035682acc15b Mon Sep 17 00:00:00 2001 From: xiekaidong Date: Tue, 25 Apr 2023 09:56:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=8B=E7=9B=98=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/battle/battle_const.lua | 2 ++ .../skill/battle_board_skill_handle.lua | 25 ++++++++++++++++++- .../userdata/battle/battle_grid_entity.lua | 8 +++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index 804615cb..cb2f93c1 100644 --- a/lua/app/module/battle/battle_const.lua +++ b/lua/app/module/battle/battle_const.lua @@ -594,6 +594,8 @@ BattleConst.SKILL_TYPE = { NORMAL = 0, ELIMINATION = 1, CHANGE_AROUND = 2, + -- 3 ζš‚δΈε€„η† + ELIMINATION_GRID_AND_ELEMENT = 4, } BattleConst.SKILL_METHOD_TYPE = { diff --git a/lua/app/module/battle/skill/battle_board_skill_handle.lua b/lua/app/module/battle/skill/battle_board_skill_handle.lua index d5f6d5f5..429b586e 100644 --- a/lua/app/module/battle/skill/battle_board_skill_handle.lua +++ b/lua/app/module/battle/skill/battle_board_skill_handle.lua @@ -10,7 +10,7 @@ local function _takeElimination(posId, skillEntity, gridEntities, sequenceEntiti if boardrange then local cludePosIdsMap = {} for posId, entity in pairs(gridEntities) do - if entity:canInfluenceBySkill() then + if entity:isEmptyIdle() then cludePosIdsMap[posId] = true end end @@ -46,9 +46,32 @@ local function _takeChangeAround(posId, skillEntity, gridEntities, sequenceEntit end end +local function _takeEliminationGridAndElement(posId, skillEntity, gridEntities, sequenceEntities) + local boardrange = skillEntity:getBoardRange() + if boardrange then + local cludePosIdsMap = {} + for posId, entity in pairs(gridEntities) do + if entity:isNotObstacleIdle() then + cludePosIdsMap[posId] = true + end + end + -- for _, entity in ipairs(sequenceEntities) do + -- cludePosIdsMap[entity:getPosId()] = nil + -- end + local posIdInfos = ModuleManager.BattleManager:getAroundPosIdsByList(posId, boardrange, cludePosIdsMap) + cludePosIdsMap = {} + for _, info in ipairs(posIdInfos) do + cludePosIdsMap[info.posId] = info + end + + DataManager.BattleData:cacheSkillInfluenceGrids(cludePosIdsMap) + end +end + BattleBoardSkillHandle._activeBoardSkill = { [SKILL_TYPE.ELIMINATION] = _takeElimination, [SKILL_TYPE.CHANGE_AROUND] = _takeChangeAround, + [SKILL_TYPE.ELIMINATION_GRID_AND_ELEMENT] = _takeEliminationGridAndElement, } function BattleBoardSkillHandle.activeBoardSkill(posId, skillEntity, gridEntities, sequenceEntities) diff --git a/lua/app/userdata/battle/battle_grid_entity.lua b/lua/app/userdata/battle/battle_grid_entity.lua index 3a87c65a..19a1cda7 100644 --- a/lua/app/userdata/battle/battle_grid_entity.lua +++ b/lua/app/userdata/battle/battle_grid_entity.lua @@ -173,15 +173,15 @@ function BattleGridEntity:canChangeInfo() return false end -function BattleGridEntity:canInfluenceBySkill() - if self:isEmptyType() and not self:getIsIdle() then +function BattleGridEntity:isEmptyIdle() + if self:isEmptyType() and not self:getSkillId() and not self:getIsIdle() then return true end return false end -function BattleGridEntity:isEmptyIdle() - if self:isEmptyType() and not self:getSkillId() then +function BattleGridEntity:isNotObstacleIdle() + if not self:isObstacleType() and not self:getSkillId() and not self:getIsIdle() then return true end return false