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