---@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 ---@field TextBlock_Name UTextBlock ---@field Setting_PickUp_BP USetting_Pickup_UIBP_C --Edit Below-- local WB_Item_Slide = { bInitDoOnce = false; Interval = 256.; MinVal = 0; MaxVal = 255 } function WB_Item_Slide:Construct() 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 end -- function WB_Item_Slide:Tick(MyGeometry, InDeltaTime) -- end -- function WB_Item_Slide:Destruct() -- end return WB_Item_Slide