sk-client/Assets/ManagedResources/~Lua/Modules/Expert/Deployment.lua

248 lines
8.4 KiB
Lua

local Deployment = quick_class("Deployment")
local this = Deployment
local WordExchangeConfig = ConfigManager.GetConfig(ConfigName.WordExchangeConfig)
local itemsGrid = {}--item重复利用
local itemsGridRight = {}--item重复利用
local limitBuyType={[0]="不限购",[1]="每日限购%s次",[2]="永久限购%s次"}
local items={}--道具预制
function Deployment:ctor(mainPanel, gameObject)
self.mainPanel = mainPanel
self.gameObject = gameObject
self:InitComponent(gameObject)
self:BindEvent()
end
--初始化组件(用于子类重写)
function Deployment:InitComponent(gameObject)
this.item = Util.GetGameObject(gameObject, "item")
this.costList = Util.GetGameObject(gameObject, "itemList")
this.rewardPre = Util.GetGameObject(gameObject, "rewardPre")
this.rect = Util.GetGameObject(gameObject, "rect")
local rootHight = this.rect.transform.rect.height
local width = this.rect.transform.rect.width
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.rect.transform,
this.rewardPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 10))
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 2
end
--绑定事件(用于子类重写)
function Deployment:BindEvent()
end
--添加事件监听(用于子类重写)
function Deployment:AddListener()
end
--移除事件监听(用于子类重写)
function Deployment:RemoveListener()
end
--界面打开时调用(用于子类重写)
function Deployment:OnOpen()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function Deployment:OnShow()
Deployment:OnShowData()
end
function Deployment:OnSortingOrderChange()
end
function Deployment:OnShowData()
--军备调配数据
local data=this.InitDynamicActData()
this.ScrollView:SetData(data, function (index, go)
this.SingleDataShow(go, data[index])
end)
this.costAllList={}
for i = 1, #this.itemList do
local costList=ConfigManager.GetConfigData(ConfigName.GlobalActivity,this.itemList[i].activityId)
for i = 1, #costList.CostItem do
table.insert(this.costAllList,costList.CostItem[i])
end
end
for i = 1, #this.costAllList do
if items[i] then
items[i]:SetActive(true)
else
local go = newObject(this.item)
go.transform:SetParent(this.costList.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition = Vector3.zero
go:SetActive(true)
items[i]=go
end
local showData=this.costAllList[i]
Util.GetGameObject(items[i],"Icon"):GetComponent("Image").sprite=Util.LoadSprite(GetResourcePath(G_ItemConfig[showData].ResourceID))
Util.GetGameObject(items[i],"Num"):GetComponent("Text").text=BagManager.GetItemCountById(showData)
end
-- local h=this.rect.transform.rect.height
-- local w=this.rect.transform.rect.width
-- this.ScrollView:SetScrollRect(Vector2.New(w, h))
end
--界面关闭时调用(用于子类重写)
function Deployment:OnClose()
end
--界面销毁时调用(用于子类重写)
function Deployment:OnDestroy()
items={}
end
function this.InitDynamicActData()
local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.Deployment)
if (not id) or id < 1 then
return nil
end
local idList={}
local data= ConfigManager.GetAllConfigsDataByKey("GlobalActivity","Type",ActivityTypeDef.Deployment)
for i = 1, #data do
table.insert(idList,data[i].Id)
end
this.itemList={}
for k,v in ipairs(idList) do
local data=ActivityGiftManager.GetActivityInfoByType(v)
if data~=nil then
table.insert(this.itemList,data)
end
end
this.allData = {}
for i = 1, #this.itemList do
-- local deploymentData=ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Deployment)
--军备调配活动Data
local deploymentData=this.itemList[i]
for i=1,#deploymentData.mission do
local itemData= WordExchangeConfig[deploymentData.mission[i].missionId]
local data = {}
data.id = deploymentData.mission[i].missionId--活动id
data.actId=deploymentData.activityId
data.progress = deploymentData.mission[i].progress
data.state = deploymentData.mission[i].state
data.type = ActivityTypeDef.Deployment --活动状态
data.reward = {itemData.RewardItem[1][1],itemData.RewardItem[1][2]}
data.configData=itemData
table.insert(this.allData,data)
end
end
table.sort(this.allData,function (a,b)
return a.id<b.id
end)
return this.allData
end
--刷新每一条的显示数据
function this.SingleDataShow(go, data)
local contentLeft = Util.GetGameObject(go, "contentLeft/content")
local contentRight = Util.GetGameObject(go, "contentRight")
local canBuyNum = Util.GetGameObject(go, "grid/canBuyNum")
local arleadyBuyNum = Util.GetGameObject(go, "grid/arleadyBuyNum")
local conversionBtn = Util.GetGameObject(go,"grid/conversionBtn")
--右边数据
if itemsGrid[go] then
for i = 1, #itemsGrid[go] do
itemsGrid[go][i].gameObject:SetActive(false)
end
for i = 1, #data.configData.DeductItem do
local showData=data.configData.DeductItem[i]
if itemsGrid[go][i] then
itemsGrid[go][i]:OnOpen(false, {showData[1],showData[2]}, 1,false,false,false)
itemsGrid[go][i].gameObject:SetActive(true)
end
end
else
itemsGrid[go]={}
for i = 1, 5 do
itemsGrid[go][i] = SubUIManager.Open(SubUIConfig.ItemView, contentLeft.transform)
itemsGrid[go][i].gameObject:SetActive(false)
local obj= newObjToParent(itemsGrid[go][i].gameObject,itemsGrid[go][i].transform)
obj.transform:SetAsFirstSibling()
obj.transform:DOAnchorPos(Vector3(0,-3,0),0)
obj:GetComponent("RectTransform").transform.localScale=Vector3.one*1.1
obj.gameObject:SetActive(false)
end
for i = 1, #data.configData.DeductItem do
local showData=data.configData.DeductItem[i]
if itemsGrid[go][i] then
itemsGrid[go][i]:OnOpen(false, {showData[1],showData[2]}, 1,false,false,false)
itemsGrid[go][i].gameObject:SetActive(true)
end
end
end
--左边数据
if itemsGridRight[go] then
itemsGridRight[go]:OnOpen(false, data.reward, 1,false,false,false)
itemsGridRight[go].gameObject:SetActive(true)
else
itemsGridRight[go] = SubUIManager.Open(SubUIConfig.ItemView, contentRight.transform)
itemsGridRight[go].gameObject:SetActive(true)
itemsGridRight[go]:OnOpen(false, data.reward, 1,false,false,false)
end
-- if data.configData.LimitBuyNum==0 then
-- canBuyNum:SetActive(false)
-- arleadyBuyNum:SetActive(false)
-- else
-- canBuyNum:SetActive(true)
arleadyBuyNum:SetActive(true)
if data.configData.LimitBuyType==0 then
canBuyNum:GetComponent("Text").text=limitBuyType[data.configData.LimitBuyType]
arleadyBuyNum:SetActive(false)
else
canBuyNum:GetComponent("Text").text=string.format( limitBuyType[data.configData.LimitBuyType],data.configData.LimitBuyNum)
arleadyBuyNum:GetComponent("Text").text=string.format("(%s/%s)",data.progress,data.configData.LimitBuyNum) --已购买次数
end
-- end
Util.AddOnceClick(conversionBtn, function()
--限购次数
if data.state==1 then
PopupTipPanel.ShowTip("不可兑换")
return
end
for i = 1, #data.configData.DeductItem do
local showData=data.configData.DeductItem[i]
if BagManager.GetItemCountById(showData[1])<showData[2] then
PopupTipPanel.ShowTip("道具集齐不足")
return
end
end
NetManager.GetActivityRewardRequest(data.id, data.actId, function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1)
--刷新问题
Deployment:OnShowData()
end)
end)
end
return Deployment