--通用奖励结算界面
|
|
ComAwardResultView = ComAwardResultView or BaseClass(BaseView)
|
|
local ComAwardResultView = ComAwardResultView
|
|
|
|
function ComAwardResultView:__init()
|
|
self.base_file = "uiComponent"
|
|
self.layout_file = "ComAwardResultView"
|
|
self.layer_name = "Top"
|
|
self.destroy_imm = true
|
|
self.use_background = true
|
|
self.hide_maincancas = true --全屏界面需要放开隐藏主UI
|
|
self.change_scene_close = true
|
|
self.append_to_ctl_queue = false --是否要添加进界面堆栈
|
|
self.need_show_money = false --是否要显示顶部的金钱栏
|
|
self.model = GuildModel:getInstance()
|
|
self.base_height = 155
|
|
self.delay_time = 15
|
|
self.col_num = 5 -- 奖励展示的行展示数
|
|
self.max_num = 25
|
|
self.item_list = {}
|
|
self.is_set_zdepth = true --是否设置z深度,当需要盖住下层的UI界面上的模型时,要设true
|
|
self.jump_close = true --用于某些界面跳转了之后就需要关掉界面
|
|
ItemUseModel:getInstance():HideItemUseView( )
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:OpenSuccess()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function ComAwardResultView:DestroySuccess()
|
|
if self.pos_id then
|
|
TweenLite.Stop(self.pos_id)
|
|
self.pos_id = nil
|
|
end
|
|
|
|
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 = {}
|
|
|
|
ItemUseModel:getInstance():ShowItemUseView( )
|
|
end
|
|
|
|
function ComAwardResultView:LoadSuccess()
|
|
local nodes = {
|
|
"bg/titlebg:img", "bg/scroll_mask:obj",
|
|
"bg:img", "bg/time_text:tmp", "bg/award_con:obj",
|
|
"mask_bg:obj","bg/close_btn:obj",
|
|
"bg/award_scroll:obj", "bg/award_scroll/Viewport/award_scroll_con",
|
|
}
|
|
self:GetChildren(nodes)
|
|
|
|
lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCommonImage("com_award_result_view_new_bg"),false)
|
|
lua_resM:setOutsideImageSprite(self, self.titlebg_img, GameResPath.GetCommonImage("com_award_result_view_new_title"),false)
|
|
-- local function onDelay()
|
|
-- local function end_call_func( ... )
|
|
-- if self.effect_forever then
|
|
-- self:AddUIEffect("getgoods_02",self.effect_forever, self.layer_name, nil, 1, true,nil,nil,nil)
|
|
-- end
|
|
-- end
|
|
-- self:AddUIEffect("getgoods_01",self.effect, self.layer_name, nil, 1, false,nil,nil,end_call_func)
|
|
-- end
|
|
-- self.slow_effect_id = GlobalTimerQuest:AddDelayQuest(onDelay, 0.1)
|
|
|
|
if self.need_refreshData then
|
|
self:UpdateView( )
|
|
end
|
|
end
|
|
|
|
function ComAwardResultView:AddEvent()
|
|
local function onBtnClickHandler(target,x,y)
|
|
if target == self.mask_bg_obj or self.close_btn_obj then--关闭
|
|
self:BtnCloseEvt()
|
|
end
|
|
end
|
|
AddClickEvent(self.mask_bg_obj,onBtnClickHandler)
|
|
AddClickEvent(self.close_btn_obj,onBtnClickHandler)
|
|
end
|
|
|
|
--data.delay_time--关闭时间
|
|
--data.title_res--标题资源
|
|
--data.title_ab_name--标题资源ab包路径
|
|
--data.award = {kind,type_id,goods_num,goods_vo}
|
|
--data.col_num = 6 -- 每行展示的个数
|
|
function ComAwardResultView:Open( data )
|
|
data.col_num = 5--限定5了 不能改
|
|
self.data = data
|
|
self.delay_time = self.data and self.data.delay_time or self.delay_time
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function ComAwardResultView:OpenSuccess( )
|
|
self:UpdateView()
|
|
end
|
|
|
|
function ComAwardResultView:UpdateView( data )
|
|
self.data = data or self.data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
else
|
|
self.need_refreshData = true
|
|
return
|
|
end
|
|
if not self.data then return end
|
|
if data then--有新数据 就重置
|
|
self:Reset()
|
|
end
|
|
self:UpdateItemList()
|
|
-- self:UpdateTime()
|
|
if self.data.title_res then
|
|
lua_resM:setOutsideImageSprite(self, self.titlebg_img, GameResPath.GetCommonImage(self.data.title_res),false)
|
|
end
|
|
end
|
|
|
|
function ComAwardResultView:Reset( )
|
|
if self.pos_id then
|
|
TweenLite.Stop(self.pos_id)
|
|
self.pos_id = nil
|
|
end
|
|
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
|
|
if self.data then
|
|
self.data.col_num = 5--限定5了 不能改
|
|
self.delay_time = self.data.delay_time or self.delay_time
|
|
end
|
|
SetSizeDeltaY(self.award_scroll, self.base_height)
|
|
end
|
|
|
|
function ComAwardResultView:BtnCloseEvt()--关闭按钮回调
|
|
if self.data and self.data.close_callback then
|
|
self.data.close_callback()
|
|
end
|
|
self:Close()
|
|
end
|
|
|
|
function ComAwardResultView:UpdateItemList( )
|
|
for k,v in pairs(self.item_list) do
|
|
v:SetVisible(false,nil,true)
|
|
end
|
|
self.col_num = self.data.col_num or self.col_num
|
|
local item_list = self.data.award
|
|
if not item_list or TableSize(item_list) == 0 then return end
|
|
local len = #item_list
|
|
self.parent_con = self.award_scroll_con
|
|
self.award_scroll_obj:SetActive(true)
|
|
--如果比最大高度要高 那就只能滚动了
|
|
local offer_x = 4
|
|
local offer_y = 0
|
|
local space_x = 8
|
|
local space_y = 8
|
|
local item_height = 78
|
|
if len > self.max_num then
|
|
self.parent_con = self.award_scroll_con
|
|
self.award_con_obj:SetActive(false)
|
|
SetSizeDeltaY(self.award_scroll, (item_height + space_y) * math.ceil(self.max_num/self.col_num))
|
|
end
|
|
local max_height = (item_height + space_y) * (math.ceil(self.max_num/self.col_num)-1)--最大高度限制5行
|
|
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:SetItemSize(78,78)
|
|
item:SetGoodsVo(v[4])
|
|
self.item_list[i] = item
|
|
end
|
|
local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
|
|
local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
|
|
local stren_data = nil
|
|
if v[4] then
|
|
stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(v[4])
|
|
stren_data.equip_key = "EquipView"
|
|
end
|
|
if not v.is_mul then--副本多倍
|
|
if v.is_rare == 2 then
|
|
item:SetNumLimitVisible(true,12)
|
|
elseif v.is_rare == 1 then
|
|
item:SetNumLimitVisible(true,13)
|
|
end
|
|
else
|
|
item:SetNumLimitVisible(v.is_mul ~= nil ,15)
|
|
end
|
|
if goodVo then
|
|
item:SetData(goods_Id, v[3], goodVo.color, stren_data, lock,true,nil)
|
|
else
|
|
-- error("没有找到物品信息 "..v.typeId)
|
|
end
|
|
item:SetVisible(false,nil,true)
|
|
end
|
|
|
|
if not self.data.not_show_anim then
|
|
self.scroll_mask_obj:SetActive(true)
|
|
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)
|
|
local height = (item_height + space_y) * (math.ceil(index/self.col_num) - 1)
|
|
height = height >= max_height and max_height or height
|
|
SetSizeDeltaY(self.bg, self.base_height + height)
|
|
if index > self.max_num then
|
|
SetSizeDeltaY(self.award_scroll, (item_height + space_y) * math.ceil(self.max_num/self.col_num))
|
|
else
|
|
SetSizeDeltaY(self.award_scroll, (item_height + space_y) * math.ceil(index/self.col_num))
|
|
end
|
|
SetSizeDeltaY(self.parent_con, (item_height + space_y) * math.ceil(index/self.col_num))
|
|
--如果大于了就得滚动
|
|
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
|
|
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
|
|
else
|
|
if self.award_timer_id then
|
|
GlobalTimerQuest:CancelQuest(self.award_timer_id)
|
|
self.award_timer_id = nil
|
|
end
|
|
for k,v in pairs(self.item_list) do
|
|
v:SetVisible(true,nil,true)
|
|
end
|
|
end
|
|
end
|
|
|
|
function ComAwardResultView: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 = (self.data.time_des or "点击任意处继续")..HtmlColorTxt("("..time.."s)", "#31e056")
|
|
else
|
|
self:Close()
|
|
end
|
|
end
|
|
countDown()
|
|
if not self.timer_id then
|
|
self.timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
|
|
end
|
|
end
|