UGCProjects/ProjectTemp_T/Script/UI/WB_SelectLevel.lua

115 lines
3.2 KiB
Lua
Raw Normal View History

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