源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

207 строки
6.2 KiB

4 недель назад
  1. GuildWarRankView = GuildWarRankView or BaseClass(BaseView)
  2. local GuildWarRankView = GuildWarRankView
  3. GuildWarRankView.TAB_ID =
  4. {
  5. PERSON = 1,
  6. GUILD = 2,
  7. KILL = 3,
  8. }
  9. GuildWarRankView.TAB_TITLE =
  10. {
  11. [1] = { [1] = "排名", [2] = "玩家名称", [3] = "积分", [4] = "奖励", },
  12. [2] = { [1] = "排名", [2] = "社团名称", [3] = "积分", [4] = "奖励", },
  13. [3] = { [1] = "排名", [2] = "玩家名称", [3] = "击杀", [4] = "奖励", },
  14. }
  15. function GuildWarRankView:__init()
  16. self.base_file = "guild"
  17. self.layout_file = "GuildWarRankView"
  18. self.layer_name = "UI"
  19. self.model = GuildModel:getInstance()
  20. self.destroy_imm = true
  21. self.use_background = true
  22. self.hide_clear_role_model = false
  23. self.change_scene_close = true
  24. self.append_to_ctl_queue = false
  25. self.is_set_zdepth = true
  26. self.rank_data = false
  27. self.my_rank_data = false
  28. self.my_rank_item = false
  29. self.blur_activity_bg = true
  30. self.use_show_anim = true
  31. self.use_hide_anim = true
  32. self.loop_mgr = LoopScrowViewMgr.New()
  33. self.item_list = {}
  34. self.title_list = {}
  35. self.tab_id = nil
  36. self.load_callback = function ()
  37. self:LoadSuccess()
  38. self:InitEvent()
  39. end
  40. self.open_callback = function ()
  41. self:InitView()
  42. end
  43. self.close_callback = function ()
  44. self:Remove()
  45. end
  46. end
  47. function GuildWarRankView:Remove()
  48. if self.loop_mgr then
  49. self.loop_mgr:DeleteMe()
  50. self.loop_mgr = nil
  51. end
  52. if self.my_rank_item then
  53. self.my_rank_item:DeleteMe()
  54. self.my_rank_item = nil
  55. end
  56. for i,item in pairs(self.item_list) do
  57. item:DeleteMe()
  58. end
  59. self.item_list = {}
  60. if self.tabWindowComponent then
  61. self.tabWindowComponent:DeleteMe()
  62. self.tabWindowComponent = nil
  63. end
  64. end
  65. function GuildWarRankView:InitView()
  66. for k = 1,10 do
  67. local item = self.item_list[k]
  68. if item == nil then
  69. item = GuildWarRankItem.New(self.con,nil,self.maskID)
  70. self.item_list[k] = item
  71. end
  72. end
  73. self:SwitchTab(GuildWarRankView.TAB_ID.PERSON)
  74. end
  75. function GuildWarRankView:LoadSuccess()
  76. local nodes = {
  77. "contain/tips_1:tmp",
  78. "contain/close:obj",
  79. "contain/ScrollView/Viewport/con",
  80. "contain/ScrollView",
  81. "contain/bg1:raw",
  82. "contain/title_text:tmp",
  83. "contain/my_con",
  84. }
  85. self:GetChildren(nodes)
  86. self.tab_btn = {}
  87. for i=1,3 do
  88. self.tab_btn[i] = {}
  89. self.tab_btn[i].obj = self:GetChild("contain/btn_" .. i).gameObject
  90. self.tab_btn[i].select = self:GetChild("contain/btn_" .. i.."/select").gameObject
  91. self.tab_btn[i].text = self:GetChild("contain/btn_" .. i.."/name"):GetComponent("TMPro.TextMeshProUGUI")
  92. end
  93. self.title_list = {}
  94. for i=1,4 do
  95. self.title_list[i] = {}
  96. self.title_list[i].text = self:GetChild("contain/line/title_" .. i):GetComponent("TMPro.TextMeshProUGUI")
  97. end
  98. local closeWin_callback = function()
  99. self:Close()
  100. end
  101. self.title_text_tmp.text = "战场排行"
  102. self.tabWindowComponent = UITabWindow.New(self.transform,{},nil,closeWin_callback,self.background_wnd,self.contain, UITabWindow.SizeSmallNoTab, false,nil,true)
  103. self.tabWindowComponent:SetTitleText("")
  104. lua_resM:setOutsideRawImage(self, self.bg1_raw, GameResPath.GetViewBigBg("guild_event_war_bg2"), false)
  105. end
  106. function GuildWarRankView:InitEvent()
  107. local function onBtnClickHandler(target)
  108. if target == self.close_obj then
  109. self:Close()
  110. else
  111. for i=1,3 do
  112. if target == self.tab_btn[i].obj then
  113. self:SwitchTab(i)
  114. break
  115. end
  116. end
  117. end
  118. end
  119. AddClickEvent(self.close_obj,onBtnClickHandler)
  120. for i=1,3 do
  121. AddClickEvent(self.tab_btn[i].obj, onBtnClickHandler)
  122. end
  123. --更新排行榜
  124. local function onUpdateRankList( )
  125. self:UpdateRankList()
  126. end
  127. self:BindEvent(self.model, GuildModel.GUILD_WAR_RANK_LIST, onUpdateRankList)
  128. end
  129. function GuildWarRankView:SetMyInfo()
  130. end
  131. function GuildWarRankView:UpdateRankList(is_top)
  132. self.rank_data, self.my_rank_data = self.model:GetRankData(self.tab_id)
  133. self.rank_num_list = self.model:GuildWarGetRankNumByType(self.tab_id)
  134. if is_top then
  135. self.loop_mgr:Init(self.ScrollView,self.con,1,810,90,function(item,index,realIndex )
  136. self:OnInitializeItem(item,index,realIndex)
  137. end, 0, 0,{x =0, y=-5})
  138. self.loop_mgr:InitChildren(self.item_list, #self.rank_num_list)
  139. self.loop_mgr:RestToBeginning()
  140. self.loop_mgr:SetContentSizeData()
  141. else
  142. self.loop_mgr:InitChildren(self.item_list, #self.rank_num_list)
  143. self.loop_mgr:ForceUpdateCurrentItems()
  144. self.loop_mgr:SetContentSizeData()
  145. end
  146. self:UpdateMyInfo()
  147. end
  148. function GuildWarRankView:OnInitializeItem(item,index,realIndex)
  149. if item and realIndex > 0 and realIndex <= #self.rank_num_list then
  150. item:SetData(self.rank_data[realIndex], realIndex, self.tab_id)
  151. end
  152. end
  153. function GuildWarRankView:SwitchTab(tab_id)
  154. if tab_id ~= self.tab_id then
  155. self.tab_id = tab_id
  156. for i=1,3 do
  157. self.tab_btn[i].select:SetActive(i == self.tab_id)
  158. self.tab_btn[i].select:SetActive(i == self.tab_id)
  159. end
  160. self.tab_btn[1].text.text = HtmlColorTxt("个人榜", tab_id == GuildWarRankView.TAB_ID.PERSON and "#ffffff" or "#7d91ac")
  161. self.tab_btn[2].text.text = HtmlColorTxt("社团榜", tab_id == GuildWarRankView.TAB_ID.GUILD and "#ffffff" or "#7d91ac")
  162. self.tab_btn[3].text.text = HtmlColorTxt("击杀榜", tab_id == GuildWarRankView.TAB_ID.KILL and "#ffffff" or "#7d91ac")
  163. SetTMPSharedMaterial(self.tab_btn[1].text, tab_id == GuildWarRankView.TAB_ID.PERSON and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
  164. SetTMPSharedMaterial(self.tab_btn[2].text, tab_id == GuildWarRankView.TAB_ID.GUILD and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
  165. SetTMPSharedMaterial(self.tab_btn[3].text, tab_id == GuildWarRankView.TAB_ID.KILL and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
  166. self:UpdateRankList(true)
  167. local title_info = GuildWarRankView.TAB_TITLE[self.tab_id]
  168. for i,v in ipairs(self.title_list) do
  169. v.text.text = title_info[i]
  170. end
  171. end
  172. end
  173. function GuildWarRankView:UpdateMyInfo()
  174. local d = self.my_rank_data or {}
  175. if not self.my_rank_item then
  176. self.my_rank_item = GuildWarRankItem.New(self.my_con)
  177. self.my_rank_item:HideBg(true)
  178. end
  179. self.my_rank_item:SetData(d, d.my_rank, self.tab_id)
  180. end