---@class WB_PlaceGameMenu_C:UUserWidget ---@field Button_Play UButton ---@field Button_PreviewMap UButton ---@field Button_Tasks UButton ---@field Button_ToPlaceMode UNewButton ---@field DefaultMapItem UWB_SavedMap_C ---@field NoneMapItem UWB_SavedMap_C ---@field TextBlock_MapName UTextBlock ---@field VerticalBox_SavedMap UVerticalBox ---@field WidgetSwitcher_Play UWidgetSwitcher --Edit Below-- local WB_PlaceGameMenu = { bInitDoOnce = false; bCanReqesetMatch = true; bIsShow = false; DoOnceOpenSettingPanel = false; }; function WB_PlaceGameMenu:Construct() UGCLogSystem.Log("[WB_PlaceGameMenu_Construct]") WidgetLibrary.BindButtonClicked(self.Button_ToPlaceMode, self.ToPlaceMode, self) WidgetLibrary.BindButtonClicked(self.Button_Play, self.ReqesetMatch, self) WidgetLibrary.BindButtonClicked(self.Button_PreviewMap, self.PreviewMap, self) --WidgetLibrary.BindButtonClicked(self.NewButton_Setting, self.ShowSettingPanel, self) WidgetLibrary.ButtonOnClickShowPanel(self.Button_Tasks, WidgetConfig.EUIType.Task) UGCEventSystem.AddListener(ArchiveDataConfig.GetParamNotifyEvent(ArchiveDataConfig.EArchiveType.SavedMap), self.UpdateSavedMap, self) --UGCEventSystem.AddListener(EventEnum.UpdatePlayMap, self.UpdatePlayMap, self) UGCEventSystem.AddListener(ArchiveDataConfig.GetParamNotifyEvent(ArchiveDataConfig.EArchiveType.SelectMapIndex), self.UpdatePlayMap, self) --- 显示二次匹配按键 UGCMultiMode.SetModeChooseUIVisible(true) self.Button_Play:SetVisibility(ESlateVisibility.Collapsed) self:InitSavedMapBtn() self:UpdateSavedMap() self:UpdatePlayMap() end function WB_PlaceGameMenu:OnShowPanel() self.bIsShow = true UGCMultiMode.SetModeChooseButtonVisible(false) WidgetConfig.SetDefaultUIMode(WidgetConfig.EDefaultUIMode.Menu) end function WB_PlaceGameMenu:OnClosePanel() self.bIsShow = false WidgetConfig.RemoveDefaultUIMode(WidgetConfig.EDefaultUIMode.Menu) end function WB_PlaceGameMenu:CheckModeChooseUIVisible() UGCMultiMode.SetModeChooseUIVisible(self.bIsShow) end function WB_PlaceGameMenu:Tick(MyGeometry, InDeltaTime) UGCMultiMode.SetModeState(PlacementModeConfig.PlaceModeID, false) end function WB_PlaceGameMenu:ToPlaceMode() -- 发送信息进入放置模式 UGCSendRPCSystem.ActorRPCNotify(nil, UGCGameSystem.GameState, "ShowSimplePlaceModeUI", WidgetConfig.EUIType.PlaceMode) end -- function WB_PlaceGameMenu:Destruct() -- end function WB_PlaceGameMenu:InitSavedMapBtn() self.NoneMapItem:Init(self.ClickNoneTemplate, self, nil, "空模板") self.NoneMapItem:SetIsDefaultSavedMap(true) self.DefaultMapItem:Init(self.ClickDefaultTemplate, self, nil, "默认模板") self.DefaultMapItem:SetIsDefaultSavedMap(true) for i = 0, self.VerticalBox_SavedMap:GetChildrenCount() - 1 do local Item = self.VerticalBox_SavedMap:GetChildAt(i) Item:Init(self.ClickSavedMapTemplate, self, i + 1, "Nil") end end function WB_PlaceGameMenu:ClickNoneTemplate() WidgetManager:ShowPanel(WidgetConfig.EUIType.MapOperate, false, PlacementModeConfig.LoadPlaceItemsType.None) end function WB_PlaceGameMenu:ClickDefaultTemplate() WidgetManager:ShowPanel(WidgetConfig.EUIType.MapOperate, false, PlacementModeConfig.LoadPlaceItemsType.Default) end function WB_PlaceGameMenu:ClickSavedMapTemplate(Index, CanUse) WidgetManager:ShowPanel(WidgetConfig.EUIType.MapOperate, false, PlacementModeConfig.LoadPlaceItemsType.SavedMap, Index, CanUse) end function WB_PlaceGameMenu:ReqesetMatch() if self.bCanReqesetMatch then self.bCanReqesetMatch = false self.WidgetSwitcher_Play:SetActiveWidgetIndex(1) UGCMultiMode.ReqesetMatch(PlacementModeConfig.PlayModeID, self.ReqesetMatchCallBack, self) end end function WB_PlaceGameMenu:ReqesetMatchCallBack(...) self.bCanReqesetMatch = true self.WidgetSwitcher_Play:SetActiveWidgetIndex(0) UGCLogSystem.LogTree("[WB_PlaceGameMenu_ReqesetMatchCallBack]", table.pack(...)) end function WB_PlaceGameMenu:UpdateSavedMap() local SimplePlayerSavedMapList = ArchiveDataConfig.GetPlayerArchiveDataFromType(UGCSystemLibrary.GetLocalPlayerKey(), ArchiveDataConfig.EArchiveType.SavedMap) if SimplePlayerSavedMapList == nil then SimplePlayerSavedMapList = {} end for i = 0, self.VerticalBox_SavedMap:GetChildrenCount() - 1 do local Item = self.VerticalBox_SavedMap:GetChildAt(i) local MapInfo = SimplePlayerSavedMapList[i + 1] if MapInfo then Item:ResetName(MapInfo.MapName) Item:ResetCode(MapInfo.MapCode) Item:SetVisibility(ESlateVisibility.SelfHitTestInvisible) else Item:SetVisibility(ESlateVisibility.Collapsed) end end end function WB_PlaceGameMenu:UpdatePlayMap() local SelectMapIndex = ArchiveDataConfig.GetPlayerArchiveDataFromType(UGCSystemLibrary.GetLocalPlayerKey(), ArchiveDataConfig.EArchiveType.SelectMapIndex) self.DefaultMapItem:SetIsSelected(SelectMapIndex == nil) for i = 0, self.VerticalBox_SavedMap:GetChildrenCount() - 1 do local Item = self.VerticalBox_SavedMap:GetChildAt(i) Item:SetIsSelected(SelectMapIndex == i + 1) end end function WB_PlaceGameMenu:PreviewMap() UGCSendRPCSystem.ActorRPCNotify(nil, UGCGameSystem.GameState, "ShowSimplePlaceModeUI", WidgetConfig.EUIType.PreviewMap) end return WB_PlaceGameMenu;