|
|
- -- <*
- -- @Author: Saber
- -- @Description: 社团场景用 社团boss roll点界面容器
- -- *>
- GuildSceneRollView = GuildSceneRollView or BaseClass(BaseView)
- local GuildSceneRollView = GuildSceneRollView
- local TimeUtil = TimeUtil
- local string_format = string.format
- function GuildSceneRollView:__init()
- self.base_file = "guildScene"
- self.layout_file = "GuildSceneRollView"
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
- self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
- self.is_set_zdepth = true
- self.main_role = RoleManager.Instance.mainRoleInfo
- self.model = GuildModel:getInstance()
- self.goods_model = GoodsModel:getInstance()
- self.cur_record_goods_data = nil
- self.item_list = {}
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:UpdateView(true)
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
- end
-
- function GuildSceneRollView:Open()
- BaseView.Open(self)
- end
-
- -- 不关闭界面重新刷新
- function GuildSceneRollView:ReOpen( )
- self:UpdateView(true)
- end
-
- function GuildSceneRollView:LoadSuccess()
- local nodes = {
- "bg:raw",
- "close_btn:obj",
- "roll_item_con",
- "roll_con",
- "record_scroll", "record_scroll/Viewport/record_con",
- "my_record_con",
- "end_con:obj",
- "end_con/end_time_text:tmp",
- "roll_item_name:tmp",
- }
- self:GetChildren(nodes)
- self.award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.roll_item_con)
- self.award_item:SetAnchoredPosition(0, 0)
- self.award_item:SetItemSize(78, 78)
- self.award_item:SetVisible(false)
- lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_roll_bg"))
-
- -- 界面打开后,社团功能按钮的roll点结算红点不显示,并更新一次按钮红点
- self.model._gboss_need_show_claim_red = false
- self.model:CheckGuildBossNumRed()
- self.model:Fire(GuildModel.UPDATE_SCENE_FUNCBTN_NUM_RED, 4062)
- end
-
- function GuildSceneRollView:AddEvent()
- local function click_event(target)
- if target == self.close_btn_obj then
- self:Close()
- end
- end
- AddClickEvent(self.close_btn_obj, click_event)
-
- local function update_roll_record()
- self:UpdateRollRecordData()
- end
- self:BindEvent(self.model, GuildModel.UPDATE_BOSS_ROLL_RECORD, update_roll_record)
-
- -- 监听社团boss活动的进行情况
- local function update_guild_event(type)
- if type == GuildEventType.GuildBossNoon or type == GuildEventType.GuildBossNight then -- 社团boss
- self:SetAutoCloseTimer()
- end
- end
- self:BindEvent(self.model, GuildModel.UPDATE_GUILD_EVENT_BY_TYPE, update_guild_event)
- end
-
- -- open_select 打开界面时自动选中
- function GuildSceneRollView:UpdateView(open_select)
- local list = self.model:GetGuildBossRollData()
- local function click_callback(index, data)
- self.cur_roll_index = index
- for k, v in pairs(self.item_list) do
- v:SetSelected(index)
- end
- self:UpdateRollRecordData(data)
- end
- -- 隐藏所有节点
- for k, v in pairs(self.item_list) do
- v:SetVisible(false)
- end
- local offset_x = (650 - 173 * #list) * 0.5 + 35
- for k, v in ipairs(list) do
- self.item_list[k] = self.item_list[k] or GuildSceneRollItem.New(self.roll_con)
- self.item_list[k]:SetAnchoredPosition(offset_x + 173 * (k - 1), -4)
- self.item_list[k]:SetData(k, v, click_callback)
- self.item_list[k]:SetVisible(true)
- end
- if open_select then
- click_callback(1, list[1])
- end
- end
-
- -- 更新当前索引节点的roll点记录
- function GuildSceneRollView:UpdateRollRecordData(data)
- self.cur_record_goods_data = data or self.cur_record_goods_data
- local record_data = self.model:GetGuildBossRollRecord(self.cur_record_goods_data.order_id)
- self.record_item_creator = self.record_item_creator or self:AddUIComponent(UI.ItemListCreator)
- local info = {
- data_list = record_data,
- scroll_view = self.record_scroll,
- item_con = self.record_con,
- item_class = GuildSceneRollRecordItem,
- start_y = -3,
- space_y = 4,
- item_height = 30,
- create_frequency = 0.01,
- alignment = UnityEngine.TextAnchor.UpperLeft,
- on_update_item = function(item, i, v)
- item:SetData(v, self.cur_record_goods_data.order_id, false)
- end,
- }
- self.record_item_creator:UpdateItems(info)
- -- 更新玩家自己的roll点情况
- self.my_record_item = self.my_record_item or GuildSceneRollRecordItem.New(self.my_record_con)
- local roll_data = self.model:GetGuildBossRollDataByOrderId(self.cur_record_goods_data.order_id)
- self.my_record_item:SetAnchoredPosition(0, 0)
- local my_record = {
- role_id = self.main_role.role_id,
- role_name = self.main_role.name,
- roll_num = roll_data and roll_data.roll_num or 0
- }
- self.my_record_item:SetData(my_record, self.cur_record_goods_data.order_id, true)
- -- 更新奖励展示
- local goods_id = self.cur_record_goods_data.goods_type_id
- self.roll_item_name_tmp.text = self.goods_model:getGoodsName(goods_id, true)
- self.award_item:SetDataWithMapId(goods_id, self.cur_record_goods_data.num)
- self.award_item:SetVisible(true)
- end
-
- -- 监听活动的进行情况,活动结束后弹出倒计时关闭界面
- function GuildSceneRollView:SetAutoCloseTimer( )
- local noonboss_data = self.model:GetGuildEventByType(GuildEventType.GuildBossNoon)
- local nightboss_data = self.model:GetGuildEventByType(GuildEventType.GuildBossNight)
- local noon_open = noonboss_data and noonboss_data.is_evt_open
- local night_open = nightboss_data and nightboss_data.is_evt_open
- -- 活动进行中则不做处理
- if noon_open or night_open then return end
- -- 活动都已结束,弹出自动关闭的倒计时
- self.end_con_obj:SetActive(true)
- local close_time = 15 + TimeUtil:getServerTime()
- local rest_time
- local function on_time_down( ... )
- rest_time = close_time - TimeUtil:getServerTime()
- if rest_time > 0 then
- self.end_time_text_tmp.text = string_format("活动结束,<size=130%%><#ffffff>%s秒后</color></size>关闭界面", rest_time)
- else
- self:Close()
- end
- end
- self:StopAutoCloseTimer()
- self.end_timer_id = GlobalTimerQuest:AddPeriodQuest(on_time_down, 1, -1)
- on_time_down()
- end
-
- function GuildSceneRollView:StopAutoCloseTimer( )
- if self.end_timer_id then
- GlobalTimerQuest:CancelQuest(self.end_timer_id)
- self.end_timer_id = nil
- end
- end
-
- function GuildSceneRollView:DestroySuccess( )
- for k, v in pairs(self.item_list) do
- v:DeleteMe()
- end
- self.item_list = {}
-
- if self.award_item then
- UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item)
- end
- self.award_item = nil
-
- if self.my_record_item then
- self.my_record_item:DeleteMe()
- self.my_record_item = nil
- end
- -- 是否显示结算红点
- local is_finished = self.model:GetGuildBossRollIsFinished()
- self.model._gboss_need_show_claim_red = not is_finished
-
- self:StopAutoCloseTimer()
- end
|