Merge branch 'dev' of git.juzugame.com:b6-client/b6-lua into dev

This commit is contained in:
CloudJ 2023-06-02 19:32:41 +08:00
commit 9e46d3e3ec
7 changed files with 202 additions and 18 deletions

View File

@ -34,6 +34,18 @@ function EffectObject:play()
self.effectHelper:Play() self.effectHelper:Play()
end end
function EffectObject:playComplete(complete, customTime)
self.effectHelper:Play()
local duration = customTime or self:getDuration()
if self.playCompleteSeq then
self.playCompleteSeq:Kill()
self.playCompleteSeq = nil
end
self.playCompleteSeq = self:createBindTweenSequence()
self.playCompleteSeq:AppendInterval(duration)
self.playCompleteSeq:AppendCallback(complete)
end
-- 延迟播放 -- 延迟播放
function EffectObject:playDelay(delayTime, hideBeforePlay) function EffectObject:playDelay(delayTime, hideBeforePlay)
if delayTime <= 0 then if delayTime <= 0 then

View File

@ -64,7 +64,7 @@ function AccountManager:onBindAccount(result)
loginType = SDKManager.BF_LOGIN_TYPE.APPLE loginType = SDKManager.BF_LOGIN_TYPE.APPLE
accountInfo.apple_id = result.reqData.id accountInfo.apple_id = result.reqData.id
else else
accountInfo.googld_id = result.reqData.id accountInfo.google_id = result.reqData.id
end end
LocalData:setLastLoginInfo(loginType, result.reqData.id, result.reqData.token) LocalData:setLastLoginInfo(loginType, result.reqData.id, result.reqData.token)
LocalData:setAccountInfo(accountInfo) LocalData:setAccountInfo(accountInfo)
@ -103,6 +103,22 @@ function AccountManager:changeAccount()
if not params.token then if not params.token then
return return
end end
local accountInfo = LocalData:getAccountInfo()
local bindId = nil
if Platform:isIosPlatform() then
bindId = accountInfo.apple_id
else
bindId = accountInfo.google_id
end
if bindId and bindId ~= "" and bindId == params.id then
local params = {
content = I18N:getGlobalText(I18N.GlobalConst.CHANGE_ACCOUNT_FAILED_2),
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK,
okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK),
}
GFunc.showMessageBox(params)
return
end
local args = { local args = {
type = SDKManager.LOGIN_TYPE[loginType], type = SDKManager.LOGIN_TYPE[loginType],
id = params.id, id = params.id,
@ -120,7 +136,7 @@ function AccountManager:onChangeAccount(result)
loginType = SDKManager.BF_LOGIN_TYPE.APPLE loginType = SDKManager.BF_LOGIN_TYPE.APPLE
accountInfo.apple_id = result.reqData.id accountInfo.apple_id = result.reqData.id
else else
accountInfo.googld_id = result.reqData.id accountInfo.google_id = result.reqData.id
end end
LocalData:setLastLoginInfo(loginType, result.reqData.id, result.reqData.token) LocalData:setLastLoginInfo(loginType, result.reqData.id, result.reqData.token)
LocalData:setAccountInfo(accountInfo) LocalData:setAccountInfo(accountInfo)

View File

@ -1118,6 +1118,11 @@ function BattleController:dealGridBreak(posId, condition, time, breakedMap, sequ
table.insert(aniUnit.aniPosList, id) table.insert(aniUnit.aniPosList, id)
end end
end end
---- 技能效果特效
aniUnit.effectSfxName = entity:getEffectSfx()
aniUnit.effectSfxFlow = entity:getEffectSfxFlow()
aniUnit.effectSfxDir = entity:getEffectParams()[1]
end end
end end
aniUnit.bftcTime = entity:getBftcTime() aniUnit.bftcTime = entity:getBftcTime()
@ -1175,7 +1180,10 @@ function BattleController:getEliminattionAniInfo(posId, timeIdx)
isIdle = false, isIdle = false,
callback = nil, callback = nil,
overCallback = nil, overCallback = nil,
bftcTime = 0 bftcTime = 0,
effectSfxName = nil,
effectSfxFlow = nil,
effectSfxDir = nil,
} }
end end

View File

@ -30,7 +30,13 @@ local function _crossSpread(entity, gridEntities, battleController, onlyCheck)
for _, posId in ipairs(tempList) do for _, posId in ipairs(tempList) do
local gridEntity = gridEntities[posId] local gridEntity = gridEntities[posId]
if gridEntity:isEmptyIdle() then if gridEntity:isEmptyIdle() then
if battleController.battleUI and entity:getEffectSfx() then
battleController.battleUI:showGridEffectSfx(posId, entity:getEffectSfx(), function()
battleController.battleData:setGridType(posId, entity:getGridType() or BattleConst.GRID_TYPE.JELLY) battleController.battleData:setGridType(posId, entity:getGridType() or BattleConst.GRID_TYPE.JELLY)
end)
else
battleController.battleData:setGridType(posId, entity:getGridType() or BattleConst.GRID_TYPE.JELLY)
end
succ = true succ = true
break break
end end

View File

@ -80,9 +80,9 @@ function MaincityManager:getModuleInSideBarWhere(moduleKey)
return nil return nil
end end
if self.mainCityUI:isInSideBarLeft(moduleKey) then if mainUI:isInSideBarLeft(moduleKey) then
return -1 return -1
elseif self.mainCityUI:isInSideBarRight(moduleKey) then elseif mainUI:isInSideBarRight(moduleKey) then
return 1 return 1
else else
return 0 return 0
@ -95,7 +95,7 @@ function MaincityManager:isActivSideBarModule(moduleKey)
return nil return nil
end end
return self.mainCityUI:isActivSideBarModule(moduleKey) return mainUI:isActivSideBarModule(moduleKey)
end end
return MaincityManager return MaincityManager

View File

@ -938,17 +938,8 @@ function BattleUI:eliminationAni(aniSequence, effectGridMap, callback)
end) end)
end end
if info.breakSfxName then self:dealGridBreakSfx(time, info, breakSfxNameIndexMap)
breakSfxNameIndexMap[info.breakSfxName] = (breakSfxNameIndexMap[info.breakSfxName] or 0) + 1 self:dealGridEffectSfx(time, info, breakSfxNameIndexMap, entity)
local breakIndex = breakSfxNameIndexMap[info.breakSfxName]
self.eliminationAniSeq:InsertCallback(time, function()
self:getSfxGridBreak(info.breakSfxName, breakIndex, function(obj)
local pos = ModuleManager.BattleManager:getPosInfo(info.posId)
obj:setLocalPosition(pos.x, pos.y, 0)
obj:play()
end)
end)
end
time = time + (info.bftcTime or 0) time = time + (info.bftcTime or 0)
if info.isIdle then if info.isIdle then
@ -1030,6 +1021,80 @@ function BattleUI:eliminationAni(aniSequence, effectGridMap, callback)
end end
self:refreshSkill() self:refreshSkill()
self:resetParentAllSfxGridBreak()
self.eliminationAniSeq = nil
end)
end
function BattleUI:dealGridBreakSfx(time, info, breakSfxNameIndexMap)
if info.breakSfxName then
breakSfxNameIndexMap[info.breakSfxName] = (breakSfxNameIndexMap[info.breakSfxName] or 0) + 1
local breakIndex = breakSfxNameIndexMap[info.breakSfxName]
self.eliminationAniSeq:InsertCallback(time, function()
self:getSfxGridBreak(info.breakSfxName, breakIndex, function(obj)
local pos = ModuleManager.BattleManager:getPosInfo(info.posId)
obj:setLocalPosition(pos.x, pos.y, 0)
obj:play()
end)
end)
end
end
function BattleUI:dealGridEffectSfx(time, info, breakSfxNameIndexMap, entity)
if not self.eliminationAniSeq then
return
end
self.flowEffects = table.clearOrCreate(self.flowEffects)
if info.effectSfxName then
breakSfxNameIndexMap[info.effectSfxName] = (breakSfxNameIndexMap[info.effectSfxName] or 0) + 1
local breakIndex = breakSfxNameIndexMap[info.effectSfxName]
self.eliminationAniSeq:InsertCallback(time, function()
self:getSfxGridBreak(info.effectSfxName, breakIndex, function(obj)
if not self.eliminationAniSeq then -- 动画已结束
obj:setActive(false)
return
end
if info.effectSfxFlow then
obj:setParent(entity:getCell():getBaseObject(), false)
obj:setLocalPosition(0, 0, 0)
obj:play()
table.insert(self.flowEffects, obj)
else
local pos = ModuleManager.BattleManager:getPosInfo(info.posId)
obj:setLocalPosition(pos.x, pos.y, 0)
obj:play()
end
if info.effectSfxDir == GConst.BattleConst.BOARD_RANGE_TYPE.UP then
obj:setLocalEulerAngles(0, 0, 0)
elseif info.effectSfxDir == GConst.BattleConst.BOARD_RANGE_TYPE.DOWN then
obj:setLocalEulerAngles(0, 0, 180)
elseif info.effectSfxDir == GConst.BattleConst.BOARD_RANGE_TYPE.LEFT then
obj:setLocalEulerAngles(0, 0, 90)
elseif info.effectSfxDir == GConst.BattleConst.BOARD_RANGE_TYPE.RIGHT then
obj:setLocalEulerAngles(0, 0, -90)
else
obj:setLocalEulerAngles(0, 0, 0)
end
end)
end)
end
end
function BattleUI:showGridEffectSfx(posId, sfxName, callback)
self:getSfxGridEffect(sfxName, function(info)
info.isIdle = false
local pos = ModuleManager.BattleManager:getPosInfo(posId)
info.obj:setLocalPosition(pos.x, pos.y, 0)
info.obj:setActive(true)
info.obj:playComplete(function()
info.isIdle = true
info.obj:setActive(false)
if callback then
callback()
end
end)
end) end)
end end
@ -1635,12 +1700,53 @@ function BattleUI:hideAllSfxGridBreak()
for breakSfxPath, map in pairs(self.root.gridBreakSfxObjs) do for breakSfxPath, map in pairs(self.root.gridBreakSfxObjs) do
for index, info in pairs(map) do for index, info in pairs(map) do
if info.obj then if info.obj then
info.obj:setParent(self.gridNode, false)
info.obj:setActive(false) info.obj:setActive(false)
end end
end end
end end
end end
function BattleUI:resetParentAllSfxGridBreak()
for _, obj in ipairs(self.flowEffects) do
obj:setActive(false)
obj:setParent(self.gridNode, true)
end
end
function BattleUI:getSfxGridEffect(effectSfxPath, func)
if not effectSfxPath then
return
end
if not self.root.gridEffectSfx then
self.root.gridEffectSfx = {}
end
if not self.root.gridEffectSfx[effectSfxPath] then
self.root.gridEffectSfx[effectSfxPath] = {}
end
local count = 0
for index, info in pairs(self.root.gridEffectSfx[effectSfxPath]) do
if info.isIdle then
func(self.root.gridEffectSfx[effectSfxPath][index])
return
end
count = count + 1
end
local index = count + 1
self.root.gridEffectSfx[effectSfxPath][index] = {
isLoaded = true,
}
EffectManager:loadUIEffectAsync(effectSfxPath, self, self.gridNode, GConst.UI_EFFECT_ORDER.LEVEL5, function(obj)
self.root.gridEffectSfx[effectSfxPath][index].obj = obj
self.root.gridEffectSfx[effectSfxPath][index].isIdle = true
if func then
func(self.root.gridEffectSfx[effectSfxPath][index])
end
end)
end
function BattleUI:getSfxSmoke(index, func) function BattleUI:getSfxSmoke(index, func)
self.hidingAllSfxSmoke = false self.hidingAllSfxSmoke = false
@ -1843,6 +1949,18 @@ function BattleUI:initUISfxs()
end end
end end
if self.root.gridEffectSfx then
for breakSfxPath, list in pairs(self.root.gridEffectSfx) do
for index, info in pairs(list) do
if info.obj then
info.obj:setActive(true)
info.obj:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_EFFECT_HELPER):SetSortingOrder(self:getUIOrder(), GConst.UI_EFFECT_ORDER.LEVEL5)
info.obj:setActive(false)
end
end
end
end
if self.root.lineSfxObjs then if self.root.lineSfxObjs then
for index, info in pairs(self.root.lineSfxObjs) do for index, info in pairs(self.root.lineSfxObjs) do
if info.obj then if info.obj then
@ -2199,6 +2317,11 @@ function BattleUI:clear()
self.bossEnterAniSeq:Kill() self.bossEnterAniSeq:Kill()
self.bossEnterAniSeq = nil self.bossEnterAniSeq = nil
end end
if self.showGridEffectSfxSid then
self:unscheduleGlobal(self.showGridEffectSfxSid)
self.showGridEffectSfxSid = nil
end
end end
return BattleUI return BattleUI

View File

@ -414,4 +414,23 @@ function BattleGridEntity:getBftcTime()
return self:getGridTypeConfig().bftc_time or 0 return self:getGridTypeConfig().bftc_time or 0
end end
function BattleGridEntity:getEffectSfx()
local sfxName = self:getGridTypeConfig().effect_sfx
if not sfxName then
return
end
if not self.cacheEffectSfxPaths then
self.cacheEffectSfxPaths = {}
end
if not self.cacheEffectSfxPaths[sfxName] then
self.cacheEffectSfxPaths[sfxName] = "assets/prefabs/effects/battle/" .. sfxName .. ".prefab"
end
return self.cacheEffectSfxPaths[sfxName]
end
function BattleGridEntity:getEffectSfxFlow()
return self:getGridTypeConfig().sfx_flow
end
return BattleGridEntity return BattleGridEntity