源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

188 Zeilen
8.1 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 跨服社团排行活动主界面
  4. -- *>
  5. GuildEventCSGuildRankView = GuildEventCSGuildRankView or BaseClass(BaseItem)
  6. local GuildEventCSGuildRankView = GuildEventCSGuildRankView
  7. function GuildEventCSGuildRankView:__init(parent_wnd,prefab_asset,layer_name)
  8. self.base_file = "guild"
  9. self.layout_file = "GuildEventCSGuildRankView"
  10. self.parent_wnd = parent_wnd
  11. self.layer_name = layer_name
  12. self.model = GuildModel:getInstance()
  13. -- 请求活动状态信息
  14. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41000)
  15. -- 请求一次对战信息
  16. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41001, GuildModel.CSGRRankType.Mine, 0, 0)
  17. self:Load()
  18. end
  19. function GuildEventCSGuildRankView:Load_callback()
  20. local nodes = {
  21. "bg:raw",
  22. "main_title:img",
  23. "empty_girl:obj:raw",
  24. -- 对战社团信息相关
  25. "info_bg:obj:img",
  26. "info_bg/guild_icon1:obj:img",
  27. "info_bg/guild_icon2:obj:img",
  28. "info_bg/guild_icon3:obj:img",
  29. "info_bg/guild_name1:tmp",
  30. "info_bg/guild_name2:tmp",
  31. "info_bg/guild_name3:tmp",
  32. "info_bg/info_lb2:tmp",
  33. -- 预览奖励容器
  34. "reward_scroll",
  35. "reward_scroll/Viewport/reward_con",
  36. -- 其他按钮
  37. "enter_btn:obj:imgex",
  38. "ques_btn:obj",
  39. "fight_info_btn:obj",
  40. "reward_btn:obj",
  41. "event_time_lb:tmp",
  42. "open_tips_btn:obj",
  43. "open_tips_btn/open_tips_red:obj",
  44. }
  45. self:GetChildren(nodes)
  46. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_event_bg_410_0"), false)
  47. lua_resM:setOutsideImageSprite(self, self.info_bg_img, GameResPath.GetGuildImage("guild_csgr_infobg"), false)
  48. lua_resM:setOutsideRawImage(self, self.empty_girl_raw, GameResPath.GetRoleBg("com_empty_dialogueGirl1_590x560"))
  49. -- self.info_tip_tmp.text = string.format("对战情况由<color=%s>本服团战</color>积分排名决定", ColorUtil.GREEN_DARK)
  50. self:AddEvents()
  51. if self.need_refresh_data then
  52. self:UpdateView()
  53. end
  54. end
  55. function GuildEventCSGuildRankView:AddEvents( )
  56. local function click_event(target)
  57. if target == self.enter_btn_obj then -- 前往活动场景
  58. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41002, 0)
  59. elseif target == self.ques_btn_obj then -- 活动玩法提示
  60. GlobalEventSystem:Fire(EventName.OPEN_INSTRUCTION_VIEW, 41000)
  61. elseif target == self.fight_info_btn_obj then -- 打开对战信息界面
  62. self.model:Fire(GuildModel.OPEN_CSGR_FIGHTINFO_VIEW, true)
  63. elseif target == self.reward_btn_obj then -- 打开奖励预览界面
  64. self.model:Fire(GuildModel.OPEN_CSGR_REWARD_VIEW, true)
  65. elseif target == self.open_tips_btn_obj then
  66. self.model:SetWarActiveRedDot(410, 1, false)
  67. GuildModel.getInstance():Fire(GuildModel.OPEN_ACTIVE_OPEN_TIPS_VIEW, true)
  68. end
  69. end
  70. AddClickEvent(self.enter_btn_obj, click_event)
  71. AddClickEvent(self.ques_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  72. AddClickEvent(self.fight_info_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  73. AddClickEvent(self.reward_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  74. AddClickEvent(self.open_tips_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  75. -- 更新对战信息
  76. local function update_guild_fightinfo(type)
  77. if type == GuildModel.CSGRRankType.Mine then
  78. self:UpdateGuildData()
  79. end
  80. end
  81. self:BindEvent(self.model, GuildModel.UPDATE_CSGR_FIGHTINFO, update_guild_fightinfo)
  82. local function onShowACtiveOpenTipsRed()
  83. self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(410, 1))
  84. end
  85. self:BindEvent(self.model, GuildModel.SHOW_ACTIVE_OPEN_TIPS_RED, onShowACtiveOpenTipsRed)
  86. self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(410, 1))
  87. end
  88. -- 这里只传入活动日历中的活动时间相关数据,活动协议内容界面自己获取
  89. function GuildEventCSGuildRankView:SetEventAcData( evt_ac_data )
  90. self.evt_ac_data = evt_ac_data
  91. self.evt_key = self.evt_ac_data.module_id .. "@" .. self.evt_ac_data.module_sub
  92. if self.is_loaded then
  93. self.need_refresh_data = false
  94. self:UpdateView()
  95. else
  96. self.need_refresh_data = true
  97. end
  98. end
  99. function GuildEventCSGuildRankView:UpdateView( )
  100. self:UpdateGuildData()
  101. self:UpdateEventTime()
  102. self:UpdateRewardItem()
  103. end
  104. --刷新活动时间显示
  105. function GuildEventCSGuildRankView:UpdateEventTime( )
  106. local ac_cfg = DailyModel:getInstance():GetAcConfig(self.evt_ac_data.module_id, self.evt_ac_data.module_sub, self.evt_ac_data.ac_sub)
  107. if ac_cfg then
  108. local time_region = stringtotable(ac_cfg.time_region)[1]
  109. local _, day_str = self.model:GetGuildEventOpenTime(self.evt_ac_data.module_id, self.evt_ac_data.module_sub,self.evt_ac_data.ac_sub)
  110. local start_time = time_region[1][1] .. ":" .. time_region[1][2]
  111. local end_time = time_region[2][1] .. ":" .. time_region[2][2]
  112. self.event_time_lb_tmp.text = day_str .. " <color=#2CF86F>" .. start_time .."-"..end_time.."</color>,限时开启"
  113. end
  114. lua_resM:setOutsideImageSprite(self,self.main_title_img,
  115. GameResPath.GetGuildImage(self.evt_ac_data.module_sub == 1 and "guild_event_csgr_adtitle_pointfilter" or "guild_event_csgr_adtitle2_pointfilter"),
  116. false)
  117. -- self.event_time_lb_tmp.text = self.model:GetGuildEventOpenTime(self.evt_ac_data.module_id, self.evt_ac_data.module_sub,self.evt_ac_data.ac_sub)
  118. end
  119. -- 更新对战公会的信息
  120. function GuildEventCSGuildRankView:UpdateGuildData( )
  121. local guild_data = self.model:GetCSGRFightInfo()
  122. if not guild_data or IsTableEmpty(guild_data.guilds) then -- 没有对战信息,不显示右侧对战图
  123. self.info_bg_obj:SetActive(false)
  124. self.empty_girl_obj:SetActive(true)
  125. self.fight_info_btn_obj:SetActive(false)
  126. SetAnchoredPositionX(self.reward_btn, 204.5)
  127. else
  128. self.info_bg_obj:SetActive(true)
  129. self.empty_girl_obj:SetActive(false)
  130. self.fight_info_btn_obj:SetActive(true)
  131. SetAnchoredPositionX(self.reward_btn, 120.9)
  132. self.info_lb2_tmp.text = string.format("%s号战场", guild_data.arena_id)
  133. local guild_info
  134. for i = 1, 3 do
  135. guild_info = guild_data.guilds[i]
  136. if guild_info then
  137. lua_resM:setImageSprite(self, self["guild_icon"..i.."_img"], "guildIcon_asset", "guild_icon" .. guild_info.guild_flag, true)
  138. self["guild_icon"..i.."_obj"]:SetActive(true)
  139. self["guild_name"..i.."_tmp"].text = string.format("s%s.%s", guild_info.server_num, guild_info.guild_name)
  140. else
  141. self["guild_icon"..i.."_obj"]:SetActive(false)
  142. self["guild_name"..i.."_tmp"].text = "暂无社团信息"
  143. end
  144. end
  145. end
  146. end
  147. -- 加载活动奖励
  148. function GuildEventCSGuildRankView:UpdateRewardItem( )
  149. local reward_data = DailyModel:getInstance():GetRewardList(self.evt_ac_data.module_id, self.evt_ac_data.module_sub, self.evt_ac_data.ac_sub)
  150. self.reward_item_creator = self.reward_item_creator or self:AddUIComponent(UI.ItemListCreator)
  151. local info = {
  152. data_list = reward_data,
  153. item_con = self.reward_con,
  154. scroll_view = self.reward_scroll,
  155. obj_pool_type = UIObjPool.UIType.AwardItem,
  156. item_width = 78,
  157. start_x = 7,
  158. start_y = -5,
  159. space_x = 9,
  160. create_frequency = 0.01,
  161. alignment = UnityEngine.TextAnchor.UpperLeft,
  162. on_update_item = function(item, i, v)
  163. local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  164. local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
  165. if goodVo then
  166. item:SetData(goodVo.type_id, v.count , goodVo.color, nil, lock)
  167. end
  168. end,
  169. }
  170. self.reward_item_creator:UpdateItems(info)
  171. end
  172. function GuildEventCSGuildRankView:__delete( )
  173. end