源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
4.9 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统技能tips界面
  4. -- *>
  5. PsionicSkillTipView = PsionicSkillTipView or BaseClass(BaseView)
  6. local PsionicSkillTipView = PsionicSkillTipView
  7. function PsionicSkillTipView:__init()
  8. self.base_file = "psionic"
  9. self.layout_file = "PsionicSkillTipView"
  10. self.layer_name = "Top"
  11. self.destroy_imm = true
  12. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  13. self.click_bg_toClose = true
  14. self:AddPreLoadList("psionic", {"PsionicSkillTipItem"})
  15. self.is_set_zdepth = true
  16. self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
  17. self.model = PsionicModel:getInstance()
  18. self.info_item = {}
  19. self.load_callback = function ()
  20. self:LoadSuccess()
  21. self:AddEvent()
  22. end
  23. self.open_callback = function ( )
  24. self:OpenSuccess()
  25. end
  26. self.destroy_callback = function ( )
  27. self:DestroySuccess()
  28. end
  29. end
  30. function PsionicSkillTipView:Open(skill_data, x, y)
  31. self.skill_data = skill_data
  32. self.pos_x = x or 0
  33. self.pos_y = y or 0
  34. self.skill_cfg = ConfigItemMgr.Instance:GetSkillItem(self.skill_data.skill_id)
  35. BaseView.Open(self)
  36. end
  37. function PsionicSkillTipView:LoadSuccess()
  38. local nodes = {
  39. "content",
  40. "content/bg:raw",
  41. "content/skill_icon:img",
  42. "content/activated:img:obj",
  43. "content/info_scroll",
  44. "content/info_scroll/Viewport:img",
  45. "content/info_scroll/Viewport/info_con",
  46. "content/name:tmp",
  47. "content/level:tmp",
  48. }
  49. self:GetChildren(nodes)
  50. SetSizeDelta(self.transform, 0, 0)
  51. local size_x = self.content.sizeDelta.x
  52. local size_y = self.content.sizeDelta.y + 30
  53. self.pos_x = self.pos_x + size_x > ScreenWidth/2 and ScreenWidth/2 - size_x or self.pos_x
  54. self.pos_y = self.pos_y - size_y < -ScreenHeight/2 and size_y - ScreenHeight/2 or self.pos_y
  55. -- print("Saber:PsionicSkillTipView [55] self.pos_x, self.pos_y: ",self.pos_x, self.pos_y)
  56. SetAnchoredPosition(self.content, self.pos_x, self.pos_y)
  57. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("ps_skill_tips_bg"))
  58. end
  59. function PsionicSkillTipView:AddEvent()
  60. end
  61. function PsionicSkillTipView:OpenSuccess()
  62. self:UpdateView()
  63. end
  64. function PsionicSkillTipView:UpdateView()
  65. self:UpdateBasicData()
  66. self:UpdateInfoItems()
  67. end
  68. -- 加载基础数据
  69. function PsionicSkillTipView:UpdateBasicData( )
  70. self.name_tmp.text = string.format("<color=%s>%s</color>", ColorUtil.PURPLE_DARK, Trim(self.skill_cfg.name))
  71. lua_resM:setOutsideImageSprite(self, self.skill_icon_img, GameResPath.GetSkillIcon(self.skill_data.skill_id), true)
  72. local lv = self.skill_data.skill_lv
  73. local lv_str = string.format("等级:%s", lv == 0 and 1 or lv) -- 未激活也显示1级
  74. lv_str = lv_str .. (lv > 0 and (lv >= self.skill_cfg.lvs.lvs_total and "" or "<color=#fdffc2><size=16>(圣物觉醒可升级)</size></color>") or "")
  75. self.level_tmp.text = lv_str
  76. lua_resM:setImageSprite(self, self.activated_img, "psionic_asset", lv == 0 and "ps_unactivated" or "ps_activated", true)
  77. self.activated_obj:SetActive(true)
  78. -- self.lvup_tip_tmp.text = lv > 0 and (lv >= self.skill_cfg.lvs.lvs_total and "" or "(觉醒圣物可升级)") or ""
  79. end
  80. -- 加载技能描述节点
  81. function PsionicSkillTipView:UpdateInfoItems( )
  82. local info_list = {}
  83. local lv = self.skill_data.skill_lv
  84. -- 获取不到等级配置就选用1级的配置
  85. local lvs_cfg = self.skill_cfg.lvs and self.skill_cfg.lvs[lv] or self.skill_cfg.lvs[1]
  86. if lvs_cfg then
  87. info_list[#info_list+1] = {title = "技能效果"}
  88. info_list[#info_list+1] = {desc = Trim(lvs_cfg.desc), show_line = true}
  89. -- local power = Trim(lvs_cfg.power)
  90. -- if power ~= "" then
  91. -- info_list[#info_list+1] = {power = power}
  92. -- end
  93. end
  94. info_list[#info_list+1] = {title = "激活条件"}
  95. local color_cfg = PsionicConst.RequireEquipColor[PsionicConst.TabId.PSkill]
  96. local color = WordManager.GetGoodsColor(color_cfg.color, true)
  97. info_list[#info_list+1] = {
  98. desc = string.format("穿戴 <color=%s>%s以上%s</color> 后解锁",
  99. color, color_cfg.str, PsionicConst.EquipSlotName[self.skill_data.pos])
  100. }
  101. local height = 2
  102. local item
  103. for k, v in ipairs(info_list) do
  104. item = self.info_item[k]
  105. if not item then
  106. item = PsionicSkillTipItem.New(self.info_con)
  107. self.info_item[k] = item
  108. end
  109. item:SetAnchoredPosition(0, -height)
  110. height = height + item:SetData(v)
  111. end
  112. SetSizeDeltaY(self.info_con, height + 5)
  113. self.Viewport_img.raycastTarget = height > self.info_scroll.sizeDelta.y
  114. end
  115. function PsionicSkillTipView:DestroySuccess( )
  116. for k, v in pairs(self.info_item) do
  117. v:DeleteMe()
  118. v = nil
  119. end
  120. self.info_item = nil
  121. end