145 lines
5.3 KiB
Lua
Raw Permalink Normal View History

2025-01-04 23:00:19 +08:00
---@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;