miduo_client/Assets/ManagedResources/~Lua/Modules/Popup/View/GeneralBigPopup_GiveLikeHot...

298 lines
11 KiB
Lua

----- 送神弹窗 -----
local this = {}
--传入父脚本模块
local parent
--传入特效层级
local sortingOrder=0
local heros=nil
local confirmFunc=nil
local currPro=0
local curPage = 1
local type=1
local curZanId=0
local fiveHero={}
local newHeroId=0
local heroConfig=ConfigManager.GetConfig(ConfigName.HeroConfig)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
local artResourcesConfig =ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local hotRankConfig=ConfigManager.GetConfig(ConfigName.HotRanking)
local specialConfig=ConfigManager.GetConfigData(ConfigName.SpecialConfig,152)
local TabBox = require("Modules/Common/TabBox")
local _TabData={
-- [1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "人气热榜" },
-- [2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "山河社稷图" },
-- [3] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "心魔试炼" },
-- [4] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "大闹天宫" },
}
local _TabFontColor = { default = Color.New(255 / 255, 255 / 255, 255 / 255, 1),
select = Color.New(255 / 255, 255 / 255, 255 / 255, 1)}
function this:InitComponent(gameObject)
this.spLoader = SpriteLoader.New()
this.titleText=Util.GetGameObject(gameObject,"TitleText"):GetComponent("Text")
this.prefab=Util.GetGameObject(gameObject,"ItemPre")
--滚动条根节点
this.newObj=Util.GetGameObject(gameObject,"new")
this.root = Util.GetGameObject(gameObject, "Root")
this.root2 = Util.GetGameObject(gameObject, "Root2")
this.preList={}
this.tabbox= Util.GetGameObject(gameObject, "TabBox")
local natural=tonumber(specialConfig.Value)
for _, config in ConfigPairs(heroConfig) do
if config.Natural>=natural and config.Id~=21061 and config.Hide==0 and config.Newhero==0 then
table.insert(fiveHero,config.Id)
end
if config.Newhero==1 then
newHeroId=config.Id
end
end
local parObj=nil
if newHeroId==0 then
parObj=this.root2
this.newObj:SetActive(false)
else
parObj=this.root
this.newObj:SetActive(true)
end
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, parObj.transform,
this.prefab,nil, Vector2.New(parObj.transform.rect.width,parObj.transform.rect.height), 1, 1,Vector2.New(20,10))
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 2
this.ScrollView.elastic = false
this.selectBar = Util.GetGameObject(gameObject,"pros/Grid")
this.light = Util.GetGameObject(gameObject,"pros/SelectBtn")
this.light:SetActive(true)
this.newIcon=Util.GetGameObject(gameObject,"new/icon"):GetComponent("Image")
this.newPro=Util.GetGameObject(gameObject,"new/pro"):GetComponent("Image")
this.newName=Util.GetGameObject(gameObject,"new/name"):GetComponent("Text")
this.des1=Util.GetGameObject(gameObject,"new/des1"):GetComponent("Text")
this.des2=Util.GetGameObject(gameObject,"new/des2"):GetComponent("Text")
this.hint=Util.GetGameObject(gameObject,"new/hint"):GetComponent("Text")
this.btnList = {}
for i = 1, 6 do
this.btnList[i] = Util.GetGameObject(this.selectBar,"Btn"..i)
end
for index, config in ConfigPairs(hotRankConfig) do
if config.Open==1 then
local rank={}
rank.default="UI_hz_gonghui_19"
rank.select="UI_hz_gonghui_18"
rank.name=config.HeroID
rank.id=config.Id
table.insert(_TabData,rank)
end
end
this.TabCtrl = TabBox.New()
this.TabCtrl:SetTabAdapter(this.TabAdapter)
this.TabCtrl:SetChangeTabCallBack(this.SwitchView)
this.TabCtrl:Init(this.tabbox, _TabData)
end
function this:BindEvent()
-- LogError("1111111111111111")
for i = 1, 6 do
Util.AddClick(this.btnList[i],function()
if curPage ~= i then
this:Refresh(i)
end
end)
end
end
-- tab节点显示自定义
function this.TabAdapter(tab, index, status)
local tabLab = Util.GetGameObject(tab, "Text")
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
Util.GetGameObject(tab,"Image"):GetComponent("Image"):SetNativeSize()
tabLab:GetComponent("Text").text = _TabData[index].name
tabLab:GetComponent("Text").color = _TabFontColor[status]
end
local allHeros={}
--切换视图
function this.SwitchView(index)
--先执行上一面板关闭逻辑
--local oldSelect
--oldSelect, curIndex = curIndex, index
-- for i = 1, #this.contents do
-- if oldSelect~=0 then this.contents[oldSelect].view:OnClose() break end
-- end
--切换预设显隐
-- for i = 1, #this.prefabs do
-- this.prefabs[i].gameObject:SetActive(i == index)--切换子模块预设显隐
-- end
type=_TabData[index].id
NetManager.UserLikeHeroRankRequest(type,function(msg1)
if msg1.heroTid and #msg1.heroTid>0 then
LogError("msg1.heroTid len=="..#msg1.heroTid)
curZanId=msg1.heroTid[1]
else
curZanId=0
end
NetManager.RequestRankInfo(RANK_TYPE.HotHero,function(msg)
LogError("发送请求--------------"..index.." id==".._TabData[index].id)
allHeros={}
local ids={}
for i = 1, #msg.ranks do
local heroId=msg.ranks[i].rankInfo.param1
--LogError("i=="..i.." heroid=="..heroId)
table.insert(ids,heroId)
if heroConfig[heroId]~=nil then
table.insert(allHeros,{id=heroId,power=msg.ranks[i].rankInfo.param2,pro=heroConfig[heroId].PropertyName})
end
end
for i = 1, #fiveHero do
if not BattleUtil.ChecklistIsContainValue(ids,fiveHero[i]) then
--LogError("fiveHero[i]=="..fiveHero[i])
table.insert(allHeros,{id=fiveHero[i],power=0,pro=heroConfig[fiveHero[i]].PropertyName})
end
end
--this:ShowHeroList(0)
this:Refresh(1)
end,_TabData[index].id,1,1)
end)
--执行子模块初始化
-- this.contents[index].view:OnShow(this)
end
local list={}
function this:ShowHeroList(_pro)
if not allHeros then
return
end
list={}
if _pro==0 then
list=allHeros
else
for key, value in pairs(allHeros) do
if value.pro==_pro then
table.insert(list,value)
end
end
end
this.ScrollView:SetData(list, function(index, go)
this.SingleHeroDataShow(go,list[index],index)
end)
end
function this:AddListener()
end
function this:RemoveListener()
end
function this:OnShow(_parent,_args)
if this.TabCtrl then
this.TabCtrl:ChangeTab(1)
end
this.titleText.text = "神将热榜"
parent=_parent
sortingOrder =_parent.sortingOrder
if newHeroId~=0 then
this.newObj:SetActive(true)
local newHeroConfig=heroConfig[newHeroId]
this.des1.text=newHeroConfig.HeroLocation
this.des2.text=newHeroConfig.HeroLocationDesc1
this.newPro.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(newHeroConfig.PropertyName))
this.newName.text = newHeroConfig.ReadingName
this.newIcon.sprite = this.spLoader:LoadSprite(artResourcesConfig[newHeroConfig.Icon].Name)
this.hint.text="即将上线,敬请期待"
Util.AddOnceClick(this.newIcon.gameObject,function()
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, newHeroConfig.Id, newHeroConfig.MaxRank)
end)
end
PlayerPrefs.SetInt(PlayerManager.uid.."hotRank",1)
end
function this:Refresh(_page)
curPage = _page
LogError("curpage=="..curPage)
currPro=curPage-1
this.light.transform:SetParent(this.btnList[_page].transform)
Util.GetGameObject(this.light,"Text"):GetComponent("Text").text=Util.GetGameObject(this.btnList[_page],"Text"):GetComponent("Text").text
this.light.transform.localPosition = Vector3.zero
this.light.transform.localScale = Vector3.one
this:ShowHeroList(currPro)
end
--英雄单个数据展示
function this.SingleHeroDataShow(go,_heroData,_index)
local heroData = _heroData
local config=heroConfig[heroData.id]
--LogError("herodata id=="..heroData.id)
local _go = go
-- _go.gameObject:SetActive(true)
-- local frame = Util.GetGameObject(_go.transform, "frame"):GetComponent("Image")
local name = Util.GetGameObject(_go.transform, "Name"):GetComponent("Text")
local icon = Util.GetGameObject(_go.transform, "hero"):GetComponent("Image")
local rankImg=Util.GetGameObject(_go.transform, "rankImg"):GetComponent("Image")
local rank=Util.GetGameObject(_go.transform, "rank"):GetComponent("Text")
local proIcon = Util.GetGameObject(_go.transform, "pro"):GetComponent("Image")
local desc=Util.GetGameObject(_go.transform, "Desc"):GetComponent("Text")
desc.text=config.HeroLocation
local desc2=Util.GetGameObject(_go.transform, "Desc2"):GetComponent("Text")
local hot=Util.GetGameObject(_go.transform, "hot")
hot:SetActive(false)
local btn_zan=Util.GetGameObject(_go.transform, "btn_zan")
local numTxt=Util.GetGameObject(_go.transform, "numTxt"):GetComponent("Text")
numTxt.text=PrintWanNum(heroData.power)
desc2.text=config.HeroLocationDesc1
proIcon.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(config.PropertyName))
name.text = config.ReadingName
icon.sprite = this.spLoader:LoadSprite(artResourcesConfig[config.Icon].Name)
if _index<4 then
rankImg.sprite=this.spLoader:LoadSprite("r_Dungeon_00".._index)
rank.gameObject:SetActive(false)
else
rankImg.sprite=this.spLoader:LoadSprite("r_hero_zhuangbeidi")
rank.gameObject:SetActive(true)
end
rank.text=_index
Util.SetGray(btn_zan,curZanId~=0)
Util.AddOnceClick(icon.gameObject, function()
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, config.Id, config.MaxRank)
--UIManager.OpenPanel(UIName.RoleInfoPopup, false, heroData)
end)
Util.AddOnceClick(btn_zan, function()
if curZanId~=0 then
return
end
NetManager.LikeHeroRankRequest(type,heroData.id,function()
heroData.power=heroData.power+1
numTxt.text=PrintWanNum(heroData.power)
curZanId=heroData.id
this.ScrollView:SetData(list, function(index, go)
this.SingleHeroDataShow(go,list[index],index)
end)
this.ScrollView:SetIndex(_index)
end)
end)
end
function this:OnClose()
curZanId=0
heros=nil
CheckRedPointStatus(RedPointType.HotRank)
end
function this:OnDestroy()
this.spLoader:Destroy()
this.choosedList = {}
this.btnList = {}
_TabData={}
fiveHero={}
end
return this