源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

130 wiersze
5.0 KiB

4 tygodni temu
  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 跨服社团排行活动结算界面
  4. -- *>
  5. GuildCSGRResultView = GuildCSGRResultView or BaseClass(BaseView)
  6. local GuildCSGRResultView = GuildCSGRResultView
  7. function GuildCSGRResultView:__init()
  8. self.base_file = "guildCSGR"
  9. self.layout_file = "GuildCSGRResultView"
  10. self.layer_name = "Top"
  11. self.destroy_imm = true
  12. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  13. self.click_bg_toClose = true
  14. self.blur_activity_bg = true
  15. self.use_show_anim = true
  16. self.use_hide_anim = true
  17. self.model = GuildModel:getInstance()
  18. self.guild_rank_reward, self.guild_rank_normal_reward = self.model:GetCSGRRankRewardCfg()
  19. self.award_list = {}
  20. self.auto_close_time = 10 -- n秒后自动关闭界面
  21. self.load_callback = function ()
  22. self:LoadSuccess()
  23. self:AddEvent()
  24. end
  25. self.open_callback = function ( )
  26. self:UpdateView()
  27. self:StartCloseCountdown()
  28. end
  29. self.destroy_callback = function ( )
  30. self:DestroySuccess()
  31. end
  32. end
  33. function GuildCSGRResultView:Open(data)
  34. self.data = data
  35. BaseView.Open(self)
  36. end
  37. function GuildCSGRResultView:LoadSuccess()
  38. local nodes = {
  39. "bg:raw",
  40. "title:raw",
  41. -- 界面中部排行信息节点,需要做自动居中
  42. "rank_con",
  43. "rank_con/rank_img1",
  44. "rank_con/rank_img2",
  45. "rank_con/rank_desc:tmp",
  46. -- 奖励容器
  47. "reward_scroll", "reward_scroll/Viewport/reward_con",
  48. -- 其他文本
  49. "guild_rank:tmp", "role_rank:tmp",
  50. "close_countdown:tmp",
  51. }
  52. self:GetChildren(nodes)
  53. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("com_result_bg_1124_549"), false)
  54. lua_resM:setOutsideRawImage(self, self.title_raw, GameResPath.GetDungeonImage("dun_result_title3"), false)
  55. end
  56. function GuildCSGRResultView:AddEvent()
  57. end
  58. function GuildCSGRResultView:UpdateView()
  59. if self.data then
  60. self.guild_rank_tmp.text = string.format("社团排名:<color=#fef979>第%s名</color>", self.data.guild_rank)
  61. self.role_rank_tmp.text = string.format("个人排名:<color=#fef979>第%s名</color>", self.data.role_rank)
  62. -- 加载顶部文本
  63. self.rank_desc_tmp.text = string.format("恭喜您! 您的社团在本次战场中排名 第%s名", self.data.guild_rank)
  64. local offset_x = (self.rank_con.sizeDelta.x - 198 - self.rank_desc_tmp.preferredWidth - 20) / 2
  65. SetAnchoredPositionX(self.rank_img1, offset_x)
  66. SetAnchoredPositionX(self.rank_desc, self.rank_img1.anchoredPosition.x + self.rank_img1.sizeDelta.x + 10)
  67. SetAnchoredPositionX(self.rank_img2, self.rank_desc.anchoredPosition.x + self.rank_desc_tmp.preferredWidth + 10)
  68. -- 加载奖励内容
  69. local reward_cfg
  70. local target_list = self.data.first_arena == 1 and self.guild_rank_reward or self.guild_rank_normal_reward
  71. for k, v in ipairs(target_list) do
  72. if v.rank_min <= self.data.guild_rank and v.rank_max >= self.data.guild_rank then
  73. reward_cfg = v
  74. break
  75. end
  76. end
  77. local reward_num = TableSize(reward_cfg.rewards)
  78. local need_mid_align = reward_num <= 4
  79. local offset_x = need_mid_align and (self.reward_con.sizeDelta.x - reward_num * 98) / 2 or 0
  80. for k, v in ipairs(reward_cfg.rewards) do
  81. item = self.award_list[k]
  82. if not item then
  83. item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
  84. self.award_list[k] = item
  85. end
  86. item:SetVisible(true)
  87. item:SetItemSize(84, 84)
  88. item:SetAnchoredPosition(98 * (k-1) + offset_x, -2)
  89. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  90. item:SetData(typeId, v[3], nil, nil, lock)
  91. end
  92. SetSizeDeltaX(self.reward_con, 98 * reward_num)
  93. end
  94. end
  95. -- 创建自动关闭倒计时
  96. function GuildCSGRResultView:StartCloseCountdown( )
  97. local end_time = TimeUtil:getServerTime() + self.auto_close_time
  98. local function auto_close_func()
  99. local left_time = end_time - TimeUtil:getServerTime()
  100. if left_time > 0 then
  101. self.close_countdown_tmp.text = string.format("点击空白处关闭<color=%s>(%s秒)</color>", ColorUtil.GREEN_DARK, left_time)
  102. else
  103. self:Close()
  104. end
  105. end
  106. if not self.auto_close_func_id then
  107. self.auto_close_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_func, 0.5, -1)
  108. end
  109. end
  110. function GuildCSGRResultView:DestroySuccess( )
  111. for k, v in pairs(self.award_list) do
  112. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
  113. end
  114. self.award_list = {}
  115. if self.auto_close_func_id then
  116. GlobalTimerQuest:CancelQuest(self.auto_close_func_id)
  117. self.auto_close_func_id = nil
  118. end
  119. -- 清空结算数据
  120. self.model:SetGuildCSGRResultData(nil)
  121. end