源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

308 行
10 KiB

  1. ClActExchangeItem = ClActExchangeItem or BaseClass(BaseItem)
  2. function ClActExchangeItem:__init(parent_wnd, prefab_asset, layer_name)
  3. self.base_file = "collectingAct"
  4. self.layout_file = "ClActExchangeItem"
  5. self.layer_name = layer_name or "UI"
  6. self.is_delay_callback = true
  7. self.data = nil
  8. self.award_item_list = {}
  9. self.symbol_item_list = {}
  10. self.award_vo_list = {}
  11. self.vo = nil
  12. self.base_type = nil
  13. self.sub_type = nil
  14. self.num = nil
  15. self.kind = nil
  16. self.model = CustomActivityModel:getInstance()
  17. -- self.use_local_view = true
  18. self:Load()
  19. end
  20. function ClActExchangeItem:Load_callback()
  21. self.ex_btn
  22. = GetChildGameObjects(self.transform,
  23. {
  24. "btnGet",
  25. })
  26. self.sub_con,
  27. self.Bg
  28. = GetChildTransforms(self.transform,
  29. {
  30. "subcon",
  31. "Bg",
  32. })
  33. self.btn_label,
  34. self.txt
  35. = GetChildTexts(self.transform,
  36. {
  37. "btnGet/Text",
  38. "txt",
  39. })
  40. self.btn_img = self:GetChild("btnGet"):GetComponent("ImageExtend")
  41. self:InitEvent()
  42. if self.need_refreshData then
  43. self:SetData(self.vo, self.base_type, self.sub_type)
  44. end
  45. if self.need_setText then
  46. self:SetText(self.num)
  47. end
  48. if self.need_refreshStr then
  49. self:SetText2(self.str)
  50. end
  51. end
  52. function ClActExchangeItem:InitEvent()
  53. local function onClick(target)
  54. self:ToExchange()
  55. end
  56. AddClickEvent(self.ex_btn,onClick)
  57. local function onBagChange()
  58. if self._use_delete_method then return end
  59. self:UpdateItemData()
  60. end
  61. self.bag_change_event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onBagChange)
  62. end
  63. function ClActExchangeItem:SetData(vo, base_type, sub_type)
  64. self.vo = vo
  65. self.base_type = base_type
  66. self.sub_type = sub_type
  67. self.kind = vo.grade
  68. if not self.is_loaded then
  69. self.need_refreshData = true
  70. return
  71. end
  72. -- local item_size = 60 --物品的大小
  73. -- local symbol_size = 22 --符号的大小
  74. -- local size_gap = 5 --物品和符号之间的间隔
  75. -- local gap = 0
  76. -- local size = 0
  77. -- local sub_con_size = self.sub_con.sizeDelta.x
  78. -- self.act_type = self.model:getActType(self.base_type,self.sub_type)
  79. -- if self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then
  80. -- -- self.Bg.sizeDelta = co.TableXY(814, 105)
  81. -- -- self.Bg.anchoredPosition = co.TableXYZ(408, 52.5)
  82. -- self.ex_btn.transform.sizeDelta = co.TableXY(124, 56)
  83. -- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
  84. -- self.sub_con.sizeDelta = co.TableXY(562, 105)
  85. -- sub_con_size = 562
  86. -- self.sub_con.anchoredPosition = co.TableXYZ(20, 0, 0)
  87. -- self.txt.transform.sizeDelta = co.TableXY(160, 20)
  88. -- self.txt.transform.anchoredPosition = co.TableXYZ(308, -35, 0)
  89. -- gap = 28
  90. -- size = 8
  91. -- item_size = 70
  92. -- size_gap = 7
  93. -- end
  94. self.act_type = self.model:getActType(self.base_type,self.sub_type)
  95. if self.act_type then
  96. if self.act_type == Config.ConfigActStatic.ActType.RUN then
  97. -- self.ex_btn.transform.sizeDelta = co.TableXY(124, 56)
  98. -- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
  99. self.ex_btn.transform.anchorMin = Vector2(0.5, 0.5)
  100. self.ex_btn.transform.anchorMax = Vector2(0.5, 0.5)
  101. -- self.ex_btn.transform.pivot
  102. self.ex_btn.transform.anchoredPosition = co.TableXYZ(308, 10)
  103. self.txt.transform.sizeDelta = co.TableXY(160, 20)
  104. self.txt.transform.anchoredPosition = co.TableXYZ(308, -35, 0)
  105. elseif self.act_type == Config.ConfigActStatic.ActType.OPEN then
  106. -- self.ex_btn.transform.anchoredPosition = co.TableXYZ(-100, 10)
  107. self.ex_btn.transform.anchorMin = Vector2(0.5, 0.5)
  108. self.ex_btn.transform.anchorMax = Vector2(0.5, 0.5)
  109. -- self.ex_btn.transform.pivot
  110. self.ex_btn.transform.anchoredPosition = co.TableXYZ(260, 10)
  111. end
  112. end
  113. if vo == nil then return end
  114. self:SetText(nil)
  115. -- self:SetText2("")
  116. local const_item_list = vo.condition_list[1][2]
  117. local len = #const_item_list
  118. for i = 1,len do
  119. self.award_vo_list[i] = const_item_list[i]
  120. end
  121. -- 下面的数值计算为 物品 符号 物品 符号...
  122. -- (space)(item_size)(space)(symbol_size)(space)...
  123. local item_size = 60 --物品的大小
  124. local symbol_size = 22 --符号的大小
  125. local space = 3 --物品和符号之间的间隔
  126. local sub_con_size = 0
  127. local self_size = self.transform.sizeDelta.x
  128. local gap = 5
  129. if self.act_type and self.act_type == Config.ConfigActStatic.ActType.RUN then
  130. space = 6
  131. item_size = 70
  132. self_size = 816 --手动赋值
  133. gap = 12
  134. end
  135. if len > 0 then
  136. sub_con_size = (len + 1)*(item_size + 2*space) + len*symbol_size
  137. self.sub_con.sizeDelta = co.TableXY(sub_con_size, self.sub_con.sizeDelta.y)
  138. local btn_size = self.ex_btn.transform.sizeDelta.x
  139. local btn_posX = self.ex_btn.transform.anchoredPosition.x
  140. self.sub_con.anchoredPosition = co.TableXYZ(btn_posX - btn_size/2 - gap - sub_con_size + self_size/2, self.sub_con.anchoredPosition.y, self.sub_con.anchoredPosition.z)
  141. end
  142. --设置+和=图
  143. for i = 1,len do
  144. if self.symbol_item_list[i] == nil then
  145. self.symbol_item_list[i] = ClActSymbolImgItem.New(self.sub_con)
  146. end
  147. if i == len then
  148. self.symbol_item_list[i]:SetData(2, i)
  149. self.symbol_item_list[i]:SetAnchoredPosition(i*(item_size + 2*space) + (i - 1)*symbol_size, -36)
  150. else
  151. self.symbol_item_list[i]:SetData(1, i)
  152. self.symbol_item_list[i]:SetAnchoredPosition(i*(item_size + 2*space) + (i - 1)*symbol_size, -36)
  153. end
  154. end
  155. -- 加上收益item
  156. local obtain_item_list = vo.reward_info
  157. self.award_vo_list[len + 1] = {[2]=obtain_item_list[1].goods_id,[3]=obtain_item_list[1].goods_count} -- 最后一个为收益物品信息
  158. len = len + 1
  159. -- 生成物品item
  160. local item
  161. for i = 1,len do
  162. item = self.award_vo_list[i]
  163. if self.award_item_list[i] == nil then
  164. self.award_item_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.sub_con)
  165. self.award_item_list[i]:SetItemSize(item_size, item_size)
  166. end
  167. self.award_item_list[i]:SetData(tonumber(item[2]))
  168. self.award_item_list[i]:SetPosition((i - 1)*(item_size + 2*space) + (i - 1)*symbol_size + space, -16)
  169. end
  170. -- --设置+和=图
  171. -- for i = 1,len do
  172. -- if self.symbol_item_list[i] == nil then
  173. -- self.symbol_item_list[i] = ClActSymbolImgItem.New(self.sub_con)
  174. -- end
  175. -- if i == len then
  176. -- self.symbol_item_list[i]:SetData(2, i)
  177. -- -- local x = gap > 0 and (gap-2) or gap
  178. -- -- self.symbol_item_list[i]:SetPosition(sub_con_size - item_size - symbol_size + x,-40)
  179. -- self.symbol_item_list[i]:SetAnchoredPosition(sub_con_size - item_size - symbol_size - size_gap,-40)
  180. -- else
  181. -- self.symbol_item_list[i]:SetData(1, i)
  182. -- -- self.symbol_item_list[i]:SetPosition(248+size-(i-2)*(90+size),-42)
  183. -- self.symbol_item_list[i]:SetAnchoredPosition((sub_con_size - item_size - symbol_size - size_gap) - size_gap*(i+1) - i*item_size - i*symbol_size, -42)
  184. -- end
  185. -- end
  186. -- -- 加上收益item
  187. -- local obtain_item_list = vo.reward_info
  188. -- self.award_vo_list[len + 1] = {[2]=obtain_item_list[1].goods_id,[3]=obtain_item_list[1].goods_count} -- 最后一个为收益物品信息
  189. -- len = len + 1
  190. -- -- 生成物品item
  191. -- local item
  192. -- for i = 1,len do
  193. -- item = self.award_vo_list[i]
  194. -- if self.award_item_list[i] == nil then
  195. -- -- self.award_item_list[i] = ClActAwardItem.New(self.sub_con)
  196. -- self.award_item_list[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.sub_con)
  197. -- self.award_item_list[i]:SetItemSize(item_size, item_size)
  198. -- end
  199. -- self.award_item_list[i]:SetData(tonumber(item[2]))
  200. -- -- if i == 1 then
  201. -- self.award_item_list[i]:SetPosition(460+gap - (len-i)*(90+size),-16)
  202. -- -- else
  203. -- -- -- self.award_item_list[i]:SetPosition(542 - (len-i)*110,-16)
  204. -- -- self.award_item_list[i]:SetPosition(560 - (len-i)*110+(i-1)*92,-16)
  205. -- -- end
  206. -- --[[ if i == len then
  207. -- self.award_item_list[i]:SetPosition(632,-16)
  208. -- else
  209. -- self.award_item_list[i]:SetPosition(480-((len-i-1)*116),-16)
  210. -- end--]]
  211. -- end
  212. self:UpdateItemData()
  213. end
  214. function ClActExchangeItem:SetText(num)
  215. self.num = num
  216. if self.is_loaded then
  217. if num == nil then self.txt.text = "" return end
  218. self.txt.text = "今日全服已兑: "..self.num
  219. else
  220. self.need_setText = true
  221. end
  222. end
  223. function ClActExchangeItem:SetText2(str)
  224. self.str = str
  225. if self.is_loaded then
  226. self.txt.text = self.str
  227. else
  228. self.need_refreshStr = true
  229. end
  230. end
  231. function ClActExchangeItem:UpdateItemData()
  232. local num = 0
  233. local count = 0
  234. for i=1,#self.award_vo_list do
  235. num = GoodsModel:getInstance():GetTypeGoodsNum(tonumber(self.award_vo_list[i][2]))
  236. self.award_item_list[i]:SetNumText2(i == #self.award_vo_list,tonumber(self.award_vo_list[i][3]),num)
  237. if i < #self.award_vo_list and num >= tonumber(self.award_vo_list[i][3]) then
  238. count = count + 1
  239. end
  240. end
  241. -- self.btn_img.gray = (count < #self.award_vo_list - 1)
  242. if self.model:IsJiZiMaxNumType(self.kind) and self.model:CheckJiZiIsMaxNumByGrade(self.kind) then
  243. self.btn_img.gray = true
  244. else
  245. self.btn_img.gray = (count < #self.award_vo_list - 1)
  246. end
  247. -- local color = count < #self.award_vo_list - 1 and "#636060" or "#9A3E12"
  248. -- self.btn_label.text = string.format("<color=%s>兑换</color>",color)
  249. self.btn_label.text = "兑换"
  250. end
  251. function ClActExchangeItem:ToExchange()
  252. if self.btn_img.gray == true then
  253. if self.model:IsJiZiMaxNumType(self.kind) and self.model:CheckJiZiIsMaxNumByGrade(self.kind) then
  254. Message.show("本奖励已到今日兑换上限")
  255. return
  256. end
  257. Message.show("材料不足,兑换失败")
  258. else
  259. local exchange_id = self.vo.id
  260. local len = #self.award_vo_list
  261. local num = tonumber(self.award_vo_list[len][3])
  262. --GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT,15022,exchange_id,num)
  263. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT,33105,self.base_type,self.sub_type,self.kind)
  264. end
  265. end
  266. function ClActExchangeItem:__delete()
  267. if self.bag_change_event_id then
  268. GoodsModel:getInstance():UnBind(self.bag_change_event_id)
  269. self.bag_change_event_id = nil
  270. end
  271. for k,v in pairs(self.award_item_list) do
  272. -- v:DeleteMe()
  273. v:ReleaseObj()
  274. v = nil
  275. end
  276. self.award_item_list = {}
  277. for k,v in pairs(self.symbol_item_list) do
  278. v:DeleteMe()
  279. v = nil
  280. end
  281. self.symbol_item_list = {}
  282. self.award_vo_list = {}
  283. end