---@class WB_SelectLevel_C:UUserWidget ---@field Button_Back UButton ---@field Button_Select UButton ---@field HorizontalBox_HadSelected UHorizontalBox ---@field NewButton_Settings UNewButton ---@field ScrollBox_Type UScrollBox ---@field TextBlock_CountDown UTextBlock ---@field TextBlock_Tip UTextBlock ---@field TextBlock_Type UTextBlock ---@field TextBlock_WaitTime UTextBlock --Edit Below-- ---@type WB_SelectLevel_C local WB_SelectLevel = { bInitDoOnce = false; }; -- 选择的 Level Index WB_SelectLevel.SelectLevel = -1; -- 这个是选择的 WB_SelectLevel.SelectWidgetItem = nil; -- 这个是电机的 WB_SelectLevel.ClickWidgetItem = nil; function WB_SelectLevel:Construct() -- 初始化 UGCEventSystem.AddListener(EventTypes.UpdateWaitingTime, self.UpdateTime, self) -- 获取数量 for i = 1, self.ScrollBox_Type:GetChildrenCount() do local Item = self.ScrollBox_Type:GetChildAt(i - 1); Item:SetVisibility(ESlateVisibility.Collapsed); end local CurrIndex = 0; for i, v in pairs(LevelTable.LevelInfo) do local Item = self.ScrollBox_Type:GetChildAt(CurrIndex); Item:Init(i, self, self.ClickItemCallback); Item:SetVisibility(ESlateVisibility.SelfHitTestInvisible); CurrIndex = CurrIndex + 1; end self.NewButton_Settings.OnClicked:Add(self.OpenSetting, self) UITool.BindButtonClicked(self.Button_Select, self.ClickSelect, self) end function WB_SelectLevel:OnShowPanel() end ---@param InItem WB_SelectLevel_Item_C ---@param InIndex ELevelType function WB_SelectLevel:ClickItemCallback(InItem, InIndex) if self.ClickWidgetItem ~= nil then self.ClickWidgetItem:SelectSelf(false, self.SelectLevel); end self.ClickWidgetItem = InItem; self.ClickWidgetItem:SelectSelf(true, self.SelectLevel); -- 遍历所有子项 end -- function WB_SelectLevel:Tick(MyGeometry, InDeltaTime) -- end -- function WB_SelectLevel:Destruct() -- end WB_SelectLevel.bHadSelect = false; --- 选择对应的 Level function WB_SelectLevel:ClickSelect() if self.ClickWidgetItem == nil then return end self.SelectLevel = self.ClickWidgetItem:GetLevelIndex() if self.SelectWidgetItem ~= nil then self.SelectWidgetItem:SelectSelf(false, self.SelectLevel); end self.SelectWidgetItem = self.ClickWidgetItem; self.ClickWidgetItem:SelectSelf(true, self.SelectLevel); SoundSystem.PlaySound(SoundSystem.ESound.OK) self.bHadSelect = true; end ---@param InTime float 倒计时时间 function WB_SelectLevel:UpdateTime(InTime) local Time = math.clamp(math.floor(InTime - DefaultSettings.SelectSoldierTime), 0, 100) self.TextBlock_CountDown:SetText(tostring(Time)); self.TextBlock_WaitTime:SetText(tostring(Time)); if InTime <= DefaultSettings.SelectSoldierTime then if DefaultSettings.EnableLevels then WidgetManager:ClosePanel(WidgetConfig.EUIType.SelectMap); end UGCEventSystem.RemoveListener(EventTypes.UpdateWaitingTime, self.UpdateTime, self); end end function WB_SelectLevel:OpenSetting() local MainControlPanel = GameBusinessManager.GetWidgetFromName(ingame, "MainControlPanelTochButton_C"); if MainControlPanel then MainControlPanel.MainControlBaseUI:OpenSettingPanel(); if self.DoOnceOpenSettingPanel then MainControlPanel.MainControlBaseUI:OpenSettingPanel(); else self.DoOnceOpenSettingPanel = true end end end return WB_SelectLevel;