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

447 line
16 KiB

  1. --装备对比的tips
  2. SealCompareTips = SealCompareTips or BaseClass(BaseItem)
  3. function SealCompareTips:__init()
  4. self.base_file = "common"
  5. self.layout_file = "EquipCompareTips"
  6. self.goods_vo = nil
  7. self.model = GoodsModel:getInstance()
  8. self.seal_item_list = {}
  9. self:Load()
  10. end
  11. function SealCompareTips:__delete()
  12. if self.icon_item then
  13. self.icon_item:DeleteMe()
  14. end
  15. for i,v in ipairs(self.seal_item_list) do
  16. v:DeleteMe()
  17. v = nil
  18. end
  19. self.seal_item_list = {}
  20. if self.expire_label then
  21. lua_viewM:ClearItem(self.expire_label)
  22. self.expire_label = nil
  23. end
  24. end
  25. function SealCompareTips:Load_callback()
  26. EquipCompareTips.Load_callback(self)
  27. end
  28. function SealCompareTips:InitEvent()
  29. EquipCompareTips.InitEvent(self)
  30. end
  31. function SealCompareTips:SetData(goods_vo)
  32. self.goods_vo = goods_vo
  33. if self.goods_vo == nil then return print("SealCompareTips里面没有物品数据") end
  34. if self.is_loaded then
  35. local color_str = ColorUtil.WHITE
  36. if self.goods_vo.level > RoleManager.Instance.mainRoleInfo.level then
  37. color_str = ColorUtil.RED
  38. end
  39. self.level.text = "<color="..color_str..">" .. self.goods_vo.level .. "</color>"
  40. -- local index = Config.ConfigEquipShow[self.goods_vo.subtype].index
  41. self.equip_pos.text = Trim(Config.Holysealpos[self.goods_vo.subtype].name)
  42. self.fight.text = self.goods_vo.combat_power or 0
  43. color_str = (self.goods_vo.career_id == 0 or RoleManager.Instance.mainRoleInfo.career == self.goods_vo.career_id) and ColorUtil.WHITE or ColorUtil.RED
  44. local career_name = Config.Career[self.goods_vo.career_id] and Config.Career[self.goods_vo.career_id].career_name or "通用"
  45. self.career.text = "<color="..color_str..">" .. career_name .. "</color>"
  46. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
  47. -- self:CreateStar(8)
  48. if self.goods_vo.goods_id then
  49. local callback = function (dynamic)
  50. if self.goods_vo.goods_id and dynamic and self.goods_vo.goods_id == dynamic.goods_id then
  51. self.dynamic = dynamic
  52. self.dynamic.stren = dynamic.stren or 0
  53. local stren = ""
  54. if dynamic.stren and dynamic.stren > 0 then
  55. stren = "+" ..dynamic.stren
  56. end
  57. self.nameText.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. self.goods_vo.goods_name .. stren .. "</color>"
  58. local step = Config.Holysealgoods[self.goods_vo.type_id] and Config.Holysealgoods[self.goods_vo.type_id].stage or 0
  59. self.step_num.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. step .. "阶</color>"
  60. self.icon_item:SetData(self.goods_vo)
  61. self.composite_score.text = self.dynamic.overall_rating
  62. self.equip_score.text = self.dynamic.rating
  63. if basic then
  64. local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
  65. self:SetProperty(base_pro, dynamic.stren, basic.subtype)
  66. self.fight.text = dynamic.combat_power or 0
  67. end
  68. self:SetAddProperty(self.dynamic)
  69. self:SetSpecialProperty(self.goods_vo)
  70. self:SetSuitProperty(self.dynamic)
  71. self:Refresh()
  72. --self:ShowReDot()
  73. end
  74. end
  75. GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)
  76. end
  77. --self:SetSellState(self.goods_vo.sell, self.goods_vo.price_type, self.goods_vo.type_id)
  78. self:Refresh()
  79. else
  80. self.need_refresh = true
  81. end
  82. end
  83. --设置附加属性
  84. function SealCompareTips:SetAddProperty(dynamic)
  85. if dynamic and dynamic.equip_extra_attr then
  86. local name_str = ""
  87. local pro_str = ""
  88. if #dynamic.equip_extra_attr == 0 then
  89. self.addName.text = ""
  90. self.addPro.text = ""
  91. else
  92. for i,v in ipairs(dynamic.equip_extra_attr) do
  93. if v.type_id == 1 then
  94. name_str = name_str .. "<color="..WordManager.GetGoodsColor(v.color)..">每"..v.plus_interval..""..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
  95. pro_str = pro_str .."<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), tonumber(v.plus_unit)) .. "</color>"
  96. else
  97. name_str = name_str .. "<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
  98. pro_str = pro_str .. "<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), v.attr_val).."</color>"
  99. end
  100. if i < #dynamic.equip_extra_attr then
  101. name_str = name_str .. "\n"
  102. pro_str = pro_str .. "\n"
  103. end
  104. end
  105. self.addName.text = name_str
  106. self.addPro.text = pro_str
  107. end
  108. end
  109. end
  110. --设置洗炼属性
  111. function SealCompareTips:SetSpecialProperty(goodsVo)
  112. self.wash_name.text = "特殊属性"
  113. if goodsVo then
  114. if Config.Holysealgoods[goodsVo.type_id] then
  115. local name_str = ""
  116. local pro_str = ""
  117. local attr = ErlangParser:GetInstance():Parse(Config.Holysealgoods[goodsVo.type_id].special_attr)
  118. for i,v in ipairs(attr) do
  119. name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
  120. pro_str = pro_str .. "+" .. WordManager:GetPropertyValue(tonumber(v[1]), tonumber(v[2]))
  121. if i < #attr then
  122. name_str = name_str .. "\n"
  123. pro_str = pro_str .. "\n"
  124. end
  125. end
  126. self.washName.text = name_str
  127. self.washPro.text = pro_str
  128. end
  129. end
  130. end
  131. --刷新相关控件的位置
  132. function SealCompareTips:Refresh()
  133. if self.goods_vo then
  134. self:RefreshPosAndSize(self.dynamic)
  135. self:SetRootPos()
  136. end
  137. end
  138. --设置基础属性
  139. function SealCompareTips:SetProperty(base_pro, stren, pos)
  140. stren = stren or 0
  141. local stren_config = SealModel:getInstance():GetStrengthConfig(pos, stren)
  142. local name_str = ""
  143. local pro_str = ""
  144. local stren_str = ""
  145. local pro_list = {}
  146. if stren_config and Trim(stren_config.attr_list) ~= "[]" then
  147. pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list)
  148. end
  149. for i,v in ipairs(base_pro) do
  150. name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
  151. pro_str = pro_str.."+" .. WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2]))
  152. for i2, v2 in ipairs(pro_list) do
  153. if tonumber(v2[1]) == tonumber(v[1]) then
  154. stren_str = stren_str .. "<color="..ColorUtil.GREEN..">(强化+" .. v2[2] .. ")</color>"
  155. end
  156. end
  157. if i < #base_pro then
  158. name_str = name_str.."\n"
  159. pro_str = pro_str.."\n"
  160. stren_str = stren_str.."\n"
  161. end
  162. end
  163. self.baseName.text = name_str
  164. self.basePro.text = pro_str
  165. self.strengthAdd.text = stren_str
  166. end
  167. --设置套装属性
  168. function SealCompareTips:SetSuitProperty(dynamic, subtype)
  169. local suit_id = Config.Holysealgoods[dynamic.type_id] and Config.Holysealgoods[dynamic.type_id].suit_id
  170. local suit_num
  171. if isOther then
  172. suit_num = dynamic.suit_count
  173. else
  174. suit_num = SealModel:getInstance():GetSuitNum(suit_id) or 0
  175. end
  176. local config = Config.Holysealsuit[suit_id]
  177. if config then
  178. self.suit_name.text = Trim(config.name)..""..suit_num.."/"..config.max_count..""
  179. local attr = ErlangParser:GetInstance():Parse(config.attr_list)
  180. if attr and #attr > 0 then
  181. local num_str = ""
  182. local name_str = ""
  183. local pro_str = ""
  184. for i, v in ipairs(attr) do
  185. local color
  186. if suit_num >= tonumber(v[1]) then
  187. color = ColorUtil.GREEN
  188. else
  189. color = ColorUtil.GRAY
  190. end
  191. num_str = num_str.."<color="..color..">【"..v[1].."件】</color>"
  192. for i2, v2 in ipairs(v[3]) do
  193. name_str = name_str .."<color="..color..">"..WordManager:GetProperties(tonumber(v2[1])).."</color>"
  194. pro_str = pro_str .."<color="..color..">+"..WordManager:GetPropertyValue(tonumber(v2[1]), tonumber(v2[2])).."</color>"
  195. if i < #attr or i2 < #v[3] then
  196. num_str = num_str.."\n"
  197. name_str = name_str.."\n"
  198. pro_str = pro_str.."\n"
  199. end
  200. end
  201. end
  202. self.suitNum.text = num_str
  203. self.suitName.text = name_str
  204. self.suitPro.text = pro_str
  205. end
  206. end
  207. end
  208. --更新各个控件的位置
  209. function SealCompareTips:RefreshPosAndSize(dynamic)
  210. local off_y = 0
  211. off_y = self.basePro.preferredHeight + 15
  212. self.baseName.transform.sizeDelta = Vector2(self.baseName.transform.sizeDelta.x, off_y)
  213. self.basePro.transform.sizeDelta = Vector2(self.basePro.transform.sizeDelta.x, off_y)
  214. self.strengthAdd.transform.sizeDelta = Vector2(self.strengthAdd.transform.sizeDelta.x, off_y)
  215. off_y = off_y + 30
  216. local show_add = false
  217. if dynamic then
  218. show_add = true
  219. end
  220. if show_add then
  221. self.line2.gameObject:SetActive(true)
  222. self.addName.gameObject:SetActive(true)
  223. self.addPro.gameObject:SetActive(true)
  224. self.line2.localPosition = Vector3(0, -off_y, 0)
  225. off_y = off_y + 30
  226. self.addName.transform.localPosition = Vector2(self.addName.transform.localPosition.x, -off_y)
  227. self.addPro.transform.localPosition = Vector2(self.addPro.transform.localPosition.x, -off_y)
  228. self.addName.transform.sizeDelta = Vector2(self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15)
  229. self.addPro.transform.sizeDelta = Vector2(self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
  230. off_y = off_y + self.addPro.preferredHeight + 15
  231. else
  232. self.line2.gameObject:SetActive(false)
  233. self.addName.gameObject:SetActive(false)
  234. self.addPro.gameObject:SetActive(false)
  235. end
  236. local show_wash = false
  237. if dynamic and Config.Holysealgoods[dynamic.type_id] then
  238. show_wash = true
  239. end
  240. if show_wash then
  241. self.line5.gameObject:SetActive(true)
  242. self.washName.gameObject:SetActive(true)
  243. self.washPro.gameObject:SetActive(true)
  244. self.line5.localPosition = Vector3(0, -off_y, 0)
  245. off_y = off_y + 30
  246. self.washName.transform.localPosition = Vector3(self.washName.transform.localPosition.x, -off_y, 0)
  247. self.washName.transform.sizeDelta = Vector2(self.washName.transform.sizeDelta.x, self.washName.preferredHeight + 15)
  248. self.washPro.transform.localPosition = Vector3(self.washPro.transform.localPosition.x, -off_y, 0)
  249. self.washPro.transform.sizeDelta = Vector2(self.washPro.transform.sizeDelta.x, self.washPro.preferredHeight + 15)
  250. off_y = off_y + self.washPro.preferredHeight + 15
  251. else
  252. self.line5.gameObject:SetActive(false)
  253. self.washName.gameObject:SetActive(false)
  254. self.washPro.gameObject:SetActive(false)
  255. end
  256. local show_spirit = false
  257. --[[if dynamic and dynamic.cspirit_stage and dynamic.cspirit_lv and dynamic.cspirit_stage > 0 and dynamic.cspirit_lv > 0 then
  258. show_spirit = true
  259. end--]]
  260. if show_spirit then
  261. self.line6.gameObject:SetActive(true)
  262. self.spiritName.gameObject:SetActive(true)
  263. self.spiritPro.gameObject:SetActive(true)
  264. self.line6.localPosition = Vector3(0, -off_y, 0)
  265. off_y = off_y + 30
  266. self.spiritName.transform.localPosition = Vector3(self.spiritName.transform.localPosition.x, -off_y, 0)
  267. self.spiritName.transform.sizeDelta = Vector2(self.spiritName.transform.sizeDelta.x, self.spiritName.preferredHeight + 15)
  268. self.spiritPro.transform.localPosition = Vector3(self.spiritPro.transform.localPosition.x, -off_y, 0)
  269. self.spiritPro.transform.sizeDelta = Vector2(self.spiritPro.transform.sizeDelta.x, self.spiritPro.preferredHeight + 15)
  270. off_y = off_y + self.spiritPro.preferredHeight + 10
  271. else
  272. self.line6.gameObject:SetActive(false)
  273. self.spiritName.gameObject:SetActive(false)
  274. self.spiritPro.gameObject:SetActive(false)
  275. end
  276. local show_stone = false
  277. if dynamic and Config.Goodsdecompose[dynamic.type_id] then
  278. show_stone = true
  279. end
  280. if show_stone then
  281. self.line3.localPosition = Vector3(0, -off_y, 0)
  282. off_y = off_y + 30
  283. self.line3.gameObject:SetActive(true)
  284. self.stone_conta.gameObject:SetActive(true)
  285. local height = self:SetDecompose(dynamic)
  286. self.stone_conta.sizeDelta = Vector2(self.stone_conta.sizeDelta.x, height)
  287. self.stone_conta.localPosition = Vector3(self.stone_conta.localPosition.x, -off_y, 0)
  288. off_y = off_y + height + 15
  289. else
  290. self.line3.gameObject:SetActive(false)
  291. self.stone_conta.gameObject:SetActive(false)
  292. end
  293. local show_suit = false
  294. if dynamic then
  295. show_suit = true
  296. end
  297. if show_suit then
  298. self.line4.gameObject:SetActive(true)
  299. self.suitNum.gameObject:SetActive(true)
  300. self.suitName.gameObject:SetActive(true)
  301. self.suitPro.gameObject:SetActive(true)
  302. self.line4.localPosition = Vector3(0, -off_y, 0)
  303. off_y = off_y + 30
  304. self.suitNum.transform.localPosition = Vector3(self.suitNum.transform.localPosition.x, -off_y, 0)
  305. self.suitNum.transform.sizeDelta = Vector2(self.suitNum.transform.sizeDelta.x, self.suitNum.preferredHeight + 15)
  306. self.suitName.transform.localPosition = Vector3(self.suitName.transform.localPosition.x, -off_y, 0)
  307. self.suitName.transform.sizeDelta = Vector2(self.suitName.transform.sizeDelta.x, self.suitName.preferredHeight + 15)
  308. self.suitPro.transform.localPosition = Vector3(self.suitPro.transform.localPosition.x, -off_y, 0)
  309. self.suitPro.transform.sizeDelta = Vector2(self.suitPro.transform.sizeDelta.x, self.suitPro.preferredHeight + 15)
  310. off_y = off_y + self.suitPro.preferredHeight + 15
  311. else
  312. self.line4.gameObject:SetActive(false)
  313. self.suitNum.gameObject:SetActive(false)
  314. self.suitName.gameObject:SetActive(false)
  315. self.suitPro.gameObject:SetActive(false)
  316. end
  317. self.line7.gameObject:SetActive(false)
  318. self.wake_baseName.gameObject:SetActive(false)
  319. self.wake_basePro.gameObject:SetActive(false)
  320. self.line8.gameObject:SetActive(false)
  321. self.wake_strenName.gameObject:SetActive(false)
  322. self.wake_strenPro.gameObject:SetActive(false)
  323. self.line9.gameObject:SetActive(false)
  324. self.wake_suitNum.gameObject:SetActive(false)
  325. self.wake_suitName.gameObject:SetActive(false)
  326. self.wake_suitPro.gameObject:SetActive(false)
  327. self.line10.gameObject:SetActive(false)
  328. self.magic_skillName.gameObject:SetActive(false)
  329. self.magic_skillLevel.gameObject:SetActive(false)
  330. -- if off_y > 451 then
  331. -- self.down_arrow.localPosition = Vector3(150, -621.6, 0)
  332. -- self.sell_conta.localPosition = Vector3(22, -643.5, 0)
  333. -- self.ScrollView.sizeDelta = Vector2(287, 451)
  334. self.ScrollViewContent.sizeDelta = Vector2(self.ScrollViewContent.sizeDelta.x, off_y)
  335. -- self.ScrollViewViewport.sizeDelta = Vector2(276, 451)
  336. -- self.transform.sizeDelta = Vector2(328, 685)
  337. -- self.bg.sizeDelta = Vector2(328, 711)
  338. -- else
  339. -- self.down_arrow.localPosition = Vector3(150, -off_y + self.ScrollView.localPosition.y + 20, 0)
  340. -- self.sell_conta.localPosition = Vector3(22, -off_y + self.ScrollView.localPosition.y, 0)
  341. -- self.ScrollView.sizeDelta = Vector2(287, off_y)
  342. -- self.ScrollViewContent.sizeDelta = Vector2(276, off_y)
  343. -- self.ScrollViewViewport.sizeDelta = Vector2(276, off_y)
  344. -- self.transform.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
  345. -- self.bg.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
  346. -- end
  347. if self.ScrollViewContent.sizeDelta.y > 451 then
  348. self.down_arrow.gameObject:SetActive(true)
  349. else
  350. self.down_arrow.gameObject:SetActive(false)
  351. end
  352. --[[--小天使小恶魔,位置改变
  353. self.expired_label.gameObject:SetActive(false)
  354. self.descCon.gameObject:SetActive(false)
  355. self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 447)
  356. if self.goods_vo.type==10 and self.goods_vo.subtype==11 then
  357. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
  358. self.bg.sizeDelta = Vector2(335, 507)
  359. self.career_conta.transform.anchoredPosition = Vector3(-61, 394, 0)
  360. self.ScrollView.transform.anchoredPosition = Vector3(-3.5, -165, 0)
  361. self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 136)
  362. self.ui_line1.transform.anchoredPosition = Vector3(113, -115, 0)
  363. self.ui_line2.transform.anchoredPosition = Vector3(110, -253, 0)
  364. self.descCon.transform.anchoredPosition = Vector3(-3.5, -351, 0)
  365. self.descCon.gameObject:SetActive(true)
  366. self.descLabel.text = Trim(basic.intro)
  367. self.getWayLabel.text = Trim(basic.getway)
  368. if self.goods_vo.expire_time then
  369. if self.goods_vo.expire_time == 0 then
  370. self.expired_label.gameObject:SetActive(false)
  371. else
  372. self.expired_label.gameObject:SetActive(true)
  373. local text = ""
  374. if TimeUtil:getServerTime() > self.goods_vo.expire_time then
  375. text = "<color=#de4141>已过期</color>"
  376. else
  377. local time = self.goods_vo.expire_time - TimeUtil:getServerTime()
  378. text = string.format("<color=#ff8a3c>【%s】后过期</color>",TimeUtil:timeConvert6(time))
  379. end
  380. self.expired_label:GetComponent("Text").text = text
  381. self.expired_label.transform.sizeDelta = Vector2(280, 30)
  382. self.expired_label.transform.anchoredPosition = Vector3(114, -96, 0)
  383. end
  384. end
  385. end--]]
  386. end
  387. --设置宝石
  388. function SealCompareTips:SetDecompose(goodsVo)
  389. self.stone_name.text = "分解获得"
  390. local cfg = Config.Goodsdecompose[goodsVo.type_id]
  391. if cfg then
  392. local list = ErlangParser:GetInstance():Parse(cfg.regular_mat)
  393. for i, v in ipairs(list) do
  394. local item = self.seal_item_list[i]
  395. if item == nil then
  396. item = SealToolDecomItem.New(self.stone_conta)
  397. self.seal_item_list[i] = item
  398. end
  399. item:SetData(v)
  400. end
  401. return 25 * #list
  402. end
  403. return 25
  404. end