115 lines
3.2 KiB
Lua
115 lines
3.2 KiB
Lua
---@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; |