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

152 lines
4.1 KiB

  1. NewerTaskModel = NewerTaskModel or BaseClass(BaseVo, true)
  2. local NewerTaskModel = NewerTaskModel
  3. function NewerTaskModel:__init()
  4. NewerTaskModel.Instance = self
  5. self:Reset()
  6. end
  7. function NewerTaskModel:Reset()
  8. self.award_finish_list = {} --已完成进度列表
  9. self.cur_show_type = 0 --当前显示的类型
  10. self.award_end_time = false --奖励显示的结束时间,单纯客户端显示
  11. self.is_first_show = nil
  12. self.show_info_list = {}
  13. end
  14. function NewerTaskModel:getInstance()
  15. if NewerTaskModel.Instance == nil then
  16. NewerTaskModel.Instance = NewerTaskModel.New()
  17. end
  18. return NewerTaskModel.Instance
  19. end
  20. function NewerTaskModel:SetAwardFinishList( vo )
  21. for k,v in pairs(vo) do
  22. local key = v.type .. "@" .. v.task_id
  23. self.award_finish_list[key] = true
  24. end
  25. self:UpdateCurShowType()
  26. end
  27. function NewerTaskModel:UpdateCurShowType( )
  28. local cfg = Config.Newertaskawards
  29. for k,v in pairsByKeys(cfg) do
  30. if not self.award_finish_list[k] then
  31. self.cur_show_type = v.type
  32. break
  33. end
  34. end
  35. end
  36. function NewerTaskModel:GetCurShowType( )
  37. return self.cur_show_type
  38. end
  39. function NewerTaskModel:SetSingleAwardFinish( vo )
  40. local key = vo.type .. "@" .. vo.task_id
  41. self.award_finish_list[key] = true
  42. self:UpdateCurShowType()
  43. end
  44. function NewerTaskModel:IsAwardFinish( type, task_id )
  45. local key = type .. "@" .. task_id
  46. return self.award_finish_list[key]
  47. end
  48. function NewerTaskModel:GetCurShowInfo( type )
  49. local show_type = type or self.cur_show_type
  50. if self.show_info_list[show_type] then
  51. return self.show_info_list[show_type]
  52. end
  53. self.show_info_list[show_type] = {}
  54. local cfg = Config.Newertaskawards
  55. for k,v in pairsByKeys(cfg) do
  56. if v.type == show_type then
  57. table.insert(self.show_info_list[show_type], v)
  58. end
  59. end
  60. return self.show_info_list[show_type]
  61. end
  62. --下一个可领取的奖励,返回任务id(需要按顺序领取)
  63. function NewerTaskModel:GetNextCanGetAward( type )
  64. local cfg = self:GetCurShowInfo(type)
  65. for i,v in ipairs(cfg) do
  66. if not self:IsAwardFinish(v.type, v.task_id) then
  67. return v.task_id
  68. end
  69. end
  70. end
  71. function NewerTaskModel:GetProgress( type )
  72. local show_type = type or self.cur_show_type
  73. --没有展示类型,就当做结束
  74. if not show_type or show_type == 0 then
  75. return 100, true, false
  76. end
  77. --任务完成进度
  78. local cfg = Config.Newertaskprocess
  79. local progress = 0
  80. for k,v in pairsByKeys(cfg) do
  81. if v.type == show_type then
  82. if TaskModel:getInstance():IsTaskFinished(v.task_id) then
  83. progress = v.task_pro
  84. end
  85. end
  86. end
  87. --奖励是否完成,是否可领取
  88. local is_all_finish, is_can_get = true, false
  89. local award_cfg = Config.Newertaskawards
  90. for k,v in pairsByKeys(award_cfg) do
  91. if not self.award_finish_list[k] then
  92. is_all_finish = false
  93. if TaskModel:getInstance():IsTaskFinished(v.task_id) then
  94. is_can_get = true
  95. break
  96. end
  97. end
  98. end
  99. return progress, is_all_finish, is_can_get
  100. end
  101. function NewerTaskModel:GetAwardEndTime( )
  102. if not self.award_end_time then
  103. local time_str = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.NEWER_TASK_END_TIME)
  104. if time_str ~= "" then
  105. self.award_end_time = tonumber(time_str)
  106. end
  107. end
  108. return self.award_end_time
  109. end
  110. function NewerTaskModel:SetAwardEndTime( )
  111. local end_time = TimeUtil:getServerTime() + 30*60
  112. self.award_end_time = end_time
  113. CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.NEWER_TASK_END_TIME, end_time)
  114. CookieWrapper.Instance:WriteAll()
  115. end
  116. function NewerTaskModel:GetIsFirstShow( )
  117. -- if self.is_first_show == nil then
  118. -- local show_flag = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.NEWER_TASK_SHOW_FLAG)
  119. -- if show_flag and tonumber(show_flag) == 1 then
  120. -- self.is_first_show = false
  121. -- else
  122. -- self.is_first_show = true
  123. -- end
  124. -- end
  125. -- return self.is_first_show
  126. end
  127. function NewerTaskModel:SetHasFirstShowFlag( )
  128. -- if self.is_first_show ~= false then
  129. -- self.is_first_show = false
  130. -- local flag = 1
  131. -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.NEWER_TASK_SHOW_FLAG, flag)
  132. -- CookieWrapper.Instance:WriteAll()
  133. -- end
  134. end