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 = "第"..self.data.Id.."层"
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("今日已无扫荡次数!")
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[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(PRIVILEGE_TYPE.MONSTERCAMP_BUY_BATTLENUM, 1)
x()
end)
end,"取消","确定")
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(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.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.5,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.Painting)
local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.Id)
local scale = roleConfig.play_liveScale
local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2]+60, 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 = "奖励"
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("%s","17232A","免费扫荡")
-- 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("%s",color,self.costNum)
self.fightBtnText.text = string.format("%s",color,"扫荡")
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("%s","17232A","挑战")
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