2025-02-02 16:26:56 +08:00
|
|
|
---@class WB_Item_Slide_C:UUserWidget
|
|
|
|
---@field Button_SlideMode_add UButton
|
|
|
|
---@field Button_SlideMode_minus UButton
|
|
|
|
---@field CanvasPanel_11 UCanvasPanel
|
|
|
|
---@field ProgressBar_SlideMode UProgressBar
|
|
|
|
---@field SlideMode_Value UTextBlock
|
|
|
|
---@field Slider_SlideMode USlider
|
2025-02-03 23:08:27 +08:00
|
|
|
---@field TextBlock_Name UTextBlock
|
2025-02-02 16:26:56 +08:00
|
|
|
---@field Setting_PickUp_BP USetting_Pickup_UIBP_C
|
|
|
|
--Edit Below--
|
2025-02-03 23:08:27 +08:00
|
|
|
local WB_Item_Slide = {
|
|
|
|
bInitDoOnce = false;
|
|
|
|
Interval = 256.;
|
|
|
|
MinVal = 0;
|
|
|
|
MaxVal = 255
|
|
|
|
}
|
2025-02-02 16:26:56 +08:00
|
|
|
|
|
|
|
function WB_Item_Slide:Construct()
|
2025-02-03 23:08:27 +08:00
|
|
|
self:LuaInit()
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function WB_Item_Slide:LuaInit()
|
|
|
|
if self.bInitDoOnce then return ; end self.bInitDoOnce = true
|
|
|
|
WidgetLibrary.SliderOnValueChanged(self.Slider_SlideMode, self.UpdateVal, self)
|
|
|
|
WidgetLibrary.BindButtonClicked(self.Button_SlideMode_add, self.AddVal, self)
|
|
|
|
WidgetLibrary.BindButtonClicked(self.Button_SlideMode_minus, self.SubVal, self)
|
|
|
|
self.Slider_SlideMode:SetStepSize(1./self.Interval)
|
|
|
|
self:UpdateVal()
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:SetID(InID)
|
|
|
|
self.ID = InID
|
|
|
|
local NameList = {"R", "G", "B"}
|
|
|
|
local RGBColor = {
|
|
|
|
{R = 1, G = 0, B = 0, A = 1 },
|
|
|
|
{R = 0, G = 1, B = 0, A = 1 },
|
|
|
|
{R = 0, G = 0, B = 1, A = 1 },
|
|
|
|
}
|
|
|
|
if NameList[InID] then
|
|
|
|
self.TextBlock_Name:SetText(NameList[InID])
|
|
|
|
self.ProgressBar_SlideMode:SetFillColorAndOpacity(RGBColor[InID])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function WB_Item_Slide:GetVal()
|
|
|
|
return math.floor(math.clamp(KismetMathLibrary.Round(self.Slider_SlideMode:GetValue() * self.Interval + self.MinVal), self.MinVal, self.MaxVal) + 0.5)
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:GetSlideVal()
|
|
|
|
return self.Slider_SlideMode:GetValue()
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:AddVal()
|
|
|
|
local TargetVal = math.clamp(self.Slider_SlideMode:GetValue() + 1./self.Interval, 0, 1)
|
|
|
|
self.Slider_SlideMode:SetValue(TargetVal)
|
|
|
|
self:UpdateVal()
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:SubVal()
|
|
|
|
local TargetVal = math.clamp(self.Slider_SlideMode:GetValue() - 1./self.Interval, 0, 1)
|
|
|
|
self.Slider_SlideMode:SetValue(TargetVal)
|
|
|
|
self:UpdateVal()
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:UpdateVal()
|
|
|
|
local Val = self:GetVal()
|
|
|
|
local SlideVal = self:GetSlideVal()
|
|
|
|
self.SlideMode_Value:SetText(Val)
|
|
|
|
self.ProgressBar_SlideMode:SetPercent(SlideVal)
|
|
|
|
self:CallBackNotify()
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:CallBackNotify()
|
|
|
|
if self.CallBackFunc then
|
|
|
|
if self.CallBackObj then
|
|
|
|
self.CallBackFunc(self.CallBackObj, self.ID, self:GetSlideVal())
|
|
|
|
else
|
|
|
|
self.CallBackFunc(self.ID, self:GetSlideVal())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function WB_Item_Slide:BindValueCallBack(InFunc, InObj)
|
|
|
|
self.CallBackFunc = InFunc
|
|
|
|
self.CallBackObj = InObj
|
2025-02-02 16:26:56 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
-- function WB_Item_Slide:Tick(MyGeometry, InDeltaTime)
|
|
|
|
|
|
|
|
-- end
|
|
|
|
|
|
|
|
-- function WB_Item_Slide:Destruct()
|
|
|
|
|
|
|
|
-- end
|
|
|
|
|
|
|
|
return WB_Item_Slide
|