2025-01-04 23:00:19 +08:00

112 lines
3.5 KiB
Lua

---@class WB_MiniGameItem_C:UUserWidget
---@field Button_Select UButton
---@field Image_Map UImage
---@field Image_PerfectCompletion UImage
---@field Overlay_Defaut UOverlay
---@field Overlay_IsNew UOverlay
---@field Overlay_IsSelect UOverlay
---@field Overlay_IsVote UOverlay
---@field Overlay_ShowName UOverlay
---@field TextBlock_MapName UTextBlock
---@field TextBlock_SpecialModeName UTextBlock
---@field WidgetSwitcher_VoteState UWidgetSwitcher
--Edit Below--
local WB_MiniGameItem = {
bInitDoOnce = false;
MiniGameType = nil;
SelectCallBackFunc = nil;
SelectCallBackObj = nil;
IsSelected = false;
};
--[==[ Construct
function WB_MiniGameItem:Construct()
end
-- Construct ]==]
-- function WB_MiniGameItem:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_MiniGameItem:Destruct()
-- end
function WB_MiniGameItem:Init(InMiniGameType, InSelectCallBackFunc, InSelectCallBackObj)
self.MiniGameType = InMiniGameType
self.SelectCallBackFunc = InSelectCallBackFunc
self.SelectCallBackObj = InSelectCallBackObj
WidgetLibrary.BindButtonClicked(self.Button_Select, self.ClickSelect, self)
-- UGCEventSystem.AddListener(EventEnum.SelectMiniGameCallBack, self.SelectMiniGameCallBack, self)
UGCEventSystem.AddListener(EventEnum.UpdatePlayerSelectMiniMapType, self.UpdatePlayerSelectMiniMapType, self)
local MiniGameInfo = MiniGameConfig.MiniGameInfo[InMiniGameType]
if MiniGameInfo then
self.TextBlock_MapName:SetText(MiniGameInfo.MiniGameName)
local SelectTex = UGCSystemLibrary.LoadAsset(MiniGameInfo.SelectImage, true)
if SelectTex then
self.Image_Map:SetBrushFromTexture(SelectTex)
end
if MiniGameInfo.IsNew then
self.Overlay_IsNew:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
end
end
self:SelectMiniGameCallBack(UGCGameSystem.GameState:GetPlayerSelectMiniGameTypes())
end
function WB_MiniGameItem:ClickSelect()
if self.SelectCallBackFunc then
if self.SelectCallBackObj then
self.SelectCallBackFunc(self.SelectCallBackObj, self.MiniGameType)
else
self.SelectCallBackFunc(self.MiniGameType)
end
end
end
function WB_MiniGameItem:SelectType(InMiniGameType)
if InMiniGameType == self.MiniGameType then
self.Overlay_ShowName:SetVisibility(ESlateVisibility.HitTestInvisible)
else
self.Overlay_ShowName:SetVisibility(ESlateVisibility.Collapsed)
end
if not self.IsSelected then
if InMiniGameType == self.MiniGameType then
self.WidgetSwitcher_VoteState:SetActiveWidgetIndex(1)
else
self.WidgetSwitcher_VoteState:SetActiveWidgetIndex(0)
end
end
end
function WB_MiniGameItem:SelectMiniGameCallBack(IsSucceed, InMiniGameType)
if IsSucceed and InMiniGameType == self.MiniGameType then
self.IsSelected = true
self.WidgetSwitcher_VoteState:SetActiveWidgetIndex(2)
end
end
function WB_MiniGameItem:UpdatePlayerSelectMiniMapType(PlayerSelectMiniGameTypes)
if table.hasValue(PlayerSelectMiniGameTypes, self.MiniGameType) then
self.IsSelected = true
self.WidgetSwitcher_VoteState:SetActiveWidgetIndex(2)
end
end
function WB_MiniGameItem:GetMiniGameType()
return self.MiniGameType
end
function WB_MiniGameItem:UpdateStarCount(InStartCount)
if InStartCount and InStartCount >= 3 then
self.Image_PerfectCompletion:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self.Image_PerfectCompletion:SetVisibility(ESlateVisibility.Collapsed)
end
end
return WB_MiniGameItem;