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

265 lines
12 KiB
Lua

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.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.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")
Util.GetGameObject(self.hero, "yuanImage"):SetActive(false)
Util.GetGameObject(self.hero, "hpProgress"):SetActive(false)
Util.GetGameObject(self.hero, "rageProgress"):SetActive(false)
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 = Language[10286] .. self.data.wave .. Language[10295]
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 = Language[13060]
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(Language[10683])
return
end
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(self.trailData.buyTimeId, 1)
x()
end)
end, Language[10685], Language[10686])
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(Language[10689])
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.9, 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 = GetLanguageStrById(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)
self.fightBtnRed:SetActive(false)
if self.data.wave == self.trailData.monsterWave then
self.rewardData = self.data.commonReward
--设置扫荡按钮
self.rewardText.text = Language[10690]
if self.freeTimes > 0 then
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
self.fightBtnRed:SetActive(true)
self.fightBtnText.text = string.format(Language[10687])
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, Language[10386])
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(Language[10340])
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