197 lines
7.2 KiB
Lua
197 lines
7.2 KiB
Lua
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
|
local PANEL_ID = PanelId.WeeklyRaidSettlement
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WeeklyRaidSettlementCtrl = HL.Class('WeeklyRaidSettlementCtrl', uiCtrl.UICtrl)
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.m_genCharCells = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.m_genValuableDepotCells = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.m_genMoneyCells = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.s_messages = HL.StaticField(HL.Table) << {
|
|
|
|
}
|
|
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.OnWeekRaidSettlement = HL.StaticMethod(HL.Any) << function(arg)
|
|
PhaseManager:ExitPhaseFastTo(PhaseId.Level)
|
|
UIManager:Open(PANEL_ID, arg)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
|
|
Notify(MessageConst.TOGGLE_IN_MAIN_HUD_STATE, { key = "weeklyRaidSettlement", isInMainHud = false })
|
|
|
|
local data = unpack(arg)
|
|
|
|
self.view.infoBtn.onClick:RemoveAllListeners()
|
|
self.view.infoBtn.onClick:AddListener(function()
|
|
UIManager:Open(PanelId.InstructionBook, "week_raid_settlement")
|
|
end)
|
|
|
|
self.view.getMaterialsScrollView.controllerScrollEnabled = true
|
|
self.view.naviGroup.onIsFocusedChange:AddListener(function(isFocused)
|
|
self.view.getMaterialsScrollView.controllerScrollEnabled = not isFocused
|
|
end)
|
|
|
|
self.view.battlePassInfoBtn.onClick:AddListener(function()
|
|
UIManager:Open(PanelId.InstructionBook, "week_raid_battle_pass")
|
|
end)
|
|
|
|
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({ self.view.inputGroup.groupId })
|
|
|
|
self.view.finishBtn.onClick:RemoveAllListeners()
|
|
self.view.finishBtn.onClick:AddListener(function()
|
|
GameInstance.dungeonManager:LeaveDungeon()
|
|
end)
|
|
|
|
self.view.timeNumTxt.text = UIUtils.getLeftTimeToSecond(data.TotalPlaytime / 1000)
|
|
self.view.disorderNumTxt.text = string.format("%d/%d", data.DangerMeter, GameInstance.player.weekRaidSystem.weekRaidGame.MaxDangerMeter)
|
|
self.view.slider.value = data.DangerMeter / GameInstance.player.weekRaidSystem.weekRaidGame.MaxDangerMeter
|
|
|
|
self.view.integralTxt.text = string.format("%d/%d", math.min(data.BpScore, GameInstance.player.weekRaidSystem.battlePassMaxScore), GameInstance.player.weekRaidSystem.battlePassMaxScore)
|
|
self.view.countDownText:InitCountDownText(Utils.getNextWeeklyServerRefreshTime())
|
|
|
|
self.m_genCharCells = UIUtils.genCellCache(self.view.charCell)
|
|
self.m_genValuableDepotCells = UIUtils.genCellCache(self.view.itemBlack)
|
|
self.m_genMoneyCells = UIUtils.genCellCache(self.view.iconCountItem)
|
|
|
|
self.view.rightNode:SetState(data.LootItems.Count == 0 and data.ConvertItems.Count == 0 and 'Empty' or 'Normal')
|
|
|
|
local lookItem = {}
|
|
local convertItem = {}
|
|
local sum = 0
|
|
for i = 0, data.ConvertItems.Count - 1 do
|
|
local item = data.ConvertItems[i]
|
|
sum = sum + item.Count
|
|
table.insert(convertItem, item)
|
|
end
|
|
table.sort(convertItem, function(a, b)
|
|
if Tables.itemTable[a.LootItem.Id].rarity ~= Tables.itemTable[b.LootItem.Id].rarity then
|
|
return Tables.itemTable[a.LootItem.Id].rarity > Tables.itemTable[b.LootItem.Id].rarity
|
|
end
|
|
if Tables.itemTable[a.LootItem.Id].sortId1 ~= Tables.itemTable[b.LootItem.Id].sortId1 then
|
|
return Tables.itemTable[a.LootItem.Id].sortId1 > Tables.itemTable[b.LootItem.Id].sortId1
|
|
end
|
|
if Tables.itemTable[a.LootItem.Id].sortId2 ~= Tables.itemTable[b.LootItem.Id].sortId2 then
|
|
return Tables.itemTable[a.LootItem.Id].sortId2 > Tables.itemTable[b.LootItem.Id].sortId2
|
|
end
|
|
return a.LootItem.Id < b.LootItem.Id
|
|
end)
|
|
|
|
for i = 0, data.LootItems.Count - 1 do
|
|
local item = data.LootItems[i]
|
|
table.insert(lookItem, item)
|
|
end
|
|
|
|
table.sort(lookItem, function(a, b)
|
|
if Tables.itemTable[a.Id].rarity ~= Tables.itemTable[b.Id].rarity then
|
|
return Tables.itemTable[a.Id].rarity > Tables.itemTable[b.Id].rarity
|
|
end
|
|
if Tables.itemTable[a.Id].sortId1 ~= Tables.itemTable[b.Id].sortId1 then
|
|
return Tables.itemTable[a.Id].sortId1 > Tables.itemTable[b.Id].sortId1
|
|
end
|
|
if Tables.itemTable[a.Id].sortId2 ~= Tables.itemTable[b.Id].sortId2 then
|
|
return Tables.itemTable[a.Id].sortId2 > Tables.itemTable[b.Id].sortId2
|
|
end
|
|
return a.Id < b.Id
|
|
end)
|
|
|
|
self.view.addNumTxt.text = sum
|
|
|
|
self.animationWrapper:PlayInAnimation(function()
|
|
|
|
local squadSlots = GameInstance.player.squadManager.curSquad.slots
|
|
self.m_genCharCells:Refresh(Const.BATTLE_SQUAD_MAX_CHAR_NUM, function(cell, luaIndex)
|
|
if CSIndex(luaIndex) < squadSlots.Count then
|
|
cell.charHeadCellLongHpBar.gameObject:SetActive(true)
|
|
local slot = squadSlots[CSIndex(luaIndex)]
|
|
cell.charHeadCellLongHpBar:InitCharFormationHeadCell({
|
|
instId = slot.charInstId,
|
|
templateId = slot.charId,
|
|
noHpBar = false,
|
|
})
|
|
local isAlive = slot.character ~= nil and slot.character.abilityCom.alive
|
|
if isAlive then
|
|
cell.charHeadCellLongHpBar.view.charHeadBar.gameObject:SetActive(true)
|
|
cell.charHeadCellLongHpBar.view.addHpFill.gameObject:SetActive(false)
|
|
cell.charHeadCellLongHpBar.view.curHpFill.gameObject:SetActive(true)
|
|
local abilityCom = slot.character.abilityCom
|
|
cell.charHeadCellLongHpBar.view.curHpFill.fillAmount = abilityCom.hp / abilityCom.maxHp
|
|
end
|
|
else
|
|
cell.charHeadCellLongHpBar.gameObject:SetActive(false)
|
|
end
|
|
end)
|
|
|
|
self.view.rateNumTxt.text = string.format("%d%%", data.ConvertRate * 100)
|
|
|
|
if #lookItem + #convertItem > 0 then
|
|
AudioAdapter.PostEvent("Au_UI_Event_RewardsPopUpForWeekDungeon")
|
|
end
|
|
|
|
self.m_genValuableDepotCells:GraduallyRefresh(#lookItem, 0.1, function(cell, luaIndex)
|
|
local item = lookItem[luaIndex]
|
|
cell:InitItem({
|
|
id = item.Id,
|
|
count = item.Count,
|
|
}, true)
|
|
AudioAdapter.PostEvent("Au_UI_Event_RewardsPopUpForWeekDungeonItem")
|
|
end)
|
|
|
|
|
|
local moneyId = Tables.weekRaidTable[data.GameId].moneyId
|
|
self.m_genMoneyCells:GraduallyRefresh(#convertItem, 0.1, function(cell, luaIndex)
|
|
local item = convertItem[luaIndex]
|
|
cell.itemBlack:InitItem({
|
|
id = item.LootItem.Id,
|
|
}, true)
|
|
cell.text.text = item.Count
|
|
local moneyItemData = Tables.itemTable[item.ConvertGold]
|
|
cell.image:LoadSprite(UIConst.UI_SPRITE_ITEM, moneyItemData.iconId)
|
|
AudioAdapter.PostEvent("Au_UI_Event_RewardsPopUpForWeekDungeonItem")
|
|
end)
|
|
self.view.iconImage:LoadSprite(UIConst.UI_SPRITE_ITEM, Tables.itemTable[moneyId].iconId)
|
|
self.view.goldNumText.text = sum
|
|
self.view.goldLayout:PlayInAnimation()
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WeeklyRaidSettlementCtrl.OnClose = HL.Override() << function(self)
|
|
Notify(MessageConst.TOGGLE_IN_MAIN_HUD_STATE, { key = "weeklyRaidSettlement", isInMainHud = true })
|
|
end
|
|
|
|
|
|
|
|
|
|
HL.Commit(WeeklyRaidSettlementCtrl)
|