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

171 lines
4.9 KiB
Lua

local XUiAreaWarBattleRoomRoleDetail = require("XUi/XUiAreaWar/XUiAreaWarBattleRoomRoleDetail")
local XUiAreaWarDispatch = XLuaUiManager.Register(XLuaUi, "UiAreaWarDispatch")
function XUiAreaWarDispatch:OnAwake()
self.Grid128.gameObject:SetActiveEx(false)
self.GridCondition.gameObject:SetActiveEx(false)
self.PanelCondition.gameObject:SetActiveEx(false)
self:AutoAddListener()
end
function XUiAreaWarDispatch:OnStart(blockId)
self.BlockId = blockId
self.ConditionGrids = {}
self.RewardGrids = {}
self.TeamGrids = {}
self.Team = XDataCenter.AreaWarManager.GetDispatchTeam()
self:InitView()
end
function XUiAreaWarDispatch:OnEnable()
if self.IsEnd then
return
end
if XDataCenter.AreaWarManager.OnActivityEnd() then
self.IsEnd = true
return
end
self:UpdateTeam()
end
function XUiAreaWarDispatch:OnDestroy()
XDataCenter.AreaWarManager.SaveTeam()
end
function XUiAreaWarDispatch:OnGetEvents()
return {
XEventId.EVENT_AREA_WAR_ACTIVITY_END
}
end
function XUiAreaWarDispatch:OnNotify(evt, ...)
if self.IsEnd then
return
end
local args = {...}
if evt == XEventId.EVENT_AREA_WAR_ACTIVITY_END then
if XDataCenter.AreaWarManager.OnActivityEnd() then
self.IsEnd = true
return
end
end
end
function XUiAreaWarDispatch:AutoAddListener()
self.BtnTanchuangCloseBig.CallBack = function()
self:Close()
end
self.BtnDispatch.CallBack = function()
self:OnClickBtnDispatch()
end
end
function XUiAreaWarDispatch:InitView()
local blockId = self.BlockId
--派遣消耗行动点
local costCount = XAreaWarConfigs.GetBlockDetachActionPoint(blockId)
self.TxtCost.text = costCount
local icon = XDataCenter.AreaWarManager.GetActionPointItemIcon()
self.RImgCost:SetRawImage(icon)
--根据不同时期,获取不同的奖励配置
local rewardItems = {}
if XDataCenter.AreaWarManager.IsRepeatChallengeTime() then
rewardItems=XAreaWarConfigs.GetBlockDetachWhippingPeriodRewardItems(blockId)
else
rewardItems = XAreaWarConfigs.GetBlockDetachBasicRewardItems(blockId)
end
for index, item in ipairs(rewardItems) do
local grid = self.RewardGrids[index]
if not grid then
local go = index == 1 and self.Grid128 or CSObjectInstantiate(self.Grid128, self.RewardParent)
grid = XUiGridCommon.New(self, go)
self.RewardGrids[index] = grid
end
grid:Refresh(item)
grid.GameObject:SetActiveEx(true)
end
for index = #rewardItems + 1, #self.RewardGrids do
self.RewardGrids[index].GameObject:SetActiveEx(false)
end
end
function XUiAreaWarDispatch:UpdateTeam()
local entityIds = self.Team:GetEntityIds()
for pos, entityId in ipairs(entityIds) do
local grid = self.TeamGrids[pos]
if not grid then
local go = self["TeamMember" .. pos]
grid = XTool.InitUiObjectByUi({}, go)
self.TeamGrids[pos] = grid
end
if not XTool.IsNumberValid(entityId) then
--未上阵
grid.ImgJia.gameObject:SetActiveEx(true)
grid.PanelGrid1.gameObject:SetActiveEx(false)
else
local icon = XEntityHelper.GetCharacterHalfBodyImage(entityId)
grid.RImgRole:SetRawImage(icon)
grid.ImgJia.gameObject:SetActiveEx(false)
grid.PanelGrid1.gameObject:SetActiveEx(true)
end
grid.BtnJoin1.CallBack = function()
self:OnBtnJoinClick(pos)
end
end
end
function XUiAreaWarDispatch:OnClickBtnDispatch()
local blockId = self.BlockId
--检查消耗体力
local costCount = XAreaWarConfigs.GetBlockDetachActionPoint(blockId)
if not XDataCenter.AreaWarManager.CheckActionPoint(costCount) then
XUiManager.TipText("AreaWarActionPointNotEnought")
return
end
--检查队伍为空
if self.Team:GetIsEmpty() then
XUiManager.TipText("AreaWarDisapatchEmptyTeam")
return
end
--是否满足3人
if not self.Team:GetIsFullMember() then
XUiManager.TipCode(XCode.AreaWarDetachCountError)
return
end
local callFunc = function()
local characterIds, robotIds = self.Team:SpiltCharacterAndRobotIds()
XDataCenter.AreaWarManager.AreaWarDetachRequest(
blockId,
characterIds,
robotIds,
function(rewardGoodsList)
if not XTool.IsTableEmpty(rewardGoodsList) then
self:Close()
XUiManager.OpenUiObtain(rewardGoodsList)
end
end
)
end
callFunc()
end
function XUiAreaWarDispatch:OnBtnJoinClick(pos)
local stageId = XAreaWarConfigs.GetBlockStageId(self.BlockId)
XLuaUiManager.Open("UiBattleRoomRoleDetail", stageId, self.Team, pos, XUiAreaWarBattleRoomRoleDetail)
end