2026.3.2 试炼之塔自动战斗

This commit is contained in:
kongweiqiang 2026-03-02 18:33:24 +08:00
parent 575bcb68e6
commit c7e608d9be
7 changed files with 1303 additions and 791 deletions

View File

@ -48,6 +48,7 @@ function LuaBattleMgr:ctor()
self.IsOverTime = false
self.isAutochallenge = false
self.isAutochallengeTower = false
--初始化 资源效率 默认取第一个关卡的效率
local levelData = ManagerContainer.CfgMgr:GetLevelDataById(firstLevelId)
@ -643,6 +644,9 @@ function LuaBattleMgr:OnRefreshRewardTime()
end
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_REFRESH_REWARD_TIME);
end
--region 自动战斗
function LuaBattleMgr:StartAutoChallenge()
if not self.isAutochallenge then
return
@ -694,6 +698,41 @@ end
function LuaBattleMgr:SetAutoChallengeState(value)
self.isAutochallenge = value
end
--endregion 自动战斗
--region 自动战斗 塔
function LuaBattleMgr:GetAutoChallengeTowerState()
return self.isAutochallengeTower
end
function LuaBattleMgr:SetAutoChallengeTowerState(value)
self.isAutochallengeTower = value
end
--endregion 自动战斗 塔
-- UIBattleDeployView: 显示游戏战斗前部署界面
function LuaBattleMgr:ShowUIBattleDeploy()

View File

@ -192,9 +192,13 @@ end
--点击加速按钮
function BattleStatisticsPart:OnClickBtnSpeed()
LogWarning("SpeedUpLock加速按钮点击")
LogWarning("SpeedUpLock "..tostring(ManagerContainer.DataMgr.RuneShopDataMgr:CheckMonthData()).." "..tostring(self:CheckVipData()))
if not ManagerContainer.DataMgr.RuneShopDataMgr:CheckMonthData() and not self:CheckVipData() then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("SpeedUpLock")
ManagerContainer.LuaGameMgr:LuaSaveGameSpeed(1)
self.viewLua.btnSpeed.speed2:SetActive(false)
self.viewLua.btnSpeed.speed1:SetActive(true)
return
end
if ManagerContainer.LuaGameMgr:GetGameSpeed() == 2 then

View File

@ -64,6 +64,7 @@ function UIBattleSuccessView:Init()
)
]]
local canEnterAutoMode = self:CanCurrLevelEnterAutoMode()
LogWarning("自动战斗 "..tostring(canEnterAutoMode))
self.flag = 3
if canEnterAutoMode then
self.currAutoMode = ManagerContainer.LuaBattleMgr:GetAutoChallengeState()
@ -75,36 +76,7 @@ function UIBattleSuccessView:Init()
end
self.uiBase:AddButtonUniqueEventListener(self.btn_autofight.button, self, function()
if self.timerId ~= nil then
self.flag = 3
ManagerContainer.LuaTimerMgr:RemoveTimer(self.timerId)
self.timerId = nil
end
if self.currAutoMode then
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
ManagerContainer.LuaBattleMgr:SetAutoChallengeState(false)
self.currAutoMode = false
self:AutoBatlle(false)
else
if not ManagerContainer.DataMgr.RuneShopDataMgr:CheckSuperMonth() then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("nomonthcard")
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
return
end
if canEnterAutoMode == false then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CannotAutoBattle")
return
end
if ManagerContainer.LuaBattleMgr:GetAutoChallengeState() then
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
else
ManagerContainer.LuaBattleMgr:SetAutoChallengeState(true)
self.currAutoMode = true
self:AutoBatlle(true)
end
end
end)
end
function UIBattleSuccessView:CanCurrLevelEnterAutoMode()
@ -267,6 +239,7 @@ end
function UIBattleSuccessView:AddEventListener()
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_DANMU_INPUT_NTF, self, self.OnDanmuInputNtf)
end
@ -277,7 +250,38 @@ end
function UIBattleSuccessView:AddUIEventListener()
self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnBackBtn)
self.uiBase:AddButtonEventListener(self.btnSendDanmu.button,self, self.OnBtnSendDanmu)
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_DANMU_INPUT_NTF, self, self.OnDanmuInputNtf)
self.uiBase:AddButtonUniqueEventListener(self.btn_autofight.button, self, function()
if self.timerId ~= nil then
self.flag = 3
ManagerContainer.LuaTimerMgr:RemoveTimer(self.timerId)
self.timerId = nil
end
LogWarning("自动战斗c "..tostring(self.currAutoMode))
if self.currAutoMode then
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
ManagerContainer.LuaBattleMgr:SetAutoChallengeState(false)
self.currAutoMode = false
self:AutoBatlle(false)
else
if not ManagerContainer.DataMgr.RuneShopDataMgr:CheckSuperMonth() then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("nomonthcard")
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
return
end
if canEnterAutoMode == false then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CannotAutoBattle")
return
end
if ManagerContainer.LuaBattleMgr:GetAutoChallengeState() then
ManagerContainer.LuaBattleMgr:StopAutoChallenge()
else
ManagerContainer.LuaBattleMgr:SetAutoChallengeState(true)
self.currAutoMode = true
self:AutoBatlle(true)
end
end
end)
end
function UIBattleSuccessView:OnHide()

View File

@ -1024,7 +1024,8 @@ function UIBattleView:OnClickChallengeBtn(btn)
local jobStage = ManagerContainer.DataMgr.UserData:GetJobStage()
if jobStage < 3 and jobLv >= maxJobLv then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(I18N.T("JobLimit"))
return
--关闭满级转职限制
--return
end
--self.challengeAnimName = "BtnBoss2"

View File

@ -1,5 +1,7 @@
local UIClimbingTowerBattleWinView = require("UIClimbingTower/UIClimbingTowerBattleWinView_Generate")
--region 生命周期
function UIClimbingTowerBattleWinView:OnAwake(data)
self.controller = require("UIClimbingTower/UIClimbingTowerBattleWinCtr"):new()
self.controller:Init(self)
@ -7,7 +9,6 @@ function UIClimbingTowerBattleWinView:OnAwake(data)
end
function UIClimbingTowerBattleWinView:AddEventListener()
end
function UIClimbingTowerBattleWinView:FillContent(data, uiBase)
@ -18,7 +19,6 @@ function UIClimbingTowerBattleWinView:FillContent(data, uiBase)
self.transform = gameObject.transform
end
self:InitGenerate(self.transform, data)
self:Init()
end
@ -26,7 +26,7 @@ function UIClimbingTowerBattleWinView:Init()
self:SetRewardInfo(self.controller:GetLevelRewards())
local type = self.controller:GetLastUITowerType()
self.btnNextTower:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
--self.btn_autofight:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
for i = 1, 4 do
self["role"..i]:SetActive(false)
@ -39,21 +39,10 @@ function UIClimbingTowerBattleWinView:Init()
self["role"..i].image.sprite = sprite
end)
end
end
function UIClimbingTowerBattleWinView:SetRewardInfo(rewardData)
if rewardData~= nil then
self.ItemScrollView:SetActive(true)
CommonUtil.LoopGridViewEleCreateNew(self,
self.ItemScrollView.loopVerticalScrollRect,
self.ItemContent.gridLayoutGroup,rewardData,0,self,self.OnUpdateItemData)
else
self.ItemScrollView:SetActive(false)
end
end
self.flag = 3
self:AutoBattle()
function UIClimbingTowerBattleWinView:OnUpdateItemData(itemLua,idx,itemData)
CommonUtil.SetRewardItemDataNew(self,itemData[1],itemLua,itemData[2],itemData[3], self.OnClickItem)
end
function UIClimbingTowerBattleWinView:RemoveEventListener()
@ -63,7 +52,7 @@ end
function UIClimbingTowerBattleWinView:AddUIEventListener()
self.uiBase:AddButtonEventListener(self.backBtn.button,self, self.OnClickClose)
self.uiBase:AddButtonEventListener(self.btnNextTower.button,self, self.OnClickNext)
self.uiBase:AddButtonEventListener(self.btn_autofight.button,self, self.OnBtnAutoBattle)
end
function UIClimbingTowerBattleWinView:OnHide()
@ -82,26 +71,135 @@ function UIClimbingTowerBattleWinView:OnDispose()
self.controller:OnDispose()
end
--endregion 生命周期
function UIClimbingTowerBattleWinView:OnClickClose()
if self.timerId ~= nil then
ManagerContainer.LuaTimerMgr:RemoveTimer(self.timerId)
self.timerId = nil
end
if ManagerContainer.LuaBattleMgr:GetAutoChallengeTowerState() then
ManagerContainer.LuaBattleMgr:SetAutoChallengeTowerState(false)
end
local type = self.controller:GetLastUITowerType()
if type == Enum.UnlimitTowerType.PeakTower then
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self.controller:BackPageId())
else
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE, self.controller:BackPageId())
end
ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
end
function UIClimbingTowerBattleWinView:SetRewardInfo(rewardData)
if rewardData~= nil then
self.ItemScrollView:SetActive(true)
CommonUtil.LoopGridViewEleCreateNew(self,
self.ItemScrollView.loopVerticalScrollRect,
self.ItemContent.gridLayoutGroup,rewardData,0,self,self.OnUpdateItemData)
else
self.ItemScrollView:SetActive(false)
end
end
function UIClimbingTowerBattleWinView:OnUpdateItemData(itemLua,idx,itemData)
CommonUtil.SetRewardItemDataNew(self,itemData[1],itemLua,itemData[2],itemData[3], self.OnClickItem)
end
function UIClimbingTowerBattleWinView:OnClickNext()
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE,self.controller:BackPageId())
--ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
self.controller:EnterNextBattle()
end
function UIClimbingTowerBattleWinView:OnClickClose()
local type = self.controller:GetLastUITowerType()
if type == Enum.UnlimitTowerType.PeakTower then
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE,self.controller:BackPageId())
else
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE,self.controller:BackPageId())
end
ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
end
function UIClimbingTowerBattleWinView:OnClickItem(btn,params)
local logicData = params[0]
ManagerContainer.LuaUIMgr:OpenTips(logicData)
end
--region 自动战斗
function UIClimbingTowerBattleWinView:OnBtnAutoBattle()
if self.timerId ~= nil then
self.flag = 3
ManagerContainer.LuaTimerMgr:RemoveTimer(self.timerId)
self.timerId = nil
end
--月卡检查
if not ManagerContainer.DataMgr.RuneShopDataMgr:CheckSuperMonth() then
ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("nomonthcard")
ManagerContainer.LuaBattleMgr:SetAutoChallengeTowerState(false)
return
end
if ManagerContainer.LuaBattleMgr:GetAutoChallengeTowerState() then
ManagerContainer.LuaBattleMgr:SetAutoChallengeTowerState(false)
else
ManagerContainer.LuaBattleMgr:SetAutoChallengeTowerState(true)
self:AutoBattle()
end
end
function UIClimbingTowerBattleWinView:AutoBattle()
if self.timerId ~= nil then
ManagerContainer.LuaTimerMgr:RemoveTimer(self.timerId)
LogError("remove self.timerId: " .. tostring(self.timerId))
self.timerId = nil
end
self.text_autofight:SetActive(false)
self.text_autofight_time:SetActive(false)
local isauto = ManagerContainer.LuaBattleMgr:GetAutoChallengeTowerState()
if isauto then
--按钮
--self.btn_autofight.button.interactable=false
self.btn_autofight.image.sprite = self.btn_autofight.switchSprite:GetSprite("img_result_btn_auto_fighting")
--文字
self.text_autofight_time.text.text = "" .. self.flag .. "S"
self.text_autofight_time:SetActive(true)
self.flag = 3
self.timerId = ManagerContainer.LuaTimerMgr:AddTimer(1000, self.flag, self, self.TimerTick, nil)
LogError("start self.timerId: " .. tostring(self.timerId))
else
--文字
self.text_autofight:SetActive(true)
--按钮
self.btn_autofight.image.sprite = self.btn_autofight.switchSprite:GetSprite("img_result_btn_auto_fight")
end
end
function UIClimbingTowerBattleWinView:TimerTick()
self.flag = self.flag or 10
self.flag = self.flag - 1
if self.text_autofight_time then
self.text_autofight_time.text.text = "" .. self.flag .. "S"
end
if self.flag == 0 then
local type = self.controller:GetLastUITowerType()
if type == Enum.UnlimitTowerType.PeakTower then
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self.controller:BackPageId())
else
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE, self.controller:BackPageId())
end
ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
LogError("333333333333333333333")
local curlv = ManagerContainer.DataMgr.TowerDataMgr:GetCurChallengeLevel()
ManagerContainer.DataMgr.TowerDataMgr:SendClimbingTowerBeginReq(curlv)
end
end
--endregion 自动战斗
return UIClimbingTowerBattleWinView

View File

@ -1,8 +1,22 @@
---@class UIClimbingTowerBattleWin__Generate_backBtn
---@class UIClimbingTowerBattleWin__Generate_btn_autofighting
---@field public gameObject UnityEngine.GameObject
---@field public button UnityEngine.UI.Button
---@class UIClimbingTowerBattleWin__Generate_btnNextTower
---@class UIClimbingTowerBattleWin__Generate_text_autofight_time
---@field public gameObject UnityEngine.GameObject
---@field public text TMPro.TextMeshProUGUI
---@class UIClimbingTowerBattleWin__Generate_text_autofight
---@field public gameObject UnityEngine.GameObject
---@field public text TMPro.TextMeshProUGUI
---@class UIClimbingTowerBattleWin__Generate_btn_autofight
---@field public gameObject UnityEngine.GameObject
---@field public image UnityEngine.UI.Image
---@field public button UnityEngine.UI.Button
---@field public switchSprite SwitchSprite
---@class UIClimbingTowerBattleWin__Generate_backBtn
---@field public gameObject UnityEngine.GameObject
---@field public button UnityEngine.UI.Button
@ -50,8 +64,11 @@
---@field private rewardNode UnityEngine.GameObject
---@field private ItemScrollView UIClimbingTowerBattleWin__Generate_ItemScrollView
---@field private ItemContent UIClimbingTowerBattleWin__Generate_ItemContent
---@field private btnNextTower UIClimbingTowerBattleWin__Generate_btnNextTower
---@field private backBtn UIClimbingTowerBattleWin__Generate_backBtn
---@field private btn_autofight UIClimbingTowerBattleWin__Generate_btn_autofight
---@field private text_autofight UIClimbingTowerBattleWin__Generate_text_autofight
---@field private text_autofight_time UIClimbingTowerBattleWin__Generate_text_autofight_time
---@field private btn_autofighting UIClimbingTowerBattleWin__Generate_btn_autofighting
local UIClimbingTowerBattleWinView = class("UIClimbingTowerBattleWinView", require("UIViewBase"))
function UIClimbingTowerBattleWinView:ctor()
@ -82,6 +99,9 @@ function UIClimbingTowerBattleWinView:InitGenerate(Root, data)
self:InitGenerate__9(Root,data)
self:InitGenerate__10(Root,data)
self:InitGenerate__11(Root,data)
self:InitGenerate__12(Root,data)
self:InitGenerate__13(Root,data)
self:InitGenerate__14(Root,data)
end
@ -214,13 +234,13 @@ end
---@private
function UIClimbingTowerBattleWinView:InitGenerate__10(Root, data)
--[[
UIAnimator/BtnNextTower
UIAnimator/Bottom/BackBtn
--]]
local tmp = Root:Find("UIAnimator/BtnNextTower").gameObject
local tmp = Root:Find("UIAnimator/Bottom/BackBtn").gameObject
if tolua.getpeer(tmp) == nil then
tolua.setpeer(tmp, {})
end
self.btnNextTower = tmp
self.backBtn = tmp
tmp.button = tmp:GetComponent(Enum.TypeInfo.Button)
end
@ -228,13 +248,59 @@ end
---@private
function UIClimbingTowerBattleWinView:InitGenerate__11(Root, data)
--[[
UIAnimator/BackBtn
UIAnimator/Bottom/btn_autofight
--]]
local tmp = Root:Find("UIAnimator/BackBtn").gameObject
local tmp = Root:Find("UIAnimator/Bottom/btn_autofight").gameObject
if tolua.getpeer(tmp) == nil then
tolua.setpeer(tmp, {})
end
self.backBtn = tmp
self.btn_autofight = tmp
tmp.image = tmp:GetComponent(Enum.TypeInfo.Image)
tmp.button = tmp:GetComponent(Enum.TypeInfo.Button)
tmp.switchSprite = tmp:GetComponent(Enum.TypeInfo.SwitchSprite)
end
---@private
function UIClimbingTowerBattleWinView:InitGenerate__12(Root, data)
--[[
UIAnimator/Bottom/btn_autofight/text_autofight
--]]
local tmp = Root:Find("UIAnimator/Bottom/btn_autofight/text_autofight").gameObject
if tolua.getpeer(tmp) == nil then
tolua.setpeer(tmp, {})
end
self.text_autofight = tmp
tmp.text = tmp:GetComponent(Enum.TypeInfo.TextMeshProUGUI)
end
---@private
function UIClimbingTowerBattleWinView:InitGenerate__13(Root, data)
--[[
UIAnimator/Bottom/btn_autofight/text_autofight_time
--]]
local tmp = Root:Find("UIAnimator/Bottom/btn_autofight/text_autofight_time").gameObject
if tolua.getpeer(tmp) == nil then
tolua.setpeer(tmp, {})
end
self.text_autofight_time = tmp
tmp.text = tmp:GetComponent(Enum.TypeInfo.TextMeshProUGUI)
end
---@private
function UIClimbingTowerBattleWinView:InitGenerate__14(Root, data)
--[[
UIAnimator/Bottom/btn_autofighting
--]]
local tmp = Root:Find("UIAnimator/Bottom/btn_autofighting").gameObject
if tolua.getpeer(tmp) == nil then
tolua.setpeer(tmp, {})
end
self.btn_autofighting = tmp
tmp.button = tmp:GetComponent(Enum.TypeInfo.Button)
end
@ -277,14 +343,26 @@ function UIClimbingTowerBattleWinView:GenerateDestroy()
tolua.setpeer(self.ItemContent, nil)
end
self.ItemContent = nil
if tolua.getpeer(self.btnNextTower) ~= nil then
tolua.setpeer(self.btnNextTower, nil)
end
self.btnNextTower = nil
if tolua.getpeer(self.backBtn) ~= nil then
tolua.setpeer(self.backBtn, nil)
end
self.backBtn = nil
if tolua.getpeer(self.btn_autofight) ~= nil then
tolua.setpeer(self.btn_autofight, nil)
end
self.btn_autofight = nil
if tolua.getpeer(self.text_autofight) ~= nil then
tolua.setpeer(self.text_autofight, nil)
end
self.text_autofight = nil
if tolua.getpeer(self.text_autofight_time) ~= nil then
tolua.setpeer(self.text_autofight_time, nil)
end
self.text_autofight_time = nil
if tolua.getpeer(self.btn_autofighting) ~= nil then
tolua.setpeer(self.btn_autofighting, nil)
end
self.btn_autofighting = nil
self.transform = nil
self.gameObject = nil
self.inited = false