local XUiDormMain = XLuaUiManager.Register(XLuaUi, "UiDormMain") local XUiDormMainItem = require("XUi/XUiDormMain/XUiDormMainItem") local TextManager = CS.XTextManager local DormDrawGroudId local White = "#ffffff" local Blue = "#34AFF8" function XUiDormMain:OnAwake() self.DormItems = {} self.Roomsputup = {} DormDrawGroudId = CS.XGame.ClientConfig:GetInt("DormDrawGroudId") self.DisplaySetType = XDormConfig.VisitDisplaySetType self.DormActiveState = XDormConfig.DormActiveState self.SceneId = XDormConfig.SenceType.One XTool.InitUiObject(self) self:InitFun() self:InitEnter() self:InitUI() end function XUiDormMain:InitFun() self.DormActiveRespCB = function() self:SetDormMainItem() end self.DormCharEventCB = function(dormId) self:CharEventChange(dormId) end self.OnBtnTaskTipsClickCb = function() self:OnBtnTaskTipsClick() end self:BindHelpBtn(self.BtnHelp, "Dorm") self.BtnTemplate.CallBack = function() self:OnBtnTemplateClick() end end function XUiDormMain:InitEnter() self:RegisterClickEvent(self.BtnWork, function() self:OpenWork() end) self:RegisterClickEvent(self.BtnPerson, function() self:SetPersonList() end) self:RegisterClickEvent(self.BtnTask, self.OnBtnTaskClick) self:RegisterClickEvent(self.BtnShop, function() self:OpenShopUI() end) self:RegisterClickEvent(self.BtnBuild, function() self:OpenBuildUI() end) self:RegisterClickEvent(self.BtnWareHouse, function() self:OpenWareHpuseUI() end) self.BtnWork:SetName(TextManager.GetText("DormWorkText")) self.BtnPerson:SetName(TextManager.GetText("DormPersonText")) self.BtnTask:SetName(TextManager.GetText("DormTaskText")) self.BtnShop:SetName(TextManager.GetText("DormShopText")) self.BtnWareHouse:SetName(TextManager.GetText("DormWareHouseText")) self.BtnBuild:SetName(TextManager.GetText("DormBuidText")) end -- 跳到仓库 function XUiDormMain:OpenWareHpuseUI() XLuaUiManager.Open("UiDormBag") self.IsStatic = true end -- 跳到建造 function XUiDormMain:OpenBuildUI() XLuaUiManager.Open("UiFurnitureBuild") self.IsStatic = true end function XUiDormMain:CharEventChange(dormId) if self.DormItems[dormId] then self.DormItems[dormId]:SetEvenIconState(true) end end -- 跳到商店 function XUiDormMain:OpenShopUI() XLuaUiManager.Open("UiShop", XShopManager.ShopType.Dorm) self.IsStatic = true end -- 跳到抽卡 function XUiDormMain:OpenDrawUI() -- 没有开启 local isOpen = XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.DrawCard) if not isOpen then XUiManager.TipText("DormDrawNoOpenTips") return end XDataCenter.DrawManager.GetDrawGroupList( function() local info = XDataCenter.DrawManager.GetDrawGroupInfoByGroupId(DormDrawGroudId) XDataCenter.DrawManager.GetDrawInfoList(DormDrawGroudId, function() XLuaUiManager.Open("UiDraw", DormDrawGroudId, function() XHomeSceneManager.ResetToCurrentGlobalIllumination() end, info.UiBackGround) end) end ) self.IsStatic = true end -- 跳到任务 function XUiDormMain:OnBtnTaskTipsClick() if self.CurTaskData and not self.CurTaskTagState then self:OnTaskSkip() return end local tab if self.CurTaskTagState then if self.TaskType == XDataCenter.TaskManager.TaskType.DormNormal then tab = XTaskConfig.PANELINDEX.Story else tab = XTaskConfig.PANELINDEX.Daily end end self:OnOpenTask(tab) end function XUiDormMain:OnBtnTemplateClick() XLuaUiManager.Open("UiDormTemplate") end function XUiDormMain:OnOpenTask(tab) XLuaUiManager.Open("UiDormTask", tab) self.IsStatic = true end function XUiDormMain:OnBtnTaskClick() self:OnOpenTask() end function XUiDormMain:OnTaskSkip() if XDataCenter.RoomManager.RoomData ~= nil then local title = CS.XTextManager.GetText("TipTitle") local cancelMatchMsg = CS.XTextManager.GetText("OnlineInstanceQuitRoom") XUiManager.DialogTip(title, cancelMatchMsg, XUiManager.DialogType.Normal, nil, function() XLuaUiManager.RunMain() local skipId = XDataCenter.TaskManager.GetTaskTemplate(self.CurTaskData.Id).SkipId XFunctionManager.SkipInterface(skipId) end) else local skipId = XDataCenter.TaskManager.GetTaskTemplate(self.CurTaskData.Id).SkipId XFunctionManager.SkipInterface(skipId) end end -- 跳到打工 function XUiDormMain:OpenWork() XLuaUiManager.Open("UiDormWork") self.IsStatic = true end -- 设置人员list function XUiDormMain:SetPersonList() XLuaUiManager.Open("UiDormPerson", self.SceneId) self.IsStatic = true end -- [监听动态列表事件] function XUiDormMain:OnDynamicTableEvent(event, index, grid) if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then grid:Init(self) elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then local data = self.ListData[index] grid:OnRefresh(data) end end function XUiDormMain:SetSelectState(state) if not self.PanelSelect then return end self.PanelSelect.gameObject:SetActiveEx(state) end function XUiDormMain:OnStart() XLuaUiManager.Close("UiLoading") end function XUiDormMain:CreateDormMainItems() --已经拥有的宿舍 local dormDatas = XDataCenter.DormManager.GetDormitoryData() for dormId, v in pairs(dormDatas) do if v:WhetherRoomUnlock() then if not self.DormItems[dormId] then local item = self:GetItem(dormId) self.DormItems[dormId] = item end self.DormItems[dormId].GameObject:SetActiveEx(true) self.DormItems[dormId]:OnRefresh(v, self.DormActiveState.Active) self.DormItems[dormId]:SetEvenIconState(XDataCenter.DormManager.IsHaveDormCharactersEvent(dormId)) end end end function XUiDormMain:GetItem(dormId) local obj = self:GetDormItemPos(dormId) local item = XUiDormMainItem.New(obj, self) return item end function XUiDormMain:GetDormItemPos(id) return self.Roomsputup[id] end function XUiDormMain:OnEnable() self.BtnPanelTask.CallBack = self.OnBtnTaskTipsClickCb self:OnPlayAnimation() XDataCenter.DormManager.StartDormRedTimer() self.BtnWork:ShowReddot(XDataCenter.DormManager.DormWorkRedFun()) self.BtnBuild:ShowReddot(XDataCenter.FurnitureManager.HasCollectableFurniture()) local redPointTypes = XRedPointConditions.Types XRedPointManager.AddRedPointEvent(self.BtnTask.ReddotObj, self.RefreshTaskTabRedDot, self, { redPointTypes.CONDITION_DORM_MAIN_TASK_RED }) XRedPointManager.AddRedPointEvent(self.BtnBuild.ReddotObj, self.OnCheckBuildFurniture, self, { redPointTypes.CONDITION_FURNITURE_CREATE }) XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_DORMMAIN_EVENT_NOTIFY, self.DormCharEventCB) XEventManager.AddEventListener(XEventId.EVENT_DORM_ROOM_ACTIVE_SUCCESS, self.DormActiveRespCB, self) local data, tasktype, state = XDataCenter.TaskManager.GetDormTaskTips() if data and tasktype and state then self.CurTaskData = data self.TaskType = tasktype self.PanelTask.gameObject:SetActiveEx(true) local config = XDataCenter.TaskManager.GetTaskTemplate(data.Id) self.CurTaskTagState = state == XDataCenter.TaskManager.TaskState.Achieved if self.CurTaskTagState then self.BtnPanelTask:SetName(string.format("%s", Blue, config.Desc)) else self.BtnPanelTask:SetName(string.format("%s", White, config.Desc)) end self.BtnPanelTask:ShowTag(not self.CurTaskTagState) self.BtnPanelTask:ShowReddot(self.CurTaskTagState) else self.CurTaskData = nil self.PanelTask.gameObject:SetActiveEx(false) end end function XUiDormMain:RefreshTaskTabRedDot(count) self.BtnTask:ShowReddot(count >= 0) end function XUiDormMain:OnCheckBuildFurniture(count) self.BtnBuild:ShowReddot(count >= 0) end function XUiDormMain:OnPlayAnimation() local delay = XDormConfig.DormAnimationMoveTime if self.IsStatic then self.IsStatic = false delay = XDormConfig.DormAnimationStaicTime end self:InitSpcaeBtn() if delay > 0 then self.IsFirstAnimation = true self.SafeAreaContentPane.gameObject:SetActiveEx(false) self.DormMainLookTimer = XScheduleManager.ScheduleOnce(function() self.SafeAreaContentPane.gameObject:SetActiveEx(true) self:PlayAnimation("AnimStartEnable") self:PlayAnimation("BgEnable") self:PlayAnimation("LeftTapGroupEnable") self:SetDormMainItem() XScheduleManager.UnSchedule(self.DormMainLookTimer) end, delay) else self:SetDormMainItem() self:PlayAnimation("AnimStartEnable") self:PlayAnimation("BgEnable") self:PlayAnimation("LeftTapGroupEnable") end end function XUiDormMain:SetDormMainItem() self:CreateDormMainItems() end function XUiDormMain:OnDisable() self.BtnPanelTask.CallBack = nil XEventManager.RemoveEventListener(XEventId.EVENT_CHARACTER_DORMMAIN_EVENT_NOTIFY, self.DormCharEventCB) XEventManager.RemoveEventListener(XEventId.EVENT_DORM_ROOM_ACTIVE_SUCCESS, self.DormActiveRespCB, self) if self.DormMainLookTimer then XScheduleManager.UnSchedule(self.DormMainLookTimer) self.DormMainLookTimer = nil end -- 进入房间应该隐藏Hud for _, v in pairs(self.DormItems) do v.GameObject:SetActiveEx(false) v:SetEvenIconState(false) end XDataCenter.DormManager.StopDormRedTimer() end function XUiDormMain:OnDestroy() XHomeSceneManager.LeaveScene() XEventManager.DispatchEvent(XEventId.EVENT_DORM_HIDE_COMPONET) end function XUiDormMain:InitUI() local itemId = XDataCenter.ItemManager.ItemId self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, itemId.DormCoin, itemId.FurnitureCoin, itemId.DormEnterIcon) self:AddListener() local cfg = XDormConfig.GetTotalDormitoryCfg() local i = 1 for _, v in pairs(cfg) do self.Roomsputup[v.Id] = self["DormlMainItem" .. v.InitNumber] i = i + 1 end self:InitBtnTabsGroup() self:InitPanelSceneGroup() end function XUiDormMain:InitBtnTabsGroup() self.TabGroup = {} local index = 1 while true do if self["BtnTab" .. index] then self.TabGroup[index] = self["BtnTab" .. index] local num = index self["BtnTab" .. index].CallBack = function() self:ChangeSceneOnBtnTabClick(num) end else break end index = index + 1 end end function XUiDormMain:InitPanelSceneGroup() self.PanelSceneGroup = {} local index = 1 while true do if self["PanelScene" .. index] then self.PanelSceneGroup[index] = self["PanelScene" .. index] else break end index = index + 1 end end function XUiDormMain:AddListener() self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUIClick) self:RegisterClickEvent(self.BtnBack, self.OnBtnReturnClick) end function XUiDormMain:OnBtnMainUIClick() XDataCenter.DormManager.RequestDormitoryExit() XEventManager.DispatchEvent(XEventId.EVENT_DORM_CLOSE_COMPONET) XLuaUiManager.RunMain() end function XUiDormMain:OnBtnReturnClick() XDataCenter.DormManager.RequestDormitoryExit() XEventManager.DispatchEvent(XEventId.EVENT_DORM_CLOSE_COMPONET) self:Close() end -- 处理空间站选择 --function XUiDormMain:OnBtnTab1Click() --self:ChangeSceneOnBtnTabClick(XDormConfig.SenceType.One) --end --function XUiDormMain:OnBtnTab2Click() --self:ChangeSceneOnBtnTabClick(XDormConfig.SenceType.Two) --end --function XUiDormMain:OnBtnTab3Click() --self:ChangeSceneOnBtnTabClick(XDormConfig.SenceType.Three) --end function XUiDormMain:ChangeSceneOnBtnTabClick(index) if self.SceneId == index then self:SelectOneBtnTab(index) return end self.SceneId = index self:HideAllPanelScene() self:SelectOneBtnTab(self.SceneId) XHomeSceneManager.ChangeSceneView(self.SceneId, function() self:OpenOnePanelScene(self.SceneId) self:OnPlayAnimation() end) end --================== --选中一个左侧页签(XX号基地) --@param index:页签序号 --================== function XUiDormMain:SelectOneBtnTab(index) if not index then index = self.SceneId end if not index then index = XDormConfig.SenceType.One end for i, btn in pairs(self.TabGroup) do local isSelect = i == index btn:SetButtonState(isSelect and CS.UiButtonState.Select or CS.UiButtonState.Normal) end end --================== --隐藏所有PanelScene --================== function XUiDormMain:HideAllPanelScene() for _, scene in pairs(self.PanelSceneGroup) do scene.gameObject:SetActiveEx(false) end end --================== --打开对应序号的PanelScene --@param index:页签序号 --================== function XUiDormMain:OpenOnePanelScene(index) if not index then index = self.SceneId end if not index then index = XDormConfig.SenceType.One end for i, scene in pairs(self.PanelSceneGroup) do local isSelect = i == index scene.gameObject:SetActiveEx(isSelect) end end --================== --初始化左侧页签及PanelScene状态 --================== function XUiDormMain:InitSpcaeBtn() if self.IsFirstAnimation then return end self:OpenOnePanelScene() self:SelectOneBtnTab() end