源战役客户端
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

514 рядки
15 KiB

4 тижднів тому
  1. SkillUIItem = SkillUIItem or BaseClass(BaseItem)
  2. SkillUIItem.HANDLE_TYPE =
  3. {
  4. default = 0,
  5. up = 1, --可升级
  6. learn = 2, --可学习
  7. change = 4, --可替换
  8. config = 5, --可上阵
  9. }
  10. SkillUIItem.GO_TYPE =
  11. {
  12. VIP = 1,
  13. DAILT_SKILL = 2,
  14. SPECIAL_SKILL = 3,
  15. SEVEN_DAY_TARGET = 4,
  16. SUPER_VIP = 5,
  17. }
  18. function SkillUIItem:__init(parent_wnd, _, mask_id, scroll_veiw)
  19. self.base_file = "skillUI"
  20. self.layout_file = "SkillUIItem"
  21. self.skillui_model = SkillUIModel:getInstance()
  22. self.skill_vo = nil
  23. self.pos = nil
  24. self.is_select = false
  25. self.next_asset = false
  26. self.is_lock = false
  27. self.hide_name = false
  28. self.show_red_dot = false
  29. self.view_index = false
  30. self.can_drag = false
  31. self.mScroll = scroll_veiw
  32. self.drag_listener = false
  33. self.show_lock_info = false
  34. self.show_level = true
  35. self.handle_type = SkillUIItem.HANDLE_TYPE.default
  36. self.need_turn_handle = false
  37. self.use_for = "default"
  38. self.showing_effect = false
  39. self.will_show_effect = false
  40. self.show_next = false
  41. self:Load()
  42. end
  43. --清除界面
  44. function SkillUIItem:__delete()
  45. self:Remove()
  46. end
  47. function SkillUIItem:Load_callback()
  48. self:LoadSuccess()
  49. self:InitEvent()
  50. end
  51. function SkillUIItem:Remove()
  52. self.call_back = nil
  53. self:ClearUIEffect(self.effect_con)
  54. end
  55. function SkillUIItem:LoadSuccess()
  56. local nodes = {
  57. "red_dot:obj",
  58. "select:obj:img",
  59. "btn:obj",
  60. "icon:img:obj",
  61. "lock:obj",
  62. "namebg/name:tmp",
  63. "namebg:obj",
  64. "bg:obj:img",
  65. "tips:tmp:obj",
  66. "go_btn:obj",
  67. "levelbg:obj:img",
  68. "levelbg/level:tmp",
  69. "handle:obj:img",
  70. "effect_con",
  71. "is_max:obj",
  72. "is_config:obj",
  73. "type_img:obj:img",
  74. "next:obj:img",
  75. "is_auto_daily_skill:obj",
  76. "is_ex:obj",
  77. }
  78. self:GetChildren(nodes)
  79. self.red_dot_obj:SetActive(false)
  80. self.select_obj:SetActive(false)
  81. if self.need_refreshData then
  82. self:SetUseFor(self.use_for)
  83. if self.is_nil then
  84. self:SetNil(self.pos, self.view_index)
  85. else
  86. self:SetData(self.skill_vo, self.pos,self.view_index,self.hide_name, self.show_level)
  87. self:WillShowEffect(self.will_show_effect)
  88. end
  89. self:SetSelect(self.is_select)
  90. self:ShowRedDot(self.show_red_dot)
  91. self:SetHandle(self.handle_type)
  92. self:CanDrag(self.can_drag)
  93. self:SetLockInfo(self.show_lock_info)
  94. self:ShowNext(self.show_next)
  95. end
  96. end
  97. function SkillUIItem:SetData(vo, pos,view_index,hide_name, show_level)
  98. self.skill_vo = vo
  99. self.pos = pos
  100. self.hide_name = hide_name
  101. self.is_nil = false
  102. self.view_index = view_index
  103. self.show_level = show_level == nil and true or show_level
  104. if self.is_loaded then
  105. self:UpdateItem()
  106. else
  107. self.need_refreshData = true
  108. end
  109. end
  110. function SkillUIItem:SetNil(pos,view_index)
  111. self.is_nil = true
  112. self.view_index = view_index
  113. self.pos = pos
  114. self.skill_vo = false
  115. if self.is_loaded then
  116. self:UpdateItem()
  117. else
  118. self.need_refreshData = true
  119. end
  120. end
  121. function SkillUIItem:IsNil()
  122. return self.is_nil
  123. end
  124. function SkillUIItem:UpdateItem()
  125. if self.is_nil then
  126. self.namebg_obj:SetActive(false)
  127. self.lock_obj:SetActive(self.is_lock)
  128. self.icon_obj:SetActive(false)
  129. self.levelbg_obj:SetActive(false)
  130. self.tips_obj:SetActive(false)
  131. self.go_btn_obj:SetActive(false)
  132. self.handle_obj:SetActive(false)
  133. return
  134. end
  135. if not self.skill_vo then
  136. return
  137. end
  138. self.icon_obj:SetActive(true)
  139. local skill_vo = self.skill_vo
  140. self.namebg_obj:SetActive(not self.hide_name)
  141. self.name_tmp.text = skill_vo:getName()
  142. self.lock_obj:SetActive(skill_vo.level == 0)
  143. self.levelbg_obj:SetActive(self.show_level and skill_vo.level ~= 0)
  144. if self.use_for == "SkillViewList" then
  145. self.is_config_obj:SetActive(SkillManager.getInstance():IsCurShortcutSkill(skill_vo.id))
  146. self.type_img_obj:SetActive(skill_vo:IsPassitiveSkill() or skill_vo:IsAngerSkill())
  147. --被动技能
  148. if skill_vo:IsPassitiveSkill() then
  149. lua_resM:setImageSprite(self,self.type_img_img,"skillUI_asset",skill_vo.level == 0 and "skill_ui_item_4" or "skill_ui_item_3", true)
  150. --怒气技能
  151. elseif skill_vo:IsAngerSkill() then
  152. lua_resM:setImageSprite(self,self.type_img_img,"skillUI_asset",skill_vo.level == 0 and "skill_ui_item_2" or "skill_ui_item_1", true)
  153. end
  154. if skill_vo:IsMaxLevel() then
  155. self.is_max_obj:SetActive(true)
  156. self.level_tmp.text = ""
  157. else
  158. self.is_max_obj:SetActive(false)
  159. self.level_tmp.text = string.format("等级 %s/%d", HtmlColorTxt(skill_vo.level, "#0ce148") , skill_vo:GetTotalLevel())
  160. end
  161. elseif self.use_for == "LegendlSkill" then
  162. self.levelbg_obj:SetActive(true)
  163. self.level_tmp.text = string.format("Lv.%d", skill_vo.level)
  164. elseif self.use_for == "SkillLevelShow" then
  165. self.level_tmp.text = string.format("等级 %d", skill_vo.level)
  166. else
  167. self.level_tmp.text = string.format("Lv.%d", skill_vo.level)
  168. end
  169. lua_resM:setOutsideImageSprite(self,self.icon_img,GameResPath.GetSkillIcon(self.skill_vo.id), true)
  170. -- VIP怒气大招EX
  171. if skill_vo.level == 3 and SkillManager:getInstance():IsAngrySkill(self.skill_vo.id) then
  172. self.is_ex_obj:SetActive(true)
  173. elseif self.is_ex_obj.activeSelf ~= false then
  174. self.is_ex_obj:SetActive(false)
  175. end
  176. end
  177. function SkillUIItem:InitEvent()
  178. local function onBtnClickHandler(target)
  179. print('Cat:SkillUIItem.lua[191] data',self.use_for, self.view_index)
  180. if self.use_for == "CareerSkillViewConfigList" then
  181. return
  182. end
  183. if target == self.btn_obj then
  184. -- if self.need_turn_handle then
  185. -- local career = RoleManager:getInstance():GetMainRoleVo().career
  186. -- local cfg = Config.Transfercareer
  187. -- local career_name = ""
  188. -- for k,v in pairs(cfg) do
  189. -- if v.career == career and v.transfer_id == self.need_turn_handle then
  190. -- career_name = Trim(v.name)
  191. -- break
  192. -- end
  193. -- end
  194. -- Message.show(string.format("转职为%s后可解", HtmlColorTxt(career_name, "#2cf86f")))
  195. -- return
  196. -- end
  197. self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, self.view_index, self:GetSkillId(), self.pos)
  198. elseif target == self.go_btn_obj then
  199. if self.use_for == "LegendlSkill" then
  200. return
  201. end
  202. if self.can_go then
  203. if SkillUIItem.GO_TYPE.DAILT_SKILL == self.can_go then
  204. OpenFun.Open(147, 0)
  205. elseif SkillUIItem.GO_TYPE.SPECIAL_SKILL == self.can_go then
  206. OpenFun.Open(144, 0)
  207. elseif SkillUIItem.GO_TYPE.VIP == self.can_go then
  208. OpenFun.Open(158, 0)
  209. elseif SkillUIItem.GO_TYPE.SEVEN_DAY_TARGET == self.can_go then
  210. SevenDayTargetModel:getInstance():Fire(SevenDayTargetModel.OPEN_SEVEN_DAY_TARGET_MAIN_VIEW)
  211. elseif SkillUIItem.GO_TYPE.SUPER_VIP == self.can_go then
  212. if SupremeVipModel:getInstance():IsMomentSupremeVip() then
  213. OpenFun.Open(451,6)
  214. else
  215. OpenFun.Open(451,5)
  216. end
  217. else
  218. GlobalEventSystem:Fire(EventName.OPEN_SHOP_VIEW, self.can_go.shop_type, self.can_go.sub_type, self.can_go.goods_id, true)
  219. end
  220. else
  221. Message.show("参与各项活动概率获得哦!")
  222. end
  223. end
  224. end
  225. AddClickEvent(self.btn_obj, onBtnClickHandler)
  226. AddClickEvent(self.go_btn_obj, onBtnClickHandler)
  227. -- if self.mScroll then
  228. -- self.drag_listener = GetLuaDragExtendListener(self.btn_obj)
  229. -- if self.drag_listener then
  230. -- local function OnBtnDragTigger(target)
  231. -- if target == self.btn_obj then
  232. -- if self.can_drag then
  233. -- self.skillui_model:Fire(SkillUIModel.DRAG_SKILL_ITEM_BEGIN, self:GetSkillId(), self.pos, 1)
  234. -- end
  235. -- end
  236. -- end
  237. -- LuaDragExtendTriggeListener(self.btn_obj, OnBtnDragTigger)
  238. -- if self.mScroll then
  239. -- self.drag_listener:SetParentScrollRect(self.mScroll)
  240. -- end
  241. -- --拖拽阈值
  242. -- self.drag_listener:SetTriggerVector({x = 30, y = 0})
  243. -- end
  244. -- end
  245. end
  246. function SkillUIItem:SetSelect(b)
  247. self.is_select = b
  248. if self.is_loaded then
  249. self.select_obj:SetActive(self.is_select)
  250. else
  251. self.need_refreshData = true
  252. end
  253. end
  254. function SkillUIItem:SetLock(lock)
  255. self.is_lock = lock
  256. if self.is_loaded then
  257. self.lock_obj:SetActive(self.is_lock)
  258. else
  259. self.need_refreshData = true
  260. end
  261. end
  262. function SkillUIItem:ShowRedDot(b)
  263. self.show_red_dot = b
  264. if self.is_loaded then
  265. self.red_dot_obj:SetActive(self.show_red_dot)
  266. else
  267. self.need_refreshData = true
  268. end
  269. end
  270. function SkillUIItem:GetSkillId()
  271. local skill_id = 0
  272. if self.skill_vo then
  273. skill_id = self.skill_vo.id
  274. end
  275. return skill_id
  276. end
  277. function SkillUIItem:GetSkillLevel()
  278. local skill_level = 0
  279. if self.skill_vo then
  280. skill_level = self.skill_vo.level
  281. end
  282. return skill_level
  283. end
  284. function SkillUIItem:CanDrag(can_drag)
  285. self.can_drag = can_drag
  286. if self.is_loaded then
  287. if self.drag_listener then
  288. self.drag_listener.isTriggerItem = self.can_drag
  289. end
  290. else
  291. self.need_refreshData = true
  292. end
  293. end
  294. function SkillUIItem:SetUseFor(use_for)
  295. self.use_for = use_for
  296. if self.is_loaded then
  297. self.bg_obj:SetActive(true)
  298. self.is_max_obj:SetActive(false)
  299. self.next_obj:SetActive(false)
  300. self.is_config_obj:SetActive(false)
  301. self.type_img_img.enabled = false
  302. self.name_tmp.enabled = true
  303. self.levelbg_img.enabled = false
  304. self.tips_tmp.enabled = true
  305. self.level_tmp.enabled = true
  306. self.name_tmp.fontSize = 18
  307. SetAnchoredPositionY(self.level, -30)
  308. if self.use_for == "SkillConfigViewList" then
  309. SetAnchoredPositionY(self.level, 0)
  310. self.levelbg_img.enabled = true
  311. lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_19", true)
  312. elseif self.use_for == "SkillViewList" then
  313. self.type_img_img.enabled = true
  314. self.name_tmp.enabled = false
  315. lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_19", true)
  316. elseif self.use_for == "SkillConfigViewSlot" then
  317. lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_15", true)
  318. elseif self.use_for == "LegendlSkill" then
  319. self.tips_tmp.enabled = false
  320. self.name_tmp.fontSize = 16
  321. SetAnchoredPositionY(self.level, 0)
  322. self.levelbg_img.enabled = true
  323. lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_27", true)
  324. elseif self.use_for == "SkillDrag" then
  325. self.level_tmp.enabled = false
  326. elseif self.use_for == "SkillLevelShow" then
  327. lua_resM:setImageSprite(self,self.select_img,"skillUI_asset","skill_ui_item_24", true)
  328. self.name_tmp.enabled = false
  329. else
  330. end
  331. else
  332. self.need_refreshData = true
  333. end
  334. end
  335. function SkillUIItem:SetHandle(handle_type)
  336. self.handle_type = handle_type
  337. if self.is_loaded then
  338. self:ShowRedDot(false)
  339. if self.handle_type == SkillUIItem.HANDLE_TYPE.default then
  340. self.handle_obj:SetActive(false)
  341. else
  342. self.handle_obj:SetActive(true)
  343. local img_str = "skill_ui_item_30"
  344. if self.handle_type == SkillUIItem.HANDLE_TYPE.up then
  345. img_str = "skill_ui_item_31"
  346. self:ShowRedDot(true)
  347. elseif self.handle_type == SkillUIItem.HANDLE_TYPE.learn then
  348. img_str = "skill_ui_item_33"
  349. self:ShowRedDot(true)
  350. elseif self.handle_type == SkillUIItem.HANDLE_TYPE.change then
  351. img_str = "skill_ui_item_32"
  352. elseif self.handle_type == SkillUIItem.HANDLE_TYPE.config then
  353. img_str = "skill_ui_item_30"
  354. end
  355. lua_resM:setImageSprite(self, self.handle_img, "skillui_asset",img_str, true)
  356. end
  357. else
  358. self.need_refreshData = true
  359. end
  360. end
  361. function SkillUIItem:SetLockInfo(show_lock_info)
  362. self.show_lock_info = show_lock_info
  363. if self.is_loaded then
  364. self.can_go = false
  365. self.go_btn_obj:SetActive(false)
  366. self.is_auto_daily_skill_obj:SetActive(self.use_for == "SkillViewList" and self.skill_vo and self.skill_vo:IsDailyLightSkill() and self.skill_vo.level > 0 and self.skillui_model:IsAutoChangeDailySkillid())
  367. if (self.show_lock_info and self.skill_vo and self.skill_vo.level == 0) or (self.skill_vo and self.skill_vo:IsSpecialSkill()) or (self.skill_vo and self.skill_vo:IsForbidJumpSkill()) then
  368. self.tips_obj:SetActive(true)
  369. local str = ""
  370. local skill_vo = self.skill_vo
  371. if self.use_for == "SkillLevelShow" then return end
  372. if skill_vo:IsSpecialSkill() and not SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(skill_vo.id) then
  373. if skill_vo.level == 0 then
  374. self.go_btn_obj:SetActive(true)
  375. str = string.format("%s", HtmlColorTxt("<u>魂力突破</u>", "#2cf86f"))
  376. self.can_go = SkillUIItem.GO_TYPE.SPECIAL_SKILL
  377. end
  378. elseif skill_vo:IsDailyLightSkill() then
  379. local item = self.skillui_model:GetDailySkillItem(skill_vo.id, skill_vo.level + 1)
  380. if item then
  381. self.go_btn_obj:SetActive(true)
  382. str = string.format("%s", HtmlColorTxt("<u>激活幻光</u>", "#2cf86f"))
  383. self.can_go = SkillUIItem.GO_TYPE.DAILT_SKILL
  384. end
  385. elseif SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(skill_vo.id) then
  386. self.go_btn_obj:SetActive(true)
  387. str = string.format("%s", HtmlColorTxt("<u>七日目标</u>", "#2cf86f"))
  388. self.can_go = SkillUIItem.GO_TYPE.SEVEN_DAY_TARGET
  389. elseif skill_vo:IsForbidJumpSkill() then
  390. if skill_vo.level == 0 then
  391. if not SupremeVipModel:getInstance():IsForeverSupremeVip() then
  392. self.go_btn_obj:SetActive(true)
  393. str = string.format("%s", HtmlColorTxt("<u>二阶贵族</u>", "#2cf86f"))
  394. self.can_go = SkillUIItem.GO_TYPE.SUPER_VIP
  395. end
  396. end
  397. else
  398. local vip = skill_vo:GetNextConditionByKey("vip")
  399. local turn = skill_vo:GetNextConditionByKey("turn")
  400. local level = skill_vo:GetNextConditionByKey("level")
  401. local goods = skill_vo:GetNextConditionByKey("goods")
  402. if vip then
  403. self.go_btn_obj:SetActive(true)
  404. str = HtmlColorTxt(string.format("<u>达到VIP%d</u>", vip) , "#0ce148")
  405. self.can_go = SkillUIItem.GO_TYPE.VIP
  406. elseif goods and goods[1][1] then
  407. self.go_btn_obj:SetActive(true)
  408. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods[1][1])
  409. local cfg = ShopModel:getInstance():GetShopTypeIdBuyCFG(basic.type_id)
  410. self.go_btn_obj:SetActive(true)
  411. if cfg and TableSize(cfg) > 0 then
  412. local shop_cfg = false
  413. for k,v in pairs(cfg) do
  414. shop_cfg = v
  415. break
  416. end
  417. str = HtmlColorTxt( string.format("<u>%s</u>", ShopModel:getInstance():GetShopTabName(shop_cfg.shop_type)), "#0ce148")
  418. self.can_go = shop_cfg
  419. else
  420. str = HtmlColorTxt("<u>运营活动</u>", "#0ce148")
  421. end
  422. elseif level then
  423. str = HtmlColorTxt(string.format("%d级 自动学习", level) , "#fdffc2")
  424. end
  425. end
  426. self.tips_tmp.text = str
  427. else
  428. self.tips_obj:SetActive(false)
  429. end
  430. else
  431. self.need_refreshData = true
  432. end
  433. end
  434. function SkillUIItem:SetNeedTurnHandle(handle)
  435. self.need_turn_handle = handle
  436. end
  437. function SkillUIItem:WillShowEffect(show)
  438. self.will_show_effect = show
  439. if self.is_loaded then
  440. if self.will_show_effect then
  441. self.will_show_effect = false
  442. self:AddEffect()
  443. end
  444. else
  445. self.need_refreshData = true
  446. end
  447. end
  448. function SkillUIItem:ShowNext(show_next)
  449. self.show_next = show_next
  450. if self.is_loaded then
  451. if self.show_next then
  452. self.next_obj:SetActive(true)
  453. lua_resM:setImageSprite(self,self.next_img,"skillUI_asset",self.show_next == 0 and "skill_ui_item_15" or "skill_ui_item_16", true)
  454. else
  455. self.next_obj:SetActive(false)
  456. end
  457. else
  458. self.need_refreshData = true
  459. end
  460. end
  461. function SkillUIItem:AddEffect()
  462. if not self.showing_effect then
  463. local function call_back( )
  464. self.showing_effect = false
  465. end
  466. self:ClearUIEffect(self.effect_con)
  467. self:AddUIEffect("ui_hunliqiudianliang", self.effect_con, "Activity", nil, 2.8, false, 0.6, nil, call_back)
  468. self.showing_effect = true
  469. end
  470. end