一些细节调整

This commit is contained in:
xiekaidong 2023-04-15 16:47:18 +08:00
parent 328515c82a
commit dc5a37ac0f
8 changed files with 169 additions and 17 deletions

View File

@ -226,7 +226,6 @@ function BattleController:enterNextWave()
return
end
Logger.logHighlight("self.maxWaveIndex " .. self.maxWaveIndex)
if self.waveIndex >= self.maxWaveIndex then
self.victory = true
self:battleEnd()
@ -281,7 +280,11 @@ function BattleController:enterAtkStepOver()
local defTeam = self.battleData:getDefTeam()
if not defTeam or defTeam:getIsDead() then -- 怪物死了, 直接进入刷新逻辑
if self.waveIndex >= self.maxWaveIndex() then
self:enterRoundEnd()
else
self:enterRefreshBoard()
end
return
end
@ -312,7 +315,11 @@ function BattleController:enterDefStepOver()
local defTeam = self.battleData:getDefTeam()
if not defTeam or defTeam:getIsDead() then -- 怪物死了, 直接进入刷新逻辑
if self.waveIndex >= self.maxWaveIndex() then
self:enterRoundEnd()
else
self:enterRefreshBoard()
end
return
end
@ -624,9 +631,10 @@ function BattleController:fillBoard()
end
function BattleController:onFillBoardOver()
self:generateSkill()
self:generateSkill(function()
self.battleUI:refreshSkill()
self:enterRoundEnd()
end)
end
function BattleController:generateInstructions(skillEntity, elementType, influenceElementType, elementTypeMap)
@ -766,20 +774,37 @@ function BattleController:popBoardCacheSkill(callback)
end
end
function BattleController:generateSkill()
function BattleController:generateSkill(callback)
local map = {}
for _, skillEntity in pairs(self.battleData:getSkillEntities()) do
if skillEntity:getEnergyEnough() then
map[skillEntity:getPosition()] = skillEntity:getSkillId()
local list = self:getSkillElementList(skillEntity:getPosition(), 1, true)
if list[1] then
map[skillEntity:getPosition()] =
{
skillId = skillEntity:getSkillId(),
posId = list[1]
}
end
end
end
for elementType, skillId in pairs(map) do
local list = self:getSkillElementList(elementType, 1, true)
for _, posId in ipairs(list) do
self:setGridSkillId(posId, skillId)
if not self.battleUI then
if callback then
callback()
end
return
end
self.battleUI:generateSkillAni(map, function()
for elementType, info in pairs(map) do
self:setGridSkillId(info.posId, info.skillId)
end
if callback then
callback()
end
end)
end
function BattleController:setGridSkillId(posId, skillId)

View File

@ -183,6 +183,34 @@ local _addSkillInInfluenceAtkp = function(skillInfo, battleData, battleControlle
end
end
local _addSkillGeneralAttackEffect = function(skillInfo, battleData, battleController)
local elementType = skillInfo.skill_position
if not elementType or not skillInfo.effect then
return
end
local entity = battleData:getSkillEntityByElement(elementType)
if entity then
for _, effect in ipairs(skillInfo.effect) do
entity:addGeneralAttackEffect(effect)
end
end
end
local _addSkillElementCountEffect = function(skillInfo, battleData, battleController)
local elementType = skillInfo.skill_position
if not elementType or not skillInfo.effect then
return
end
local entity = battleData:getSkillEntityByElement(elementType)
if entity then
for _, effect in ipairs(skillInfo.effect) do
entity:addElementCountEffect(effect)
end
end
end
BattleRogueSkillHandle._effectOn = {
[1] = _changeBaseSkill, -- 改变初始技能ID
[2] = _addEliminationRange, -- 增加消除数量
@ -195,6 +223,8 @@ BattleRogueSkillHandle._effectOn = {
[9] = _addSkillEffect, -- 获得技能效果
[10] = _changeElementType, -- 将场上随机几个元素变为某元素
[11] = _addSkillInInfluenceAtkp, -- 技能消除的增加伤害
[12] = _addSkillGeneralAttackEffect, -- 技能链接中的每一个元素,都触发的技能效果
[11] = _addSkillElementCountEffect, -- 技能链接中每一个元素累加的技能效果
}
function BattleRogueSkillHandle.takeEffect(skillId, battleData, battleController)

View File

@ -13,7 +13,7 @@ function ChapterManager:openBox(chapterId, index)
if result.status == 0 then
GFunc.addRewards(result.rewards, BIReport.ITEM_GET_TYPE.CHAPTER_BOX)
GFunc.showRewardBox(result.rewards)
DataManager.ChapterData:init(result.chapterData)
DataManager.ChapterData:init(result.chapterData, true)
DataManager.ChapterData:setDirty()
end
end)
@ -48,7 +48,7 @@ function ChapterManager:endFight(id, combatReport)
if result.status == 0 then
GFunc.addRewards(result.rewards, BIReport.ITEM_GET_TYPE.FIGHT_END)
ModuleManager.BattleManager:showBattleResultUI(result.rewards, combatReport)
DataManager.ChapterData:init(result.chapterData)
DataManager.ChapterData:init(result.chapterData, true)
DataManager.ChapterData:setDirty()
end
end)

View File

@ -32,6 +32,7 @@ function BattleUI:_display()
self:initBattlefield()
self:initNumberNode()
self:initHpNode()
self:hideGenerateSkillGridCells()
end
function BattleUI:_addListeners()
@ -254,6 +255,62 @@ function BattleUI:eliminationAni(sequence, callback)
end)
end
function BattleUI:generateSkillAni(map, callback)
if table.nums(map) <= 0 then
if callback then
callback()
end
return
end
self:hideGenerateSkillGridCells()
if self.generateSkillAniSeq then
self.generateSkillAniSeq:Kill()
self.generateSkillAniSeq = nil
end
self.generateSkillAniSeq = self.root:createBindTweenSequence()
for elementType, info in pairs(map) do
local entity = self.generateSkillGridEntities[elementType]
if entity and entity:getCell() then
entity:setSkilId(info.skillId)
local cell = entity:getCell()
cell:refresh(entity)
self.generateSkillAniSeq:AppendCallback(function()
local pos = self:getElementSkillPos(elementType)
cell:getBaseObject():setAnchoredPosition(pos.x, pos.y)
end)
local pos = ModuleManager.BattleManager:getPosInfo(info.posId)
self.generateSkillAniSeq:Append(cell:getBaseObject():getTransform():DOAnchorPos(pos, 0.5))
end
end
self.generateSkillAniSeq:AppendCallback(function()
if callback then
callback()
end
self:hideGenerateSkillGridCells()
end)
end
function BattleUI:hideGenerateSkillGridCells()
if not self.generateSkillGridEntities then
local uiMap = self.root:genAllChildren()
self.generateSkillGridEntities = {}
for name, elementType in pairs(GConst.BattleConst.ELEMENT_TYPE) do
local cell = CellManager:addCellComp(uiMap["battle_ui.bg_2.board_node.ani_node.grid_cell_" .. elementType], GRID_CELL)
local entity = DataManager.BattleData:getNewGridEntity()
entity:setCell(cell)
self.generateSkillGridEntities[elementType] = entity
end
end
for _, entity in pairs(self.generateSkillGridEntities) do
if entity:getCell() then
entity:getCell():getBaseObject():setAnchoredPositionX(DEFAULT_X)
end
end
end
function BattleUI:fallGrid(listInfo, callback)
self:showMask(false)
self.fallAniCount = 0

View File

@ -37,7 +37,7 @@ function HeroListCell:refresh(index, heroList, stageFormation, allHeroCount, act
end
local heroStartIndex = (index-1)*4 + 1
if heroStartIndex > activeCount then
heroStartIndex = heroStartIndex - activeCount%4
heroStartIndex = heroStartIndex - (4 - activeCount%4)
end
local heroIndex = heroStartIndex
for i = 1, 4 do

View File

@ -40,6 +40,18 @@ function HeroComp:init()
self.content:addClickListener(function()
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
end)
for index, obj in ipairs(self.heroNodeList) do
obj:addClickListener(function()
local heroId = self.stageFormation[index]
if heroId then
local hero = DataManager.HeroData:getHeroById(heroId)
if hero then
ModuleManager.HeroManager:showHeroDetailUI(heroId)
end
end
end)
end
end
function HeroComp:refresh()

View File

@ -6,6 +6,8 @@ function BattleBoardSkillEnity:ctor(skillId)
self.addRange = {}
self.linkAtkp = 0
self.inInfluenceAtkp = 0
self.generalAttackEffect = {}
self.elementCountEffect = {}
end
function BattleBoardSkillEnity:refreshSkillId(skillId)
@ -167,4 +169,28 @@ function BattleBoardSkillEnity:addInInfluenceAtkp(atkp)
self.inInfluenceAtkp = self.inInfluenceAtkp + atkp
end
function BattleBoardSkillEnity:addGeneralAttackEffect(effect)
if not self.generalAttackEffect[effect.type] then
self.generalAttackEffect[effect.type] = GFunc.getTable(effect)
else
self.generalAttackEffect[effect.type].num = self.generalAttackEffect[effect.type].numn + effect.num
end
end
function BattleBoardSkillEnity:getGeneralAttackEffect()
return self.generalAttackEffect
end
function BattleBoardSkillEnity:addElementCountEffect(effect)
if not self.elementCountEffect[effect.type] then
self.elementCountEffect[effect.type] = GFunc.getTable(effect)
else
self.elementCountEffect[effect.type].num = self.elementCountEffect[effect.type].numn + effect.num
end
end
function BattleBoardSkillEnity:getElementCountEffect()
return self.elementCountEffect
end
return BattleBoardSkillEnity

View File

@ -17,8 +17,10 @@ function ChapterData:clear()
self.data.chapterFightInfo = {}
end
function ChapterData:init(data)
function ChapterData:init(data, notChangeChapterId)
if not notChangeChapterId then
self.data.chapterId = data and data.chapterId or MIN_CHAPTER_ID
end
self.data.maxChapterId = data and data.maxChapterId or self.data.chapterId - 1
self.data.chapterBoxInfo = data and data.chapterBoxInfo or {}
self.data.chapterFightInfo = data and data.chapterFightInfo or {}