源战役客户端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

132 řádky
4.6 KiB

-- <*
-- @Author: Saber
-- @Description: 特殊场景活动tips弹窗界面
-- *>
SpercificSceneActivityTipView = SpercificSceneActivityTipView or BaseClass(BaseView)
local SpercificSceneActivityTipView = SpercificSceneActivityTipView
function SpercificSceneActivityTipView:__init()
self.base_file = "common"
self.layout_file = "SpercificSceneActivityTipView"
self.layer_name = "Top"
self.destroy_imm = true
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
self.is_set_zdepth = true
self.award_list = {}
self.model = CommonModel:getInstance()
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:UpdateView()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
-- ac_data:活动日历Config.Ac中的数据
function SpercificSceneActivityTipView:Open(ac_data)
self.ac_data = ac_data
BaseView.Open(self)
end
function SpercificSceneActivityTipView:LoadSuccess()
local nodes = {
"Window:raw", "Window/windowCloseBtn:obj",
"cancelBtn:obj", "confirmBtn:obj",
"reward_scroll", "reward_scroll/Viewport/reward_con",
"contenText:tmp",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.Window_raw, GameResPath.GetViewBigBg("tips_comm_bg6"), false)
end
function SpercificSceneActivityTipView:AddEvent()
local function click_event(target)
if target == self.cancelBtn_obj then
self:Close()
elseif target == self.confirmBtn_obj then
self:OnConfirmBtnClick()
self:Close()
end
end
AddClickEvent(self.cancelBtn_obj, click_event)
AddClickEvent(self.confirmBtn_obj, click_event)
end
function SpercificSceneActivityTipView:UpdateView()
-- 加载文本
self.contenText_tmp.text = string.format("限时活动 <color=%s>%s</color> 已开启\n是否前往参加活动?",
ColorUtil.BLUE_DARK, Trim(self.ac_data.ac_name))
-- 加载奖励
local reward = stringtotable(self.ac_data.reward)[1][2] or {}
local total_len = #reward * 88
local len_offset = 0
if total_len < 400 then
len_offset = (400 - total_len) / 2
end
for i,v in ipairs(reward) do
self.award_list[i] = self.award_list[i] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
self.award_list[i]:SetItemSize(78, 78)
self.award_list[i]:SetDataWithMapId(v[2], v[3], v[1])
self.award_list[i]:SetPosition(88 * (i-1) + len_offset, 0)
end
SetSizeDeltaX(self.reward_con, total_len)
end
function SpercificSceneActivityTipView:OnConfirmBtnClick( )
self.click_callback = self.click_callback or {
[418] = function() -- 温泉
BeachModel:GetInstance():Fire(BeachConst.REQ_ENTER_SCENE)
end,
[602] = function() -- 饥饿游戏
WastelandModel:GetInstance():Fire(WastelandConst.REQ_WASTELAND_SCMD, 60201)
end,
[415] = function() -- 狂战领域
RageWarModel:getInstance():Fire(RageWarModel.REQUEST_CCMD_EVENT, 41501)
end,
[600] = function() -- 无尽领域
EndlessModel:GetInstance():Fire(EndlessConst.REQ_ENDLESS_SCMD, 60002)
end,
[500] = function() -- 双倍护送
EscortModel:getInstance():FlyToNpc()
end,
[601] = function() -- 跨国团战
OpenFun.Open(601,0)
end,
[405] = function() -- 本服团战
GuildModel:getInstance():Fire(GuildModel.ENTER_GUILD_WAR_SCENE)
end,
[408] = function() -- 封印裂隙
GuildModel:getInstance():Fire(GuildModel.ENTER_GUILD_BASE)
end,
[406] = function() -- 社团boss
GuildModel:getInstance():Fire(GuildModel.ENTER_GUILD_BASE)
end,
[400] = function() -- 社团晚宴
GuildModel:getInstance():Fire(GuildModel.ENTER_GUILD_BASE)
end,
[410] = function() -- 本国团战
GuildModel:getInstance():Fire(GuildModel.REQUEST_CCMD_EVENT, 41002, 0)
end,
}
local callback = self.click_callback[self.ac_data.module]
if callback then
callback()
end
end
function SpercificSceneActivityTipView:DestroySuccess( )
if self.award_list then
for k,v in pairs(self.award_list) do
UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v)
end
self.award_list = {}
end
end