112 lines
3.5 KiB
Lua
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;
|