源战役客户端
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.

455 regels
14 KiB

1 maand geleden
  1. --[[@------------------------------------------------------------------
  2. @description:
  3. @author:LZR
  4. ----------------------------------------------------------------------]]
  5. LightSuccessView = LightSuccessView or BaseClass(BaseView)
  6. local LightSuccessView = LightSuccessView
  7. function LightSuccessView:__init()
  8. self.base_file = "light"
  9. self.layout_file = "LightSuccessView"
  10. self.layer_name = "Activity"
  11. self.destroy_imm = true
  12. self.change_scene_close = true
  13. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  14. self.click_bg_toClose = false
  15. self.is_set_zdepth = true
  16. ------------------------
  17. -- 一级全屏界面:
  18. self.hide_maincancas = false --隐藏主界面
  19. self.use_background = true --不一定显示遮罩
  20. self.ignore_use_anim = true
  21. self.use_show_anim = true
  22. self.use_hide_anim = true
  23. -- self.blur_activity_bg = true
  24. self.model = LightModel:getInstance()
  25. self.load_callback = function ()
  26. self:LoadSuccess()
  27. self:AddEvent()
  28. end
  29. self.open_callback = function ( )
  30. self:OpenSuccess()
  31. end
  32. self.destroy_callback = function ( )
  33. self:DestroySuccess()
  34. end
  35. end
  36. function LightSuccessView:DestroySuccess( )
  37. if self.close_time_id then
  38. GlobalTimerQuest:CancelQuest(self.close_time_id)
  39. self.close_time_id = nil
  40. end
  41. if self.tween_id then
  42. TweenLite.Stop(self.tween_id)
  43. self.tween_id = nil
  44. end
  45. if self.tween_scale_id then
  46. TweenLite.Stop(self.tween_scale_id)
  47. self.tween_scale_id = nil
  48. end
  49. GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
  50. end
  51. function LightSuccessView:Open(cur_select_right, grade, star)
  52. self.cur_select_right = cur_select_right or 1003
  53. self.grade = grade or 1
  54. self.star = star or 1
  55. BaseView.Open(self)
  56. end
  57. function LightSuccessView:OpenSuccess( )
  58. self:UpdateView()
  59. end
  60. function LightSuccessView:LoadSuccess()
  61. local nodes = {
  62. "back_touch:obj",
  63. "close_btn:obj",
  64. "mid:obj",
  65. "mid/bg:raw:obj",
  66. "mid/bg2:raw:obj",
  67. "mid/roleCon",
  68. "mid/attr_scroll",
  69. "mid/attr_scroll/Viewport/attr_con",
  70. "mid/powerText:txt",
  71. "mid/skillDesc:tmp",
  72. "mid/lb_attr:tmp",
  73. "mid/lb_level:tmp",
  74. "mid/skillName:tmp",
  75. "mid/lb_attr_des:tmp",
  76. "mid/skillImg:img",
  77. "mid/icon_special:img",
  78. "mid/img_title:img",
  79. "mid/lb_name:tmp",
  80. "skillImg_other:img:obj",
  81. "mid/con_star_2",
  82. "mid/con_star_1:obj",
  83. "mid/img_arrow_change:obj",
  84. "mid/lb_change_1:tmp",
  85. "mid/lb_change_2:tmp",
  86. "mid/lb_time:tmp",
  87. "mid/powerTextAdd:tmp",
  88. "mid/icon_add",
  89. "mid/con_star_1/star_5:img", "mid/con_star_1/star_2:img", "mid/con_star_1/star_3:img",
  90. "mid/con_star_1/star_6:img", "mid/con_star_1/star_1:img", "mid/con_star_1/star_4:img",
  91. "mid/con_star_2/star2_5:img", "mid/con_star_2/star2_2:img", "mid/con_star_2/star2_3:img",
  92. "mid/con_star_2/star2_6:img", "mid/con_star_2/star2_1:img", "mid/con_star_2/star2_4:img",
  93. }
  94. self:GetChildren(nodes)
  95. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("light_success_bg_3"), false)
  96. -- lua_resM:setOutsideRawImage(self, self.bg2_raw, GameResPath.GetViewBigBg("light_success_bg_3"), false)
  97. if self.need_load_again then
  98. self:UpdateView()
  99. end
  100. self.time = 11
  101. local function clockFun()
  102. self.time = self.time - 1
  103. if self.time > 0 then
  104. self.lb_time_tmp.text = string.format( "<color=#2CF86F>%d</color> 秒后自动关闭" , self.time )
  105. else
  106. self:CustomClose()
  107. end
  108. end
  109. -- local function bg_back_func( ... )
  110. -- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
  111. -- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
  112. -- self:MoveUIToBack(self.bg_raw)
  113. -- self:MoveUIToBack(self.bg2_raw)
  114. -- end
  115. -- end
  116. -- if self.background_wnd then
  117. -- bg_back_func()
  118. -- else
  119. -- self.bg_back_func = bg_back_func
  120. -- end
  121. clockFun()
  122. self.close_time_id = self.close_time_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
  123. end
  124. function LightSuccessView:AddEvent()
  125. local function on_click( target )
  126. if target == self.back_touch_obj then
  127. self:CustomClose()
  128. elseif target == self.close_btn_obj then
  129. self:CustomClose()
  130. end
  131. end
  132. AddClickEvent(self.back_touch_obj, on_click)
  133. AddClickEvent(self.close_btn_obj, on_click)
  134. end
  135. function LightSuccessView:UpdateView()
  136. if not self.is_loaded then
  137. self.need_load_again = true
  138. return
  139. end
  140. if not self.cur_select_right then
  141. print("LightSuccessView [start:95] 数据不正确:")
  142. return
  143. end
  144. self:ShowModel()
  145. self:UpdateSkill()
  146. self:UpdateAttrProp()
  147. self:UpdateSpeacielProp()
  148. self:UpdateStar()
  149. end
  150. --更新技能
  151. function LightSuccessView:UpdateSkill( )
  152. if not self.is_loaded then return end
  153. local conf = self.model:GetLightConfOne( self.cur_select_right )
  154. if not conf then return end
  155. self.lb_name_tmp.text = conf and Trim(conf.name) or ""
  156. local mat = conf.color == 1 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn
  157. or (conf.color == 2 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDeepPurpleTitle
  158. or (conf.color == 3 and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn
  159. or ShaderTools.TMPSharedMaterialType.FZZZSDFDefault))
  160. SetTMPSharedMaterial(self.lb_name_tmp, mat)
  161. -- self.lb_name_tmp.text = HtmlColorTxt(Trim(conf.name), self.model.text_color[conf.color])
  162. self.lb_level_tmp.text = tostring(self.grade == 0 and 1 or self.grade) .. ""
  163. local skill_info = stringtotable(conf.skill)
  164. local skill_id = tonumber(skill_info[1])
  165. local skill_conf = SkillManager:getInstance():getSkillFromConfig(skill_info[1])
  166. self.skillName_tmp.text = HtmlColorTxt(Trim(skill_conf.name or ""), self.model.text_color[conf.color])
  167. --特殊写死,只需要描述的一部分
  168. -- if skill_id == 120001 then
  169. -- self.skillDesc_tmp.text = "攻击时有30%的概率令敌人流血,每秒损失1%气血"
  170. -- else
  171. self.skillDesc_tmp.text = Trim(skill_conf.lvs[tonumber(skill_info[2])].desc or "")
  172. -- end
  173. lua_resM:setOutsideImageSprite(self, self.skillImg_img, GameResPath.GetSkillIcon(tonumber(skill_info[1])),true)
  174. lua_resM:setOutsideImageSprite(self, self.skillImg_other_img, GameResPath.GetSkillIcon(tonumber(skill_info[1])),true)
  175. end
  176. --更新属性列表
  177. function LightSuccessView:UpdateAttrProp( )
  178. if not self.is_loaded then return end
  179. local grade = self.grade
  180. local star = self.star
  181. -------------------------
  182. local conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star )
  183. if not conf then return end
  184. -------------------------
  185. local base_attr = stringtotable(conf.attrs)
  186. self.powerText_txt.text = "f" .. GetFighting(base_attr,true)
  187. --处理一下attr_list 改成两个一组
  188. local count = #base_attr
  189. local new_base_attr = {}
  190. local add_attr = {}
  191. for i = 1, count do
  192. local data = {
  193. attr_id1 = base_attr[i] and base_attr[i][1] or nil,
  194. value1 = base_attr[i] and base_attr[i][2] or nil,
  195. next_value1 = base_attr[i] and base_attr[i][3] or nil,
  196. }
  197. if grade == 0 and star == 0 then
  198. data.next_value1 = data.value1
  199. data.value1 = 0
  200. table.insert( add_attr, {data.attr_id1, data.next_value1})
  201. else
  202. local conf_last = false
  203. for k,v in pairs(Config.Visuslv) do
  204. if v.next_grade == grade and v.next_lv == star and v.id == self.cur_select_right then
  205. conf_last = v
  206. break
  207. end
  208. end
  209. if conf_last then
  210. local last_attrs = stringtotable(conf_last.attrs)
  211. for kk,vv in pairs(last_attrs) do
  212. if vv[1] == data.attr_id1 and (vv[2]~=data.value1) then
  213. data.next_value1 = data.value1
  214. data.value1 = vv[2]
  215. table.insert( add_attr, {data.attr_id1, data.next_value1 - data.value1})
  216. break
  217. end
  218. end
  219. end
  220. end
  221. table.insert(new_base_attr, data)
  222. end
  223. if grade == 0 and star == 0 then
  224. self.powerTextAdd_tmp.text = GetFighting(add_attr, true)
  225. else
  226. self.powerTextAdd_tmp.text = GetFighting(add_attr, true)
  227. end
  228. if not self.attr_list_com then
  229. self.attr_list_com = self:AddUIComponent(UI.ItemListCreator)
  230. end
  231. local info = {
  232. data_list = new_base_attr,
  233. item_con = self.attr_con,
  234. item_class = LightAttrItemTwo,
  235. item_width = 395,
  236. item_height = 33,
  237. space_x = 0,
  238. start_x = 0,
  239. start_y = 0,
  240. space_y = 0,
  241. scroll_view = self.attr_scroll,
  242. create_frequency = 0.05,
  243. is_scroll_back_on_update = false,
  244. -- init_value = "LightActiveItem",--不同的预制
  245. on_update_item = function(item, i, v)
  246. item:SetData(i,v)
  247. end,
  248. }
  249. self.attr_list_com:UpdateItems(info)
  250. end
  251. --更新特殊数
  252. function LightSuccessView:UpdateSpeacielProp( )
  253. local grade = self.grade
  254. local star = self.star
  255. self.lb_attr_tmp.text = ""
  256. self.lb_attr_des_tmp.text = ""
  257. -------------------------
  258. --当前属性,下层属性
  259. local lv_conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star )
  260. if not lv_conf then return end
  261. --特殊属性
  262. local temp_data2 = stringtotable(lv_conf.spe_attrs)
  263. local attr_num = temp_data2[1] and tonumber(temp_data2[1][2] or 0) or 0
  264. local min_val = 999
  265. local min_grade,min_lv = 999,999
  266. local attr_id = false
  267. for k,v in pairs(Config.Visuslv) do
  268. if v.id == self.cur_select_right then
  269. for a,b in pairs(stringtotable(v.spe_attrs)) do
  270. attr_id = attr_id or b[1]
  271. if b[1] == attr_id and b[2] > attr_num then
  272. if min_grade > v.grade then
  273. min_val = b[2]
  274. min_grade = v.grade
  275. min_lv = v.lv
  276. elseif min_grade == v.grade then
  277. if min_lv > v.lv then
  278. min_val = b[2]
  279. min_grade = v.grade
  280. min_lv = v.lv
  281. end
  282. end
  283. end
  284. end
  285. end
  286. end
  287. if attr_id then
  288. local _, name1, _, val1 = WordManager:GetPropertyInfo(attr_id, attr_num == 0 and min_val or attr_num)
  289. local temp_str = "(" .. min_grade .. "" .. min_lv .. "" .. (temp_data2[1] and "提升)" or "激活)")
  290. if min_grade == 999 then
  291. temp_str = ""
  292. end
  293. self.lb_attr_tmp.text = name1 .. "" .. val1 .. temp_str
  294. SetAttrIconByColorType(self, self.icon_special_img, attr_id, nil, 2)
  295. end
  296. end
  297. function LightSuccessView:UpdateStar( )
  298. local grade = self.grade
  299. local star = self.star
  300. local is_first = grade == 0 and star == 0
  301. -- self.con_star_1_obj:SetActive(not is_first)
  302. -- SetAnchoredPositionX( self.con_star_2.transform, is_first and 250 or 342 )
  303. lua_resM:setImageSprite(self, self.img_title_img, "light_asset", is_first and "func_light_title_1" or "func_light_title_2",true)
  304. local img_node,use_style,last_lv,last_grade,temp_conf = false,false,false,false,false
  305. if not is_first then
  306. --获得上一次的等级
  307. for k,v in pairs(Config.Visuslv) do
  308. if v.next_grade == grade and v.next_lv == star then
  309. last_lv = v.lv
  310. last_grade = v.grade
  311. end
  312. end
  313. self.img_arrow_change_obj:SetActive(true)
  314. SetLocalPosition(self.powerText.transform, 173, 173, 0)
  315. SetLocalPosition(self.powerTextAdd.transform, 378, 173, 0)
  316. SetLocalPosition(self.icon_add.transform, 316, 173, 0)
  317. SetLocalScale(self.powerText.transform, 1, 1, 1)
  318. SetLocalScale(self.powerTextAdd.transform, 1, 1, 1)
  319. SetLocalScale(self.icon_add.transform, 1, 1, 1)
  320. self.lb_change_1_tmp.text = (last_grade or 0) .. ""
  321. self.lb_change_2_tmp.text = (self.grade or 0) .. ""
  322. else
  323. self.img_arrow_change_obj:SetActive(false)
  324. SetLocalPosition(self.powerText.transform, 173, 140, 0)
  325. SetLocalPosition(self.powerTextAdd.transform, 384, 143, 0)
  326. SetLocalPosition(self.icon_add.transform, 316, 143, 0)
  327. SetLocalScale(self.powerText.transform, 1.1, 1.1, 1)
  328. SetLocalScale(self.powerTextAdd.transform, 1.1, 1.1, 1)
  329. SetLocalScale(self.icon_add.transform, 1.1, 1.1, 1)
  330. self.lb_change_1_tmp.text = ""
  331. self.lb_change_2_tmp.text = ""
  332. end
  333. local function get_show_style( id )
  334. id = id or 1
  335. id = id % 6
  336. return (id == 0) and 6 or id
  337. end
  338. for i=1,6 do
  339. img_node = self["star2_" .. i .. "_img"]
  340. use_style = grade > 0 and grade or 1
  341. if star >= i then
  342. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style) .. "_1",true)
  343. else
  344. if use_style == 1 then
  345. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
  346. else
  347. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style-1) .. "_1",true)
  348. end
  349. end
  350. -------------------------
  351. img_node = self["star_" .. i .. "_img"]
  352. if last_lv and last_grade then
  353. use_style = last_grade > 0 and last_grade or 1
  354. if last_lv >= i then
  355. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style) .. "_1",true)
  356. else
  357. if use_style == 1 then
  358. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
  359. else
  360. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_" .. get_show_style(use_style-1) .. "_1",true)
  361. end
  362. end
  363. else
  364. lua_resM:setImageSprite(self, img_node, "light_asset", "light_star_0",true)
  365. end
  366. end
  367. -------------------------
  368. local index = star%6
  369. index = index == 0 and 6 or index
  370. local img_node = self["star2_" .. index .. "_img"]
  371. self:AddUIEffect("ui_jinjiestar", img_node.transform, self.layer_name, nil, 1, false)
  372. end
  373. function LightSuccessView:ShowModel( )
  374. if not self.is_loaded then
  375. return
  376. end
  377. local res_data = {
  378. father_node = self,
  379. transform = self.roleCon,
  380. fashion_type = FuncOpenModel.TypeId.Clothes,
  381. raycast_size = Vector2(0,0),
  382. scale = 160,
  383. position = Vector3(10,-10,-500),
  384. layer_name = self.layer_name,
  385. ui_model_type = UIModelCommon.ModelType.Model,
  386. -- show_shadow = false,
  387. -- use_bloom = false,
  388. light_id = self.cur_select_right,
  389. }
  390. FuncOpenModel:getInstance():SetModelRes(res_data)
  391. end
  392. function LightSuccessView:CustomClose()
  393. local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,6)
  394. if not helpVo then
  395. self:Close()
  396. return
  397. end
  398. local help_type = helpVo.help_type
  399. local step = helpVo.step
  400. if help_type == HelpType.TYPE_LIGHT and step == 6 then
  401. GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
  402. self:PlayAction()
  403. else
  404. self:Close()
  405. end
  406. end
  407. --动画开始
  408. function LightSuccessView:PlayAction( )
  409. local callback = function()
  410. self.skillImg_other_obj:SetActive(false)
  411. GlobalEventSystem:Fire(EventName.GET_SKILL_SHAKE_ANI,9)
  412. self:Close()
  413. end
  414. local pos = MainUIController:GetInstance():GetSkillBtnPos(9) or Vector3.zero
  415. if pos then--右下角图标怒气大招
  416. self.mid_obj:SetActive(false)
  417. self.bg_obj:SetActive(false)
  418. -- self.bg2_obj:SetActive(false)
  419. self.skillImg_other_obj:SetActive(true)
  420. local target_scale = Vector3.New(0.75, 0.75, 0.75)
  421. self.tween_id = TweenLite.to(self, self.skillImg_other_obj.transform, TweenLite.UiAnimationType.POS, pos, 0.8, callback)
  422. self.tween_scale_id = TweenLite.to(self, self.skillImg_other_obj.transform, TweenLite.UiAnimationType.SCALE, target_scale, 0.8)
  423. else
  424. callback()
  425. end
  426. end