源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

309 rader
10 KiB

ClActExchangeItem = ClActExchangeItem or BaseClass(BaseItem)
function ClActExchangeItem:__init(parent_wnd, prefab_asset, layer_name)
self.base_file = "collectingAct"
self.layout_file = "ClActExchangeItem"
self.layer_name = layer_name or "UI"
self.is_delay_callback = true
self.data = nil
self.award_item_list = {}
self.symbol_item_list = {}
self.award_vo_list = {}
self.vo = nil
self.base_type = nil
self.sub_type = nil
self.num = nil
self.kind = nil
self.model = CustomActivityModel:getInstance()
-- self.use_local_view = true
self:Load()
end
function ClActExchangeItem:Load_callback()
self.ex_btn
= GetChildGameObjects(self.transform,
{
"btnGet",
})
self.sub_con,
self.Bg
= GetChildTransforms(self.transform,
{
"subcon",
"Bg",
})
self.btn_label,
self.txt
= GetChildTexts(self.transform,
{
"btnGet/Text",
"txt",
})
self.btn_img = self:GetChild("btnGet"):GetComponent("ImageExtend")
self:InitEvent()
if self.need_refreshData then
self:SetData(self.vo, self.base_type, self.sub_type)
end
if self.need_setText then
self:SetText(self.num)
end
if self.need_refreshStr then
self:SetText2(self.str)
end
end
function ClActExchangeItem:InitEvent()
local function onClick(target)
self:ToExchange()
end
AddClickEvent(self.ex_btn,onClick)
local function onBagChange()
if self._use_delete_method then return end
self:UpdateItemData()
end
self.bag_change_event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onBagChange)
end
function ClActExchangeItem:SetData(vo, base_type, sub_type)
self.vo = vo
self.base_type = base_type
self.sub_type = sub_type
self.kind = vo.grade
if not self.is_loaded then
self.need_refreshData = true
return
end
-- local item_size = 60 --物品的大小
-- local symbol_size = 22 --符号的大小
-- local size_gap = 5 --物品和符号之间的间隔
-- local gap = 0
-- local size = 0
-- local sub_con_size = self.sub_con.sizeDelta.x
-- self.act_type = self.model:getActType(self.base_type,self.sub_type)
-- if self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then
-- -- self.Bg.sizeDelta = co.TableXY(814, 105)
-- -- self.Bg.anchoredPosition = co.TableXYZ(408, 52.5)
-- self.ex_btn.transform.sizeDelta = co.TableXY(124, 56)
-- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
-- self.sub_con.sizeDelta = co.TableXY(562, 105)
-- sub_con_size = 562
-- self.sub_con.anchoredPosition = co.TableXYZ(20, 0, 0)
-- self.txt.transform.sizeDelta = co.TableXY(160, 20)
-- self.txt.transform.anchoredPosition = co.TableXYZ(308, -35, 0)
-- gap = 28
-- size = 8
-- item_size = 70
-- size_gap = 7
-- end
self.act_type = self.model:getActType(self.base_type,self.sub_type)
if self.act_type then
if self.act_type == Config.ConfigActStatic.ActType.RUN then
-- self.ex_btn.transform.sizeDelta = co.TableXY(124, 56)
-- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
self.ex_btn.transform.anchorMin = Vector2(0.5, 0.5)
self.ex_btn.transform.anchorMax = Vector2(0.5, 0.5)
-- self.ex_btn.transform.pivot
self.ex_btn.transform.anchoredPosition = co.TableXYZ(308, 10)
self.txt.transform.sizeDelta = co.TableXY(160, 20)
self.txt.transform.anchoredPosition = co.TableXYZ(308, -35, 0)
elseif self.act_type == Config.ConfigActStatic.ActType.OPEN then
-- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
self.ex_btn.transform.anchorMin = Vector2(0.5, 0.5)
self.ex_btn.transform.anchorMax = Vector2(0.5, 0.5)
-- self.ex_btn.transform.pivot
self.ex_btn.transform.anchoredPosition = co.TableXYZ(260, 10)
end
end
if vo == nil then return end
self:SetText(nil)
-- self:SetText2("")
local const_item_list = vo.condition_list[1][2]
local len = #const_item_list
for i = 1,len do
self.award_vo_list[i] = const_item_list[i]
end
-- 下面的数值计算为 物品 符号 物品 符号...
-- (space)(item_size)(space)(symbol_size)(space)...
local item_size = 60 --物品的大小
local symbol_size = 22 --符号的大小
local space = 3 --物品和符号之间的间隔
local sub_con_size = 0
local self_size = self.transform.sizeDelta.x
local gap = 5
if self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then
space = 6
item_size = 70
self_size = 816 --手动赋值
gap = 12
end
if len > 0 then
sub_con_size = (len + 1)*(item_size + 2*space) + len*symbol_size
self.sub_con.sizeDelta = co.TableXY(sub_con_size, self.sub_con.sizeDelta.y)
local btn_size = self.ex_btn.transform.sizeDelta.x
local btn_posX = self.ex_btn.transform.anchoredPosition.x
self.sub_con.anchoredPosition = co.TableXYZ(btn_posX - btn_size/2 - gap - sub_con_size + self_size/2, self.sub_con.anchoredPosition.y, self.sub_con.anchoredPosition.z)
end
--设置+和=图
for i = 1,len do
if self.symbol_item_list[i] == nil then
self.symbol_item_list[i] = ClActSymbolImgItem.New(self.sub_con)
end
if i == len then
self.symbol_item_list[i]:SetData(2, i)
self.symbol_item_list[i]:SetAnchoredPosition(i*(item_size + 2*space) + (i - 1)*symbol_size, -36)
else
self.symbol_item_list[i]:SetData(1, i)
self.symbol_item_list[i]:SetAnchoredPosition(i*(item_size + 2*space) + (i - 1)*symbol_size, -36)
end
end
-- 加上收益item
local obtain_item_list = vo.reward_info
self.award_vo_list[len + 1] = {[2]=obtain_item_list[1].goods_id,[3]=obtain_item_list[1].goods_count} -- 最后一个为收益物品信息
len = len + 1
-- 生成物品item
local item
for i = 1,len do
item = self.award_vo_list[i]
if self.award_item_list[i] == nil then
self.award_item_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.sub_con)
self.award_item_list[i]:SetItemSize(item_size, item_size)
end
self.award_item_list[i]:SetData(tonumber(item[2]))
self.award_item_list[i]:SetPosition((i - 1)*(item_size + 2*space) + (i - 1)*symbol_size + space, -16)
end
-- --设置+和=图
-- for i = 1,len do
-- if self.symbol_item_list[i] == nil then
-- self.symbol_item_list[i] = ClActSymbolImgItem.New(self.sub_con)
-- end
-- if i == len then
-- self.symbol_item_list[i]:SetData(2, i)
-- -- local x = gap > 0 and (gap-2) or gap
-- -- self.symbol_item_list[i]:SetPosition(sub_con_size - item_size - symbol_size + x,-40)
-- self.symbol_item_list[i]:SetAnchoredPosition(sub_con_size - item_size - symbol_size - size_gap,-40)
-- else
-- self.symbol_item_list[i]:SetData(1, i)
-- -- self.symbol_item_list[i]:SetPosition(248+size-(i-2)*(90+size),-42)
-- self.symbol_item_list[i]:SetAnchoredPosition((sub_con_size - item_size - symbol_size - size_gap) - size_gap*(i+1) - i*item_size - i*symbol_size, -42)
-- end
-- end
-- -- 加上收益item
-- local obtain_item_list = vo.reward_info
-- self.award_vo_list[len + 1] = {[2]=obtain_item_list[1].goods_id,[3]=obtain_item_list[1].goods_count} -- 最后一个为收益物品信息
-- len = len + 1
-- -- 生成物品item
-- local item
-- for i = 1,len do
-- item = self.award_vo_list[i]
-- if self.award_item_list[i] == nil then
-- -- self.award_item_list[i] = ClActAwardItem.New(self.sub_con)
-- self.award_item_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.sub_con)
-- self.award_item_list[i]:SetItemSize(item_size, item_size)
-- end
-- self.award_item_list[i]:SetData(tonumber(item[2]))
-- -- if i == 1 then
-- self.award_item_list[i]:SetPosition(460+gap - (len-i)*(90+size),-16)
-- -- else
-- -- -- self.award_item_list[i]:SetPosition(542 - (len-i)*110,-16)
-- -- self.award_item_list[i]:SetPosition(560 - (len-i)*110+(i-1)*92,-16)
-- -- end
-- --[[ if i == len then
-- self.award_item_list[i]:SetPosition(632,-16)
-- else
-- self.award_item_list[i]:SetPosition(480-((len-i-1)*116),-16)
-- end--]]
-- end
self:UpdateItemData()
end
function ClActExchangeItem:SetText(num)
self.num = num
if self.is_loaded then
if num == nil then self.txt.text = "" return end
self.txt.text = "今日全服已兑: "..self.num
else
self.need_setText = true
end
end
function ClActExchangeItem:SetText2(str)
self.str = str
if self.is_loaded then
self.txt.text = self.str
else
self.need_refreshStr = true
end
end
function ClActExchangeItem:UpdateItemData()
local num = 0
local count = 0
for i=1,#self.award_vo_list do
num = GoodsModel:getInstance():GetTypeGoodsNum(tonumber(self.award_vo_list[i][2]))
self.award_item_list[i]:SetNumText2(i == #self.award_vo_list,tonumber(self.award_vo_list[i][3]),num)
if i < #self.award_vo_list and num >= tonumber(self.award_vo_list[i][3]) then
count = count + 1
end
end
-- self.btn_img.gray = (count < #self.award_vo_list - 1)
if self.model:IsJiZiMaxNumType(self.kind) and self.model:CheckJiZiIsMaxNumByGrade(self.kind) then
self.btn_img.gray = true
else
self.btn_img.gray = (count < #self.award_vo_list - 1)
end
-- local color = count < #self.award_vo_list - 1 and "#636060" or "#9A3E12"
-- self.btn_label.text = string.format("<color=%s>兑换</color>",color)
self.btn_label.text = "兑换"
end
function ClActExchangeItem:ToExchange()
if self.btn_img.gray == true then
if self.model:IsJiZiMaxNumType(self.kind) and self.model:CheckJiZiIsMaxNumByGrade(self.kind) then
Message.show("本奖励已到今日兑换上限")
return
end
Message.show("材料不足,兑换失败")
else
local exchange_id = self.vo.id
local len = #self.award_vo_list
local num = tonumber(self.award_vo_list[len][3])
--GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT,15022,exchange_id,num)
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT,33105,self.base_type,self.sub_type,self.kind)
end
end
function ClActExchangeItem:__delete()
if self.bag_change_event_id then
GoodsModel:getInstance():UnBind(self.bag_change_event_id)
self.bag_change_event_id = nil
end
for k,v in pairs(self.award_item_list) do
-- v:DeleteMe()
v:ReleaseObj()
v = nil
end
self.award_item_list = {}
for k,v in pairs(self.symbol_item_list) do
v:DeleteMe()
v = nil
end
self.symbol_item_list = {}
self.award_vo_list = {}
end