miduo_client/Assets/ManagedResources/~Lua/View/FourElementSingleWave.lua

250 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
FourElementSingleWave = {}
function FourElementSingleWave:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = FourElementSingleWave })
return b
end
--初始化组件(用于子类重写)
function FourElementSingleWave:InitComponent(go,_data,_curType)
self.spLoader = SpriteLoader.New()
self.wave = Util.GetGameObject(go,"bg/leftLayout/num"):GetComponent("Text")
self.power = Util.GetGameObject(go,"bg/power/Text"):GetComponent("Text")
self.reward = Util.GetGameObject(go,"bg/rewardRect")
self.fight = Util.GetGameObject(go,"bg/fight")
self.pass = Util.GetGameObject(go,"bg/pass"):GetComponent("Image")
self.title = Util.GetGameObject(go,"bg/leftLayout/title"):GetComponent("Image")
self.hero = Util.GetGameObject(go,"bg/Hero")
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.fightBtnMask = Util.GetGameObject(self.fight,"mask"):GetComponent("Image")
self.bg = Util.GetGameObject(go,"bg"):GetComponent("Image")
self.rewardGrid = Util.GetGameObject(self.reward,"grid")
self.frame=Util.GetGameObject(self.hero,"Bg1"):GetComponent("Image")
self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("RawImage")
--self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("Image")
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.starGrid = Util.GetGameObject(self.hero,"StarGrid")
self.name=Util.GetGameObject(self.hero,"Name/Text"):GetComponent("Text")
self.btn=Util.GetGameObject(go,"bg/btn")
self.data = _data
self.trailData = MonsterCampManager.GetCurFourElementMonsterInfo(_curType)
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 FourElementSingleWave:OnOpen()
self:UpdatePrivilage()
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
self.wave.text = ""..self.data.wave..""
self.power.text = self.data.power
self.title.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(self.trailData.fourElementType))
self.bg.sprite = self.spLoader:LoadSprite(GetFourElementBgByType(self.trailData.fourElementType))
if self.data.wave < self.trailData.monsterWave then
self.pass.gameObject:SetActive(true)
self.fight.gameObject:SetActive(false)
self.reward.gameObject:SetActive(false)
else
self.pass.gameObject:SetActive(false)
self.fight.gameObject:SetActive(true)
self.rewardText.text = "挑战奖励"
self:SetIcon()
if self.rewardData and #self.rewardData then
self:InitShowReward()
self.reward.gameObject:SetActive(true)
else
self.reward.gameObject:SetActive(false)
end
end
self:SingleHeroDataShow(self.data.monsterConfig,self.data.herodata)
Util.AddOnceClick(self.pass.gameObject, function()
UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave)
end)
-- Util.AddOnceClick(self.hero, function()
-- UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave)
-- end)
Util.AddOnceClick(self.btn, function()
UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave)
end)
Util.AddOnceClick(self.fight, function()
local x = function()
MonsterCampManager.ExecuteFightBattle(self.data.wave,1,function()
PrivilegeManager.RefreshPrivilegeUsedTimes(self.trailData.freeTimeId, 1)
Game.GlobalEvent:DispatchEvent(GameEvent.FourEle.UpdatePri)
self:UpdatePrivilage()
if self.trailData.fourElementType == 1 then
CheckRedPointStatus(RedPointType.PersonTrail)
elseif self.trailData.fourElementType == 2 then
CheckRedPointStatus(RedPointType.BuddishTrail)
elseif self.trailData.fourElementType == 3 then
CheckRedPointStatus(RedPointType.DemonTrail)
elseif self.trailData.fourElementType == 4 then
CheckRedPointStatus(RedPointType.TaoistTrail)
end
end,self.trailData.fourElementType)
end
if self.data.wave == self.trailData.monsterWave then
if self.freeTimes <=0 and self.buyTimes <= 0 then
PopupTipPanel.ShowTip("今日已无扫荡次数!")
return
end
if self.freeTimes <= 0 then
if BagManager.GetItemCountById(self.itemId) < self.costNum then
PopupTipPanel.ShowTip(string.format(Language[10298], 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.wave == self.trailData.monsterWave + 1 then
if self.trailData.canFightTime > 0 then
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.wave)
-- if LengthOfTable(FormationManager.GetWuJinFormationHeroIds(self.trailData.fourElementType + 3000)) > 0 then
-- MonsterCampManager.ExecuteFightBattle(self.data.wave,0,nil,self.trailData.fourElementType)
-- else
-- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.wave)
-- end
else
PopupTipPanel.ShowTip("今日已无可挑战层数!")
end
--UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave)
end
end)
end
-- 初始化奖励显示
function FourElementSingleWave: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].id,self.rewardData[i].num}, 0.65,false,false,false)
self.rewardList[i].gameObject:SetActive(true)
end
end
--设置每条英雄数据
function FourElementSingleWave:SingleHeroDataShow(monConfig,heroData)
self.frame.sprite=self.spLoader:LoadSprite(GetHeroCardStarBg[monConfig.Star])
local liveName = heroData.live
local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.heroConfig.Id)
local scale = roleConfig.play_liveScale
local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0)
self.icon.texture = CardRendererManager.GetSpineTexture((self.data.wave%6 == 0 and 12 or (self.data.wave%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.property))
--self.icon.sprite = self.spLoader:LoadSprite(heroData.painting)
SetCardStars(self.starGrid,monConfig.Star)
self.fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star])
self.name.text = heroData.name
end
function FourElementSingleWave:UpdatePrivilage()
self.storeDataId,self.itemId,self.costNum = MonsterCampManager.GetCost(self.trailData.fourElementType)
self.freeTimes,self.buyTimes = MonsterCampManager.GetTimeTip(self.trailData.fourElementType)
self:SetIcon()
end
function FourElementSingleWave:SetIcon()
Util.SetGray(self.fight,false)
if self.data.wave == self.trailData.monsterWave then
self.rewardData = self.data.commonReward
--设置扫荡按钮
self.rewardText.text = "扫荡奖励"
if self.freeTimes > 0 then
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
self.fightBtnText.text = string.format("<color=#%s>%s</color>","17232A","免费扫荡")
self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
Util.SetGray(self.fight,false)
else
self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
self.fightBtnIcon.gameObject:SetActive(true)
self.fightBtnNum.gameObject:SetActive(true)
self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID))
local color = 0
if BagManager.GetItemCountById(self.itemId) < self.costNum then
color = "E71515"
else
color = "17232A"
end
self.fightBtnNum.text =string.format("<color=#%s>%s</color>",color,self.costNum)
self.fightBtnText.text = string.format("<color=#%s>%s</color>",color,"扫荡")
if self.buyTimes < 1 then
Util.SetGray(self.fight,true)
end
end
else
self.rewardData = self.data.firstReward
if self.data.wave == self.trailData.monsterWave + 1 then
--设置挑战fight
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
self.fightBtnMask:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shouchong_anniu")
self.fightBtnText.text = string.format("<color=#%s>%s</color>","17232A","挑战")
else
self.fight.gameObject:SetActive(false)
end
Util.SetGray(self.fight,false)
end
end
--界面销毁时调用(用于子类重写)
function FourElementSingleWave:OnDestroy()
self.rewardList = {}
self.spLoader:Destroy()
end
function FourElementSingleWave: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 FourElementSingleWave