98 lines
2.7 KiB
Lua
Raw Normal View History

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