267 lines
12 KiB
Lua
267 lines
12 KiB
Lua
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
MonsterCampSingleWave = {}
|
||
|
||
function MonsterCampSingleWave:New(gameObject)
|
||
local b = {}
|
||
b.gameObject = gameObject
|
||
b.transform = gameObject.transform
|
||
setmetatable(b, { __index = MonsterCampSingleWave })
|
||
return b
|
||
end
|
||
|
||
--初始化组件(用于子类重写)
|
||
function MonsterCampSingleWave:InitComponent(go, _data)
|
||
self.spLoader = SpriteLoader.New()
|
||
self.Id = Util.GetGameObject(go, "bg/leftLayout/num"):GetComponent("Text")
|
||
self.power = Util.GetGameObject(go, "bg/power/Text"):GetComponent("Text")
|
||
|
||
self.hero = Util.GetGameObject(go, "bg/Hero")
|
||
self.frame = Util.GetGameObject(self.hero, "Bg1"):GetComponent("Image")
|
||
self.icon = Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("RawImage")
|
||
self.lv = Util.GetGameObject(self.hero, "lv/Text"):GetComponent("Text")
|
||
self.pro = Util.GetGameObject(self.hero, "Pro/Image"):GetComponent("Image")
|
||
self.fg = Util.GetGameObject(self.hero, "Bg2"):GetComponent("Image")
|
||
self.starGrid = Util.GetGameObject(self.hero, "StarGrid")
|
||
self.name = Util.GetGameObject(self.hero, "Name/Text"):GetComponent("Text")
|
||
self.effect = Util.GetGameObject(self.hero, "UI_Effect_jinkuang_KaPai")
|
||
self.pass = Util.GetGameObject(self.hero, "pass")
|
||
Util.GetGameObject(self.hero, "yuanImage"):SetActive(false)
|
||
Util.GetGameObject(self.hero, "hpProgress"):SetActive(false)
|
||
Util.GetGameObject(self.hero, "rageProgress"):SetActive(false)
|
||
|
||
|
||
self.reward = Util.GetGameObject(go, "bg/rewardRect")
|
||
self.fight = Util.GetGameObject(go, "bg/fight")
|
||
self.rewardText = Util.GetGameObject(self.reward, "Text"):GetComponent("Text")
|
||
self.fightBtnIcon = Util.GetGameObject(self.fight, "layout/icon"):GetComponent("Image")
|
||
self.fightBtnNum = Util.GetGameObject(self.fight, "layout/num"):GetComponent("Text")
|
||
self.fightBtnText = Util.GetGameObject(self.fight, "layout/Text"):GetComponent("Text")
|
||
self.fightBtnRed = Util.GetGameObject(self.fight, "red")
|
||
self.fightBtnMask = Util.GetGameObject(self.fight, "mask"):GetComponent("Image")
|
||
self.bg = Util.GetGameObject(go, "bg"):GetComponent("Image")
|
||
self.rewardGrid = Util.GetGameObject(self.reward, "grid")
|
||
|
||
self.btn = Util.GetGameObject(go, "bg/btn")
|
||
self.data = _data
|
||
self.rewardList = {}
|
||
for i = 1, self.rewardGrid.transform.childCount do
|
||
local temp = self:NewItemView(SubUIConfig.ItemView, self.rewardGrid.transform:GetChild(i - 1).gameObject)
|
||
table.insert(self.rewardList, temp)
|
||
end
|
||
end
|
||
|
||
function MonsterCampSingleWave:OnOpen(_sortingOrder)
|
||
self:UpdatePrivilage()
|
||
self.Id.text = Language[10286] .. self.data.Id .. Language[10295]
|
||
self.power.text = self.data.Force
|
||
self.bg.sprite = self.spLoader:LoadSprite("s_silingshilian_shiliandi")
|
||
local MonsterGroup = ConfigManager.GetConfigData(ConfigName.MonsterGroup, self.data.Monster)
|
||
local monsterConfig = ConfigManager.GetConfigData(ConfigName.MonsterConfig, MonsterGroup.Contents[1][1])
|
||
local herodata = ConfigManager.GetConfigData(ConfigName.HeroConfig, monsterConfig.MonsterId)
|
||
self:SingleHeroDataShow(monsterConfig, herodata)
|
||
self:SetIcon()
|
||
self.rewardData = self.data.RewardShow
|
||
if self.rewardData and #self.rewardData then
|
||
self:InitShowReward()
|
||
self.reward.gameObject:SetActive(true)
|
||
else
|
||
self.reward.gameObject:SetActive(false)
|
||
end
|
||
self.effect.gameObject:SetActive(false) --因为穿透,所以关闭了
|
||
Util.SetParticleSortLayer(self.effect.gameObject, _sortingOrder + 1)
|
||
|
||
Util.AddOnceClick(self.btn, function()
|
||
UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup, EXPEDITON_POPUP_TYPE.MonsterXinMo, self.data.Id)
|
||
end)
|
||
Util.AddOnceClick(self.fight, function()
|
||
LogGreen(self.data.Id)
|
||
local x = function()
|
||
NetManager.SweepDemonRequest(self.data.Id, false, function(msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, msg.Drop, 1, function()
|
||
PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.MONSTERCAMP_BATTLENUM, 1)
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.MonsterCamp.UpdatePri)
|
||
self:UpdatePrivilage()
|
||
CheckRedPointStatus(RedPointType.EpicExplore_MoppingUp)
|
||
end)
|
||
end)
|
||
end
|
||
if self.data.Id == MonsterCampManager.monsterWave - 1 then --扫荡
|
||
LogGreen(self.freeTimes .. self.buyTimes)
|
||
if self.freeTimes <= 0 and self.buyTimes <= 0 then
|
||
PopupTipPanel.ShowTip(Language[10683])
|
||
return
|
||
end
|
||
LogGreen(self.itemId .. " " .. self.costNum)
|
||
if self.freeTimes <= 0 then
|
||
if BagManager.GetItemCountById(self.itemId) < self.costNum then
|
||
PopupTipPanel.ShowTip(string.format(Language[10320], GetLanguageStrById(itemConfig[self.itemId].Name)))
|
||
return
|
||
end
|
||
MsgPanel.ShowTwo(
|
||
string.format(Language[10684], self.costNum, GetLanguageStrById(itemConfig[self.itemId].Name)),
|
||
function() end, function()
|
||
ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP, self.storeDataId, 1, function()
|
||
PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.MONSTERCAMP_BUY_BATTLENUM, 1)
|
||
x()
|
||
end)
|
||
end, Language[10685], Language[10686])
|
||
else
|
||
x()
|
||
end
|
||
elseif self.data.Id == MonsterCampManager.monsterWave then --挑战
|
||
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.MONSTER_CAMP)
|
||
end
|
||
|
||
|
||
-- if self.data.Id == MonsterCampManager.monsterWave - 1 then
|
||
-- LogGreen(self.freeTimes..self.buyTimes)
|
||
-- if self.freeTimes <=0 and self.buyTimes <= 0 then
|
||
-- PopupTipPanel.ShowTip("今日已无扫荡次数!")
|
||
-- return
|
||
-- end
|
||
-- LogGreen(self.itemId.." "..self.costNum)
|
||
-- if self.freeTimes <= 0 then
|
||
-- if BagManager.GetItemCountById(self.itemId) < self.costNum then
|
||
-- PopupTipPanel.ShowTip(string.format("%s不足!", itemConfig[self.itemId].Name))
|
||
-- return
|
||
-- end
|
||
-- MsgPanel.ShowTwo(string.format("是否花费%s%s购买一次扫荡次数?",self.costNum,itemConfig[self.itemId].Name),function() end,function()
|
||
-- ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,self.storeDataId,1,function()
|
||
-- PrivilegeManager.RefreshPrivilegeUsedTimes(self.trailData.buyTimeId, 1)
|
||
-- x()
|
||
-- end)
|
||
-- end,"取消","确定")
|
||
-- else
|
||
-- x()
|
||
-- end
|
||
-- elseif self.data.Id == self.trailData.monsterWave + 1 then
|
||
-- if self.trailData.canFightTime > 0 then
|
||
-- if LengthOfTable(FormationManager.GetWuJinFormationHeroIds(self.trailData.fourElementType + 3000)) > 0 then
|
||
-- MonsterCampManager.ExecuteFightBattle(self.data.Id,0,nil,self.trailData.fourElementType)
|
||
-- else
|
||
-- -- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.Id)
|
||
-- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.MONSTER_CAMP)
|
||
-- end
|
||
-- else
|
||
-- PopupTipPanel.ShowTip("今日已无可挑战层数!")
|
||
-- end
|
||
-- --UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.Id)
|
||
-- end
|
||
end)
|
||
end
|
||
|
||
-- 初始化奖励显示
|
||
function MonsterCampSingleWave:InitShowReward()
|
||
for i = 1, #self.rewardList do
|
||
self.rewardList[i].gameObject:SetActive(false)
|
||
end
|
||
for i = 1, #self.rewardData do
|
||
if not self.rewardList[i] then
|
||
self.rewardList[i] = SubUIManager.Open(SubUIConfig.ItemView, self.rewardGrid.transform)
|
||
self.rewardList[i].gameObject:SetActive(false)
|
||
end
|
||
self.rewardList[i]:OnOpen(false, { self.rewardData[i][1], self.rewardData[i][2] }, 0.8, false, false, false)
|
||
self.rewardList[i].gameObject:SetActive(true)
|
||
end
|
||
end
|
||
|
||
--设置每条英雄数据
|
||
function MonsterCampSingleWave:SingleHeroDataShow(monConfig, heroData)
|
||
self.frame.sprite = self.spLoader:LoadSprite(GetHeroCardStarBg[monConfig.Star])
|
||
local liveName = GetResourcePath(heroData.Live)
|
||
local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.Id)
|
||
local scale = roleConfig.play_liveScale
|
||
local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0)
|
||
self.icon.texture = CardRendererManager.GetSpineTexture((self.data.Id % 6 == 0 and 12 or (self.data.Id % 6) + 6),
|
||
liveName, Vector3.one * scale, livePos, true)
|
||
self.icon.transform.localScale = Vector3.one
|
||
self.icon.transform.localPosition = Vector3.zero
|
||
self.lv.text = monConfig.Level
|
||
self.pro.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(heroData.PropertyName))
|
||
SetCardStars(self.starGrid, monConfig.Star)
|
||
self.fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star])
|
||
self.name.text = heroData.ReadingName
|
||
end
|
||
|
||
function MonsterCampSingleWave:UpdatePrivilage()
|
||
self.storeDataId, self.itemId, self.costNum = MonsterCampManager.MonsterCampGetCost()
|
||
self.freeTimes = MonsterCampManager.GetCanBattleCount()
|
||
self.buyTimes = MonsterCampManager.GetCanBuyBattleCount()
|
||
self:SetIcon()
|
||
end
|
||
|
||
function MonsterCampSingleWave:SetIcon()
|
||
Util.SetGray(self.fight, false)
|
||
self.hero.transform.localPosition = Vector3.New(0, -33, 0)
|
||
self.fight.gameObject:SetActive(false)
|
||
self.pass.gameObject:SetActive(false)
|
||
self.fightBtnIcon.gameObject:SetActive(false)
|
||
self.fightBtnNum.gameObject:SetActive(false)
|
||
self.rewardText.text = Language[10073]
|
||
if self.data.Id < MonsterCampManager.monsterWave - 1 then
|
||
self.pass.gameObject:SetActive(true)
|
||
elseif self.data.Id == MonsterCampManager.monsterWave - 1 then --扫荡
|
||
self.fight.gameObject:SetActive(true)
|
||
self.hero.transform.localPosition = Vector3.New(0, 3, 0)
|
||
if self.freeTimes > 0 then
|
||
self.fightBtnRed:SetActive(true)
|
||
self.fightBtnText.text = string.format(Language[10687])
|
||
self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
|
||
else
|
||
self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
|
||
self.fightBtnIcon.gameObject:SetActive(true)
|
||
self.fightBtnNum.gameObject:SetActive(true)
|
||
self.fightBtnRed:SetActive(false)
|
||
local color = BagManager.GetItemCountById(self.itemId) < self.costNum and "E71515" or "17232A"
|
||
self.fightBtnNum.text = string.format("<color=#%s>%s</color>", color, self.costNum)
|
||
self.fightBtnText.text = string.format("<color=#%s>%s</color>", color, Language[10386])
|
||
self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID))
|
||
if self.buyTimes < 1 then
|
||
Util.SetGray(self.fight, true)
|
||
end
|
||
end
|
||
elseif self.data.Id == MonsterCampManager.monsterWave then --挑战
|
||
self.fight.gameObject:SetActive(true)
|
||
self.hero.transform.localPosition = Vector3.New(0, 3, 0)
|
||
self.fightBtnIcon.gameObject:SetActive(false)
|
||
self.fightBtnNum.gameObject:SetActive(false)
|
||
self.fightBtnRed:SetActive(false)
|
||
self.fightBtnMask:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shouchong_anniu")
|
||
self.fightBtnText.text = string.format(Language[10340])
|
||
elseif self.data.Id > MonsterCampManager.monsterWave then
|
||
end
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function MonsterCampSingleWave:OnDestroy()
|
||
self.rewardList = {}
|
||
self.spLoader:Destroy()
|
||
end
|
||
|
||
function MonsterCampSingleWave:NewItemView(config, gameObject, ...)
|
||
local view = reimport(config.script)
|
||
local sub = view:New(gameObject)
|
||
sub.assetName = config.assetName
|
||
if sub.Awake then
|
||
sub:Awake()
|
||
end
|
||
if sub.InitComponent then
|
||
sub:InitComponent()
|
||
end
|
||
if sub.BindEvent then
|
||
sub:BindEvent()
|
||
end
|
||
if sub.AddListener then
|
||
sub:AddListener()
|
||
end
|
||
if sub.Update then
|
||
UpdateBeat:Add(sub.Update, sub)
|
||
end
|
||
if sub.OnOpen then
|
||
sub:OnOpen(...)
|
||
end
|
||
return sub
|
||
end
|
||
|
||
return MonsterCampSingleWave
|