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

106 строки
2.6 KiB

1 месяц назад
  1. FuliSignView = FuliSignView or BaseClass(BaseItem)
  2. local FuliSignView = FuliSignView
  3. function FuliSignView:__init()
  4. self.base_file = "fuli"
  5. self.layout_file = "FuliSignView"
  6. self.model = FuliModel:GetInstance()
  7. self.total_reward_item = {}
  8. self.is_first = true
  9. self:Load()
  10. end
  11. function FuliSignView:Load_callback()
  12. self.nodes = {
  13. "down_image:obj",
  14. "item_scroll",
  15. "item_scroll/Viewport/item_con",
  16. "girl:raw",
  17. "reward_con",
  18. "sign_day:tmp",
  19. }
  20. self:GetChildren(self.nodes)
  21. lua_resM:setOutsideRawImage(self, self.girl_raw, GameResPath.GetRoleBg("fuli_sign_girl_508_715"), false)
  22. self:AddEvents()
  23. if self.need_refreshData then
  24. self:UpdateView()
  25. end
  26. end
  27. function FuliSignView:AddEvents( )
  28. local function on_update_view( )
  29. self:UpdateView()
  30. end
  31. self.on_update_view_id = self.model:BindOne("fuli_sign_info", on_update_view)
  32. end
  33. function FuliSignView:UpdateView( )
  34. self.data = self.model:GetFuliSignInfo()
  35. if TableSize(self.data) == 0 then
  36. return
  37. end
  38. self.cfg = self.model:GetFuliSignCFGByRound(self.data.round)
  39. if not self.item_list_com then
  40. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  41. end
  42. -- self.item_list_com:Reset()
  43. local function set_depth( )
  44. self.item_list_com:IterateItems(function ( item, i )
  45. item:SetDepth(i)
  46. end)
  47. end
  48. local info = {
  49. data_list = self.cfg,
  50. item_con = self.item_con,
  51. item_class = FuliSignItem,
  52. item_width = 135,
  53. item_height = 154,
  54. space_x = 3,
  55. space_y = 0,
  56. start_x = 0,
  57. start_y = 0,
  58. scroll_view = self.item_scroll,
  59. create_frequency = 0.02,
  60. is_scroll_back_on_update = false,
  61. final_callback = set_depth,
  62. on_update_item = function(item, i, v)
  63. item:SetData(i, v, self.data)
  64. end,
  65. }
  66. self.item_list_com:UpdateItems(info)
  67. if self.is_first and TableSize(self.data) > 0 then
  68. self.is_first = false
  69. self.item_list_com:ScrollToItem(self.data.days + 1)
  70. end
  71. self:UpdateTotalSignRewardItem()
  72. self.sign_day_tmp.text = string.format("累计签到:%s", HtmlColorTxt(self.data.days .. "", "#2cf86f"))
  73. end
  74. function FuliSignView:UpdateTotalSignRewardItem( )
  75. local data = self.model:GetFuliTotalSignCFGByRound(self.data.round or 1)
  76. for i=1,5 do
  77. local item = self.total_reward_item[i]
  78. if not item then
  79. item = FuliSignRewardItem.New(self.reward_con)
  80. item:SetPosition((i-1)*136,0)
  81. self.total_reward_item[i] = item
  82. end
  83. item:SetData(data[i], self.data, i)
  84. end
  85. end
  86. function FuliSignView:SetData( )
  87. if self.is_loaded then
  88. self.need_refreshData = false
  89. self:UpdateView()
  90. else
  91. self.need_refreshData = true
  92. end
  93. end
  94. function FuliSignView:__delete( )
  95. if self.on_update_view_id then
  96. self.model:UnBind(self.on_update_view_id)
  97. self.on_update_view_id = nil
  98. end
  99. end