源战役客户端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

636 linhas
22 KiB

  1. SkillUIDetailItem = SkillUIDetailItem or BaseClass(BaseItem)
  2. SkillUIDetailItem.UIType =
  3. {
  4. PreViewMode = 1,
  5. NonePreView = 2,
  6. }
  7. function SkillUIDetailItem:__init(parent_wnd, prefab_asset, layer_name)
  8. self.base_file = "skillUI"
  9. self.layout_file = "SkillUIDetailItem"
  10. self.model = SkillManager:getInstance()
  11. self.skillui_model = SkillUIModel:getInstance()
  12. self.mainVo = RoleManager.Instance.mainRoleInfo
  13. self.skill_vo = false
  14. self.is_pre_view = false
  15. self.ui_type = SkillUIDetailItem.UIType.PreViewMode
  16. self.attr_one_item_list = {}
  17. self.need_goods_id = false
  18. self.showing_effect = false
  19. self.show_skill_preview = false
  20. self.select_level = false
  21. self.show_item_list = {}
  22. self:Load()
  23. end
  24. --清除界面
  25. function SkillUIDetailItem:__delete()
  26. self:Remove()
  27. end
  28. function SkillUIDetailItem:Load_callback()
  29. self:LoadSuccess()
  30. self:InitEvent()
  31. end
  32. function SkillUIDetailItem:Remove()
  33. if self.base_item then
  34. UIObjPool:PushItem(UIObjPool.UIType.AwardItem, self.base_item)
  35. end
  36. self:ClearUIEffect(self.effect_con)
  37. self:ClearUIEffect(self.effect_con2)
  38. for i,v in ipairs(self.show_item_list) do
  39. v:DeleteMe()
  40. end
  41. end
  42. function SkillUIDetailItem:LoadSuccess()
  43. local nodes = {
  44. "priview_btn:obj:img",
  45. "base_con_one/power:txt",
  46. "base_con_one/name:tmp",
  47. "base_con_one/cd:tmp",
  48. "base_con_one/effect_con",
  49. "base_con_one:obj",
  50. "base_con_one/level:tmp",
  51. "base_con_one/des_group/des:tmp",
  52. "base_con_one/des_group/cur_level:obj",
  53. "base_con_one/des_group:obj",
  54. "attrlist_group/can_not_up:obj",
  55. "base_con_one/ScrollViewSkill:obj",
  56. "base_con_one/ScrollViewSkill/Viewport/skill_level_list_con",
  57. "base_con_two:obj",
  58. "base_con_two/power2:txt",
  59. "base_con_two/name2:tmp",
  60. "base_con_two/des_group2:obj",
  61. "base_con_two/des_group2/des2:tmp",
  62. "base_con_two/icon2:img",
  63. "base_con_two/effect_con2",
  64. "priview_group:obj",
  65. "level_max:obj",
  66. "attrlist_group:obj",
  67. "learn_group/daily_light_learn:obj",
  68. "learn_group/pre_condition:obj",
  69. "learn_group/item_learn:obj",
  70. "learn_group/vip_condition:obj",
  71. "attrlist_group/ScrollViewTwo/Viewport/attr_two_con",
  72. "attrlist_group/ScrollViewTwo:obj",
  73. "priview_group/play_btn:obj",
  74. "priview_group/skill_role_con:raw",
  75. "learn_group/daily_light_learn/daily_light_des:tmp",
  76. "learn_group/daily_light_learn/dialy_light_btn:obj",
  77. "learn_group/item_learn/item_name:tmp",
  78. "learn_group/vip_condition/vip_btn:obj",
  79. "learn_group/vip_condition/vip_btn/vip_des:tmp",
  80. "learn_group/pre_condition/pre_condition_text:tmp",
  81. "learn_group/item_learn/go_way_btn:obj",
  82. "learn_group/item_learn/go_way_btn/go_way_btn_text:tmp",
  83. "learn_group/item_learn/item_con",
  84. "learn_group/item_learn/learn_btn:obj",
  85. "learn_group/item_learn/learn_btn/learn_btn_txt:tmp",
  86. "priview_group/priew_text:obj",
  87. "auto_change_daily_btn/auto_change_daily_select:obj",
  88. "auto_change_daily_btn:obj",
  89. "learn_group/daily_light_learn/dialy_light_btn/daily:obj",
  90. }
  91. self:GetChildren(nodes)
  92. self:UpdateAutoChangeDailySkillState()
  93. self.daily_obj:SetActive(false)
  94. if self.need_refreshData then
  95. self:SetData(self.skill_vo, self.ui_type, self.is_pre_view)
  96. end
  97. end
  98. function SkillUIDetailItem:InitEvent()
  99. local function onBtnClickHandler(target)
  100. if self.priview_btn_obj == target then
  101. --self.is_pre_view = not self.is_pre_view
  102. -- self:SwitchViewModel()
  103. -- if self.click_callback then
  104. -- self.click_callback(self.is_pre_view)
  105. -- end
  106. elseif self.play_btn_obj == target then
  107. elseif self.up_preview_btn_obj == target then
  108. --self.skillui_model:Fire(SkillUIModel.OPEN_SKILL_UPLEVEL_PREVIEW, self.skill_vo)
  109. elseif self.learn_btn_obj == target then
  110. if self.skill_vo and self.skill_vo.id then
  111. self.model:Fire(SkillManager.REQUEST_CCMD_EVENT,21001, self.skill_vo.id )
  112. end
  113. elseif self.dialy_light_btn_obj == target then
  114. self.skillui_model:Fire(SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW)
  115. OpenFun.Open(147, 0)
  116. elseif self.vip_btn_obj == target then
  117. self.skillui_model:Fire(SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW)
  118. OpenFun.Open(158, 0)
  119. elseif self.go_way_btn_obj == target then
  120. if self.need_goods_id then
  121. --商店获取途径
  122. local goods = self.skill_vo:GetNextConditionByKey("goods")
  123. if goods and goods[1][1] and goods[1][2] then
  124. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods[1][1])
  125. local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(goods[1][1]) or 0
  126. local get_str = HtmlColorTxt(goods_num, goods_num < goods[1][2] and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK).."/".. goods[1][2]
  127. local cfg = ShopModel:getInstance():GetShopTypeIdBuyCFG(basic.type_id)
  128. if cfg and TableSize(cfg) > 0 and string.find(get_str, ColorUtil.RED_DARK) then
  129. ShopModel:getInstance():Fire(ShopModel.OPEN_SHOP_BUY_TIP_VIEW,basic.type_id)
  130. else
  131. Message.show("参与各项活动概率获得哦!")
  132. end
  133. else
  134. Message.show("参与各项活动概率获得哦!")
  135. end
  136. end
  137. elseif self.pre_condition_obj == target then
  138. if self.skill_vo and self.skill_vo:IsSpecialSkill() then
  139. self.skillui_model:Fire(SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW)
  140. OpenFun.Open(144, 0)
  141. elseif self.skill_vo and SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(self.skill_vo.id) then
  142. self.skillui_model:Fire(SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW)
  143. SevenDayTargetModel:getInstance():Fire(SevenDayTargetModel.OPEN_SEVEN_DAY_TARGET_MAIN_VIEW)
  144. elseif self.skill_vo and self.skill_vo:IsForbidJumpSkill() then
  145. if not SupremeVipModel:getInstance():IsForeverSupremeVip() then
  146. self.skillui_model:Fire(SkillUIModel.CLOSE_SKILL_UPLEVEL_PREVIEW)
  147. if SupremeVipModel:getInstance():IsMomentSupremeVip() then
  148. OpenFun.Open(451,6)
  149. else
  150. OpenFun.Open(451,5)
  151. end
  152. end
  153. end
  154. elseif self.auto_change_daily_btn_obj == target then
  155. local b = self.skillui_model:IsAutoChangeDailySkillid()
  156. b = not b
  157. self.skillui_model:SetAutoChangeDailyState(b)
  158. self:UpdateAutoChangeDailySkillState()
  159. end
  160. end
  161. AddClickEvent(self.play_btn_obj,onBtnClickHandler)
  162. AddClickEvent(self.up_preview_btn_obj,onBtnClickHandler)
  163. AddClickEvent(self.priview_btn_obj,onBtnClickHandler)
  164. AddClickEvent(self.learn_btn_obj, onBtnClickHandler)
  165. AddClickEvent(self.dialy_light_btn_obj, onBtnClickHandler)
  166. AddClickEvent(self.go_way_btn_obj, onBtnClickHandler)
  167. AddClickEvent(self.vip_btn_obj, onBtnClickHandler)
  168. AddClickEvent(self.pre_condition_obj, onBtnClickHandler)
  169. AddClickEvent(self.auto_change_daily_btn_obj, onBtnClickHandler)
  170. local function onUpdateSkillList()
  171. if self.skill_vo then
  172. local id = self.skill_vo.id
  173. self.skill_vo = self.model:getSkill(id)
  174. self:UpdateSkillInfo(self.skillui_model.is_level_up)
  175. --如果当前是1级,则播放升级特效
  176. if self.skill_vo.level == 1 and self.skillui_model.is_level_up then
  177. self:AddEffect()
  178. end
  179. self.skillui_model.is_level_up = false
  180. end
  181. end
  182. self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST, onUpdateSkillList)
  183. local function onChangeBagListHandler()
  184. self:UpdateLearnGroup()
  185. end
  186. self:BindEvent(GoodsModel:getInstance(),GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
  187. local function onClickSkillItem(view_index, skill_id, pos)
  188. if view_index == SkillUIModel.Click_SkillItem.SkillLevelShow then
  189. if self.show_item_list[pos] then
  190. self.select_level = self.show_item_list[pos]:GetSkillLevel()
  191. self:UpdateAttr(false, true)
  192. for i,v in ipairs(self.show_item_list) do
  193. v:SetSelect(v:GetSkillLevel() == self.select_level)
  194. end
  195. end
  196. end
  197. end
  198. self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM, onClickSkillItem)
  199. end
  200. function SkillUIDetailItem:SetData(vo, ui_type, is_pre_view)
  201. self.skill_vo = vo
  202. self.ui_type = ui_type or self.ui_type
  203. self.is_pre_view = is_pre_view or self.is_pre_view
  204. self.select_level = false
  205. if self.is_loaded then
  206. self:UpdateSkillInfo()
  207. else
  208. self.need_refreshData = true
  209. end
  210. end
  211. function SkillUIDetailItem:UpdateSkillInfo(is_up)
  212. local skill_vo = self.skill_vo
  213. local cd = skill_vo:getCd()
  214. local ui_type = self.ui_type
  215. if not self:CanPreview(self.skill_vo) then
  216. ui_type = SkillUIDetailItem.UIType.NonePreView
  217. end
  218. local show_special = self.model:IsShowSpecialSkill(self.skill_vo.id)
  219. self.base_con_two_obj:SetActive(show_special)
  220. self.base_con_one_obj:SetActive(not show_special)
  221. self.cd_tmp.text = cd == 0 and " " or string.format("冷却:%s", HtmlColorTxt((cd / 1000) .. "s", "#fdffc2"))
  222. self.des_tmp.text = skill_vo:GetDesc(1)
  223. self.power_txt.text = skill_vo:GetPower()
  224. self.name_tmp.text = skill_vo:getName()
  225. self.level_tmp.text = ""
  226. self.power2_txt.text = "f" .. skill_vo:GetPower()
  227. self.name2_tmp.text = skill_vo:getName()
  228. self.des2_tmp.text = skill_vo:GetDesc(1)
  229. lua_resM:setOutsideImageSprite(self,self.icon2_img,GameResPath.GetSkillIcon(skill_vo.id), false)
  230. lua_resM:setOutsideImageSprite(self,self.icon_img,GameResPath.GetSkillIcon(skill_vo.id), false)
  231. --self.priview_btn_obj:SetActive(ui_type == SkillUIDetailItem.UIType.PreViewMode)
  232. self.priview_btn_obj:SetActive(false)
  233. --self:SwitchViewModel()
  234. self:UpdateAttr(is_up)
  235. self:UpdateLearnGroup()
  236. end
  237. function SkillUIDetailItem:UpdateAttr(is_up, update_select)
  238. local skill_vo = self.skill_vo
  239. local attrs = skill_vo:GetSkillAttrList(nil, true)
  240. local level = skill_vo.level
  241. if self.ui_type == SkillUIDetailItem.UIType.PreViewMode and not self.is_pre_view then
  242. self.attrlist_group_obj:SetActive(true)
  243. self.des_group_obj:SetActive(true)
  244. else
  245. self.attrlist_group_obj:SetActive(false)
  246. self.des_group_obj:SetActive(false)
  247. end
  248. --self.cur_level_obj:SetActive(level == 1)
  249. self.cur_level_obj:SetActive(false)
  250. local attr_temp = false
  251. local attr_temp_show = false
  252. if #attrs > 10 then
  253. attr_temp = {}
  254. attr_temp_show = {}
  255. if level >= #attrs - 4 then
  256. for i= #attrs - 4, #attrs do
  257. table.insert(attr_temp, attrs[i])
  258. table.insert(attr_temp_show, attrs[i])
  259. end
  260. else
  261. if level <= 1 then
  262. table.insert(attr_temp_show, {level = 1,})
  263. end
  264. local start = level > 1 and level or 2
  265. for i= start, start + 4 do
  266. table.insert(attr_temp, attrs[i])
  267. table.insert(attr_temp_show, attrs[i])
  268. end
  269. end
  270. else
  271. attr_temp = {}
  272. attr_temp_show = {}
  273. for i,v in ipairs(attrs) do
  274. if v.level ~= 1 then
  275. table.insert(attr_temp, v)
  276. end
  277. table.insert(attr_temp_show, v)
  278. end
  279. end
  280. for i,v in ipairs(self.attr_one_item_list) do
  281. v:ClearAllUIEffect()
  282. v:SetVisible(false)
  283. end
  284. if not self.select_level then
  285. self.select_level = self.skill_vo.level ~= 0 and self.skill_vo.level or 1
  286. end
  287. self.ScrollViewTwo_obj:SetActive(false)
  288. self.can_not_up_obj:SetActive(#attr_temp == 0)
  289. for i,v in ipairs(attr_temp) do
  290. local item = self.attr_one_item_list[i]
  291. if not item then
  292. item = SkillUIAttrOne.New(self.attr_two_con,nil,self.layer_name)
  293. self.attr_one_item_list[i] = item
  294. end
  295. local lv_str = (v.level) <= level and HtmlColorTxt(string.format("突破%d", v.level), "#ffffff") or HtmlColorTxt(string.format("突破%d", v.level), "#8b8b8b")
  296. local text_str = (v.level) <= level and HtmlColorTxt(v.des, "#ffffff") or HtmlColorTxt(v.des, "#8b8b8b")
  297. local b_cur = (v.level)== level
  298. local b_toggle = (v.level) <= level
  299. item:SetVisible(true)
  300. item:SetData(lv_str, text_str, b_cur, b_toggle, i)
  301. item:WillShowEffect((v.level)== level and is_up)
  302. item:SetSelect(v.level == self.select_level)
  303. end
  304. self.ScrollViewTwo_obj:SetActive(true)
  305. if not update_select then
  306. self:UpdateShowListItem(attr_temp_show)
  307. end
  308. end
  309. function SkillUIDetailItem:UpdatePreView()
  310. local skill_vo = self.skill_vo
  311. local model_id, texture_id = self.mainVo:GetRoleClotheTextureId()
  312. local weapon_model_id, weapon_texture_id = self.mainVo:GetWeaponClotheId()
  313. local head_model_id, head_clothe_id = self.mainVo:GetRoleHeadId()
  314. local skill_preview_callback = function (case)
  315. if case == 1 then
  316. self.play_btn_obj:SetActive(false)
  317. elseif case == 2 then
  318. self.play_btn_obj:SetActive(true)
  319. end
  320. end
  321. local ab_name = ""
  322. local res_name = ""
  323. local show_root = false
  324. if self.show_skill_preview then
  325. ab_name = "icon_skillui_skill_ui_bg_1"
  326. res_name = "skill_ui_bg_1.png"
  327. show_root = true
  328. self.play_btn_obj:SetActive(true)
  329. self.priew_text_obj:SetActive(true)
  330. else
  331. ab_name = "icon_skillui_skill_ui_bg_3"
  332. res_name = "skill_ui_bg_3.png"
  333. show_root = false
  334. self.play_btn_obj:SetActive(false)
  335. self.priew_text_obj:SetActive(false)
  336. end
  337. local data = {
  338. career = self.mainVo.career,
  339. clothe_res_id = self.mainVo:GetRoleClotheId(),
  340. weapon_res_id = weapon_model_id,
  341. weapon_clothe_id = weapon_texture_id,
  342. type = SceneBaseType.MainRole,
  343. fashion_model_id = model_id,
  344. texture_id = texture_id,
  345. callBack = call_back,
  346. wing_id = self.mainVo.wing_id,
  347. image_id = self.mainVo.image_id,
  348. head_wear_id = head_model_id,
  349. head_clothe_id =head_clothe_id,
  350. position = Vector3(-100, 100, 45),
  351. skill_id = skill_vo.id,
  352. size = Vector2(1200 *1.4 * 0.5 ,720*1.4 * 0.5),
  353. skill_preview = true,
  354. scale = 84,
  355. raycast_size = Vector2(100, 100),
  356. skill_preview_callback = skill_preview_callback,
  357. use_bloom = true,
  358. can_rotate = false,
  359. action_name_list = {"idle"},
  360. show_root = show_root,
  361. camera_args =
  362. {
  363. orthographic = false,
  364. fieldOfView = 90,
  365. localPosition = Vector3(0,255,0),
  366. localRotation = Vector3(15,0,0),
  367. },
  368. rotate = Vector3(0, 45, 0),
  369. using_sprite_bg =
  370. {
  371. ab_name = ab_name,
  372. asset_name = res_name,
  373. position = Vector3(2, -445, 2000),
  374. scale = Vector3(518, 518, 518),
  375. rotation = Vector3(15, 0, 0),
  376. }
  377. }
  378. lua_resM:SetRoleModelByRT(self,self.skill_role_con,data)
  379. end
  380. function SkillUIDetailItem:SwitchViewModel()
  381. local skill_vo = self.skill_vo
  382. local is_pre_view = self.is_pre_view
  383. local ui_type = self.ui_type
  384. if not self:CanPreview(self.skill_vo) then
  385. ui_type = SkillUIDetailItem.UIType.NonePreView
  386. is_pre_view = false
  387. end
  388. local b = is_pre_view and ui_type == SkillUIDetailItem.UIType.PreViewMode
  389. lua_resM:setImageSprite(self, self.priview_btn_img, "skillui_asset",b and "skill_ui_6" or "skill_ui_22", false)
  390. --self.self.priview_group_obj:SetActive(b)
  391. self.show_skill_preview = b
  392. self.attrlist_group_obj:SetActive(not b)
  393. self.des_group_obj:SetActive(not b)
  394. --self:UpdatePreView( )
  395. end
  396. function SkillUIDetailItem:UpdateLearnGroup()
  397. local skill_vo = self.skill_vo
  398. local is_max = skill_vo:IsMaxLevel()
  399. self.level_max_obj:SetActive(false)
  400. self.item_learn_obj:SetActive(false)
  401. self.pre_condition_obj:SetActive(false)
  402. self.daily_light_learn_obj:SetActive(false)
  403. self.vip_condition_obj:SetActive(false)
  404. self.auto_change_daily_btn_obj:SetActive(self.skill_vo:IsDailyLightSkill())
  405. self.need_goods_id = false
  406. if is_max then
  407. self.level_max_obj:SetActive(true)
  408. else
  409. if self.skill_vo:IsSpecialSkill() and not SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(self.skill_vo.id) then
  410. self.pre_condition_obj:SetActive(true)
  411. self.pre_condition_text_tmp.text = HtmlColorTxt("<u>魂力突破</u>", "#0ce148")
  412. self.pre_condition_text_tmp.text = string.format("提升 %s 可升级 %s", HtmlColorTxt("魂力突破", "#FFE27D"), HtmlColorTxt("<u>前往培养</u>", "#0ce148"))
  413. elseif self.skill_vo:IsDailyLightSkill() then
  414. self.daily_light_learn_obj:SetActive(true)
  415. local item = self.skillui_model:GetDailySkillItem(skill_vo.id, skill_vo.level + 1)
  416. local str = skill_vo.level == 0 and "可获得" or "可升级"
  417. if item then
  418. self.daily_light_des_tmp.text = string.format("激活 %s %s %s", HtmlColorTxt(Trim(item.name), "#9C6CFF"), str, HtmlColorTxt("<u>前往激活</u>", "#2CF86F"))
  419. else
  420. self.daily_light_des_tmp.text = "暂时无法获取"
  421. end
  422. elseif SevenDayTargetModel:GetInstance():IsSevenDayTargetSkill(skill_vo.id) then
  423. self.pre_condition_obj:SetActive(true)
  424. self.pre_condition_text_tmp.text = "<u>七日目标任务获取</u>"
  425. elseif self.skill_vo:IsForbidJumpSkill() then
  426. self.pre_condition_obj:SetActive(true)
  427. self.pre_condition_text_tmp.text = string.format("激活 %s 可获得 %s", HtmlColorTxt("二阶贵族", "#FFE27D"), HtmlColorTxt("<u>前往获得</u>", "#0ce148"))
  428. else
  429. local vip = skill_vo:GetNextConditionByKey("vip")
  430. local turn = skill_vo:GetNextConditionByKey("turn")
  431. local level = skill_vo:GetNextConditionByKey("level")
  432. local goods = skill_vo:GetNextConditionByKey("goods")
  433. if self.base_item then
  434. self.base_item:SetVisible(false)
  435. end
  436. if skill_vo:CanUpButGoods() then
  437. self.item_learn_obj:SetActive(true)
  438. if not self.base_item then
  439. self.base_item = UIObjPool:PopItem(UIObjPool.UIType.AwardItem, self.item_con)
  440. self.base_item:SetItemSize(78, 78)
  441. end
  442. if goods then
  443. self.base_item:SetVisible(true)
  444. print(">>>>>>>>>>>>>>道具id", goods[1][1], goods[1][2])
  445. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods[1][1])
  446. self.need_goods_id = goods[1][1]
  447. self.base_item:SetData(goods[1][1], goods[1][2])
  448. self.item_name_tmp.text = Language.substitute("<color={0}>{1}</color>", WordManager.GetGoodsColor(basic.color), Trim(basic.goods_name))
  449. local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(goods[1][1]) or 0
  450. local get_str = HtmlColorTxt(goods_num, goods_num < goods[1][2] and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK).."/".. goods[1][2]
  451. self.base_item:SetNumStr("")
  452. self.base_item:IsGetGoods(true,get_str,true)
  453. self.go_way_btn_obj.gameObject:SetActive(true)
  454. local cfg = ShopModel:getInstance():GetShopTypeIdBuyCFG(basic.type_id)
  455. local str = ""
  456. if cfg and TableSize(cfg) > 0 then
  457. local shop_cfg = false
  458. for k,v in pairs(cfg) do
  459. shop_cfg = v
  460. break
  461. end
  462. str = HtmlColorTxt( string.format("<u>%s</u>", ShopModel:getInstance():GetShopTabName(shop_cfg.shop_type)), "#0ce148")
  463. else
  464. str = HtmlColorTxt("<u>运营活动</u>", "#0ce148")
  465. end
  466. self.go_way_btn_text_tmp.text = str
  467. else
  468. self.base_item:SetVisible(false)
  469. self.item_name_tmp.text = ""
  470. self.go_way_btn_obj.gameObject:SetActive(false)
  471. end
  472. else
  473. if vip then
  474. self.vip_condition_obj:SetActive(true)
  475. local str = skill_vo.level == 0 and "可获得" or "可升级"
  476. self.vip_des_tmp.text = string.format("达到 %s %s", HtmlColorTxt("<u>VIP"..vip .. "</u>", "#2cf86f"), str)
  477. elseif level then
  478. local str = skill_vo.level == 0 and "可学习" or "可升级"
  479. self.pre_condition_obj:SetActive(true)
  480. if turn and turn > 0 then
  481. self.pre_condition_text_tmp.text = string.format("达到 %s %s", HtmlColorTxt(turn.."".. level .. "", "#2cf86f"), str)
  482. else
  483. self.pre_condition_text_tmp.text = string.format("达到 %s %s", HtmlColorTxt(level.."", "#2cf86f"), str)
  484. end
  485. end
  486. end
  487. end
  488. self.learn_btn_txt_tmp.text = skill_vo.level == 0 and "学习技能" or "升级技能"
  489. end
  490. end
  491. function SkillUIDetailItem:SetClickCallBack(cb)
  492. self.click_callback = cb
  493. end
  494. function SkillUIDetailItem:CanPreview(skill_vo)
  495. return skill_vo and skill_vo:GetSkillType()== SkillVo.SkillType.Initiative and Config.CareerFightMovies[skill_vo.id]
  496. end
  497. function SkillUIDetailItem:AddEffect()
  498. if not self.showing_effect then
  499. local function call_back( )
  500. self.showing_effect = false
  501. end
  502. self:ClearUIEffect(self.effect_con)
  503. self:ClearUIEffect(self.effect_con2)
  504. if self.skill_vo and not self.model:IsShowSpecialSkill(self.skill_vo.id)then
  505. self:AddUIEffect("ui_jinjieshuxing", self.effect_con, self.layer_name, Vector3(-170,0,0), 1, false, 0.75, false, call_back)
  506. else
  507. self:AddUIEffect("ui_jinjieshuxing", self.effect_con2, self.layer_name, Vector3(-170,0,0), 1, false, 0.75, false, call_back)
  508. end
  509. self.showing_effect = true
  510. end
  511. end
  512. function SkillUIDetailItem:UpdateShowListItem(list)
  513. if self.skill_vo and not self.model:IsShowSpecialSkill(self.skill_vo.id)then
  514. for i,v in ipairs(self.show_item_list) do
  515. v:SetVisible(false)
  516. end
  517. if not list or #list == 0 or not self.skill_vo then return end
  518. local idx = false
  519. local is_one = #list == 1
  520. SetAnchoredPositionX(self.ScrollViewSkill, is_one and (140 - 45 ) or -28)
  521. SetSizeDeltaX(self.skill_level_list_con, is_one and 300 or (165 * #list - 55) )
  522. for i, v in ipairs(list) do
  523. local skill_vo = SkillVo.New(self.skill_vo.id)
  524. skill_vo.level = v.level
  525. local item = self.show_item_list[i]
  526. if not item then
  527. item = SkillUIItem.New(self.skill_level_list_con,nil,self.maskID)
  528. self.show_item_list[i] = item
  529. end
  530. item:SetVisible(true)
  531. item:SetUseFor("SkillLevelShow")
  532. item:SetData(skill_vo, i, SkillUIModel.Click_SkillItem.SkillLevelShow, false)
  533. item:CanDrag(false)
  534. item:SetLockInfo(true)
  535. item:SetAnchoredPosition( is_one and 100 or (55 + 165 * (i - 1)), -45)
  536. item:SetSelect(skill_vo.level == self.select_level)
  537. item:SetLock(skill_vo.level > self.skill_vo.level)
  538. if i == #list then
  539. item:ShowNext(false)
  540. else
  541. item:ShowNext(skill_vo.level <= self.skill_vo.level and 1 or 0)
  542. end
  543. if not idx and (skill_vo.level == self.skill_vo.level or self.skill_vo.level == 0) then
  544. idx = i
  545. end
  546. end
  547. idx = idx or 1
  548. if idx < 2 then
  549. idx = 0
  550. elseif idx > #list - 2 then
  551. idx = #list - 3
  552. else
  553. idx = idx -2
  554. end
  555. SetAnchoredPositionX(self.skill_level_list_con, idx * (- 165))
  556. end
  557. end
  558. function SkillUIDetailItem:UpdateAutoChangeDailySkillState()
  559. local b = self.skillui_model:IsAutoChangeDailySkillid()
  560. self.auto_change_daily_select_obj:SetActive(b)
  561. end