|
-- <*
|
|
-- @Author: huangcong
|
|
-- @Description: 公会竞速称号变化的弹出提示界面
|
|
-- *>
|
|
AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView or BaseClass(BaseView)
|
|
local AchieveGuildSpeedTipsView = AchieveGuildSpeedTipsView
|
|
|
|
function AchieveGuildSpeedTipsView:__init()
|
|
self.base_file = "achievement"
|
|
self.layout_file = "AchieveGuildSpeedTipsView"
|
|
self.layer_name = "Main"
|
|
self.destroy_imm = true
|
|
self.use_background = false --全屏界面默认使用这个参数
|
|
self.change_scene_close = true
|
|
self.is_animating = false -- 是否在动画中
|
|
|
|
self.hide_time = 100 -- n秒后播放界面隐藏动画
|
|
self.awardItem_list = {}
|
|
self.receive_flag = nil -- 读取完界面数据后,用于发送领取协议的关键键值
|
|
self.model = AchieveModel:getInstance()
|
|
self.model.tip_view_show = true
|
|
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 AchieveGuildSpeedTipsView:Open(data)
|
|
self.data = data
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
--重用界面,5秒后再销毁
|
|
function AchieveGuildSpeedTipsView:ResetViewInfo(data)
|
|
self.data = data
|
|
self.transform.anchoredPosition = Vector2(-3.5, 61.5)
|
|
self.receive_flag = nil
|
|
self.gameObject:SetActive(true)
|
|
|
|
if self.delay_closeview_id then
|
|
TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id)
|
|
self.delay_closeview_id = nil
|
|
end
|
|
self:UpdateView() -- 更新数据
|
|
self:StartCloseTimer() -- 开始对界面的关闭进行计时
|
|
self:OpenAnimation() -- 播放打开界面的动画
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:LoadSuccess()
|
|
local nodes = {
|
|
"bg:img",
|
|
-- 成就完成弹窗相关
|
|
"achieve_tip:obj",
|
|
"achieve_tip/achi_receive_btn:obj", -- 成就领取按钮
|
|
"achieve_tip/achi_desc:tmp", "achieve_tip/achi_name:tmp", -- 成就信息
|
|
-- 章节完成弹窗相关
|
|
-- 其他
|
|
"close_timer:tmp", "designImg:img",--称号容器
|
|
"closeBtn:obj", "designationText:tmp",
|
|
}
|
|
self:GetChildren(nodes)
|
|
lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetViewBigBg("guildSpeedAct_tip_bg"), true)
|
|
self.canvasGroup = self.gameObject:GetComponent("CanvasGroup")
|
|
self.transform.anchoredPosition = Vector2(0, 360)
|
|
self.achi_name_tmp.text = "获得称号"
|
|
self.achieve_tip_obj:SetActive(true)
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:AddEvent()
|
|
local function click_event(target)
|
|
self:ClearHideTimer()
|
|
self:AutoCloseFunc()
|
|
end
|
|
AddClickEvent(self.achi_receive_btn_obj, click_event)
|
|
AddClickEvent(self.closeBtn_obj, click_event)
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:OpenSuccess()
|
|
self:UpdateView()
|
|
self:StartCloseTimer()
|
|
self:OpenAnimation() -- 播放打开界面的动画
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:UpdateView()
|
|
if self.data.rank and self.data.goods_id then
|
|
local goods_name = GoodsModel:getInstance():getGoodsName(self.data.goods_id, true)
|
|
self.achi_desc_tmp.text = string.format("获得社团竞榜排名第%s名\n激活称号 %s",self.data.rank,goods_name)
|
|
self:UpdateDesignShow(self.data.goods_id,self.designImg,self.designImg_img,self.designationText_tmp)
|
|
end
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:UpdateDesignShow( goods_id,designation_image,designation_image_img,designation_text_tmp )
|
|
if not goods_id then return end
|
|
local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(goods_id)
|
|
local dsgt_cfg = Config.Dsgt
|
|
local power = DesignationModel:GetInstance():GetDesignationPowerById(designation_id)
|
|
if self.dynamic_image_obj then
|
|
self.dynamic_image_obj:SetActive(false)
|
|
end
|
|
if dsgt_cfg[designation_id] then
|
|
designation_image.gameObject:SetActive(true)
|
|
if dsgt_cfg[designation_id].type == 1 then--文字称号(文字称号也用图片了)
|
|
designation_image.gameObject:SetActive(true)
|
|
lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true)
|
|
designation_text_tmp.text = ""
|
|
elseif dsgt_cfg[designation_id].type == 2 then--图片称号
|
|
designation_image.gameObject:SetActive(true)
|
|
lua_resM:setOutsideImageSprite(self, designation_image_img, GameResPath.GetDesignImage(designation_id), true)
|
|
designation_text_tmp.text = ""
|
|
elseif dsgt_cfg[designation_id].type == 3 then--特效称号
|
|
if not self.dynamic_image_obj then
|
|
self.dynamic_image_obj = UiFactory.createChild(designation_image, UIType.Image, "dynamic_image")
|
|
self.dynamic_image_img = self.dynamic_image_obj:GetComponent("Image")
|
|
self.dynamic_image = self.dynamic_image_obj.transform
|
|
SetAnchoredPosition(self.dynamic_image,0,0)
|
|
else
|
|
self.dynamic_image_obj:SetActive(true)
|
|
end
|
|
designation_image.gameObject:SetActive(true)
|
|
local data = DesignationModel:GetInstance():GetDynamicDesignationCFG(designation_id)
|
|
designation_text_tmp.text = ""
|
|
local res = Split(data[1].res,"_")--分割出来配置 然后取文字
|
|
local font_res = res[1] or ""
|
|
lua_resM:setImageSprite(self, self.dynamic_image_img, data[1].ab, font_res.."_font", false)
|
|
local action = cc.Animation.New(data,0.15)
|
|
cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),designation_image)
|
|
end
|
|
end
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(designation_image)
|
|
end
|
|
|
|
-- 开始界面关闭的倒计时
|
|
function AchieveGuildSpeedTipsView:StartCloseTimer()
|
|
self:ClearHideTimer()
|
|
local end_time = self.hide_time + TimeUtil:getServerTime()
|
|
local function hide_timer()
|
|
local left_time = end_time - TimeUtil:getServerTime()
|
|
self.close_timer_tmp.text = left_time >= 0 and string.format("(%s秒后自动确认)", math.ceil(left_time+1)) or ""
|
|
if left_time < 0 then
|
|
self:ClearHideTimer()
|
|
self:AutoCloseFunc()
|
|
end
|
|
end
|
|
hide_timer()
|
|
self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, 0.1, -1)
|
|
-- 设置动画标志量
|
|
self.is_animating = true
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:ClearHideTimer( )
|
|
if self.hide_timer_id then
|
|
GlobalTimerQuest:CancelQuest(self.hide_timer_id)
|
|
self.hide_timer_id = nil
|
|
end
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:AutoCloseFunc( )
|
|
local function callback()
|
|
self:ClearHideTimer()
|
|
self.gameObject:SetActive(false)
|
|
local function delay_closeview( )
|
|
BaseView.Close(self)
|
|
end
|
|
self.delay_closeview_id = setTimeout(delay_closeview, 5)
|
|
-- 设置动画标志量
|
|
self.is_animating = false
|
|
end
|
|
self:CloseAnimation(callback)
|
|
end
|
|
|
|
-- 播放打开界面的动画
|
|
function AchieveGuildSpeedTipsView:OpenAnimation()
|
|
self.canvasGroup.alpha = 0
|
|
if self.alpha_anim_id then
|
|
TweenLite.Stop(self.alpha_anim_id)
|
|
self.alpha_anim_id = nil
|
|
end
|
|
self.alpha_anim_id = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 1, 0.2)
|
|
end
|
|
|
|
-- 关闭(隐藏)界面的动画
|
|
function AchieveGuildSpeedTipsView:CloseAnimation(callback)
|
|
self.canvasGroup.alpha = 1
|
|
if self.alpha_anim_id then
|
|
TweenLite.Stop(self.alpha_anim_id)
|
|
self.alpha_anim_id = nil
|
|
end
|
|
self.alpha_anim_id = TweenLite.to(self, self.canvasGroup,TweenLite.UiAnimationType.ALPHA, 0, 0.5)
|
|
local pos_y = self.transform.anchoredPosition.y + 100
|
|
if self.pos_id then
|
|
TweenLite.Stop(self.pos_id)
|
|
self.pos_id = nil
|
|
end
|
|
self.pos_id = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.ANCHORED_POSY, pos_y, 0.5, callback)
|
|
end
|
|
|
|
function AchieveGuildSpeedTipsView:DestroySuccess( )
|
|
self.model.tip_view_show = false
|
|
self:ClearHideTimer()
|
|
if self.delay_closeview_id then
|
|
TimerQuest.CancelQuest(GlobalTimerQuest,self.delay_closeview_id)
|
|
self.delay_closeview_id = nil
|
|
end
|
|
if self.alpha_anim_id then
|
|
TweenLite.Stop(self.alpha_anim_id)
|
|
self.alpha_anim_id = nil
|
|
end
|
|
if self.pos_id then
|
|
TweenLite.Stop(self.pos_id)
|
|
self.pos_id = nil
|
|
end
|
|
for i,item in pairs(self.awardItem_list) do
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, item)
|
|
end
|
|
self.awardItem_list = {}
|
|
end
|