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

341 lines
16 KiB
Lua
Raw Normal View History

2023-03-20 11:22:44 +08:00
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
GodsWaySingleSingleWave = {}
function GodsWaySingleSingleWave:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = GodsWaySingleSingleWave })
return b
end
local curType=0
--初始化组件(用于子类重写)
function GodsWaySingleSingleWave:InitComponent(go,_data,_curType)
self.spLoader = SpriteLoader.New()
curType=_curType
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.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.heroList={}
self.trailData = MonsterCampManager.GetCurFourElementMonsterInfo(_curType)
for i = 1, 3 do
table.insert(self.heroList,Util.GetGameObject(go,"bg/grid/Hero"..i))
end
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
local teamIds={
[1]={3206,3207},
[2]={3203,3204,3205},
}
local curFloor=0
function GodsWaySingleSingleWave:OnOpen()
curFloor=GodsWayTowerManager.GetTowerFloorByType(curType)
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))
self:UpdatePrivilage()
if self.data.wave < curFloor then
2023-09-06 14:43:33 +08:00
self.pass.gameObject:SetActive(false)
2023-03-20 11:22:44 +08:00
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()
LogError("#self.rewardData===="..#self.rewardData)
if self.rewardData and #self.rewardData then
self:InitShowReward()
self.reward.gameObject:SetActive(true)
else
self.reward.gameObject:SetActive(false)
end
end
for i = 1, 3 do
self.heroList[i].gameObject:SetActive(false)
if self.data.herodatas[i] then
self.heroList[i].gameObject:SetActive(true)
self:SingleHeroDataShow(self.heroList[i],self.data.monsterConfig[i],self.data.herodatas[i],i,#self.data.herodatas)
end
end
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()
2023-03-21 16:12:57 +08:00
LogError("self.data.wave=="..self.data.wave)
UIManager.OpenPanel(UIName.GodsWayOtherTeamPanel,curType,self.data.wave)
2023-03-20 11:22:44 +08:00
end)
Util.AddOnceClick(self.fight, function()
local x = function()
NetManager.RequestDuoDuiChallenge(curType,curFloor,2,function(msg)
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1)
local freeId=GodsWayTowerManager.GetTowerFreeIdByType(curType)
PrivilegeManager.RefreshPrivilegeUsedTimes(freeId, 1)
Game.GlobalEvent:DispatchEvent(GameEvent.FourEle.UpdatePri)
self:UpdatePrivilage()
end)
end
if self.data.wave == curFloor then
2023-09-06 14:43:33 +08:00
-- 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
-- local buyId=GodsWayTowerManager.GetTowerBuyIdByType(curType)
-- 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(buyId, 1)
-- x()
-- end)
-- end,"取消","确定")
-- else
-- x()
--
PopupTipPanel.ShowTip("已通关最高层")
return
2023-03-20 11:22:44 +08:00
elseif self.data.wave == curFloor + 1 then
local teamType=0
local myTeams=teamIds[curType]
local floor=GodsWayTowerManager.GetTowerFloorByType(curType)
-- if self.trailData.canFightTime > 0 then
local windData={}
--我的队伍
local myTeamInfo={}
--敌方队伍
local enTeamInfo={}
--获取双方队伍数据
local allHeroTeam={}
local allEnTeam={}
local myTeamNum=0
for i = 1, #myTeams do
--local fightData=fightDataList[i]
local heroTeam={}
heroTeam.team={}
heroTeam.totalForce=FormationManager.GetFormationPower(myTeams[i])
--LogError("myforce=="..msg.recordData.yxldMyForce[i])
local enTeam={}
enTeam.team={}
--LogError("en force=="..msg.recordData.yxldDefForce[i])
local myteam=FormationManager.GetFormationByID(myTeams[i])
for j = 1, #myteam.teamHeroInfos do
myTeamNum=myTeamNum+1
local hero=myteam.teamHeroInfos[j]
local newHero={}
local heroData=HeroManager.GetSingleHeroData(hero.heroId)
newHero.heroTid=heroData.heroConfig.Id
--local pro=string.split(hero.property,"#")
newHero.level=heroData.lv
newHero.heroid=heroData.dynamicId
newHero.star=heroData.star
--newHero.godSoulLv = hero.godSoulLv
newHero.position=hero.position
newHero.skinId=heroData.skinId
table.insert(heroTeam.team,newHero)
end
LogError("Type====="..curType.." TowerNumber====="..floor.." TowerWave1"..i)
local monsterData=ConfigManager.TryGetConfigDataByThreeKey(ConfigName.DuoDuiTower,"Type",curType,"TowerNumber",floor+1,"TowerWave1",i)
if monsterData then
enTeam.totalForce=monsterData.Force
for j = 1, #monsterData.Hero do
local hero=monsterData.Hero[j]
local config=ConfigManager.GetConfigData(ConfigName.DuoDuiTowerHero,hero)
local newHero={}
newHero.heroTid=config.Hero
--local pro=string.split(hero.property,"#")
newHero.level=monsterData.Level
--newHero.heroid=hero.realId
newHero.star=monsterData.Star
--newHero.godSoulLv = hero.godSoulLv
newHero.position=j
--newHero.skinId=hero.skinId
table.insert(enTeam.team,newHero)
end
end
table.insert(allHeroTeam,heroTeam)
table.insert(allEnTeam,enTeam)
-- allHeroTeam[i]=heroTeam
-- allEnTeam[i]=enTeam
end
if myTeamNum==0 then
PopupTipPanel.ShowTip("编对为空,无法开战")
return
end
myTeamInfo.crossTeam=allHeroTeam
enTeamInfo.crossTeam=allEnTeam
windData.myTeamInfo=myTeamInfo
windData.defTeamInfo=enTeamInfo
windData.fightData=fightDataList
UIManager.OpenPanel(UIName.GodsWayBattleInfoPanel,windData,1,curType)
end
--end
end)
end
-- 初始化奖励显示
function GodsWaySingleSingleWave:InitShowReward()
for i = 1 ,#self.rewardList do
self.rewardList[i].gameObject:SetActive(false)
end
--LogError("#self.rewardData=="..#self.rewardData)
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
2023-08-28 18:52:15 +08:00
self.rewardList[i]:OnOpen(false, {self.rewardData[i].id,self.rewardData[i].num}, 0.55,false,false,false)
2023-03-20 11:22:44 +08:00
self.rewardList[i].gameObject:SetActive(true)
end
end
--设置每条英雄数据
function GodsWaySingleSingleWave:SingleHeroDataShow(go,monConfig,heroData,index,len)
local frame=Util.GetGameObject(go,"Bg1"):GetComponent("Image")
local icon=Util.GetGameObject(go, "Mask/icon"):GetComponent("RawImage")
--self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("Image")
local lv = Util.GetGameObject(go, "lv/Text"):GetComponent("Text")
local pro = Util.GetGameObject(go, "Pro/Image"):GetComponent("Image")
local fg = Util.GetGameObject(go,"Bg2"):GetComponent("Image")
--self.starGrid = Util.GetGameObject(self.hero,"starGrid")
local starGrid = Util.GetGameObject(go,"StarGrid")
local name=Util.GetGameObject(go,"Name/Text"):GetComponent("Text")
Util.GetGameObject(go,"yuanImage"):SetActive(false)
Util.GetGameObject(go,"hpProgress"):SetActive(false)
Util.GetGameObject(go,"rageProgress"):SetActive(false)
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)
local heroIndex=(self.data.wave-1)*len+index
--LogError("self.data.wave=="..self.data.wave.." index=="..index.." heroindex=="..heroIndex)
--icon.texture = CardRendererManager.GetSpineTexture((self.data.wave%6 == 0 and 12 or (self.data.wave%6 + 6)), liveName, Vector3.one * scale, livePos, true)
icon.texture = CardRendererManager.GetSpineTexture(heroIndex%12==0 and 12 or heroIndex%12, liveName, Vector3.one * scale, livePos, true)
icon.transform.localScale = Vector3.one
icon.transform.localPosition = Vector3.zero
lv.text = monConfig.Level
pro.sprite= self.spLoader:LoadSprite(GetProStrImageByProNum(heroData.property))
--self.icon.sprite = self.spLoader:LoadSprite(heroData.painting)
SetCardStars(starGrid,monConfig.Star)
fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star])
name.text = heroData.name
end
function GodsWaySingleSingleWave:UpdatePrivilage()
LogError("curtype============"..curType)
self.storeDataId,self.itemId,self.costNum = GodsWayTowerManager.GetCost(curType)
self.freeTimes,self.buyTimes = GodsWayTowerManager.GetTimeTip(curType)
self:SetIcon()
end
function GodsWaySingleSingleWave:SetIcon()
Util.SetGray(self.fight,false)
self.fightBtnRed:SetActive(false)
if self.data.wave == curFloor then
self.rewardData = self.data.firstReward
--设置扫荡按钮
self.rewardText.text = "扫荡奖励"
if self.freeTimes > 0 then
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
self.fightBtnRed:SetActive(true)
self.fightBtnText.text = string.format("<color=#%s>%s</color>","17232A","免费扫荡")
2023-03-22 14:58:19 +08:00
--self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
2023-03-20 11:22:44 +08:00
Util.SetGray(self.fight,false)
else
2023-03-22 14:58:19 +08:00
--self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02")
2023-09-06 14:43:33 +08:00
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
2023-03-20 11:22:44 +08:00
self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID))
local color = 0
LogError("self.itemId==="..self.itemId)
LogError("self.costNum=="..self.costNum)
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)
2023-09-06 14:43:33 +08:00
--.fightBtnText.text = string.format("<color=#%s>%s</color>",color,"扫荡")
2023-03-20 11:22:44 +08:00
if self.buyTimes < 1 then
Util.SetGray(self.fight,true)
end
2023-09-06 14:43:33 +08:00
self.fightBtnText.text = string.format("<color=#%s>%s</color>","17232A","已通关")
2023-03-20 11:22:44 +08:00
end
else
self.rewardData = self.data.firstReward
LogError("self.data.wave=="..self.data.wave.." floor+1=="..curFloor+1)
if self.data.wave == curFloor + 1 then
--设置挑战fight
self.fightBtnIcon.gameObject:SetActive(false)
self.fightBtnNum.gameObject:SetActive(false)
2023-03-22 14:58:19 +08:00
--self.fightBtnMask:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shouchong_anniu")
2023-03-20 11:22:44 +08:00
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 GodsWaySingleSingleWave:OnDestroy()
self.rewardList = {}
self.spLoader:Destroy()
end
function GodsWaySingleSingleWave: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 GodsWaySingleSingleWave