源战役客户端
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

221 rindas
9.7 KiB

-- <*
-- @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