PGRData/Script/matrix/xui/xuiautofightdialog/XUiAutoFightDialog.lua
2024-09-01 22:49:41 +02:00

148 lines
No EOL
5.8 KiB
Lua

local XUiAutoFightDialog = XLuaUiManager.Register(XLuaUi, "UiAutoFightDialog")
local mathmin = math.min
local mathfloor = math.floor
local tableinsert = table.insert
local AnimBegin = "AniAutoFightDialogBegin"
function XUiAutoFightDialog:OnAwake()
self:InitAutoScript()
self:InitTemplate()
end
function XUiAutoFightDialog:OnStart(stageId)
self:PlayAnimation(AnimBegin)
self.TxtAutoFight.text = CS.XTextManager.GetText("AutoFightDialogTitle")
self.TxtDescription.text = CS.XTextManager.GetText("AutoFightDialogDescription")
self.StageId = stageId
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
local autoFightCfg = XAutoFightConfig.GetCfg(stageCfg.AutoFightId)
self.DailyLimit = stageCfg.MaxChallengeNums > 0 and stageCfg.MaxChallengeNums or autoFightCfg.DailyLimit
local requireAP = XDataCenter.FubenManager.GetRequireActionPoint(stageId)
local apId = XDataCenter.ItemManager.ItemId.ActionPoint
local apCount = XDataCenter.ItemManager.GetCount(apId)
local max = mathfloor(apCount / requireAP)
local stageData = XDataCenter.FubenManager.GetStageData(stageId)
local passTimesToday = stageData and stageData.PassTimesToday or 0
local leftTimes = mathmin(max, self.DailyLimit - passTimesToday)
self.RequireAP = requireAP
self.LeftTimes = leftTimes
self.TxtTimes.text = leftTimes
self.RecordTime = stageData.LastRecordTime
self:SetFightTimes(1)
local cardIds = stageData.LastCardIds
if stageCfg.RobotId and #stageCfg.RobotId > 0 then
cardIds = {}
for _,v in pairs(stageCfg.RobotId) do
local charId = XRobotManager.GetCharacterId(v)
tableinsert(cardIds, charId)
end
end
self:InitCharacters(cardIds)
end
function XUiAutoFightDialog:InitTemplate()
self.Template = self.PanelCharacters:Find("CharacterTemplate")
end
function XUiAutoFightDialog:InitCharacters(characterIds)
local index = 0
for _, id in pairs(characterIds) do
if id > 0 then
index = index + 1
local transform
if index == 1 then
transform = self.Template
else
transform = CS.UnityEngine.Object.Instantiate(self.Template, self.PanelCharacters)
end
local img = transform:Find("RImgIcon"):GetComponent("RawImage")
local icon = XDataCenter.CharacterManager.GetCharRoundnessHeadIcon(id)
img:SetRawImage(icon)
end
end
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiAutoFightDialog:InitAutoScript()
self:AutoInitUi()
self:AutoAddListener()
end
function XUiAutoFightDialog:AutoInitUi()
self.PanelAutoFightDialog = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog")
self.PanelConsume = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelConsume")
self.TxtTime = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelConsume/TxtTime"):GetComponent("Text")
self.TxtTimes = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelConsume/TxtTimes"):GetComponent("Text")
self.TxtConsume = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelConsume/TxtConsume"):GetComponent("Text")
self.PanelTxt = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelTxt")
self.TxtAutoFight = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelTxt/TxtAutoFight"):GetComponent("Text")
self.TxtDescription = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelTxt/TxtDescription"):GetComponent("Text")
self.PanelTeam = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelTeam")
self.PanelCharacters = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelTeam/PanelCharacters")
self.PanelBtn = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelBtn")
self.TxtFightTimes = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelBtn/TxtFightTimes"):GetComponent("Text")
self.BtnSub = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelBtn/BtnSub"):GetComponent("Button")
self.BtnAdd = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelBtn/BtnAdd"):GetComponent("Button")
self.BtnStart = self.Transform:Find("SafeAreaContentPane/PanelAutoFightDialog/PanelBtn/BtnStart"):GetComponent("Button")
self.BtnClose = self.Transform:Find("SafeAreaContentPane/BtnClose"):GetComponent("Button")
end
function XUiAutoFightDialog:AutoAddListener()
self:RegisterClickEvent(self.BtnSub, self.OnBtnSubClick)
self:RegisterClickEvent(self.BtnAdd, self.OnBtnAddClick)
self:RegisterClickEvent(self.BtnStart, self.OnBtnStartClick)
self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick)
end
-- auto
function XUiAutoFightDialog:OnBtnCloseClick()
self:Close()
end
function XUiAutoFightDialog:OnBtnSubClick()
local tempTimes = self.FightTimes - 1
if tempTimes < 1 then
return
end
self:SetFightTimes(tempTimes)
end
function XUiAutoFightDialog:OnBtnAddClick()
local tempTimes = self.FightTimes + 1
if tempTimes > self.LeftTimes then
return
end
self:SetFightTimes(tempTimes)
end
function XUiAutoFightDialog:OnBtnStartClick()
if self.FightTimes == 0 then
return
end
local stageId = self.StageId
local times = self.FightTimes
XDataCenter.AutoFightManager.StartAutoFight(stageId, times, function(res)
if res.Code == XCode.Success then
self:Close()
XLuaUiManager.Open("UiAutoFightTip")
end
end)
end
function XUiAutoFightDialog:SetFightTimes(value)
self.FightTimes = value
self.TxtFightTimes.text = value
self.TxtConsume.text = value * self.RequireAP
self.TxtTime.text = XUiHelper.GetTime(self.RecordTime * value, XUiHelper.TimeFormatType.DRAW)
end