|
-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 圣物觉醒成功结算界面
|
|
-- *>
|
|
PsionicSkillUpgradeSuccessView = PsionicSkillUpgradeSuccessView or BaseClass(BaseView)
|
|
local PsionicSkillUpgradeSuccessView = PsionicSkillUpgradeSuccessView
|
|
local TimeUtil = TimeUtil
|
|
local string_format = string.format
|
|
function PsionicSkillUpgradeSuccessView:__init()
|
|
self.base_file = "psionic"
|
|
self.layout_file = "PsionicSkillUpgradeSuccessView"
|
|
self.layer_name = "Activity"
|
|
self.destroy_imm = true
|
|
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
|
|
self.hide_maincancas = true --全屏界面需要隐藏主UI
|
|
self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
|
|
self.is_set_zdepth = true
|
|
self.model = PsionicModel:getInstance()
|
|
-- 初始化数据
|
|
self.slot_data = nil
|
|
self.pre_lv_pro = {}
|
|
self.cur_lv_pro = {}
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:AddEvent()
|
|
end
|
|
self.open_callback = function ( )
|
|
self:UpdateView()
|
|
end
|
|
self.destroy_callback = function ( )
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
-- slot_data 槽位数据,其中的等级为升级后的等级,旧等级在这个基础上减1
|
|
function PsionicSkillUpgradeSuccessView:Open(slot_data)
|
|
self.slot_data = slot_data
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:LoadSuccess()
|
|
local nodes = {
|
|
"bg:raw", "bg/title:img",
|
|
"content:cg",
|
|
"content/close_btn:obj",
|
|
"content/model_con",
|
|
"content/skill_icon1:img", "content/skill_icon2:img",
|
|
"content/skill_progress_con1", "content/skill_progress_con2",
|
|
"content/power_con",
|
|
"content/power_con/up_arrow:img", "content/power_con/power_cur:txt",
|
|
"content/power_con/power_lb1:tmp", "content/power_con/power_up:tmp",
|
|
"content/attr_scroll",
|
|
"content/attr_scroll/Viewport/attr_con",
|
|
"content/skill_lv1:tmp", "content/skill_lv2:tmp",
|
|
"content/skill_stage_lb1:tmp", "content/skill_stage_lb2:tmp",
|
|
"content/skill_desc:tmp",
|
|
"content/auto_close_timer:tmp",
|
|
}
|
|
self:GetChildren(nodes)
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("ps_skill_upgrade_success_bg"))
|
|
lua_resM:setImageSprite(self, self.title_img, "psionicExtra_asset", "ps_skill_upgrade_success_title")
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:AddEvent()
|
|
local function click_event(target)
|
|
if target == self.close_btn_obj then
|
|
self:Close()
|
|
end
|
|
end
|
|
AddClickEvent(self.close_btn_obj, click_event)
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:UpdateView()
|
|
self:UpdatePsionicModel()
|
|
self:UpdateBasicData()
|
|
self:UpdateAutoCloseTimer()
|
|
end
|
|
|
|
-- 更新界面的模型表现
|
|
function PsionicSkillUpgradeSuccessView:UpdatePsionicModel( )
|
|
if self.slot_data then
|
|
-- 加载圣物模型
|
|
local model_data = PsionicConst.SlotModel[self.slot_data.pos]
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.model_con,
|
|
fashion_type = FuncOpenModel.TypeId.OtherGoods,
|
|
raycast_size = Vector2(0,0),
|
|
rotate = model_data.rotate,
|
|
scale = model_data.scale,
|
|
figure_id = model_data.model,
|
|
position = model_data.pos + Vector3(0, 65, 0),
|
|
layer_name = self.layer_name,
|
|
ui_model_type = UIModelCommon.ModelType.Model,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
end
|
|
|
|
-- 更新界面的基础数据
|
|
function PsionicSkillUpgradeSuccessView:UpdateBasicData( )
|
|
if self.slot_data then
|
|
--- 获取配置和必要数据 ---
|
|
self.awake_lv = self.slot_data and self.slot_data.sec_lv or 1 -- 觉醒等级
|
|
-- 技能等级配置 Config.Nucleonsection
|
|
self.skill_lv_cfg = self.model:GetPsionicAwakeCfg(self.slot_data.pos, self.awake_lv)
|
|
self.skill_cfg = ConfigItemMgr.Instance:GetSkillItem(self.slot_data.skill_id)
|
|
self.skill_id = self.skill_lv_cfg and self.skill_lv_cfg.sec_skill[1][1] or nil -- 这个指的是觉醒后获得的第二技能的技能id,不是展示用的技能id
|
|
self.sec_skill_cfg = self.skill_id and ConfigItemMgr.Instance:GetSkillItem(self.skill_id) or nil
|
|
self.pre_skill_lv_cfg = self.model:GetPsionicAwakeCfg(self.slot_data.pos, self.awake_lv - 1)
|
|
-- 技能图标
|
|
lua_resM:setOutsideImageSprite(self, self.skill_icon1_img, GameResPath.GetSkillIcon(self.slot_data.skill_id))
|
|
lua_resM:setOutsideImageSprite(self, self.skill_icon2_img, GameResPath.GetSkillIcon(self.slot_data.skill_id))
|
|
|
|
self.skill_lv1_tmp.text = string.format("Lv.%s", self.awake_lv - 1)
|
|
self.skill_lv2_tmp.text = string.format("Lv.%s", self.awake_lv)
|
|
-- 加载描述
|
|
-- 获取目标等级的配置
|
|
local desc = ""
|
|
local lvs_cfg = self.skill_cfg.lvs and self.skill_cfg.lvs[1] or nil -- 主技能只有1级
|
|
if lvs_cfg then
|
|
desc = Trim(lvs_cfg.desc)
|
|
end
|
|
-- 当前等级的描述
|
|
local cur_sec_skill_lv = self.skill_lv_cfg and self.skill_lv_cfg.sec_skill[1] and self.skill_lv_cfg.sec_skill[1][2] or 1
|
|
desc = desc .. string.format("\n<color=#fdffc2>效果追加:%s</color>", Trim(self.sec_skill_cfg.lvs[cur_sec_skill_lv].desc))
|
|
|
|
self.skill_desc_tmp.text = desc
|
|
-- 加载等级描述
|
|
self.skill_stage_lb1_tmp.text = string.format("%s段觉醒", ChineseNumber(self.awake_lv - 1))
|
|
self.skill_stage_lb2_tmp.text = string.format("%s段觉醒", ChineseNumber(self.awake_lv))
|
|
-- 加载进度节点
|
|
-- 当前等级
|
|
for i = 1, 6 do
|
|
self.pre_lv_pro[i] = self.pre_lv_pro[i] or UiFactory.createChild(self.skill_progress_con1, UIType.Image, "pro" .. i)
|
|
SetAnchoredPosition(self.pre_lv_pro[i].transform, (i-3) * 12 - 6, -6)
|
|
lua_resM:setImageSprite(self, self.pre_lv_pro[i]:GetComponent("Image"), "psionic_asset",
|
|
i <= (self.awake_lv - 1) and "ps_skill_pro1" or "ps_skill_pro0", true)
|
|
end
|
|
-- 下一等级
|
|
for i = 1, 6 do
|
|
self.cur_lv_pro[i] = self.cur_lv_pro[i] or UiFactory.createChild(self.skill_progress_con2, UIType.Image, "pro" .. i)
|
|
SetAnchoredPosition(self.cur_lv_pro[i].transform, (i-3) * 12 - 6, -6)
|
|
lua_resM:setImageSprite(self, self.cur_lv_pro[i]:GetComponent("Image"), "psionic_asset",
|
|
i <= self.awake_lv and "ps_skill_pro1" or "ps_skill_pro0", true)
|
|
end
|
|
|
|
--- 计算战力和列举属性 ---
|
|
local info_list = {}
|
|
-- 组合配置
|
|
local pre_attr = self.pre_skill_lv_cfg.attrs
|
|
local pre_power = GetFighting(pre_attr)
|
|
self.power_cur_txt.text = pre_power -- 懒得改节点名称了,这里展示的实际上是旧的战斗力
|
|
local cur_attr = self.skill_lv_cfg.attrs -- 升级后(当前)的属性数据
|
|
-- 更新战力和战力节点位置
|
|
local total_len = self.power_cur_txt.preferredWidth + self.power_lb1_tmp.preferredWidth
|
|
if cur_attr then
|
|
local next_power = GetFighting(cur_attr)
|
|
self.power_up_tmp.text = next_power - pre_power
|
|
total_len = total_len + self.up_arrow.sizeDelta.x + self.power_up_tmp.preferredWidth + 15
|
|
end
|
|
local offset_x = (self.power_con.sizeDelta.x - total_len) / 2
|
|
SetAnchoredPositionX(self.power_lb1, offset_x)
|
|
SetAnchoredPositionX(self.power_cur, offset_x + self.power_lb1_tmp.preferredWidth + 5)
|
|
SetAnchoredPositionX(self.up_arrow, cur_attr and self.power_cur.anchoredPosition.x + self.power_cur_txt.preferredWidth + 5 or 999999)
|
|
SetAnchoredPositionX(self.power_up, self.up_arrow.anchoredPosition.x + 20)
|
|
|
|
local combine_attr_list = self.model:GetPsionicLevelAttrList(pre_attr, cur_attr)
|
|
-- 属性条目
|
|
for k, v in ipairs(combine_attr_list) do
|
|
info_list[#info_list+1] = {attr_list = v, is_max = false}
|
|
end
|
|
|
|
self.attr_item_creator = self.attr_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = info_list,
|
|
scroll_view = self.attr_scroll,
|
|
item_con = self.attr_con,
|
|
item_class = PsionicSkillAttrItem,
|
|
item_height = 36,
|
|
start_x = 6,
|
|
start_y = -4,
|
|
space_y = 0,
|
|
create_frequency = 0.01,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v, i)
|
|
end,
|
|
}
|
|
self.attr_item_creator:UpdateItems(info)
|
|
end
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:UpdateAutoCloseTimer( )
|
|
local close_time = TimeUtil:getServerTime() + 10
|
|
local color1 = ColorUtil.GREEN_DARK
|
|
local function auto_close_func()
|
|
local left_time = close_time - TimeUtil:getServerTime()
|
|
if left_time > 0 then
|
|
self.auto_close_timer_tmp.text = string_format("<color=%s>%s</color> 秒后自动关闭", color1, left_time)
|
|
else
|
|
self.auto_close_timer_tmp.text = string_format("<color=%s>%s</color> 秒后自动关闭", color1, 0)
|
|
self:ClearAutoCloseTimerId()
|
|
self:Close()
|
|
end
|
|
end
|
|
self:ClearAutoCloseTimerId()
|
|
self.auto_close_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_func, 0.5, -1)
|
|
auto_close_func()
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:ClearAutoCloseTimerId( )
|
|
if self.auto_close_func_id then
|
|
GlobalTimerQuest:CancelQuest(self.auto_close_func_id)
|
|
self.auto_close_func_id = nil
|
|
end
|
|
end
|
|
|
|
function PsionicSkillUpgradeSuccessView:DestroySuccess( )
|
|
self:ClearAutoCloseTimerId()
|
|
end
|