slot0 = class("WorldResource", import("..base.BaseUI")) slot0.Listeners = { onUpdateInventory = "OnUpdateInventory", onUpdateActivate = "OnUpdateActivate", onUpdateStamina = "OnUpdateStamina", onBossProgressUpdate = "OnBossProgressUpdate" } function slot0.Ctor(slot0) uv0.super.Ctor(slot0) PoolMgr.GetInstance():GetUI("WorldResPanel", false, function (slot0) slot0.transform:SetParent(pg.UIMgr.GetInstance().UIMain.transform, false) uv0:onUILoaded(slot0) end) end function slot0.init(slot0) for slot4, slot5 in pairs(uv0.Listeners) do slot0[slot4] = function (...) uv0[uv1](uv2, ...) end end slot0.stamina = slot0:findTF("res/stamina") onButton(slot0, slot0.stamina, function () uv0.staminaMgr:Show() end, SFX_PANEL) slot0.oil = slot0:findTF("res/oil") onButton(slot0, slot0.oil, function () if not ShoppingStreet.getRiseShopId(ShopArgs.BuyOil, uv0.player.buyOilCount) then pg.TipsMgr.GetInstance():ShowTips(i18n("common_today_buy_limit")) return end slot1 = pg.shop_template[slot0] slot2 = slot1.num if slot1.num == -1 and slot1.genre == ShopArgs.BuyOil then slot2 = ShopArgs.getOilByLevel(uv0.player.level) end if uv0.player.buyOilCount < pg.gameset.buy_oil_limit.key_value then pg.MsgboxMgr.GetInstance():ShowMsgBox({ type = MSGBOX_TYPE_SINGLE_ITEM, content = i18n("oil_buy_tip", slot1.resource_num, slot2, uv0.player.buyOilCount), drop = { id = 2, type = DROP_TYPE_RESOURCE, count = slot2 }, onYes = function () pg.m02:sendNotification(GAME.SHOPPING, { count = 1, id = uv0 }) end }) else pg.MsgboxMgr.GetInstance():ShowMsgBox({ type = MSGBOX_TYPE_HELP, helps = i18n("help_oil_buy_limit"), custom = { { text = "text_iknow", sound = SFX_CANCEL } } }) end end, SFX_PANEL) slot0.Whuobi = slot0:findTF("res/Whuobi") onButton(slot0, slot0.Whuobi, function () pg.MsgboxMgr.GetInstance():ShowMsgBox({ type = MSGBOX_TYPE_SINGLE_ITEM, drop = { type = DROP_TYPE_WORLD_ITEM, id = WorldItem.MoneyId } }) end, SFX_PANEL) slot0.bossProgress = slot0:findTF("res/boss_progress") onButton(slot0, slot0.bossProgress, function () slot1, slot2, slot3, slot4 = uv0:GetBossProxy():GetUnlockProgress() slot5 = slot1 .. "/" .. slot2 if slot2 == WorldBossProxy.INFINITY then slot5 = i18n("world_boss_daily_limit") end slot7 = slot2 <= slot1 pg.MsgboxMgr.GetInstance():ShowMsgBox({ hideNo = true, type = MSGBOX_TYPE_SINGLE_ITEM, drop = { type = DROP_TYPE_VITEM, id = WorldBossProxy.VIRTUAL_ITEM_ID }, content = i18n("world_boss_progress_item_desc", slot3 - 1, slot4, slot5), yesText = slot6 and i18n("world_boss_daily_limit") or slot7 and i18n("common_go_to_analyze") or i18n("world_boss_not_reach_target"), yesSize = not slot7 and Vector2(318, 118), yesGray = not slot7 or slot6, onYes = function () if uv0 then pg.m02:sendNotification(GAME.GO_SCENE, SCENE.WORLDBOSS) else pg.MsgboxMgr.GetInstance():hide() end end }) end, SFX_PANEL) if nowWorld:GetActiveMap() then slot0:setStaminaMgr(slot1.staminaMgr) else slot0.atlas = slot1:GetAtlas() slot0.atlas:AddListener(WorldAtlas.EventUpdateActiveMap, slot0.onUpdateActivate) setActive(slot0.stamina, false) end slot0:setWorldInventory(slot1:GetInventoryProxy()) slot0:SetWorldBossRes(slot1:GetBossProxy()) end function slot0.setParent(slot0, slot1, slot2) setParent(slot0._go, slot1, slot2) end function slot0.setPlayer(slot0, slot1) slot0.player = slot1 setText(slot0.oil:Find("max_value"), "MAX:" .. pg.user_level[slot1.level].max_oil) setText(slot0.oil:Find("value"), slot1.oil) end function slot0.OnUpdateActivate(slot0) slot0:setStaminaMgr(nowWorld.staminaMgr) slot0.atlas:RemoveListener(WorldAtlas.EventUpdateActiveMap, slot0.onUpdateActivate) end function slot0.setStaminaMgr(slot0, slot1) slot0.staminaMgr = slot1 setText(slot0.stamina:Find("max_value"), "MAX:" .. slot1:GetMaxStamina()) slot0.staminaMgr:AddListener(WorldStaminaManager.EventUpdateStamina, slot0.onUpdateStamina) slot0:OnUpdateStamina() setActive(slot0.stamina, true) end function slot0.setWorldInventory(slot0, slot1) slot0.inventoryProxy = slot1 slot0.inventoryProxy:AddListener(WorldInventoryProxy.EventUpdateItem, slot0.onUpdateInventory) slot0:OnUpdateInventory() end function slot0.OnUpdateStamina(slot0) setText(slot0.stamina:Find("value"), slot0.staminaMgr:GetDisplayStanima()) end function slot0.OnUpdateInventory(slot0, slot1, slot2, slot3) if not slot1 or slot1 == WorldInventoryProxy.EventUpdateItem and slot3.id == WorldItem.MoneyId then setText(slot0.Whuobi:Find("value"), slot0.inventoryProxy:GetItemCount(WorldItem.MoneyId)) end end function slot0.SetWorldBossRes(slot0, slot1) slot0.worldBossProxy = slot1 slot0.worldBossProxy:AddListener(WorldBossProxy.EventUnlockProgressUpdated, slot0.onBossProgressUpdate) slot0:OnBossProgressUpdate() end function slot0.OnBossProgressUpdate(slot0) slot1, slot2, slot3, slot4, slot5 = slot0.worldBossProxy:GetUnlockProgress() slot7 = slot0.bossProgress:Find("max_value") if slot2 == WorldBossProxy.INFINITY then setText(slot0.bossProgress:Find("value"), string.format("%d/%d", slot2 == WorldBossProxy.INFINITY and "#5E5E5EFF" or "#FAFAF7FF", slot5, slot5)) else setText(slot6, string.format(slot9, slot8, slot1, slot2)) end setText(slot7, "PHASE:" .. slot3 - 1 .. "/" .. slot4 .. "") setActive(slot0.bossProgress, nowWorld:IsSystemOpen(WorldConst.SystemWorldBoss)) end function slot0.willExit(slot0) if slot0.staminaMgr then slot0.staminaMgr:RemoveListener(WorldStaminaManager.EventUpdateStamina, slot0.onUpdateStamina) else slot0.atlas:RemoveListener(WorldAtlas.EventUpdateActiveMap, slot0.onUpdateActivate) end slot0.inventoryProxy:RemoveListener(WorldInventoryProxy.EventUpdateItem, slot0.onUpdateInventory) slot0.worldBossProxy:RemoveListener(WorldBossProxy.EventUnlockProgressUpdated, slot0.onBossProgressUpdate) PoolMgr.GetInstance():ReturnUI("WorldResPanel", slot0._go) end return slot0