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

143 行
4.3 KiB

  1. CSMainTaskItem = CSMainTaskItem or BaseClass(BaseItem)
  2. local CSMainTaskItem = CSMainTaskItem
  3. function CSMainTaskItem:__init()
  4. self.base_file = "csMain"
  5. self.layout_file = "CSMainTaskItem"
  6. self.model = CSMainModel:getInstance()
  7. self:Load()
  8. end
  9. function CSMainTaskItem:Load_callback()
  10. self.nodes = {
  11. "finishedFlag:obj",
  12. "getBtn:obj", "goBtn:obj", "getBtn/getRed:obj",
  13. "ScrollView", "ScrollView/Viewport/Content",
  14. "taskDes:tmp",
  15. "dot:img",
  16. "bg:img",
  17. }
  18. self:GetChildren(self.nodes)
  19. self.getRed_obj:SetActive(true)
  20. self:AddEvents()
  21. if self.need_refreshData then
  22. self:UpdateView()
  23. end
  24. end
  25. function CSMainTaskItem:AddEvents( )
  26. local on_click = function ( click_obj )
  27. if self.getBtn_obj == click_obj then--领取
  28. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60304,1,self.data.id)
  29. elseif self.goBtn_obj == click_obj then--前往
  30. if self.data.id == 18 or self.data.id == 32 then
  31. local act_info = GuildModel:getInstance():GetGuildEventByType(GuildEventType.GuildBossNoon)
  32. if act_info and act_info.state <= 1 then --没结束,跳午间
  33. OpenFun.Open(406,1)
  34. else
  35. OpenFun.Open(406,2)
  36. end
  37. return
  38. end
  39. self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true)
  40. self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true)
  41. -- if self.data.id == 3 or self.data.id == 11 or self.data.id == 26 or self.data.id == 41 then
  42. -- self.model:Fire(CSMainConst.OPEN_CS_MAIN_TASK_VIEW,true)
  43. -- self.model:Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW,true)
  44. -- end
  45. local open_fun_data = stringtotable(self.data.link)
  46. OpenFun.Open(open_fun_data[1],open_fun_data[2])
  47. end
  48. end
  49. AddClickEvent(self.getBtn_obj, on_click)
  50. AddClickEvent(self.goBtn_obj, on_click)
  51. local function on_update_task_item(task_id)
  52. self:UpdateView()
  53. end
  54. self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_TASK_ITEM, on_update_task_item)
  55. end
  56. function CSMainTaskItem:UpdateView( )
  57. local server_task_info = self.model:GetCSMainTaskDataById(self.data.id)
  58. if server_task_info then
  59. if server_task_info.state == 0 or server_task_info.state == 1 then
  60. lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow"))
  61. lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true)
  62. else
  63. lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_gray"))
  64. lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot",true)
  65. end
  66. else
  67. lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetCSMainImage("cs_main_task_bg_yellow"))
  68. lua_resM:setImageSprite(self, self.dot_img, "csMain_asset","cs_main_dot_white",true)
  69. end
  70. --任务描述
  71. local des_color = ColorUtil.RED_DARK
  72. if server_task_info then
  73. if server_task_info.state == 1 or server_task_info.state == 2 then
  74. des_color = ColorUtil.GREEN_TIPS
  75. end
  76. end
  77. local bar = 0
  78. if server_task_info then
  79. bar = server_task_info.bar
  80. end
  81. self.taskDes_tmp.text = string.format("%s(<%s>%s/%s</color>)", Trim(self.data.desc), des_color, bar, stringtotable(self.data.content)[3])
  82. --领取状态
  83. local task_state = 0
  84. if server_task_info then
  85. task_state = server_task_info.state
  86. end
  87. self.goBtn_obj:SetActive(task_state == 0)
  88. self.getBtn_obj:SetActive(task_state == 1)
  89. self.finishedFlag_obj:SetActive(task_state == 2)
  90. --奖励展示
  91. local reward_cfg = DeepCopy(stringtotable(self.data.awards))
  92. --插入一个活跃的awarditem展示
  93. local active_goods_data = {0,100020,self.data.active}
  94. table.insert(reward_cfg,active_goods_data)
  95. if not self.item_list_com then
  96. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  97. end
  98. local info = {
  99. data_list = reward_cfg,
  100. item_con = self.Content,
  101. obj_pool_type = UIObjPool.UIType.AwardItem,
  102. item_width = 62,
  103. space_x = 14,
  104. -- space_y = 0,
  105. start_x = 9,
  106. start_y = -9,
  107. scroll_view = self.ScrollView,
  108. create_frequency = 0.01,
  109. on_update_item = function(item, i, v)
  110. item:SetItemSize(62, 62)
  111. SetLocalScale(item.transform,0.8,0.8,0.8)
  112. item:SetData(v[2], v[3])
  113. end,
  114. }
  115. self.item_list_com:UpdateItems(info)
  116. end
  117. function CSMainTaskItem:SetData( data,index)
  118. self.data = data
  119. self.index = index
  120. if self.is_loaded then
  121. self.need_refreshData = false
  122. self:UpdateView()
  123. else
  124. self.need_refreshData = true
  125. end
  126. end
  127. function CSMainTaskItem:__delete( )
  128. end