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

297 行
9.1 KiB

  1. CSMainAppointView = CSMainAppointView or BaseClass(BaseView)
  2. local CSMainAppointView = CSMainAppointView
  3. function CSMainAppointView:__init()
  4. self.base_file = "csMain"
  5. self.layout_file = "CSMainAppointView"
  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 = true --是否隐藏主界面
  11. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  12. self.need_show_money = false --是否要显示顶部的金钱栏
  13. self.is_set_zdepth = true
  14. self.model = CSMainModel:getInstance()
  15. self.tab_item_list = {}
  16. self.current_index = nil
  17. self.load_callback = function ()
  18. self:LoadSuccess()
  19. self:AddEvent()
  20. end
  21. self.open_callback = function ( )
  22. self:OpenSuccess()
  23. end
  24. self.destroy_callback = function ( )
  25. self:DestroySuccess()
  26. end
  27. end
  28. function CSMainAppointView:Open(index)
  29. self.current_index = index or 1
  30. BaseView.Open(self)
  31. end
  32. function CSMainAppointView:LoadSuccess()
  33. local nodes = {
  34. "bg:raw", "closeBtn:obj",
  35. "tabCon",
  36. "rankCon:obj",
  37. "roleScrollView:obj", "roleScrollView/Viewport/roleContent",
  38. "allRoleScrollView:obj", "allRoleScrollView/Viewport/allRoleContent",
  39. "rankCon/titleCon/Text_3:tmp", "rankCon/titleCon/Text_2:tmp",
  40. "rankCon/rankScrollView", "rankCon/rankScrollView/Viewport/rankContent",
  41. "helpBtn:obj", "des:tmp",
  42. "empty:obj", "empty/emptyGirl:raw",
  43. "rankCon/rankBg:img",
  44. "lastRankBtn:obj", "sandBtn:obj", "csWarBtn:obj",
  45. "rankConBlock:obj",
  46. "rankTitleImg:img",
  47. }
  48. self:GetChildren(nodes)
  49. SetSizeDelta(self.rankConBlock,ScreenWidth, ScreenHeight)
  50. self.rankCon_obj:SetActive(false)
  51. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("cs_main_appoint_bg"))
  52. lua_resM:setOutsideRawImage(self, self.emptyGirl_raw, GameResPath.GetRoleBg("setting_girl"))
  53. lua_resM:setOutsideImageSprite(self, self.rankBg_img, GameResPath.GetCSMainImage("cs_main_last_rank_bg"))
  54. end
  55. function CSMainAppointView:AddEvent()
  56. local on_click = function ( click_obj )
  57. if self.closeBtn_obj == click_obj then
  58. self:Close()
  59. elseif self.helpBtn_obj == click_obj then
  60. EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 60303)
  61. elseif self.lastRankBtn_obj == click_obj then
  62. local is_show = self.rankCon_obj.activeSelf
  63. self.rankCon_obj:SetActive(not is_show)
  64. self.rankConBlock_obj:SetActive(not is_show)
  65. elseif self.rankConBlock_obj == click_obj then
  66. self.rankCon_obj:SetActive(false)
  67. self.rankConBlock_obj:SetActive(false)
  68. elseif self.sandBtn_obj == click_obj then
  69. SandTableModel:getInstance():Fire(SandTableConst.OPEN_MAIN_VIEW)
  70. self:Close()
  71. elseif self.csWarBtn_obj == click_obj then
  72. --本国团战根据开服天数不同,可能会在同的星期里开,所以要判断一下
  73. local jump_wday = 6
  74. for i=1,7 do
  75. local act_list = GuildModel:getInstance():GetGuildEventByWday(i)
  76. for k,v in pairs(act_list) do
  77. if v.module_id == 410 then
  78. jump_wday = i
  79. break
  80. end
  81. end
  82. end
  83. GuildModel:getInstance():Fire(GuildModel.OPEN_GUILD_EVENT_VIEW,410,jump_wday)
  84. self:Close()
  85. end
  86. end
  87. AddClickEvent(self.closeBtn_obj, on_click)
  88. AddClickEvent(self.helpBtn_obj, on_click)
  89. AddClickEvent(self.lastRankBtn_obj, on_click)
  90. AddClickEvent(self.rankConBlock_obj, on_click)
  91. AddClickEvent(self.sandBtn_obj, on_click)
  92. AddClickEvent(self.csWarBtn_obj, on_click)
  93. --上期本国团战排行榜
  94. local function on_update_last_guild_rank_view()
  95. self:UpdateRankCon(1)
  96. end
  97. self:BindEvent(self.model, CSMainConst.UPDATE_LAST_GUILD_WAR_SCORE_RANK_VIEW, on_update_last_guild_rank_view)
  98. --上期军功排行榜
  99. local function on_update_last_military_score_rank_view()
  100. self:UpdateRankCon(2)
  101. end
  102. self:BindEvent(self.model, CSMainConst.UPDATE_LAST_MILITARY_SCORE_RANK_VIEW, on_update_last_military_score_rank_view)
  103. --任命记录
  104. local function on_update_appoint_data_view(opty)
  105. if opty == 1 or opty == 2 then
  106. self:UpdateRoleList(opty)
  107. elseif opty == 0 then
  108. self:UpdateAllRoleList(opty)
  109. end
  110. end
  111. self:BindEvent(self.model, CSMainConst.UPDATE_APPOINT_DATA_VIEW, on_update_appoint_data_view)
  112. end
  113. function CSMainAppointView:OpenSuccess()
  114. self:InitTab()
  115. end
  116. function CSMainAppointView:InitTab( )
  117. local tab_data = {
  118. [1] = {name = "官员一览"},
  119. [2] = {name = "执政官员"},
  120. [3] = {name = "指挥官员"},
  121. }
  122. local function call_back(tab_index)
  123. self:SwitchTab(tab_index)
  124. end
  125. for k,v in pairs(self.tab_item_list) do
  126. v:SetVisible(false)
  127. end
  128. for i,v in ipairs(tab_data) do
  129. local item = self.tab_item_list[i]
  130. if not item then
  131. item = CSMainAppointTab.New(self.tabCon)
  132. self.tab_item_list[i] = item
  133. end
  134. item:SetVisible(true)
  135. item:SetData(v,i,call_back)
  136. item:SetAnchoredPosition(-2, 41-(i-1)*(74-5))
  137. end
  138. for k,v in pairs(self.tab_item_list) do
  139. v:OnClick(self.current_index)
  140. end
  141. end
  142. function CSMainAppointView:UpdateRoleList(opty)
  143. local appoint_data = self.model:GetAppointData(opty)
  144. self.empty_obj:SetActive(#appoint_data == 0)
  145. if not self.item_list_com then
  146. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  147. end
  148. self.item_list_com:Reset()
  149. local info = {
  150. data_list = appoint_data,
  151. item_con = self.roleContent,
  152. item_class = CSMainAppointRoleListItem,
  153. item_width = 777,
  154. item_height = 110,
  155. space_y = 31,
  156. start_x = 9,
  157. start_y = -40,
  158. scroll_view = self.roleScrollView,
  159. create_frequency = 0.01,
  160. on_update_item = function(item, i, v)
  161. item:SetData(v,opty)
  162. end,
  163. }
  164. self.item_list_com:UpdateItems(info)
  165. end
  166. function CSMainAppointView:UpdateAllRoleList(opty)
  167. local appoint_data = self.model:GetAppointData(opty)
  168. self.empty_obj:SetActive(#appoint_data == 0)
  169. if not self.all_role_item_list_com then
  170. self.all_role_item_list_com = self:AddUIComponent(UI.ItemListCreator)
  171. end
  172. self.all_role_item_list_com:Reset()
  173. local info = {
  174. data_list = appoint_data,
  175. item_con = self.allRoleContent,
  176. item_class = CSMainAppointAllRoleListItem,
  177. item_width = 777,
  178. item_height = 349,
  179. space_y = 24,
  180. start_x = 9,
  181. start_y = -14,
  182. scroll_view = self.allRoleScrollView,
  183. create_frequency = 0.01,
  184. reuse_item_num = 2,
  185. on_update_item = function(item, i, v)
  186. item:SetData(v)
  187. end,
  188. }
  189. self.all_role_item_list_com:UpdateItems(info)
  190. end
  191. function CSMainAppointView:UpdateRankCon(rank_type)
  192. local rank_data = {}
  193. if rank_type == 1 then--上期团战成绩排行
  194. rank_data = self.model:GetLastGuildWarScoreRankData()
  195. elseif rank_type == 2 then--上期沙盘结算军功排名
  196. rank_data = self.model:GetLastMilitaryScoreRankData()
  197. end
  198. if not self.rank_list_com then
  199. self.rank_list_com = self:AddUIComponent(UI.ItemListCreator)
  200. end
  201. self.rank_list_com:Reset()
  202. local info = {
  203. data_list = rank_data,
  204. item_con = self.rankContent,
  205. item_class = CSMainAppointRankItem,
  206. item_width = 316,
  207. item_height = 45,
  208. -- space_x = 0,
  209. -- space_y = 0,
  210. start_x = 1,
  211. start_y = 0,
  212. scroll_view = self.rankScrollView,
  213. create_frequency = 0.01,
  214. on_update_item = function(item, i, v)
  215. item:SetData(v,rank_type)
  216. end,
  217. }
  218. self.rank_list_com:UpdateItems(info)
  219. end
  220. function CSMainAppointView:SwitchTab( index )
  221. self.current_index = index
  222. if index == 1 then
  223. lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_1",true))
  224. self.sandBtn_obj:SetActive(false)
  225. self.csWarBtn_obj:SetActive(false)
  226. self.lastRankBtn_obj:SetActive(false)
  227. self.roleScrollView_obj:SetActive(false)
  228. self.allRoleScrollView_obj:SetActive(true)
  229. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,0)--全部
  230. elseif index == 2 then
  231. lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_2",true))
  232. self.Text_2_tmp.text = "社团名"
  233. self.Text_3_tmp.text = "上期伤害"
  234. -- self.des_tmp.text = "伤害总量为上期本国团战成绩"
  235. self.sandBtn_obj:SetActive(false)
  236. self.csWarBtn_obj:SetActive(true)
  237. self.lastRankBtn_obj:SetActive(true)
  238. self.roleScrollView_obj:SetActive(true)
  239. self.allRoleScrollView_obj:SetActive(false)
  240. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,1)--前三主官
  241. if self.model.has_request_60314 then
  242. self:UpdateRankCon(1)
  243. else
  244. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60314)--打开界面只请求一次
  245. end
  246. elseif index == 3 then
  247. lua_resM:setOutsideImageSprite(self, self.rankTitleImg_img, GameResPath.GetCSMainImage("cs_main_appoint_slogan_3",true))
  248. self.Text_2_tmp.text = "角色名"
  249. self.Text_3_tmp.text = "上期战功"
  250. -- self.des_tmp.text = "战功为上期沙盘结算时累计军功"
  251. self.sandBtn_obj:SetActive(true)
  252. self.csWarBtn_obj:SetActive(false)
  253. self.lastRankBtn_obj:SetActive(true)
  254. self.roleScrollView_obj:SetActive(true)
  255. self.allRoleScrollView_obj:SetActive(false)
  256. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60312,2)--指挥官
  257. if self.model.has_request_60311 then
  258. self:UpdateRankCon(2)
  259. else
  260. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60311)--打开界面只请求一次
  261. end
  262. end
  263. end
  264. function CSMainAppointView:DestroySuccess( )
  265. self.model.has_request_60314 = false
  266. self.model.has_request_60311 = false
  267. for i, v in ipairs(self.tab_item_list) do
  268. v:DeleteMe()
  269. end
  270. self.tab_item_list = {}
  271. end