--活动礼包开启 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