源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

233 строки
7.2 KiB

-- @Author: HWR
-- @Description: 风采弹出提示界面
WardrobeTipsView = WardrobeTipsView or BaseClass(BaseView)
local WardrobeTipsView = WardrobeTipsView
function WardrobeTipsView:__init()
self.base_file = "wardrobe"
self.layout_file = "WardrobeTipsView"
self.layer_name = "Top"
self.destroy_imm = true
self.use_background = false --全屏界面默认使用这个参数
self.is_animating = false -- 是否在动画中
self.hide_time = 2 -- n秒后播放界面隐藏动画
self.receive_flag = nil -- 读取完界面数据后,用于发送领取协议的关键键值
self.model = WardrobeModel: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 WardrobeTipsView:Open(tips_data)
self.tips_data = tips_data
BaseView.Open(self)
end
--重用界面,5秒后再销毁
function WardrobeTipsView:ResetViewInfo(tips_data)
self.tips_data = tips_data
self.transform.anchoredPosition = Vector2(-3.5, 61.5)
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 WardrobeTipsView:LoadSuccess()
local nodes = {
"go_btn/go_btn_text:tmp", "close_timer:tmp", "go_btn:obj",
"type_name_text:tmp", "icon_small_image:img",
"wardrobe_con/wardrobe_text:tmp", "wardrobe_con/wardrobe_up_text:tmp", "name_text:tmp", "wardrobe_con:obj",
}
self:GetChildren(nodes)
self.canvasGroup = self.gameObject:GetComponent("CanvasGroup")
self.transform.anchoredPosition = Vector2(-3.5, 61.5)
end
function WardrobeTipsView:AddEvent()
local function click_event(target)
self:ReceiveFunc()
self:ClearHideTimer()
self:AutoCloseFunc()
if self.is_unlock then
if self.is_unlock == 1 then
else
GlobalEventSystem:Fire(WardrobeConst.OPEN_WARDROBE_MAIN_VIEW, WardrobeConst.TabId.SHOP, self.is_unlock + 1)
end
end
end
AddClickEvent(self.go_btn_obj, click_event)
end
function WardrobeTipsView:OpenSuccess()
self:UpdateView()
self:StartCloseTimer()
self:OpenAnimation() -- 播放打开界面的动画
end
function WardrobeTipsView:UpdateView()
self.is_unlock = nil
if self.tips_data.is_unlock then--如果是解锁商城的就有按钮
self.go_btn_obj:SetActive(true)
self.name_text_tmp.text = ""
local cfg = Config.Wardrobeopen
for i,v in ipairs(cfg) do
if v.condition <= self.tips_data.stage then
self.is_unlock = v.store_id
end
end
if self.is_unlock == 1 then
self.go_btn_text_tmp.text = "确定"
else
self.go_btn_text_tmp.text = "前往"
end
self.type_name_text_tmp.text = string.format("%s %s", HtmlColorTxt("解锁", ColorUtil.YELLOW_DARK), cfg[self.is_unlock].store_name)
SetAnchoredPositionX(self.wardrobe_con, 44)
else
self.go_btn_obj:SetActive(false)
self.type_name_text_tmp.text = string.format("%s %s", HtmlColorTxt("解锁", ColorUtil.YELLOW_DARK), self.model:GetWardrobeTypeName(self.tips_data.type))
if self.tips_data.type == 9 or self.tips_data.type == 10 then--进阶和伙伴要去拿阶数
self.name_text_tmp.text = string.format("%s %s阶", self.model:GetWardrobeTypeName(self.tips_data.type), self.tips_data.color)
else
local goods_name = GoodsModel:getInstance():getGoodsName(self.tips_data.id, false)
if SubStringGetTotalIndex(goods_name) > 4 then
goods_name = SubStringUTF8(goods_name, 1, 4) .. "..."
end
self.name_text_tmp.text = goods_name
end
SetAnchoredPositionX(self.wardrobe_con, 110)
end
self.wardrobe_up_text_tmp.text = self.tips_data.up_value
self.wardrobe_text_tmp.text = string.format("风采值 %s", HtmlColorTxt(self.tips_data.sum_wardrobe_value, ColorUtil.YELLOW_DARK))
local res_name = string.format("wardrobe_level%s", self.tips_data.stage)
lua_resM:setOutsideImageSprite(self, self.icon_small_image_img, GameResPath.GetWardrobeImage(res_name), true)
if self.delay_id then
GlobalTimerQuest:CancelQuest(self.delay_id)
self.delay_id = nil
end
local function delay_method( )
SetSizeDeltaX(self.wardrobe_text, self.wardrobe_text_tmp.preferredWidth+1)
end
self.delay_id = setTimeout(delay_method, 0.01)
end
-- 开始界面关闭的倒计时
function WardrobeTipsView:StartCloseTimer()
self:ClearHideTimer()
local end_time = self.hide_time + TimeUtil:getServerTime()
local function hide_timer()
local left_time = end_time - TimeUtil:getServerTime()
if not self.tips_data.is_unlock then
self.close_timer_tmp.text = ""
else
self.close_timer_tmp.text = left_time >= 0 and string.format("(<color=%s>%ss</color>后自动关闭)", ColorUtil.GREEN_DARK, math.ceil(left_time+1)) or ""
end
if left_time < 0 then
self:ClearHideTimer()
self:AutoCloseFunc()
self:TimeOverFunc()
end
end
hide_timer()
self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, 0.1, -1)
-- 设置动画标志量
self.is_animating = true
end
-- 点击按钮后的响应
function WardrobeTipsView:ReceiveFunc( )
end
-- 倒计时结束的响应
function WardrobeTipsView:TimeOverFunc( )
end
function WardrobeTipsView:ClearHideTimer( )
if self.hide_timer_id then
GlobalTimerQuest:CancelQuest(self.hide_timer_id)
self.hide_timer_id = nil
end
end
function WardrobeTipsView: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
-- 查看是否还没展示完成界面
self.model:Fire(WardrobeConst.OPEN_WARDROBE_TIP_VIEW, true)
end
self:CloseAnimation(callback)
end
-- 播放打开界面的动画
function WardrobeTipsView: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 WardrobeTipsView: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 WardrobeTipsView: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
if self.delay_id then
GlobalTimerQuest:CancelQuest(self.delay_id)
self.delay_id = nil
end
end