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

108 行
3.8 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 本国团战对战信息界面
  4. -- *>
  5. GuildCSGRFightInfoView = GuildCSGRFightInfoView or BaseClass(BaseView)
  6. local GuildCSGRFightInfoView = GuildCSGRFightInfoView
  7. function GuildCSGRFightInfoView:__init()
  8. self.base_file = "guildCSGR"
  9. self.layout_file = "GuildCSGRFightInfoView"
  10. self.layer_name = "Activity"
  11. self.destroy_imm = true
  12. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  13. self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
  14. self.fight_info_list = {} -- 对战数据列表
  15. self.cur_page = 1
  16. self.total_page = 1
  17. self.sroll_end_req_evt = false -- 滑动到底时请求协议锁
  18. self.model = GuildModel:getInstance()
  19. self.load_callback = function ()
  20. self:LoadSuccess()
  21. self:AddEvent()
  22. -- 打开界面时请求第一页的数据
  23. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41001, GuildModel.CSGRRankType.All, GuildModel.FightInfoPageSize, self.cur_page)
  24. end
  25. self.open_callback = function ( )
  26. self:UpdateView()
  27. end
  28. self.destroy_callback = function ( )
  29. self:DestroySuccess()
  30. end
  31. end
  32. function GuildCSGRFightInfoView:Open( )
  33. BaseView.Open(self)
  34. end
  35. function GuildCSGRFightInfoView:LoadSuccess()
  36. local nodes = {
  37. "content",
  38. "content/item_scroll", "content/item_scroll/Viewport/item_con",
  39. "content/tips:tmp",
  40. }
  41. self:GetChildren(nodes)
  42. local function close_callback()
  43. self:Close()
  44. end
  45. self.tabWindowComponent = UITabWindow.New(self.transform, {}, nil, close_callback, self.background_wnd, self.content, UITabWindow.SizeSmallNoTab, nil, nil, false)
  46. self.tabWindowComponent:SetTitleText("对战信息")
  47. self.tabWindowComponent:SetBackgroundRes("rw_raward_bg_nosideline")
  48. self.tips_tmp.text = "根据<color=#fdffc2>本服团战积分排行</color>依次划分战场"
  49. end
  50. function GuildCSGRFightInfoView:AddEvent()
  51. local function update_fightinfo_data(type, vo)
  52. if type == GuildModel.CSGRRankType.All then
  53. self:UpdateFightInfoData(vo)
  54. end
  55. end
  56. self:BindEvent(self.model, GuildModel.UPDATE_CSGR_FIGHTINFO, update_fightinfo_data)
  57. end
  58. function GuildCSGRFightInfoView:UpdateView()
  59. end
  60. function GuildCSGRFightInfoView:UpdateFightInfoData(vo)
  61. if not vo then return end
  62. self.total_page = vo.total_page
  63. self.cur_page = vo.page_num
  64. if vo.arena_list and #vo.arena_list > 0 then
  65. for k, data in pairs(vo.arena_list) do
  66. self.fight_info_list[#self.fight_info_list+1] = data
  67. end
  68. self.sroll_end_req_evt = false
  69. end
  70. self:UpdateFightInfoItem()
  71. end
  72. function GuildCSGRFightInfoView:UpdateFightInfoItem( )
  73. self.guild_item_creator = self.guild_item_creator or self:AddUIComponent(UI.ItemListCreator)
  74. local info = {
  75. data_list = self.fight_info_list,
  76. item_con = self.item_con,
  77. scroll_view = self.item_scroll,
  78. item_class = GuildCSGRFightInfoItem,
  79. item_height = 196,
  80. create_frequency = 0.01,
  81. alignment = UnityEngine.TextAnchor.UpperLeft,
  82. on_update_item = function(item, i, v)
  83. if i == #self.fight_info_list - 1 and not self.sroll_end_req_evt and self.cur_page < self.total_page then
  84. -- 调整标志量,请求协议
  85. self.sroll_end_req_evt = true
  86. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41001, GuildModel.CSGRRankType.All, GuildModel.FightInfoPageSize, self.cur_page+1)
  87. end
  88. item:SetData(v)
  89. end,
  90. }
  91. self.guild_item_creator:UpdateItems(info)
  92. end
  93. function GuildCSGRFightInfoView:DestroySuccess( )
  94. if self.tabWindowComponent then
  95. self.tabWindowComponent:DeleteMe()
  96. self.tabWindowComponent = nil
  97. end
  98. end