源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

307 строки
12 KiB

4 недель назад
  1. --装备对比的tips
  2. StarSoulEquipCompareTips = StarSoulEquipCompareTips or BaseClass(BaseItem)
  3. function StarSoulEquipCompareTips:__init()
  4. self.base_file = "common"
  5. self.layout_file = "StarSoulEquipCompareTips"
  6. self.layer_name = "Top"
  7. -- self.use_local_view = true
  8. self.use_background = true
  9. self.click_bg_toClose = true
  10. self.close_mode = CloseMode.CloseDestroy
  11. self.is_set_zdepth = true
  12. -- self.destroy_imm = true
  13. self.goods_vo = nil
  14. self.model = StarSpiritModel:getInstance()
  15. self:Load()
  16. end
  17. function StarSoulEquipCompareTips:__delete()
  18. if self.icon_item then
  19. self.icon_item:ReleaseObj()
  20. self.icon_item = nil
  21. end
  22. end
  23. function StarSoulEquipCompareTips:Load_callback()
  24. self:LoadSuccess()
  25. self:InitEvent()
  26. if self.need_refreshData then
  27. self:SetData(self.goods_vo)
  28. end
  29. end
  30. function StarSoulEquipCompareTips:LoadSuccess()
  31. self.layout,
  32. self.bg,
  33. self.icon_con,
  34. self.ScrollView,
  35. self.ScrollViewContent,
  36. self.line1,
  37. self.line2,
  38. self.line3
  39. = GetChildTransforms(self.transform, {
  40. "layout",
  41. "layout/normal/bg",
  42. "layout/normal/icon_con",
  43. "layout/normal/ScrollView",
  44. "layout/normal/ScrollView/Viewport/Content",
  45. "layout/normal/ScrollView/Viewport/Content/line1",
  46. "layout/normal/ScrollView/Viewport/Content/line2",
  47. "layout/normal/ScrollView/Viewport/Content/line3",
  48. })
  49. self.name_text,
  50. self.pos_text,
  51. self.base_name_text,
  52. self.basePro_text,
  53. self.base_stren_text,
  54. self.add_name_text,
  55. self.addPro_text,
  56. self.equip_score,
  57. self.random_name_text,
  58. self.random_pro_text
  59. = GetChildTexts(self.transform, {
  60. "layout/normal/nameText",
  61. "layout/normal/posText",
  62. "layout/normal/ScrollView/Viewport/Content/baseName",
  63. "layout/normal/ScrollView/Viewport/Content/basePro",
  64. "layout/normal/ScrollView/Viewport/Content/strengthAdd",
  65. "layout/normal/ScrollView/Viewport/Content/addName",
  66. "layout/normal/ScrollView/Viewport/Content/addPro",
  67. "layout/normal/equip_score",
  68. "layout/normal/ScrollView/Viewport/Content/randomName",
  69. "layout/normal/ScrollView/Viewport/Content/randomPro",
  70. })
  71. self.step_bg,
  72. self.item_bg
  73. = GetChildImages(self.transform, {
  74. "layout/normal/setp_bg",
  75. "layout/normal/itemBg",
  76. })
  77. self.layout.anchoredPosition = Vector2(-384, 0)
  78. self.icon_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon_con, nil, self.layer_name)
  79. self.icon_item:SetStrenTextPos(6.5, 23.5)
  80. self.icon_item:SetPosition(50, -60)
  81. self.icon_item:SetItemBgVisible(false)
  82. end
  83. function StarSoulEquipCompareTips:InitEvent()
  84. end
  85. function StarSoulEquipCompareTips:SetData(goods_vo)
  86. self.goods_vo = goods_vo
  87. if self.goods_vo == nil then return end
  88. if self.is_loaded then
  89. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id)
  90. local equip_cfg = Config.Starsoulequip[goods_vo.type_id]
  91. --部位
  92. self.pos_text.text = equip_cfg and Config.Starsoulequippos[equip_cfg.pos] and Trim(Config.Starsoulequippos[equip_cfg.pos].describe) or ""
  93. local stren = 0
  94. for _, v in pairs(self.model.equip_stren_data) do
  95. if v.goods_id == self.goods_vo.goods_id then
  96. stren = v.stren
  97. break
  98. end
  99. end
  100. self.icon_item:SetData(goods_vo.type_id, nil, nil, stren,nil,nil,nil,nil,nil,true)
  101. self.icon_item:SetStar(equip_cfg and equip_cfg.star or 0)
  102. self:SetBestPro(equip_cfg.best_attr)
  103. --计算强化后的属性加成
  104. self:SetProperty(basic, stren)
  105. local callback = function (dynamic)
  106. if self.goods_vo.goods_id and dynamic and self.goods_vo.goods_id == dynamic.goods_id then
  107. self.dynamic = dynamic
  108. --背景
  109. lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..self.dynamic.color)
  110. lua_resM:setImageSprite(self, self.item_bg, "common_asset", "xlui_zbpz_"..self.dynamic.color)
  111. --评分
  112. self.equip_score.text = self.dynamic.rating + (equip_cfg and equip_cfg.base_rating or 0)
  113. if basic then
  114. -- 名字
  115. self.name_text.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color) .. ">" .. basic.goods_name .. "+"..stren .. "</color>"
  116. end
  117. self:SetBetterProperty(self.dynamic.equip_extra_attr)
  118. end
  119. self:RefreshPos()
  120. end
  121. GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback, false)
  122. else
  123. self.need_refreshData = true
  124. end
  125. end
  126. function StarSoulEquipCompareTips:SetName()
  127. local basic = GoodsModel.Instance:GetGoodsBasicByTypeId(self.goods_vo.type_id)
  128. self.name_text.text = basic and basic.goods_name-- self.goods_vo.goods_name
  129. end
  130. function StarSoulEquipCompareTips:SetScore()
  131. local cfg = Config.Starsoulequip[self.goods_vo.type_id]
  132. local base_score = 0
  133. local better_score = 0
  134. if cfg then
  135. base_score = cfg.base_rating
  136. end
  137. self.base_score_text.text = base_score
  138. self.better_score_text.text = base_score + self.goods_vo.rating
  139. end
  140. --红点
  141. function StarSoulEquipCompareTips:ShowReDot()
  142. if self.dynamic and self.dynamic.type_id and self.dynamic.stren and self.dynamic.cell then
  143. if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.Equip.strength then
  144. local bool = EquipModel:getInstance():IsCanStrength(self.dynamic.type_id, self.dynamic.stren, self.dynamic.cell) and true or false
  145. self.strengthBtn_dot:SetActive(bool)
  146. end
  147. end
  148. end
  149. --设置基础属性
  150. function StarSoulEquipCompareTips:SetProperty(basic, stren)
  151. stren = stren or 0
  152. if basic then
  153. local equip_cfg = Config.Starsoulequip[self.goods_vo.type_id]
  154. if not equip_cfg then
  155. Message.show("没有配置", self.goods_vo.type_id)
  156. return
  157. end
  158. local pos = equip_cfg.pos or 0
  159. local rare = equip_cfg.rare
  160. local base_attrlist = ErlangParser:GetInstance():Parse(basic.base_attrlist)
  161. local base_equip_attr_list = Config.Starsoulequiplv[pos.."@"..rare.."@0"] and Config.Starsoulequiplv[pos.."@"..rare.."@0"].attr_list or {}
  162. base_equip_attr_list = ErlangParser:GetInstance():Parse(base_equip_attr_list)
  163. local stren_attr_list = {}
  164. local add_prop = {}
  165. local base_prop = {}
  166. local attr_id_list = {}
  167. local name_str = ""
  168. local pro_str = ""
  169. local stren_str = ""
  170. for _, v in pairs(base_attrlist) do
  171. local id, value = tonumber(v[1]), tonumber(v[2])
  172. base_prop[id] = {id = id, value = value}
  173. table.insert(attr_id_list, id)
  174. end
  175. table.sort(attr_id_list, function (a, b)
  176. return a < b
  177. end)
  178. for _, v in pairs(base_equip_attr_list) do
  179. local id, value = tonumber(v[1]), tonumber(v[2])
  180. if base_prop[id] then
  181. base_prop[id].value = base_prop[id].value + value
  182. end
  183. end
  184. for i = 1, stren do
  185. local list = Config.Starsoulequiplv[pos.."@"..rare.."@"..i] and Config.Starsoulequiplv[pos.."@"..rare.."@"..i].attr_list
  186. if list then
  187. list = ErlangParser:GetInstance():Parse(list)
  188. for _, v in pairs(list) do
  189. local id, value = tonumber(v[1]), tonumber(v[2])
  190. if not stren_attr_list[id] then
  191. stren_attr_list[id] = {id = id, value = 0}
  192. end
  193. stren_attr_list[id].value = stren_attr_list[id].value + value
  194. end
  195. end
  196. end
  197. for _, id in ipairs(attr_id_list) do
  198. local data = base_prop[id]
  199. if data then
  200. local add_value = stren_attr_list[id] and stren_attr_list[id].value or 0
  201. local _, name, _, value = WordManager:GetPropertyInfo(data.id, data.value + add_value)
  202. name_str = name_str..name.."\n"
  203. pro_str = pro_str..value.."\n"
  204. if stren_attr_list[id] then
  205. local value_add = WordManager:GetPropertyValue(stren_attr_list[id].id, stren_attr_list[id].value)
  206. stren_str = stren_str.."(强化 +"..value_add..")\n"
  207. else
  208. stren_str = stren_str.."(强化 +0)\n"
  209. end
  210. end
  211. end
  212. self.base_name_text.text = Trim(name_str)
  213. self.basePro_text.text = Trim(pro_str)
  214. self.base_stren_text.text = Trim(stren_str)
  215. self.base_name_text.transform.sizeDelta = Vector2(self.base_name_text.transform.sizeDelta.x, self.base_name_text.preferredHeight)
  216. self.basePro_text.transform.sizeDelta = Vector2(self.basePro_text.transform.sizeDelta.x, self.basePro_text.preferredHeight)
  217. self.base_stren_text.transform.sizeDelta = Vector2(self.base_stren_text.transform.sizeDelta.x, self.base_stren_text.preferredHeight)
  218. end
  219. end
  220. --设置附加属性
  221. function StarSoulEquipCompareTips:SetBetterProperty(equip_extra_attr)
  222. local better_str = ""
  223. local name_str = ""
  224. local pro_str = ""
  225. if equip_extra_attr then
  226. table.sort(equip_extra_attr, function (a, b)
  227. return a.attr_id < b.attr_id
  228. end)
  229. for i, v in ipairs(equip_extra_attr) do
  230. local _, name, _, value = WordManager:GetPropertyInfo(v.attr_id, v.attr_val)
  231. name_str = name_str .. "<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..name.."</color>" .. "\n"
  232. pro_str = pro_str.."<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..value.."</color>" .. "\n"
  233. end
  234. end
  235. self.random_name_text.text = Trim(name_str)
  236. self.random_pro_text.text = Trim(pro_str)
  237. self.random_pro_text.transform.sizeDelta = Vector2(self.random_pro_text.transform.sizeDelta.x, self.random_pro_text.preferredHeight)
  238. self.random_name_text.transform.sizeDelta = Vector2(self.random_name_text.transform.sizeDelta.x, self.random_name_text.preferredHeight)
  239. end
  240. --设置极品属性
  241. function StarSoulEquipCompareTips:SetBestPro(best_attr)
  242. local attr_list = ErlangParser:GetInstance():Parse(best_attr)
  243. local name_str = ""
  244. local pro_str = ""
  245. for i, v in ipairs(attr_list) do
  246. local _, name, _, value = WordManager:GetPropertyInfo(tonumber(v[1]), tonumber(v[2]))
  247. name_str = name_str ..name.."\n"
  248. pro_str = pro_str..value.."\n"
  249. end
  250. if name_str == "" then
  251. name_str = ""
  252. end
  253. self.add_name_text.text = Trim(name_str)
  254. self.addPro_text.text = Trim(pro_str)
  255. self.addPro_text.transform.sizeDelta = Vector2(self.addPro_text.transform.sizeDelta.x, self.addPro_text.preferredHeight)
  256. self.add_name_text.transform.sizeDelta = Vector2(self.add_name_text.transform.sizeDelta.x, self.add_name_text.preferredHeight)
  257. end
  258. function StarSoulEquipCompareTips:RefreshPos()
  259. local base_offset = 55
  260. base_offset = base_offset + self.basePro_text.preferredHeight
  261. base_offset = base_offset + 40
  262. base_offset = base_offset + self.addPro_text.preferredHeight
  263. base_offset = base_offset + 50
  264. base_offset = base_offset + self.random_pro_text.preferredHeight
  265. base_offset = base_offset + 190
  266. self.ScrollView.sizeDelta = Vector2(380, base_offset - 175)
  267. self.ScrollViewContent.sizeDelta = Vector2(380, base_offset - 175)
  268. base_offset = 55
  269. base_offset = base_offset + self.basePro_text.preferredHeight
  270. self.line2.anchoredPosition = Vector2(0, -base_offset)
  271. base_offset = base_offset + 40
  272. self.addPro_text.transform.anchoredPosition = Vector2(171, -base_offset)
  273. self.add_name_text.transform.anchoredPosition = Vector2(25, -base_offset)
  274. base_offset = base_offset + self.addPro_text.preferredHeight + 10
  275. self.line3.anchoredPosition = Vector2(0, -base_offset)
  276. base_offset = base_offset + 40
  277. self.random_name_text.transform.anchoredPosition = Vector2(25, -base_offset)
  278. self.random_pro_text.transform.anchoredPosition = Vector2(171, -base_offset)
  279. base_offset = base_offset + self.random_pro_text.preferredHeight
  280. base_offset = base_offset + 190 --190 是背景初始高度
  281. self.bg.sizeDelta = Vector2(382.7, base_offset)
  282. end