This commit is contained in:
puxuan 2025-07-28 20:36:03 +08:00
parent 0166341747
commit f7ed30face
3 changed files with 438 additions and 1063 deletions

File diff suppressed because it is too large Load Diff

View File

@ -220,7 +220,7 @@ BattleConst.SPINE_ANIMATION_NAME = {
IDLE = "idle", IDLE = "idle",
ATTACK = "attack01", ATTACK = "attack01",
MOVE = "move", MOVE = "move",
HIT = "suffer", HIT = "suffer01",
HIT_2 = "suffer02", HIT_2 = "suffer02",
DEAD = "death", DEAD = "death",
BORN = "born", BORN = "born",

View File

@ -7,373 +7,380 @@ local FIGHT_STATE_WAIT = 2
local REFRESH_INTERVAL_TIME = 60 local REFRESH_INTERVAL_TIME = 60
function IdleDropUI:isFullScreen() function IdleDropUI:isFullScreen()
return false return false
end end
function IdleDropUI:getPrefabPath() function IdleDropUI:getPrefabPath()
return "assets/prefabs/ui/idle/idle_drop_ui.prefab" return "assets/prefabs/ui/idle/idle_drop_ui.prefab"
end end
function IdleDropUI:ctor() function IdleDropUI:ctor()
self.itemList = {} self.itemList = {}
self.canRefreshReward = false self.canRefreshReward = false
self.fightState = FIGHT_STATE_STOP self.fightState = FIGHT_STATE_STOP
self.fightWaitTime = 0 self.fightWaitTime = 0
end end
function IdleDropUI:onCover() function IdleDropUI:onCover()
if self.cdSid then if self.cdSid then
self:pauseScheduleGlobal(self.cdSid) self:pauseScheduleGlobal(self.cdSid)
end end
end end
function IdleDropUI:onReshow() function IdleDropUI:onReshow()
if self.cdSid then if self.cdSid then
self:resumeScheduleGlobal(self.cdSid) self:resumeScheduleGlobal(self.cdSid)
end end
-- 检查是否升级 -- 检查是否升级
if DataManager.PlayerData:getIfCanLevelUp() then if DataManager.PlayerData:getIfCanLevelUp() then
ModuleManager.PlayerManager:levelUp() ModuleManager.PlayerManager:levelUp()
end end
end end
function IdleDropUI:onClose() function IdleDropUI:onClose()
if self.fightRoot then if self.fightRoot then
self.fightRoot:removeAllChildren() self.fightRoot:removeAllChildren()
end end
end end
function IdleDropUI:onLoadRootComplete() function IdleDropUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren() local uiMap = self.root:genAllChildren()
self.uiMap = uiMap self.uiMap = uiMap
uiMap["idle_drop_ui.bg.title_text"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_REWARD)) uiMap["idle_drop_ui.bg.title_text"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_REWARD))
uiMap["idle_drop_ui.bg.desc_tx_1"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_1)) self.timeTx = uiMap["idle_drop_ui.bg.time_tx"]
self.timeTx = uiMap["idle_drop_ui.bg.time_tx"]
local goldPerHour = GFunc.num2Str(DataManager.IdleData:getGoldPerHour()) local goldPerHour = GFunc.num2Str(DataManager.IdleData:getGoldPerHour())
local expPerHour = GFunc.num2Str(DataManager.IdleData:getExpPerHour()) local expPerHour = GFunc.num2Str(DataManager.IdleData:getExpPerHour())
uiMap["idle_drop_ui.bg.bg_1.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.PER_HOUR, goldPerHour)) uiMap["idle_drop_ui.bg.bg_1.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.PER_HOUR, goldPerHour))
uiMap["idle_drop_ui.bg.bg_2.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.PER_HOUR, expPerHour)) uiMap["idle_drop_ui.bg.bg_2.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.PER_HOUR, expPerHour))
local idleMaxTime = DataManager.IdleData:getIdleMaxTime() local idleMaxTime = DataManager.IdleData:getIdleMaxTime()
uiMap["idle_drop_ui.bg.desc_tx_2"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_2, idleMaxTime // 3600)) -- uiMap["idle_drop_ui.bg.desc_tx_2"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_2, idleMaxTime // 3600))
self.quickBtn = uiMap["idle_drop_ui.bg.quick_btn"] uiMap["idle_drop_ui.bg.desc_tx_1"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_1) .. I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_2, idleMaxTime // 3600))
self.quickBtn:addClickListener(function() self.quickBtn = uiMap["idle_drop_ui.bg.quick_btn"]
ModuleManager.IdleManager:showIdleQuickDropUI() self.quickBtn:addClickListener(function()
end) ModuleManager.IdleManager:showIdleQuickDropUI()
uiMap["idle_drop_ui.bg.quick_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_QUICK)) end)
self.getBtn = uiMap["idle_drop_ui.bg.get_btn"] uiMap["idle_drop_ui.bg.quick_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_QUICK))
self.getBtn:addClickListener(function() self.getBtn = uiMap["idle_drop_ui.bg.get_btn"]
self.lastRefreshTime = Time:getServerTime() self.getBtn:addClickListener(function()
ModuleManager.IdleManager:getIdleRewrad() self.lastRefreshTime = Time:getServerTime()
end) ModuleManager.IdleManager:getIdleRewrad()
uiMap["idle_drop_ui.bg.get_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM)) end)
uiMap["idle_drop_ui.bg.close_btn"]:addClickListener(function() uiMap["idle_drop_ui.bg.get_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM))
self:closeUI() self.root:addClickListener(function()
end) self:closeUI()
end)
self.fightRoot = self.uiMap["idle_drop_ui.bg.fight_root"] uiMap["idle_drop_ui.bg.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.CLICK_CLOSE_DESC))
uiMap["idle_drop_ui.bg.bg1.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_3))
uiMap["idle_drop_ui.bg.bg1.desc_tx_1"]:setText(I18N:getGlobalText(I18N.GlobalConst.IDLE_DROP_DESC_3))
uiMap["idle_drop_ui.bg.bg1"]:addClickListener(function()
self:closeUI()
end)
self:initRewards() self.fightRoot = self.uiMap["idle_drop_ui.bg.fight_root"]
self:initSmallFight()
self:bindData() self:initRewards()
self:refreshCD() self:initSmallFight()
self:bindData()
self:refreshCD()
self.cdSid = self:scheduleGlobal(function() self.cdSid = self:scheduleGlobal(function()
self:refreshCD() self:refreshCD()
end, 1) end, 1)
self:scheduleGlobal(function(dt) self:scheduleGlobal(function(dt)
self:tickFight(dt) self:tickFight(dt)
end, 0) end, 0)
end end
function IdleDropUI:initRewards() function IdleDropUI:initRewards()
self.scrollRect = self.uiMap["idle_drop_ui.bg.scroll_rect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.scrollRect = self.uiMap["idle_drop_ui.bg.scroll_rect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.scrollRect:addInitCallback(function() self.scrollRect:addInitCallback(function()
return GConst.TYPEOF_LUA_CLASS.REWARD_CELL return GConst.TYPEOF_LUA_CLASS.REWARD_CELL
end) end)
self.scrollRect:addRefreshCallback(function(index, cell) self.scrollRect:addRefreshCallback(function(index, cell)
cell:refreshByConfig(self.itemList[index]) cell:refreshByConfig(self.itemList[index])
end) end)
self.scrollRect:clearCells() self.scrollRect:clearCells()
self.scrollRect:setTotalCount(0) self.scrollRect:setTotalCount(0)
end end
function IdleDropUI:initSmallFight() function IdleDropUI:initSmallFight()
if self.atkUnit == nil then if self.atkUnit == nil then
local stageFormation = DataManager.FormationData:getStageFormation() local stageFormation = DataManager.FormationData:getStageFormation()
local tmpList = GFunc.getTempList() local tmpList = GFunc.getTempList()
for k, v in pairs(stageFormation) do for k, v in pairs(stageFormation) do
table.insert(tmpList, v) table.insert(tmpList, v)
end end
if #tmpList <= 0 then if #tmpList <= 0 then
GFunc.recycleTempList(tmpList) GFunc.recycleTempList(tmpList)
return return
end end
local heroId = tmpList[math.random(1, #tmpList)] local heroId = tmpList[math.random(1, #tmpList)]
GFunc.recycleTempList(tmpList) GFunc.recycleTempList(tmpList)
local heroInfo = ConfigManager:getConfig("hero")[heroId] local heroInfo = ConfigManager:getConfig("hero")[heroId]
if heroInfo == nil then if heroInfo == nil then
return return
end end
SpineManager:loadHeroAsync(heroInfo.model_id, self.fightRoot, function(spineObject) SpineManager:loadHeroAsync(heroInfo.model_id, self.fightRoot, function(spineObject)
spineObject:setDefaultMix(0) spineObject:setDefaultMix(0)
local atkUnitComp = spineObject:addLuaComponent(IDLE_UNIT_COMPONENT) local atkUnitComp = spineObject:addLuaComponent(IDLE_UNIT_COMPONENT)
atkUnitComp:prepare(1, heroInfo.model_id) atkUnitComp:prepare(1, heroInfo.model_id)
atkUnitComp:initSkills(heroInfo.hurt_skill) atkUnitComp:initSkills(heroInfo.hurt_skill)
self.atkUnit = atkUnitComp self.atkUnit = atkUnitComp
self:onIdleUnitInitFinish() self:onIdleUnitInitFinish()
end) end)
end end
if self.defUnit == nil then if self.defUnit == nil then
local chapterId = DataManager.ChapterData:getMaxChapterId() local chapterId = DataManager.ChapterData:getMaxChapterId()
if chapterId <= 0 then if chapterId <= 0 then
chapterId = DataManager.ChapterData:getChapterId() chapterId = DataManager.ChapterData:getChapterId()
end end
local chapterInfo = ConfigManager:getConfig("chapter")[chapterId] local chapterInfo = ConfigManager:getConfig("chapter")[chapterId]
if chapterInfo == nil then if chapterInfo == nil then
return return
end end
local tmpMap = GFunc.getTempMap() local tmpMap = GFunc.getTempMap()
self.monsterList = {} self.monsterList = {}
local monsterCfg = ConfigManager:getConfig("monster") local monsterCfg = ConfigManager:getConfig("monster")
for k, v in ipairs(chapterInfo.monster) do for k, v in ipairs(chapterInfo.monster) do
local monsterInfo = monsterCfg[v] local monsterInfo = monsterCfg[v]
if monsterInfo ~= nil then if monsterInfo ~= nil then
if monsterInfo.is_boss == nil and tmpMap[monsterInfo.model_id] == nil then if monsterInfo.is_boss == nil and tmpMap[monsterInfo.model_id] == nil then
tmpMap[monsterInfo.model_id] = true tmpMap[monsterInfo.model_id] = true
table.insert(self.monsterList, v) table.insert(self.monsterList, v)
end end
end end
end end
GFunc.recycleTempMap(tmpMap) GFunc.recycleTempMap(tmpMap)
if #self.monsterList <= 0 then if #self.monsterList <= 0 then
return return
end end
if self.idleMonsterIndex == nil then if self.idleMonsterIndex == nil then
self.idleMonsterIndex = math.random(1, #self.monsterList) self.idleMonsterIndex = math.random(1, #self.monsterList)
else else
local temp = self.monsterList[#self.monsterList] local temp = self.monsterList[#self.monsterList]
self.monsterList[#self.monsterList] = self.monsterList[self.idleMonsterIndex] self.monsterList[#self.monsterList] = self.monsterList[self.idleMonsterIndex]
self.monsterList[self.idleMonsterIndex] = temp self.monsterList[self.idleMonsterIndex] = temp
self.idleMonsterIndex = math.random(1, #self.monsterList - 1) self.idleMonsterIndex = math.random(1, #self.monsterList - 1)
end end
self.idleMonsterId = self.monsterList[self.idleMonsterIndex] self.idleMonsterId = self.monsterList[self.idleMonsterIndex]
self:getDefUnit(function(defUnitComp) self:getDefUnit(function(defUnitComp)
self.defUnit = defUnitComp self.defUnit = defUnitComp
self:onIdleUnitInitFinish() self:onIdleUnitInitFinish()
end) end)
end end
end end
function IdleDropUI:onIdleUnitInitFinish() function IdleDropUI:onIdleUnitInitFinish()
if self.atkUnit == nil then if self.atkUnit == nil then
return return
end end
if self.defUnit == nil then if self.defUnit == nil then
return return
end end
self.atkUnit:setTarget(self.defUnit) self.atkUnit:setTarget(self.defUnit)
self.defUnit:setTarget(self.atkUnit) self.defUnit:setTarget(self.atkUnit)
self.fightWaitTime = self.defUnit:getBornTime() + 0.2 self.fightWaitTime = self.defUnit:getBornTime() + 0.2
self.fightState = FIGHT_STATE_WAIT self.fightState = FIGHT_STATE_WAIT
self.atkUnit:playBorn() self.atkUnit:playBorn()
self.defUnit:playBorn() self.defUnit:playBorn()
end end
function IdleDropUI:bindData() function IdleDropUI:bindData()
self:bind(DataManager.IdleData, "dirty", function() self:bind(DataManager.IdleData, "dirty", function()
self:onRefresh() self:onRefresh()
self.canRefreshReward = true self.canRefreshReward = true
self:refreshCD() self:refreshCD()
end) end)
end end
function IdleDropUI:onRefresh() function IdleDropUI:onRefresh()
self:refreshRewards() self:refreshRewards()
self:refreshBtns() self:refreshBtns()
end end
function IdleDropUI:refreshRewards() function IdleDropUI:refreshRewards()
for i = 1, #self.itemList do for i = 1, #self.itemList do
table.remove(self.itemList) table.remove(self.itemList)
end end
local rewards = DataManager.IdleData:getIdleRewards() local rewards = DataManager.IdleData:getIdleRewards()
for _, item in pairs(rewards) do for _, item in pairs(rewards) do
if item.num > 0 then if item.num > 0 then
table.insert(self.itemList, item) table.insert(self.itemList, item)
end end
end end
if #self.itemList > 1 then if #self.itemList > 1 then
-- 道具类型从低到高>道具ID从低到高>品质从高到低 -- 道具类型从低到高>道具ID从低到高>品质从高到低
local cfg = ConfigManager:getConfig("item") local cfg = ConfigManager:getConfig("item")
local infoA local infoA
local infoB local infoB
table.sort(self.itemList, function(a, b) table.sort(self.itemList, function(a, b)
infoA = cfg[a.id] infoA = cfg[a.id]
infoB = cfg[b.id] infoB = cfg[b.id]
if infoA.type == infoB.type then if infoA.type == infoB.type then
if infoA.qlt == infoB.qlt then if infoA.qlt == infoB.qlt then
return infoA.qlt > infoB.qlt return infoA.qlt > infoB.qlt
else else
return a.id < b.id return a.id < b.id
end end
else else
return infoA.type < infoB.type return infoA.type < infoB.type
end end
end) end)
end end
if self.scrollRect:getTotalCount() ~= #self.itemList then -- 打开界面的时候定位到当前可领取的最低等级奖励,如果没有则定位到当前等级 if self.scrollRect:getTotalCount() ~= #self.itemList then -- 打开界面的时候定位到当前可领取的最低等级奖励,如果没有则定位到当前等级
self.scrollRect:refillCells(#self.itemList) self.scrollRect:refillCells(#self.itemList)
else else
self.scrollRect:updateAllCell() self.scrollRect:updateAllCell()
end end
end end
function IdleDropUI:refreshBtns() function IdleDropUI:refreshBtns()
if #self.itemList > 0 then if #self.itemList > 0 then
self.getBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2") self.getBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_yellow_1")
self.getBtn:setTouchEnable(true) self.getBtn:setTouchEnable(true)
else else
self.getBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") self.getBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
self.getBtn:setTouchEnable(false) self.getBtn:setTouchEnable(false)
end end
local quickTimes = DataManager.IdleData:getQuickIdleRemainTimes() local quickTimes = DataManager.IdleData:getQuickIdleRemainTimes()
if quickTimes > 0 then if quickTimes > 0 then
self.quickBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_yellow_2") self.quickBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_blue_1")
self.quickBtn:setTouchEnable(true) self.quickBtn:setTouchEnable(true)
self:addQuickBtnRedPoint() self:addQuickBtnRedPoint()
else else
self.quickBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2") self.quickBtn:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
self.quickBtn:setTouchEnable(false) self.quickBtn:setTouchEnable(false)
self:removeQuickBtnRedPoint() self:removeQuickBtnRedPoint()
end end
end end
function IdleDropUI:refreshCD() function IdleDropUI:refreshCD()
local time = Time:getServerTime() - DataManager.IdleData:getLastDropTime() local time = Time:getServerTime() - DataManager.IdleData:getLastDropTime()
local idleMaxTime = DataManager.IdleData:getIdleMaxTime() local idleMaxTime = DataManager.IdleData:getIdleMaxTime()
if time >= idleMaxTime then if time >= idleMaxTime then
if #self.itemList > 0 then if #self.itemList > 0 then
self:addGetBtnRedPoint() self:addGetBtnRedPoint()
else else
self:removeGetBtnRedPoint() self:removeGetBtnRedPoint()
end end
self.timeTx:setText(Time:formatNumTime(idleMaxTime)) self.timeTx:setText(Time:formatNumTime(idleMaxTime))
else else
self:removeGetBtnRedPoint() self:removeGetBtnRedPoint()
self.timeTx:setText(Time:formatNumTime(time)) self.timeTx:setText(Time:formatNumTime(time))
end end
if self.lastRefreshTime == nil then if self.lastRefreshTime == nil then
self.lastRefreshTime = Time:getServerTime() self.lastRefreshTime = Time:getServerTime()
elseif Time:getServerTime() - self.lastRefreshTime > REFRESH_INTERVAL_TIME then elseif Time:getServerTime() - self.lastRefreshTime > REFRESH_INTERVAL_TIME then
if not self.canRefreshReward then if not self.canRefreshReward then
return return
end end
self.canRefreshReward = false self.canRefreshReward = false
self.lastRefreshTime = Time:getServerTime() self.lastRefreshTime = Time:getServerTime()
ModuleManager.IdleManager:getIdleShowRewrad() ModuleManager.IdleManager:getIdleShowRewrad()
end end
end end
function IdleDropUI:addGetBtnRedPoint() function IdleDropUI:addGetBtnRedPoint()
if self.getBtnRedPoint == true then if self.getBtnRedPoint == true then
return return
end end
self.getBtnRedPoint = true self.getBtnRedPoint = true
self.getBtn:addRedPoint(121, 42, 0.8) self.getBtn:addRedPoint(70, 30, 0.5)
end end
function IdleDropUI:removeGetBtnRedPoint() function IdleDropUI:removeGetBtnRedPoint()
if self.getBtnRedPoint == false then if self.getBtnRedPoint == false then
return return
end end
self.getBtnRedPoint = false self.getBtnRedPoint = false
self.getBtn:removeRedPoint() self.getBtn:removeRedPoint()
end end
function IdleDropUI:addQuickBtnRedPoint() function IdleDropUI:addQuickBtnRedPoint()
if self.quickBtnRedPoint == true then if self.quickBtnRedPoint == true then
return return
end end
self.quickBtnRedPoint = true self.quickBtnRedPoint = true
self.quickBtn:addRedPoint(121, 42, 0.8) self.quickBtn:addRedPoint(90, 30, 0.5)
end end
function IdleDropUI:removeQuickBtnRedPoint() function IdleDropUI:removeQuickBtnRedPoint()
if self.quickBtnRedPoint == false then if self.quickBtnRedPoint == false then
return return
end end
self.quickBtnRedPoint = false self.quickBtnRedPoint = false
self.quickBtn:removeRedPoint() self.quickBtn:removeRedPoint()
end end
function IdleDropUI:findNextDefUnit() function IdleDropUI:findNextDefUnit()
local temp = self.monsterList[#self.monsterList] local temp = self.monsterList[#self.monsterList]
self.monsterList[#self.monsterList] = self.monsterList[self.idleMonsterIndex] self.monsterList[#self.monsterList] = self.monsterList[self.idleMonsterIndex]
self.monsterList[self.idleMonsterIndex] = temp self.monsterList[self.idleMonsterIndex] = temp
self.idleMonsterIndex = math.random(1, #self.monsterList - 1) self.idleMonsterIndex = math.random(1, #self.monsterList - 1)
self.idleMonsterId = self.monsterList[self.idleMonsterIndex] self.idleMonsterId = self.monsterList[self.idleMonsterIndex]
self:getDefUnit(function(defUnit) self:getDefUnit(function(defUnit)
self:recycleDefUnit(self.defUnit) self:recycleDefUnit(self.defUnit)
self.defUnit = defUnit self.defUnit = defUnit
self.atkUnit:setTarget(self.defUnit) self.atkUnit:setTarget(self.defUnit)
self.defUnit:setTarget(self.atkUnit) self.defUnit:setTarget(self.atkUnit)
self.fightWaitTime = self.defUnit:getBornTime() + 0.2 self.fightWaitTime = self.defUnit:getBornTime() + 0.2
self.fightState = FIGHT_STATE_WAIT self.fightState = FIGHT_STATE_WAIT
self.defUnit:playBorn() self.defUnit:playBorn()
end) end)
end end
function IdleDropUI:getDefUnit(callback) function IdleDropUI:getDefUnit(callback)
if self.cacheUnit == nil then if self.cacheUnit == nil then
self.cacheUnit = {} self.cacheUnit = {}
end end
local monsterCfg = ConfigManager:getConfig("monster") local monsterCfg = ConfigManager:getConfig("monster")
local monsterInfo = monsterCfg[self.idleMonsterId] local monsterInfo = monsterCfg[self.idleMonsterId]
local defUnit = self.cacheUnit[monsterInfo.model_id] local defUnit = self.cacheUnit[monsterInfo.model_id]
if defUnit then if defUnit then
defUnit:setActive(true) defUnit:setActive(true)
return callback(defUnit) return callback(defUnit)
end end
SpineManager:loadHeroAsync(monsterInfo.model_id, self.fightRoot, function(spineObject) SpineManager:loadHeroAsync(monsterInfo.model_id, self.fightRoot, function(spineObject)
spineObject:setDefaultMix(0) spineObject:setDefaultMix(0)
local defUnitComp = spineObject:addLuaComponent(IDLE_UNIT_COMPONENT) local defUnitComp = spineObject:addLuaComponent(IDLE_UNIT_COMPONENT)
defUnitComp:prepare(2, monsterInfo.model_id) defUnitComp:prepare(2, monsterInfo.model_id)
callback(defUnitComp) callback(defUnitComp)
end) end)
end end
function IdleDropUI:recycleDefUnit(defUnit) function IdleDropUI:recycleDefUnit(defUnit)
if self.cacheUnit == nil then if self.cacheUnit == nil then
self.cacheUnit = {} self.cacheUnit = {}
end end
defUnit:setActive(false) defUnit:setActive(false)
self.cacheUnit[defUnit:getModelId()] = defUnit self.cacheUnit[defUnit:getModelId()] = defUnit
end end
function IdleDropUI:changeNextDefUnit() function IdleDropUI:changeNextDefUnit()
self.defUnit:playDead(function() self.defUnit:playDead(function()
self:findNextDefUnit() self:findNextDefUnit()
end) end)
end end
function IdleDropUI:tickFight(dt) function IdleDropUI:tickFight(dt)
if self.fightState == FIGHT_STATE_STOP then if self.fightState == FIGHT_STATE_STOP then
return return
end end
self.atkUnit:tick(dt) self.atkUnit:tick(dt)
self.defUnit:tick(dt) self.defUnit:tick(dt)
if self.fightState == FIGHT_STATE_FIGHT then if self.fightState == FIGHT_STATE_FIGHT then
elseif self.fightState == FIGHT_STATE_WAIT then elseif self.fightState == FIGHT_STATE_WAIT then
self.fightWaitTime = self.fightWaitTime - dt self.fightWaitTime = self.fightWaitTime - dt
if self.fightWaitTime < 0 then if self.fightWaitTime < 0 then
self.fightState = FIGHT_STATE_FIGHT self.fightState = FIGHT_STATE_FIGHT
self.atkUnit:doAttack(function() self.atkUnit:doAttack(function()
self:changeNextDefUnit() self:changeNextDefUnit()
end) end)
end end
end end
end end
return IdleDropUI return IdleDropUI