CapsuleEggRewardView = CapsuleEggRewardView or BaseClass(BaseView) local CapsuleEggRewardView = CapsuleEggRewardView function CapsuleEggRewardView:__init() self.base_file = "capsuleEgg" self.layout_file = "CapsuleEggRewardView" self.layer_name = "Activity" self.mainVo = RoleManager.Instance.mainRoleInfo self.model = CapsuleEggModel:getInstance() self.destroy_imm = true self.use_background = true self.hide_clear_role_model = false self.change_scene_close = true self.append_to_ctl_queue = false self.close_fog = true self.is_set_zdepth = true self.show_item_list = {} self.record_list = {} self.play_record_idx = 0 self.play_record_item = false self.last_play_record_item = false self.record_item = false self.is_ani = false self.blur_activity_bg = true self.use_show_anim = true self.use_hide_anim = true self.load_callback = function () self:LoadSuccess() self:InitEvent() end self.open_callback = function () self:UpdateView() end self.close_callback = function () self:Remove() end end function CapsuleEggRewardView:Open(pool_type) self.pool_type = pool_type or 1 self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17011,1, self.pool_type, 0) BaseView.Open(self) end function CapsuleEggRewardView:Remove() for i,v in ipairs(self.show_item_list) do v:DeleteMe() end if self.delay_timer then GlobalTimerQuest:CancelQuest(self.delay_timer) self.delay_timer = false end if self.record_item then for i,v in ipairs(self.record_item) do v:DeleteMe() end end end function CapsuleEggRewardView:LoadSuccess() local nodes = { "contain/helpBtn:obj", "contain/title_img_3:img", "contain/title_img_2:img", "contain/title_img_1:img", "contain/close:obj", "contain/bg:raw", "contain/reward_scroll", "contain/reward_scroll/Viewport/reward_con", "contain/target_scroll", "contain/target_scroll/Viewport/target_con", "contain/record_scroll/Viewport/record_con", "contain/record_scroll", "contain/reward_icon/role_con:raw", } self:GetChildren(nodes) lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("capsule_egg_bg_2_1238_609")) --lua_resM:setOutsideRawImage(self, self.reward_icon_raw, GameResPath.GetCapsuleEggRes("capsule_egg_icon_2"), true) lua_resM:setOutsideImageSprite(self, self.title_img_1_img, GameResPath.GetCapsuleEggRes("capsule_egg_draw_type_title_2"), false) lua_resM:setOutsideImageSprite(self, self.title_img_2_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_3"), false) lua_resM:setOutsideImageSprite(self, self.title_img_3_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_2"), false) local model_pos = CapsuleEggShowAwardItem.HorseRewardShowPos.pos SetLocalPosition(self.role_con, model_pos.x, model_pos.y, model_pos.z) self:UpdateHourseModelCon(self.role_con, CapsuleEggShowAwardItem.HorseRewardShowPos.model_id) self:UpdateScord() end function CapsuleEggRewardView:InitEvent() local function onBtnClickHandler(target) if target == self.close_obj then self:Close() elseif target == self.helpBtn_obj then EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 17001) end end AddClickEvent(self.close_obj,onBtnClickHandler) AddClickEvent(self.helpBtn_obj,onBtnClickHandler) --刷新结果 local function on_update_times(pool_type) if pool_type == self.pool_type then self:UpdateView() end end self:BindEvent(self.model,CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_UPDATE,on_update_times) end function CapsuleEggRewardView:UpdateView() local reward_cfg = self.model:GetTimeRewardCfg(self.pool_type) local reward_data_list = {} for i,v in ipairs(reward_cfg) do local t = DeepCopy(v) local status = self.model:GetTimesRewardStatusByTimes(self.pool_type, t.draw_times) if status then t.status = 1 else t.status = 0 end table.insert(reward_data_list, t) end table.sort( reward_data_list, function (a, b) if a.status ~= b.status then return a.status < b.status else return a.draw_times < b.draw_times end end) self.award_item_creator = self.award_item_creator or self:AddUIComponent(UI.ItemListCreator) local info = { data_list = reward_data_list, item_con = self.reward_con, scroll_view = self.reward_scroll, item_class = CapsuleEggRewardItem, item_width = 731, item_height = 101, space_y = 5, create_frequency = 0.01, alignment = UnityEngine.TextAnchor.UpperLeft, on_update_item = function(item, i, v) item:SetData(v, i, self.pool_type) end, } self.award_item_creator:UpdateItems(info) local show_reward_cfg = self.model:GetShowTimeRewardCfg() for i,v in ipairs(self.show_item_list) do v:SetVisible(false) end for i,v in ipairs(show_reward_cfg) do local item = self.show_item_list[i] if not item then item = CapsuleEggTargetItem.New(self.target_con, nil, self.layer_name) self.show_item_list[i] = item item:SetAnchoredPosition((78 + 40) * (i - 1) + 18, -3) end item:SetVisible(true) item:SetData(v, i, self.pool_type) end SetSizeDelta(self.target_con, (70 + 45) * (#show_reward_cfg) + 18, 120) end function CapsuleEggRewardView:UpdateScord() self.record_list = self.model:GetAllRecordList(self.pool_type) if #self.record_list > 0 then self:PlayScrodAction() end end function CapsuleEggRewardView:PlayScrodAction() if not self.record_item then self.record_item = {} self.record_item[1] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name) self.record_item[2] = CapsuleEggRecordItemTwo.New(self.record_con, nil ,self.layer_name) self.record_item[1]:SetAnchoredPosition(0, -100) self.record_item[2]:SetAnchoredPosition(0, -100) end if self.is_ani then return end self.is_ani = true if self.play_record_item ~= self.record_item[1] then self.play_record_item = self.record_item[1] else self.play_record_item = self.record_item[2] end self.play_record_idx = self.play_record_idx + 1 if self.play_record_idx > #self.record_list then self.play_record_idx = 1 end self.play_record_item:SetData(self.record_list[self.play_record_idx]) self.play_record_item:MoveIn() if self.last_play_record_item then self.last_play_record_item:MoveOut() end self.last_play_record_item = self.play_record_item if self.delay_timer then GlobalTimerQuest:CancelQuest(self.delay_timer) self.delay_timer = false end local function delay_func( ) self.is_ani = false self:PlayScrodAction() end self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_func,4) end function CapsuleEggRewardView:UpdateHourseModelCon(transform,figure_id ) local res_data = { father_node = self, transform = transform, fashion_type = FuncOpenModel.TypeId.FHorse, raycast_size = Vector2(0,0), scale = CapsuleEggShowAwardItem.HorseRewardShowPos.scale, model_rotation = CapsuleEggShowAwardItem.HorseRewardShowPos.model_rotation, figure_id = figure_id, action_name_list = {"show"}, position = Vector3(0,0,0), layer_name = self.layer_name, } FuncOpenModel:getInstance():SetModelRes(res_data) end