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

157 lines
6.2 KiB
Lua

local XUiDoomsdaySettle = XLuaUiManager.Register(XLuaUi, "UiDoomsdaySettle")
local Text_Color = {
Normal = XUiHelper.Hexcolor2Color("34AFF9FF"),
Red = XUiHelper.Hexcolor2Color("EF1717FF"),
}
local Progress_Color = {
Normal = XUiHelper.Hexcolor2Color("1873BEFF"),
Red = XUiHelper.Hexcolor2Color("EF1717FF"),
}
function XUiDoomsdaySettle:OnAwake()
self:AutoAddListener()
self.ImgWinDi = self.Transform:Find("SafeAreaContentPane/PanelNorWinInfo/PanelNor/PanelTitle/ImgWinDi")
self.ImgLostDi = self.Transform:Find("SafeAreaContentPane/PanelNorWinInfo/PanelNor/PanelTitle/ImgLostDi")
end
function XUiDoomsdaySettle:OnStart(stageId, closeCb)
self.StageId = stageId
self.StageData = XDataCenter.DoomsdayManager.GetStageData(stageId)
self.CloseCb = closeCb
self:InitView()
end
function XUiDoomsdaySettle:InitView()
local stageId = self.StageId
local stageData = self.StageData
local isWin = stageData:IsWin()
--if isWin then
-- self.TxtSettle.text = CsXTextManagerGetText("DoomsdayWin")
--else
-- self.TxtSettle.text = CsXTextManagerGetText("DoomsdayFail")
--end
--解决描述
self.TxtSettle.text = XDoomsdayConfigs.StageEndingConfig:GetProperty(self.StageData:GetProperty("_FinishEndingId"), "Desc")
--关卡名
self.TxtChapterName.text = XDoomsdayConfigs.StageConfig:GetProperty(stageId, "Name")
--坚持天数
self.TxtDay.text = CSXTextManagerGetText("DoomsDayDaysOfPersistence", self.StageData:GetProperty("_Day"))
--幸存者数量
local inhabitantCount = stageData:GetProperty("_InhabitantCount")
self.TxtSurvival.text = inhabitantCount
self.TxtSurvival.color = tonumber(inhabitantCount) == 0 and Text_Color.Red or Text_Color.Normal
--死亡数
local deathCount = stageData:GetProperty("_AccDeadInhabitantCount")
self.TxtDeath.text = deathCount
self.TxtDeath.color = deathCount == 0 and Text_Color.Normal or Text_Color.Red
--主目标
local mainTargetId = XDoomsdayConfigs.StageConfig:GetProperty(stageId, "MainTaskId")
--local passed = stageData:IsTargetFinished(mainTargetId)
self.TxtTask.text = XDoomsdayConfigs.TargetConfig:GetProperty(mainTargetId, "Desc")
self.TxtWin.gameObject:SetActiveEx(isWin)
self.TxtLost.gameObject:SetActiveEx(not isWin)
self.ImgWinDi.gameObject:SetActiveEx(isWin)
self.ImgLostDi.gameObject:SetActiveEx(not isWin)
----次要目标
--local subTargetIds = XDoomsdayConfigs.StageConfig:GetProperty(stageId, "SubTaskId")
--self:RefreshTemplateGrids(
-- self.GridCondSub,
-- subTargetIds,
-- self.PanelAim1Content,
-- nil,
-- "SubTargetGrids",
-- function(grid, subTargetId)
-- local paseed = stageData:IsTargetFinished(subTargetId)
-- grid.TxtDesc.text = XDoomsdayConfigs.TargetConfig:GetProperty(subTargetId, "Desc")
-- grid.TxtSuccess.gameObject:SetActiveEx(paseed)
-- grid.TxtFail.gameObject:SetActiveEx(not paseed)
-- end
--)
--资源变化
self:RefreshTemplateGrids(
self.PanelTool,
XDoomsdayConfigs.GetResourceIds(),
self.PanelList,
nil,
"ResourceGrids",
function(grid, resourceId)
grid.RImgTu:SetRawImage(XDoomsdayConfigs.ResourceConfig:GetProperty(resourceId, "Icon"))
local count = stageData:GetResource(resourceId):GetProperty("_Count")
grid.TxtZuo.text = XDoomsdayConfigs.ResourceConfig:GetProperty(resourceId, "Name")
grid.TxtYou.text = count
grid.TxtYou.color = tonumber(count) == 0 and Text_Color.Red or Text_Color.Normal
end
)
--居民属性变化
self:RefreshTemplateGrids(
self.PanelAttribute,
stageData:GetProperty("_AverageInhabitantAttrList"),
self.PanelState,
nil,
"AttrGrids",
function(grid, attr)
local attrType = attr:GetProperty("_Type")
grid.TxtState1.text = XDoomsdayConfigs.AttributeTypeConfig:GetProperty(attrType, "Name")
local cur, max =
attr:GetProperty("_Value"),
XDoomsdayConfigs.AttributeTypeConfig:GetProperty(attrType, "MaxValue")
grid.TxtState1Num.text = string.format("%d/%d", cur, max)
grid.ImgProgress.fillAmount = XUiHelper.GetFillAmountValue(cur, max)
local color = attr:IsBad() and Progress_Color.Red or Progress_Color.Normal
grid.ImgProgress.color = color
grid.TxtState1Num.color = color
end
)
--各种异常状态下居民数量变化
--XDataCenter.DoomsdayManager.GetUnhealthyInhabitantChangeCountList(stageId)
local list = self.StageData:GetProperty("_UnhealthyInhabitantInfoList") or {}
local sortAttrType = {
[XDoomsdayConfigs.ATTRUBUTE_TYPE.HEALTH] = 0,
[XDoomsdayConfigs.ATTRUBUTE_TYPE.HUNGER] = 0,
[XDoomsdayConfigs.ATTRUBUTE_TYPE.SAN] = 0,
[XDoomsdayConfigs.HOMELESS_ATTR_TYPE] = 0,
}
for _, info in ipairs(list) do
local attrType = info.AttrType
sortAttrType[attrType] = info.Count
end
local unhealthyInhabitantInfoList = {}
for type, count in pairs(sortAttrType) do
table.insert(unhealthyInhabitantInfoList, {
AttrType = type,
Count = count
})
end
self:RefreshTemplateGrids(
self.PanelEmo,
unhealthyInhabitantInfoList,
self.PanelEmotion,
nil,
"BadAttrGrids",
function(grid, info)
grid.RImgTool:SetRawImage(XDoomsdayConfigs.AttributeTypeConfig:GetProperty(info.AttrType, "BadIcon"))
grid.TxtTool.text = XDoomsdayConfigs.AttributeTypeConfig:GetProperty(info.AttrType, "BadName")
local count = info.Count
grid.TxtQuantity.text = count
grid.TxtQuantity.color = tonumber(count) == 0 and Text_Color.Normal or Text_Color.Red
end
)
end
function XUiDoomsdaySettle:AutoAddListener()
self:RegisterClickEvent(self.BtnBlock, handler(self, self.OnClickBtnClose))
end
function XUiDoomsdaySettle:OnClickBtnClose()
self:Close()
if self.CloseCb then
self.CloseCb()
end
end