源战役客户端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

286 satır
11 KiB

-- <*
-- @Author: Saber
-- @Description: 转职成功后弹出界面
-- *>
ReinSucceedView = ReinSucceedView or BaseClass(BaseView)
local ReinSucceedView = ReinSucceedView
local SetSizeDeltaY = SetSizeDeltaY
local SetAnchoredPositionX = SetAnchoredPositionX
function ReinSucceedView:__init()
self.base_file = "reincarnation"
self.layout_file = "ReinSucceedView"
self.layer_name = "Activity"
self.destroy_imm = true
self.use_background = true --全屏界面默认使用这个参数
self.hide_maincancas = true
self.use_show_anim = true
self.use_hide_anim = true
self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
self.append_to_ctl_queue = true --是否要添加进界面堆栈
self.close_fog = true
self.click_bg_toClose = true
self.close_delay_time = 60 -- 几秒后自动关闭
self.model = ReincarnationModel:getInstance()
self.main_vo = RoleManager.Instance.mainRoleInfo
self.rein_lv = 1
self.rein_stage_cfg = {} -- 当前转生等级的阶段任务属性配置
self.skill_item = {} -- 界面中的技能图标
self.equip_item = {} -- 界面中的技能图标
self.role_img_pos = {
[1] = Vector2(-314.5, 11),
[2] = Vector2(-359.5, 0),
[3] = Vector2(-211, 9.5),
[4] = Vector2(-350, 0),
}
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:UpdateView()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function ReinSucceedView:Open(rein_lv)
self.rein_lv = rein_lv
self.rein_stage_cfg = self.model:GetReinLvStageData(self.rein_lv)
BaseView.Open(self)
end
function ReinSucceedView:LoadSuccess()
local nodes = {
"bg:raw",
-- 左侧立绘
"role_con:rawex",
-- 右侧信息部分,分为动画父节点和内部的信息节点
-- 转职头像和名称
"head_anim_con:cg",
"head_anim_con/head_before_bg/head_before:raw",
"head_anim_con/head_new_bg/head_new:raw",
"head_anim_con/pname_before:tmp", "head_anim_con/pname_new:tmp",
-- 属性节点和技能解锁容器
"attr_skill_anim_con:cg",
"attr_skill_anim_con/attr_scroll", "attr_skill_anim_con/attr_scroll/Viewport/attr_con",
"attr_skill_anim_con/skill_con",
-- 装备代数解锁容器
"equip_anim_con:cg",
"equip_anim_con/equip_con", "equip_anim_con/title3:tmp",
-- 关闭倒计时
"timer:tmp",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("rein_succeed_bg"))
end
function ReinSucceedView:AddEvent()
end
function ReinSucceedView:UpdateView()
self:UpdateRoleRP() -- 更新立绘
self:UpdateRoleHead() -- 更新头像相关
self:UpdateAttrData() -- 更新战斗力和属性
self:UpdateUnlockItems() -- 更新新增技能
self:StartReinSucceedAnim()
self:StartCloseTimer()
end
-- 更新立绘
function ReinSucceedView:UpdateRoleRP( )
-- 加载立绘
self.role_con_rawex.alpha = 0
lua_resM:setOutsideRawImage(self, self.role_con_rawex, GameResPath.GetRoleBg("rein_success_role" .. self.main_vo.career), true)
end
-- 更新转职系统头像
function ReinSucceedView:UpdateRoleHead( )
-- 先获取上个转职阶段的默认头像
local career_cfg = self.model:GetReinCareerHeadData(self.main_vo.career, self.rein_lv - 1)
lua_resM:setOutsideRawImage(self, self.head_before_raw, GameResPath.GetHeadIcon(career_cfg and career_cfg.image_id or 1001))
self.pname_before_tmp.text = career_cfg and Trim(career_cfg.name) or ""
-- 获取当前转职的头像
career_cfg = self.model:GetReinCareerHeadData(self.main_vo.career, self.rein_lv)
lua_resM:setOutsideRawImage(self, self.head_new_raw, GameResPath.GetHeadIcon(career_cfg and career_cfg.image_id or 1001))
self.pname_new_tmp.text = career_cfg and Trim(career_cfg.name) or ""
end
-- 更新转职属性提升数据
function ReinSucceedView:UpdateAttrData( )
-- 获取配置
local attr_list = stringtotable(self.rein_stage_cfg[#self.rein_stage_cfg].attr_list)
attr_list = SortAttrList(attr_list)
self.attr_item_creator = self.attr_item_creator or self:AddUIComponent(UI.ItemListCreator)
local info = {
data_list = attr_list,
scroll_view = self.attr_scroll,
item_con = self.attr_con,
prefab_ab_name = "reincarnation",
prefab_res_name = "ReinSucceedAttrItem",
item_height = 30,
create_frequency = 0.01,
alignment = UnityEngine.TextAnchor.UpperLeft,
child_names = {"attr_name:tmp", "attr_up:tmp"},
on_update_item = function(item, i, v)
item.attr_name_tmp.text = WordManager:GetProperties(v[1])
item.attr_up_tmp.text = WordManager:GetPropertyValue(v[1], v[2])
end,
}
self.attr_item_creator:UpdateItems(info)
end
-- 更新转职解锁内容
function ReinSucceedView:UpdateUnlockItems( )
local unlock_data = self.model:GetReinSucceedUnlockData(self.rein_lv)
-- 解锁的技能
for k, v in ipairs(unlock_data.skill_list) do
self.skill_item[k] = self.skill_item[k] or ReinTaskSkillItem.New(self.skill_con)
self.skill_item[k]:SetTransformSize(62)
local row, col = (k - 1) % 4, math.floor((k - 1) / 4)
self.skill_item[k]:SetAnchoredPosition(81.5 * row, -74 * col)
self.skill_item[k]:SetData(v.skill_data)
end
-- 解锁的装备
for k, v in ipairs(unlock_data.equip_list) do
self.equip_item[k] = self.equip_item[k] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.equip_con)
self.equip_item[k]:SetAnchoredPosition((k - 1) * 78 + 9, 0)
self.equip_item[k]:SetItemSize(62, 62)
self.equip_item[k]:SetVisible(true)
self.equip_item[k]:SetData(v.equip_data)
end
-- 装备栏标题
self.title3_tmp.text = string.format("解锁 %s代装备", ChineseNumber(unlock_data.equip_series))
end
-- 播放界面动画效果
function ReinSucceedView:StartReinSucceedAnim( )
local bg_action_time = 0.5
local bg_action_delay_time = 0.8
local role_rp_action_time = 0.5
local right_info_delay = 0.2
local head_action_time = 0.5
local a_s_action_time = 0.5
local equip_action_time = 0.5
local function east_func(percent)
percent = percent - 1.0
local real_pec = percent * percent * percent * percent * percent + 1
return real_pec
end
-- 背景图恢复效果
local target_bg_size_y = 501
local function bg_size_y_func(percent)
percent = east_func(percent)
SetSizeDeltaY(self.bg, target_bg_size_y * percent)
end
local bg_action = cc.Sequence.New(cc.DelayTime.New(bg_action_delay_time), cc.CustomUpdate.New(bg_action_time, bg_size_y_func))
cc.ActionManager:getInstance():addAction(bg_action, self.bg)
-- 左侧立绘淡入和位移
local pos = self.role_img_pos[self.main_vo.career]
SetAnchoredPosition(self.role_con, pos.x - 300, pos.y)
local function role_rp_action_func(percent)
percent = east_func(percent)
self.role_con_rawex.alpha = percent
SetAnchoredPositionX(self.role_con, pos.x - 300 * (1 - percent))
end
local role_rp_action = cc.Sequence.New(
cc.DelayTime.New(bg_action_delay_time + bg_action_time),
cc.CustomUpdate.New(role_rp_action_time, role_rp_action_func)
)
cc.ActionManager:getInstance():addAction(role_rp_action, self.role_con)
-- 右侧信息淡入和位移
-- (自上而下)头像框
local head_pos_x = 249
SetAnchoredPositionX(self.head_anim_con, head_pos_x + 200)
local function head_action_func(percent)
percent = east_func(percent)
self.head_anim_con_cg.alpha = percent
SetAnchoredPositionX(self.head_anim_con, head_pos_x + 200 * (1 - percent))
end
local head_action = cc.Sequence.New(
cc.DelayTime.New(bg_action_delay_time + bg_action_time),
cc.CustomUpdate.New(head_action_time, head_action_func)
)
cc.ActionManager:getInstance():addAction(head_action, self.head_anim_con)
-- 属性和技能解锁
local a_s_pos_x = 249
SetAnchoredPositionX(self.attr_skill_anim_con, a_s_pos_x + 200)
local function attr_skill_action_func(percent)
percent = east_func(percent)
self.attr_skill_anim_con_cg.alpha = percent
SetAnchoredPositionX(self.attr_skill_anim_con, a_s_pos_x + 200 * (1 - percent))
end
local a_s_action = cc.Sequence.New(
cc.DelayTime.New(bg_action_delay_time + bg_action_time + right_info_delay),
cc.CustomUpdate.New(a_s_action_time, attr_skill_action_func)
)
cc.ActionManager:getInstance():addAction(a_s_action, self.attr_skill_anim_con)
-- 装备代数
local equip_pos_x = 249
SetAnchoredPositionX(self.equip_anim_con, equip_pos_x + 200)
local function equip_action_func(percent)
percent = east_func(percent)
self.equip_anim_con_cg.alpha = percent
SetAnchoredPositionX(self.equip_anim_con, equip_pos_x + 200 * (1 - percent))
end
local equip_action = cc.Sequence.New(
cc.DelayTime.New(bg_action_delay_time + bg_action_time + right_info_delay * 2),
cc.CustomUpdate.New(equip_action_time, equip_action_func)
)
cc.ActionManager:getInstance():addAction(equip_action, self.equip_anim_con)
end
-- 开始倒计时
function ReinSucceedView:StartCloseTimer( )
local end_time = Status.NowTime + self.close_delay_time
if self.close_timer_id == nil then
local function timer_func()
local left_time = end_time - Status.NowTime
if left_time >= 0 then
self.timer_tmp.text = string.format("<color=#2cf86f>%d</color> 秒后自动关闭", left_time)
else
if self.close_timer_id then
GlobalTimerQuest:CancelQuest(self.close_timer_id)
self.close_timer_id = nil
end
self:Close()
end
end
self.close_timer_id = GlobalTimerQuest:AddPeriodQuest(timer_func, 0.5, -1)
timer_func()
end
end
function ReinSucceedView:DestroySuccess( )
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.bg)
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.head_anim_con)
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.role_con)
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.attr_skill_anim_con)
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.equip_anim_con)
self:CheckGuide()
for k, v in pairs(self.skill_item) do
v:DeleteMe()
v = nil
end
for k, v in pairs(self.equip_item) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
end
self.equip_item = {}
if self.close_timer_id then
GlobalTimerQuest:CancelQuest(self.close_timer_id)
self.close_timer_id = nil
end
end
--触发套装引导
function ReinSucceedView:CheckGuide( )
local guide_key = ReincarnationConst.GuideKey[self.rein_lv]
if guide_key then
GlobalEventSystem:Fire(EventName.TEST_HELP_STEP,guide_key)
end
end