源战役客户端
Não pode escolher mais do que 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.

275 linhas
10 KiB

  1. BeastCompareTips = BeastCompareTips or BaseClass(BaseItem)
  2. function BeastCompareTips:__init()
  3. self.base_file = "common"
  4. self.layout_file = "BeastCompareTips"
  5. self.goods_vo = nil
  6. self.model = GoodsModel:getInstance()
  7. self.star_list = {}
  8. self.item_list = {}
  9. self:Load()
  10. end
  11. function BeastCompareTips:__delete()
  12. if self.icon_item then
  13. self.icon_item:DeleteMe()
  14. end
  15. if self.arrowHint then
  16. self.arrowHint:DeleteMe()
  17. self.arrowHint = nil
  18. end
  19. for i,v in ipairs(self.item_list) do
  20. v:DeleteMe()
  21. v = nil
  22. end
  23. self.item_list = {}
  24. if self.expire_label then
  25. lua_viewM:ClearItem(self.expire_label)
  26. self.expire_label = nil
  27. end
  28. end
  29. function BeastCompareTips:Load_callback()
  30. self.bg = self:GetChild("normal/bg")
  31. self.icon_con = self:GetChild("normal/icon_con")
  32. self.nameText = self:GetChild("normal/nameText"):GetComponent("Text")
  33. self.composite_score = self:GetChild("normal/composite_score"):GetComponent("Text")
  34. self.equip_score = self:GetChild("normal/equip_score"):GetComponent("Text")
  35. self.ScrollView = self:GetChild("normal/ScrollView")
  36. self.ScrollViewContent = self:GetChild("normal/ScrollView/Viewport/Content")
  37. self.ScrollViewViewport = self:GetChild("normal/ScrollView/Viewport")
  38. self.line1 = self:GetChild("normal/ScrollView/Viewport/Content/line1")
  39. self.line2 = self:GetChild("normal/ScrollView/Viewport/Content/line2")
  40. self.ui_line2 = self:GetChild("normal/ui_line2")
  41. self.baseName = self:GetChild("normal/ScrollView/Viewport/Content/baseName"):GetComponent("Text")
  42. self.basePro = self:GetChild("normal/ScrollView/Viewport/Content/basePro"):GetComponent("Text")
  43. self.strengthAdd = self:GetChild("normal/ScrollView/Viewport/Content/strengthAdd"):GetComponent("Text")
  44. self.add_name = self:GetChild("normal/ScrollView/Viewport/Content/line2/Text"):GetComponent("Text")
  45. self.addName = self:GetChild("normal/ScrollView/Viewport/Content/addName"):GetComponent("Text")
  46. self.addPro = self:GetChild("normal/ScrollView/Viewport/Content/addPro"):GetComponent("Text")
  47. self.down_arrow = self:GetChild("normal/down_arrow")
  48. self.sell_conta = self:GetChild("normal/sell_conta")
  49. self.sell_icon = self:GetChild("normal/sell_conta/icon"):GetComponent("Image")
  50. self.price_label = self:GetChild("normal/sell_conta/price_label"):GetComponent("Text")
  51. self.info_content = self:GetChild("normal/info_content"):GetComponent("Text")
  52. self.compare_conta = self:GetChild("compare_conta")
  53. self.icon_item = BagIconItem.New(self.icon_con,false,self.layer_name)
  54. self.icon_item:ChangeCountVisible(false)
  55. self:InitEvent()
  56. if self.need_refresh then
  57. self:SetData(self.goods_vo)
  58. end
  59. end
  60. function BeastCompareTips:InitEvent()
  61. end
  62. function BeastCompareTips:SetData(goods_vo)
  63. self.goods_vo = goods_vo
  64. if self.goods_vo == nil then return print("BeastCompareTips里面没有物品数据") end
  65. if self.is_loaded then
  66. if self.goods_vo.expire_time then
  67. if self.goods_vo.expire_time == 0 then
  68. if self.expire_label then
  69. self.expire_label:SetActive(false)
  70. end
  71. else
  72. if not self.expire_label then
  73. self.expire_label = UiFactory.createChild(self.star_conta, UIType.Label2,"expire_label")
  74. self.expire_label.transform.pivot = Vector2(0, 1)
  75. end
  76. self.expire_label:SetActive(true)
  77. local text = ""
  78. if TimeUtil:getServerTime() > self.goods_vo.expire_time then
  79. text = "<color=#de4141>已过期</color>"
  80. else
  81. local time = self.goods_vo.expire_time - TimeUtil:getServerTime()
  82. text = string.format("<color=#fac090>【%s】后过期</color>",TimeUtil:timeConvert6(time))
  83. end
  84. self.expire_label:GetComponent("Text").text = text
  85. self.expire_label.transform.sizeDelta = Vector2(280, 30)
  86. end
  87. else
  88. if self.expire_label then
  89. self.expire_label:SetActive(false)
  90. end
  91. end
  92. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
  93. if basic then
  94. self.info_content.text = basic.intro
  95. end
  96. if self.goods_vo.goods_id then
  97. local callback = function (dynamic)
  98. if self.goods_vo.goods_id and dynamic and self.goods_vo.goods_id == dynamic.goods_id then
  99. self.dynamic = dynamic
  100. self.dynamic.stren = dynamic.stren or 0
  101. local stren = ""
  102. if dynamic.stren and dynamic.stren > 0 then
  103. stren = "+" ..dynamic.stren
  104. end
  105. self.nameText.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. WordManager:GetEquipPrefix(self.dynamic.prefix,"·") .. self.goods_vo.goods_name .. stren .. "</color>"
  106. self.icon_item:SetData(self.goods_vo)
  107. --local star = Config.Equipattr[self.goods_vo.type_id] and Config.Equipattr[self.goods_vo.type_id].star or 0
  108. -- self:CreateStar(star)
  109. self.composite_score.text = self.dynamic.overall_rating
  110. self.equip_score.text = self.dynamic.rating
  111. if basic then
  112. local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
  113. self:SetProperty(base_pro, dynamic.stren, basic.equip_type)
  114. end
  115. self:SetAddProperty(self.dynamic)
  116. self:Refresh()
  117. --self:ShowReDot()
  118. end
  119. end
  120. GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)
  121. end
  122. --self:Refresh()
  123. else
  124. self.need_refresh = true
  125. end
  126. end
  127. --设置附加属性
  128. function BeastCompareTips:SetAddProperty(dynamic)
  129. if dynamic and dynamic.equip_extra_attr then
  130. local name_str = ""
  131. local pro_str = ""
  132. for i,v in ipairs(dynamic.equip_extra_attr) do
  133. if v.type_id == 1 then
  134. name_str = name_str .. "<color="..WordManager.GetGoodsColor(v.color)..">每"..v.plus_interval..""..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
  135. pro_str = pro_str .."<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), tonumber(v.plus_unit)) .. "</color>"
  136. else
  137. name_str = name_str .. "<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
  138. pro_str = pro_str .. "<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), v.attr_val).."</color>"
  139. end
  140. if i < #dynamic.equip_extra_attr then
  141. name_str = name_str .. "\n"
  142. pro_str = pro_str .. "\n"
  143. end
  144. end
  145. self.addName.text = name_str
  146. self.addPro.text = pro_str
  147. end
  148. end
  149. --刷新相关控件的位置
  150. function BeastCompareTips:Refresh()
  151. if self.goods_vo then
  152. self:RefreshPosAndSize(self.dynamic)
  153. end
  154. end
  155. --设置基础属性
  156. function BeastCompareTips:SetProperty(base_pro, stren, pos)
  157. stren = stren or 0
  158. local stren_config = EquipModel:getInstance():GetStrengthConfig(pos, stren)
  159. local name_str = ""
  160. local pro_str = ""
  161. local stren_str = ""
  162. local pro_list = {}
  163. if stren_config and Trim(stren_config.attr_list) ~= "[]" then
  164. pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list)
  165. end
  166. for i,v in ipairs(base_pro) do
  167. name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
  168. pro_str = pro_str.."+" .. WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2]))
  169. for i2, v2 in ipairs(pro_list) do
  170. if tonumber(v2[1]) == tonumber(v[1]) then
  171. stren_str = stren_str .. "<color="..ColorUtil.GREEN..">(强化+" .. v2[2] .. ")</color>"
  172. end
  173. end
  174. if i < #base_pro then
  175. name_str = name_str.."\n"
  176. pro_str = pro_str.."\n"
  177. stren_str = stren_str.."\n"
  178. end
  179. end
  180. self.baseName.text = name_str
  181. self.basePro.text = pro_str
  182. self.strengthAdd.text = stren_str
  183. end
  184. --更新各个控件的位置
  185. function BeastCompareTips:RefreshPosAndSize(dynamic)
  186. local off_y = 0
  187. off_y = self.basePro.preferredHeight + 15
  188. SetSizeDelta(self.baseName.transform, self.baseName.transform.sizeDelta.x, off_y)
  189. SetSizeDelta(self.basePro.transform, self.basePro.transform.sizeDelta.x, off_y)
  190. off_y = off_y + 30
  191. local show_add = false
  192. if dynamic and dynamic.equip_extra_attr and #dynamic.equip_extra_attr > 0 then
  193. show_add = true
  194. end
  195. if show_add then
  196. self.line2.gameObject:SetActive(true)
  197. self.addName.gameObject:SetActive(true)
  198. self.addPro.gameObject:SetActive(true)
  199. SetLocalPosition(self.line2, 0, -off_y)
  200. off_y = off_y + 30
  201. --显示推荐属性
  202. if self.type and self.type == EquipShowTips.EQUIP_RECOMMAND_TARGET then
  203. SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y)
  204. SetLocalPosition(self.addPro.transform, 160, -off_y)
  205. SetSizeDelta(self.addName.transform, 130, self.addName.preferredHeight + 15)
  206. SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
  207. else
  208. SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y)
  209. SetLocalPosition(self.addPro.transform, self.addPro.transform.localPosition.x, -off_y)
  210. SetSizeDelta(self.addName.transform, self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15)
  211. SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
  212. end
  213. off_y = off_y + self.addPro.preferredHeight + 10
  214. else
  215. self.line2.gameObject:SetActive(false)
  216. self.addName.gameObject:SetActive(false)
  217. self.addPro.gameObject:SetActive(false)
  218. end
  219. self.max_off = 470 - self.info_content.preferredHeight
  220. SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y)
  221. if off_y > self.max_off then
  222. --self.down_arrow.gameObject:SetActive(true)
  223. --self.sell_conta.localPosition = Vector3(22, -643.5, 0)
  224. self.arrowHint = self.arrowHint or ArrowHint.New()
  225. self.arrowHint:Init(self, self.ScrollView, self.ScrollViewContent, self.down_arrow, nil, self.layer_name, nil, 0.7)
  226. SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, self.max_off)
  227. SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, self.max_off)
  228. -- self.transform.sizeDelta = Vector2(328, 685)
  229. SetSizeDelta(self.bg, self.bg.sizeDelta.x, 711)
  230. else
  231. self.stren_y = 451 - off_y
  232. --self.down_arrow.gameObject:SetActive(false)
  233. --self.down_arrow.localPosition = Vector3(self.down_arrow.localPosition.x, -off_y + self.ScrollView.localPosition.y + 20, 0)
  234. --self.sell_conta.localPosition = Vector3(22, -off_y + self.ScrollView.localPosition.y, 0)
  235. SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, off_y)
  236. SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, off_y)
  237. -- self.transform.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
  238. SetSizeDelta(self.bg, self.bg.sizeDelta.x, off_y + self.info_content.preferredHeight + 200)
  239. end
  240. SetLocalPosition(self.down_arrow, self.down_arrow.localPosition.x, -self.ScrollView.sizeDelta.y - 165)
  241. SetLocalPosition(self.info_content.transform, self.info_content.transform.localPosition.x, -self.ScrollView.sizeDelta.y - 180)
  242. SetLocalPosition(self.ui_line2.transform, self.ui_line2.transform.localPosition.x, -self.ScrollView.sizeDelta.y - 185)
  243. end