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

300 行
11 KiB

  1. CSMainAdvanceNoticeView = CSMainAdvanceNoticeView or BaseClass(BaseView)
  2. local CSMainAdvanceNoticeView = CSMainAdvanceNoticeView
  3. function CSMainAdvanceNoticeView:__init()
  4. self.base_file = "csMain"
  5. self.layout_file = "CSMainAdvanceNoticeView"
  6. self.layer_name = "Activity"
  7. self.destroy_imm = true
  8. self.use_background = true
  9. self.change_scene_close = true
  10. self.hide_maincancas = false --是否隐藏主界面
  11. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  12. self.need_show_money = false --是否要显示顶部的金钱栏
  13. self.is_set_zdepth = true
  14. self.click_bg_toClose = true
  15. self.mainVo = RoleManager.Instance.mainRoleInfo
  16. self.model = CSMainModel:getInstance()
  17. self.cur_select_day = 0
  18. self.load_callback = function ()
  19. self:LoadSuccess()
  20. self:AddEvent()
  21. end
  22. self.open_callback = function ( )
  23. self:OpenSuccess()
  24. end
  25. self.destroy_callback = function ( )
  26. self:DestroySuccess()
  27. end
  28. end
  29. function CSMainAdvanceNoticeView:Open()
  30. BaseView.Open(self)
  31. end
  32. function CSMainAdvanceNoticeView:LoadSuccess()
  33. local nodes = {
  34. "bg:raw", "dayImg:img",
  35. "confirmBtn:obj", "leftBtn:obj", "rewardBtn:obj:img", "rightBtn:obj",
  36. "rightBtn/rightRed:obj", "rewardBtn/rewardRed:obj", "leftBtn/leftRed:obj",
  37. "openDayCon:obj", "openLvCon:obj", "openServerCon:obj",
  38. "openDayCon/openDayDes:tmp", "openServerCon/openServerDes:tmp", "openLvCon/openLvDes:tmp",
  39. "openServerCon/serverProgressBtn:obj",
  40. "progressBlockCon/block7:img:obj", "progressBlockCon/block1:img:obj", "progressBlockCon/block3:img:obj", "progressBlockCon/block4:img:obj", "progressBlockCon/block2:img:obj", "progressBlockCon/block6:img:obj", "progressBlockCon/block5:img:obj",
  41. "headTitle:tmp", "dayDes:tmp", "dayTitle:tmp",
  42. "kfProcessBtn:obj",
  43. }
  44. self:GetChildren(nodes)
  45. local _,cfg = GetModuleIsOpen(603)
  46. local show_progress_num = cfg.open_day-1
  47. self.progress_block_img_list = {}
  48. self.progress_block_obj_list = {}
  49. for i=1,7 do
  50. self.progress_block_img_list[i] = self["block"..i.."_img"]
  51. self.progress_block_obj_list[i] = self["block"..i.."_obj"]
  52. self.progress_block_obj_list[i]:SetActive(i <= show_progress_num)
  53. end
  54. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("cs_main_advance_notice_bg"))
  55. self.headTitle_tmp.text = CSMainConst.AdvanceNoticeMainTitle
  56. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60315)
  57. end
  58. function CSMainAdvanceNoticeView:AddEvent()
  59. local on_click = function ( click_obj )
  60. if self.confirmBtn_obj == click_obj then
  61. self:Close()
  62. elseif self.leftBtn_obj == click_obj then
  63. self.cur_select_day = self.cur_select_day - 1 >= 1 and self.cur_select_day - 1 or 1
  64. self:SwitchDay(self.cur_select_day)
  65. elseif self.rightBtn_obj == click_obj then
  66. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  67. local _,cfg = GetModuleIsOpen(603)
  68. local max_show_day = openDay <= cfg.open_day-1 and openDay or cfg.open_day-1
  69. self.cur_select_day = self.cur_select_day + 1 <= max_show_day and self.cur_select_day + 1 or max_show_day
  70. self:SwitchDay(self.cur_select_day)
  71. elseif self.rewardBtn_obj == click_obj then
  72. if self.can_get_reward then
  73. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60316,self.cur_select_day)
  74. else
  75. local mes_str = string.format("第%s日奖励已领取过",self.cur_select_day)
  76. Message.show(mes_str)
  77. end
  78. elseif self.openServerCon_obj == click_obj then
  79. local is_kf_num_enough, is_kf_state = CSMainModel:getInstance():IsCSMainKfNumEnough()
  80. if is_kf_state then
  81. local is_cs_main_open = true
  82. KfWorldModel:GetInstance():Fire(KfWorldConst.OPEN_KfWorld_TIP_VIEW, is_cs_main_open)
  83. else
  84. Message.show("本服暂未开启跨服状态!")
  85. end
  86. elseif self.kfProcessBtn_obj == click_obj then
  87. local is_kf_num_enough, is_kf_state = CSMainModel:getInstance():IsCSMainKfNumEnough()
  88. if is_kf_state then
  89. local is_cs_main_open = true
  90. KfWorldModel:GetInstance():Fire(KfWorldConst.OPEN_KfWorld_TIP_VIEW, is_cs_main_open)
  91. else
  92. Message.show("本服暂未开启跨服状态!")
  93. end
  94. end
  95. end
  96. AddClickEvent(self.confirmBtn_obj, on_click)
  97. AddClickEvent(self.leftBtn_obj, on_click)
  98. AddClickEvent(self.rightBtn_obj, on_click)
  99. AddClickEvent(self.rewardBtn_obj, on_click)
  100. AddClickEvent(self.openServerCon_obj, on_click)
  101. AddClickEvent(self.kfProcessBtn_obj, on_click)
  102. --刷新奖励领取状态
  103. local function update_reward_state()
  104. if not self.is_loaded then return end
  105. self:UpdateView()
  106. end
  107. self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_ADVANCE_NOTICE_REWARD_STATE, update_reward_state)
  108. local function chnage_open_day_func()
  109. self:UpdateView()
  110. end
  111. self:BindEvent(GlobalEventSystem, EventName.OPEN_DAY_INIT, chnage_open_day_func)
  112. local function chnage_day_func(type)
  113. if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
  114. self:UpdateView()
  115. end
  116. end
  117. self:BindEvent(GlobalEventSystem, EventName.CHANE_DAY, chnage_day_func)
  118. -- local function on_change_lv_handler()
  119. -- self:UpdateView()
  120. -- end
  121. -- self.change_level_id = RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL,on_change_lv_handler)
  122. end
  123. function CSMainAdvanceNoticeView:OpenSuccess()
  124. -- self:UpdateView()
  125. end
  126. function CSMainAdvanceNoticeView:UpdateView()
  127. if self.cur_select_day == 0 then
  128. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  129. local _,cfg = GetModuleIsOpen(603)
  130. self.cur_select_day = openDay <= cfg.open_day-1 and openDay or cfg.open_day-1
  131. end
  132. self:SwitchDay(self.cur_select_day)
  133. self:UpdateOpenCon()
  134. local is_kf_num_enough, is_kf_state = CSMainModel:getInstance():IsCSMainKfNumEnough()
  135. if is_kf_state then
  136. self:AddUIEffect("ui_bianqiang", self.kfProcessBtn, "Activity", nil, {x=1,y=1}, true, nil,nil,nil,nil,nil,nil)
  137. else
  138. self:ClearUIEffect(self.kfProcessBtn)
  139. end
  140. end
  141. function CSMainAdvanceNoticeView:SwitchDay(day)
  142. --左右箭头
  143. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  144. local _,cfg = GetModuleIsOpen(603)
  145. local max_show_day = openDay <= cfg.open_day-1 and openDay or cfg.open_day-1
  146. local need_hide_left = self.cur_select_day == 1
  147. local need_hide_right = self.cur_select_day == max_show_day
  148. self.leftBtn_obj:SetActive(not need_hide_left)
  149. self.rightBtn_obj:SetActive(not need_hide_right)
  150. --当天预告内容
  151. local notice_cfg = Config.Legionadvance
  152. local day_img_res = "cs_main_advance_img_"..self.cur_select_day
  153. if notice_cfg[self.cur_select_day] and notice_cfg[self.cur_select_day].ads ~= 0 then
  154. day_img_res = "cs_main_advance_img_"..notice_cfg[self.cur_select_day].ads
  155. end
  156. lua_resM:setOutsideImageSprite(self, self.dayImg_img, GameResPath.GetCSMainAdvanceNoticeImage(day_img_res))
  157. local day_title_des = string.format("第 %s 日 %s", self.cur_select_day, CSMainConst.AdvanceNoticeDayDes[self.cur_select_day].title)
  158. -- self.dayDes_tmp.text = CSMainConst.AdvanceNoticeDayDes[self.cur_select_day].des
  159. if not string.find(day_title_des,"@") then
  160. self.dayTitle_tmp.text = day_title_des
  161. else
  162. self.dayTitle_tmp.text = ChuanWenManager:FormatColorTag(day_title_des)
  163. end
  164. if not string.find(CSMainConst.AdvanceNoticeDayDes[self.cur_select_day].des,"@") then
  165. self.dayDes_tmp.text = CSMainConst.AdvanceNoticeDayDes[self.cur_select_day].des
  166. else
  167. self.dayDes_tmp.text = ChuanWenManager:FormatColorTag(CSMainConst.AdvanceNoticeDayDes[self.cur_select_day].des)
  168. end
  169. --下方天数页签状态
  170. for i=1,7 do
  171. self["block"..i.."_obj"]:SetActive(i<=openDay)
  172. if i == self.cur_select_day then
  173. lua_resM:setImageSprite(self, self["block"..i.."_img"], "csMain_asset","cs_main_advance_progress_block_2")
  174. else
  175. lua_resM:setImageSprite(self, self["block"..i.."_img"], "csMain_asset","cs_main_advance_progress_block_1")
  176. end
  177. end
  178. --奖励状态
  179. self:UpdateRewardState()
  180. end
  181. function CSMainAdvanceNoticeView:UpdateOpenCon( )
  182. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  183. local _,cfg = GetModuleIsOpen(603)
  184. local left_day = cfg.open_day-openDay
  185. local open_lv = GetModuleOpenLevel(603)
  186. local is_kf_num_enough, is_kf_state = CSMainModel:getInstance():IsCSMainKfNumEnough()
  187. if left_day <= 0 then --满足开服天数
  188. if open_lv <= RoleManager.Instance.mainRoleInfo.level then--满足等级
  189. if is_kf_num_enough then
  190. self.openDayCon_obj:SetActive(false)
  191. self.openLvCon_obj:SetActive(false)
  192. self.openServerCon_obj:SetActive(false)
  193. else
  194. self.openDayCon_obj:SetActive(false)
  195. self.openLvCon_obj:SetActive(false)
  196. self.openServerCon_obj:SetActive(true)
  197. self.openServerDes_tmp.text = "跨服分区拓展至4服时开启玩法 <#2cf89a><u>查看</u></color>"
  198. end
  199. else--不满足等级
  200. self.openDayCon_obj:SetActive(false)
  201. self.openLvCon_obj:SetActive(true)
  202. self.openServerCon_obj:SetActive(false)
  203. self.openLvDes_tmp.text = string.format("玩家达到 <#ff203a>%s</color>/200 级开放玩法", RoleManager.Instance.mainRoleInfo.level)
  204. end
  205. else--不满足开服天数
  206. self.openDayCon_obj:SetActive(true)
  207. self.openLvCon_obj:SetActive(false)
  208. self.openServerCon_obj:SetActive(false)
  209. self.openDayDes_tmp.text = string.format("距离系统开放还有 %s 日", left_day)
  210. end
  211. end
  212. function CSMainAdvanceNoticeView:UpdateRewardState( )
  213. local can_get_reward = self.model:CanDayGetCSMainAdvanceNoticeReward(self.cur_select_day)
  214. self.rewardRed_obj:SetActive(can_get_reward)
  215. local can_get_reward_last_day = self.model:CanDayGetCSMainAdvanceNoticeRewardBeforeOrAfter(self.cur_select_day,1)
  216. local can_get_reward_next_day = self.model:CanDayGetCSMainAdvanceNoticeRewardBeforeOrAfter(self.cur_select_day,2)
  217. self.leftRed_obj:SetActive(can_get_reward_last_day)
  218. self.rightRed_obj:SetActive(can_get_reward_next_day)
  219. self.can_get_reward = can_get_reward
  220. SetImageGray(self.rewardBtn_img, not can_get_reward)
  221. if can_get_reward then
  222. if not self.main_action then
  223. --左右跳跃
  224. -- local pre_x, pre_y = GetAnchoredPosition(self.rewardBtn)
  225. -- local action1 = cc.MoveTo.createAnchoredType( 0.05, -256, -195, pre_x, pre_y)
  226. -- local action2 = cc.MoveTo.createAnchoredType( 0.05, -266, -195, pre_x+10, pre_y)
  227. -- local action3 = cc.DelayTime.New(2)
  228. -- local action4 = cc.Sequence.New(action1,action2,action1,action2,action3)--顺序
  229. -- self.main_action = cc.RepeatForever.New( action4 )
  230. -- self:AddAction(self.main_action, self.rewardBtn)
  231. --旋转跳跃
  232. local action1 = cc.RotateTo.New(0.05, 15, 1)
  233. local action2 = cc.RotateTo.New(0.05, -15, 1)
  234. local action3 = cc.RotateTo.New(0.05, 0, 1)
  235. local action4 = cc.DelayTime.New( 1.5 )
  236. local action5 = cc.Sequence.New( action1,action2,action1,action2,action3,action4)
  237. self.main_action = cc.RepeatForever.New( action5 )
  238. self:AddAction(self.main_action, self.rewardBtn)
  239. end
  240. else
  241. if self.main_action then
  242. cc.ActionManager:getInstance():removeAction(self.main_action)
  243. self.main_action = nil
  244. end
  245. SetAnchoredPosition(self.rewardBtn, -266, -195)
  246. end
  247. end
  248. function CSMainAdvanceNoticeView:DestroySuccess( )
  249. if self.main_action then
  250. cc.ActionManager:getInstance():removeAction(self.main_action)
  251. self.main_action = nil
  252. end
  253. if self.change_level_id then
  254. self.mainVo:UnBind(self.change_level_id)
  255. self.change_level_id = nil
  256. end
  257. self:ClearUIEffect(self.kfProcessBtn)
  258. end