源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

129 rader
4.6 KiB

4 veckor sedan
  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统左侧技能装备节点
  4. -- *>
  5. PsionicSkillEquipItem = PsionicSkillEquipItem or BaseClass(BaseItem)
  6. local PsionicSkillEquipItem = PsionicSkillEquipItem
  7. function PsionicSkillEquipItem:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "psionic"
  9. self.layout_file = "PsionicSkillEquipItem"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.skill_id = 0
  13. self.showing_activate_fun_open_view = false
  14. self.model = PsionicModel:getInstance()
  15. self.goods_model = GoodsModel:getInstance()
  16. self:Load()
  17. end
  18. function PsionicSkillEquipItem:Load_callback()
  19. local nodes = {
  20. "bg:obj:imgex",
  21. "locked:obj",
  22. "skill_icon:obj:imgex",
  23. "red_dot:obj",
  24. "skill_effect_con",
  25. }
  26. self:GetChildren(nodes)
  27. self:AddEvents()
  28. if self.need_refreshData then
  29. self:UpdateView()
  30. end
  31. end
  32. -- 需特殊处理隐藏时的特效表现
  33. function PsionicSkillEquipItem:SetVisible(state, force_hide)
  34. BaseItem.SetVisible(self, state, force_hide)
  35. if not state then
  36. self:ClearUIEffect(self.skill_effect_con)
  37. self.showing_activate_effect = false
  38. end
  39. end
  40. function PsionicSkillEquipItem:AddEvents( )
  41. local function click_event(target, x, y)
  42. if target == self.skill_icon_obj then -- 点击技能图标,弹出对应的技能tips
  43. local ab_pos = self.transform:TransformPoint(Vector3.zero)
  44. local ui_tf = panelMgr:GetParent("Top").transform
  45. local new_pos = ui_tf:InverseTransformPoint(Vector3(ab_pos.x, ab_pos.y, 0))
  46. -- 构造一个数据过去展示技能tips
  47. local skill_data = {}
  48. skill_data.pos = self.slot
  49. skill_data.skill_id = self.skill_id
  50. skill_data.skill_lv = self.slot_data.skill_lv
  51. self.model:Fire(PsionicConst.OPEN_SKILL_TIPS_VIEW, true, skill_data, new_pos.x, new_pos.y)
  52. end
  53. end
  54. AddClickEvent(self.skill_icon_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  55. -- 对应技能更新之后刷新数据
  56. local function update_skill_data(slot)
  57. -- print("Saber:PsionicSkillEquipItem [63] self.slot, slot: ",self.slot, slot)
  58. if not slot or self.slot == slot then
  59. self:UpdateView()
  60. end
  61. end
  62. self:BindEvent(self.model, PsionicConst.UPDATE_SLOT_SKILL, update_skill_data)
  63. local function play_slot_effect(slot)
  64. if not slot or self.slot == slot then
  65. -- 魂力球激活特效
  66. if not self.showing_activate_effect then
  67. local function call_back( )
  68. self.showing_activate_effect = false
  69. end
  70. self:ClearUIEffect(self.skill_effect_con)
  71. self:AddUIEffect("ui_hunliqiudianliang", self.skill_effect_con, self.layer_name, Vector3(35,-35,0), 4, false, 0.6, nil, call_back)
  72. self.showing_activate_effect = true
  73. end
  74. if not self.showing_activate_fun_open_view then
  75. self.model:OpenSkillActiveShowView(self.skill_id)
  76. self.showing_activate_fun_open_view = true
  77. end
  78. end
  79. end
  80. self:BindEvent(self.model, PsionicConst.ACTIVATE_SLOT_SKILL, play_slot_effect)
  81. end
  82. function PsionicSkillEquipItem:UpdateView( )
  83. self.slot_data = self.model:GetPsionicSlotData(self.slot)
  84. self.unlock_cfg = self.model:GetPsionicAwakeUnlockCfg(self.slot)
  85. self:UpdateSkillIcon()
  86. self:UpdateSkillData()
  87. -- self:UpdateSkillSlotRed()
  88. end
  89. function PsionicSkillEquipItem:SetData( slot )
  90. self.slot = slot + 3 -- 技能位置要做+3映射
  91. if self.is_loaded then
  92. self.need_refreshData = false
  93. self:UpdateView()
  94. else
  95. self.need_refreshData = true
  96. end
  97. end
  98. -- 更新槽位的技能图标
  99. function PsionicSkillEquipItem:UpdateSkillIcon( )
  100. if self.unlock_cfg then
  101. self.skill_id = stringtotable(self.unlock_cfg.skill_id)[1]
  102. lua_resM:setOutsideImageSprite(self, self.skill_icon_imgex, GameResPath.GetSkillIcon(self.skill_id), false)
  103. end
  104. end
  105. function PsionicSkillEquipItem:UpdateSkillData( )
  106. local has_data = self.slot_data and self.slot_data.skill_lv > 0 and true or false
  107. self.bg_imgex.gray = not has_data
  108. self.skill_icon_imgex.gray = not has_data
  109. self.locked_obj:SetActive(not has_data)
  110. end
  111. -- function PsionicSkillEquipItem:UpdateSkillSlotRed( )
  112. -- self.red_dot_obj:SetActive(self.slot_data and self.model:GetPsionicSkillSlotRedCache(self.slot))
  113. -- end
  114. function PsionicSkillEquipItem:__delete( )
  115. self:ClearUIEffect(self.skill_effect_con)
  116. end