源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

267 regels
8.7 KiB

--活动礼包开启
GiftActNormalView = GiftActNormalView or BaseClass(BaseView)
local GiftActNormalView = GiftActNormalView
function GiftActNormalView:__init()
self.base_file = "gift"
self.layout_file = "GiftActNormalView"
self.layer_name = "Activity"
--self.use_local_view = true
self.click_bg_toClose = true
self.destroy_imm = true
self.use_background = true
self.is_set_zdepth = true
self.close_mode = CloseMode.CloseDestroy
self.model = GiftModel:getInstance()
self.delay_time = 10
self.col_num = 5 -- 奖励展示的行展示数
self.max_num = 10
self.item_list = {}
self.name_item_list = {}
self.load_callback = function ()
self:LoadSuccess()
self:addEvents()
end
self.open_callback = function ()
self:UpdateView()
end
self.close_callback = function ()
end
self.destroy_callback = function ()
self:DestroySuccess()
end
end
function GiftActNormalView:Open(show_goods_list,only_read_goods_type_id)
self.show_goods_list = show_goods_list
self.only_read_goods_type_id = only_read_goods_type_id
BaseView.Open(self)
end
function GiftActNormalView:DestroySuccess()
if self.award_timer_id then
GlobalTimerQuest:CancelQuest(self.award_timer_id)
self.award_timer_id = nil
end
if self.timer_id then
GlobalTimerQuest:CancelQuest(self.timer_id)
self.timer_id = nil
end
for i,item in pairs(self.item_list) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
end
self.item_list = {}
for k,v in pairs(self.name_item_list) do
v:DeleteMe()
v = nil
end
self.name_item_list = {}
end
function GiftActNormalView:LoadSuccess()
local nodes = {
"bg:raw", "titlebg:img", "mask_bg:obj",
"time_text:tmp", "awardScroll:obj", "awardScroll/Viewport/awardCon", "awardNCon:obj",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("com_act_reward_result_bg"), false)
lua_resM:setOutsideImageSprite(self, self.titlebg_img, GameResPath.GetCommonImage("com_act_reward_title_bg"),false)
end
function GiftActNormalView:addEvents()
local function click_func(target)
if target == self.mask_bg_obj then
self:Close()
end
end
AddClickEvent(self.mask_bg_obj, click_func)
end
function GiftActNormalView:UpdateView()
local item_list = self.show_goods_list or {}
if #item_list <= 5 then--带名字的道具
self:UpdateNameItemList()
else
self:UpdateItemList()
end
end
function GiftActNormalView:UpdateTime( )
local time = self.delay_time
local function countDown()
if self._use_delete_method then return end
time = time - 1
if time > 0 then
self.time_text_tmp.text = string.format("点击任意区域关闭 (%s)",HtmlColorTxt(time.."s",ColorUtil.GREEN_DARK))
else
self:Close()
end
end
countDown()
if not self.timer_id then
self.timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
end
end
function GiftActNormalView:UpdateNameItemList( )
for k,v in pairs(self.name_item_list) do
v:SetVisible(false,nil,true)
end
local item_list = self.show_goods_list or {}
local new_list = {}
for k,v in pairs(item_list) do
local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(v[2])
if goods_vo then
v.sort_id = goods_vo.color * 10000000000000 + goods_vo.type_id
if v.type == GoodsModel.TYPE.EQUIP then--装备+100W
v.sort_id = v.sort_id + 10000000
end
new_list[#new_list + 1] = v
end
end
local sort_func = function ( a, b )
return a.sort_id > b.sort_id
end
table.sort(new_list, sort_func)
item_list = new_list
if not item_list or TableSize(item_list) == 0 then return end
local len = #item_list
self.parent_con = self.awardNCon
self.awardScroll_obj:SetActive(false)
self.awardNCon_obj:SetActive(true)
local x = 0
local y = 0
for i, v in ipairs(item_list) do
local item = self.name_item_list[i]
if item == nil then
item = GiftActNormalItem.New(self.parent_con,nil,self.layer_name)
self.name_item_list[i] = item
end
item:SetData(i,v,self.only_read_goods_type_id)
item:SetVisible(false,nil,true)
end
local index = 0
local function countDown()
index = index + 1
if len >= index then
if self.name_item_list[index] then
self.name_item_list[index]:SetVisible(true,nil,true)
end
else
if self.award_timer_id then
GlobalTimerQuest:CancelQuest(self.award_timer_id)
self.award_timer_id = nil
end
self:UpdateTime()
end
end
if not self.award_timer_id then
self.award_timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,0.15)
end
end
function GiftActNormalView:UpdateItemList( )
for k,v in pairs(self.item_list) do
v:SetVisible(false,nil,true)
end
local item_list = self.show_goods_list or {}
local new_list = {}
for k,v in pairs(item_list) do
local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(v[2])
if goods_vo then
v.sort_id = goods_vo.color * 10000000000000 + goods_vo.type_id
if v.type == GoodsModel.TYPE.EQUIP then--装备+100W
v.sort_id = v.sort_id + 10000000
end
new_list[#new_list + 1] = v
end
end
local sort_func = function ( a, b )
return a.sort_id > b.sort_id
end
table.sort(new_list, sort_func)
item_list = new_list
if not item_list or TableSize(item_list) == 0 then return end
local len = #item_list
--如果比最大高度要高 那就只能滚动了
local space_x = 30
local space_y = 20
local item_height = 78
self.parent_con = self.awardCon
self.awardNCon_obj:SetActive(false)
self.awardScroll_obj:SetActive(true)
local x = 0
local y = 0
for i, v in ipairs(item_list) do
local item = self.item_list[i]
if item == nil then
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.parent_con)
item.resetTransform = true
item:SetItemSize(78,78)
self.item_list[i] = item
end
if not self.only_read_goods_type_id then
local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
local stren_data = nil
if goodVo then
item:SetData(goods_Id, v[3], nil, stren_data, lock,true,nil)
else
-- error("没有找到物品信息 "..v.typeId)
end
else--如果物品格式第一个数字不是按照物品类型来的,那就直接展示物品
item:SetData(v[2], v[3])
end
item:SetVisible(false,nil,true)
x = (78+41.5)*((i-1)%self.col_num)
y = -(78+20)*math.floor((i-1)/self.col_num)
item:SetPosition(x,y)
if v[4] then
item:SetNumLimitVisible( true, v[4])
end
end
local max_height = (78+20) * math.ceil(len/self.col_num) + 100--最大高度限制10行
SetSizeDeltaY(self.awardCon,max_height)
local index = 0
local function countDown()
index = index + 1
if len >= index then
if self.item_list[index] then
self.item_list[index]:SetVisible(true,nil,true)
end
-- if index%self.col_num == 0 and index ~= 0 and index > self.col_num then
-- SetAnchoredPositionY(self.awardCon,(78+20)*math.floor(index/self.col_num))
-- print("huangcong:GiftActNormalView [start:244] :", math.floor(index/self.col_num),index)
-- end
if index >= self.max_num then
local pos_y = (math.ceil((index - self.max_num) / self.col_num) )* (item_height + space_y)
if self.pos_id then
TweenLite.Stop(self.pos_id)
self.pos_id = nil
end
self.pos_id = TweenLite.to(self, self.parent_con, TweenLite.UiAnimationType.ANCHORED_POSY, pos_y, 0.15, callback)
end
else
if self.award_timer_id then
GlobalTimerQuest:CancelQuest(self.award_timer_id)
self.award_timer_id = nil
end
self:UpdateTime()
end
end
if not self.award_timer_id then
self.award_timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,0.15)
end
end