using UnrealSharp.Engine; using UI.Level.Controllers; using UnrealSharp.Attributes; using UnrealSharp.BusyRabbit; using UnrealSharp; namespace UI.Level.StateBar; [UClass] public class UBusyWidgetStateBar : UPW_MinimalWidget { protected UBusyWidgetHealthBar? WBP_HealthBar { get { return GetWidget("WBP_HealthBar") as UBusyWidgetHealthBar; } } protected UBusyWidgetSatietyBar? WBP_SatietyBar { get { return GetWidget("WBP_SatietyBar") as UBusyWidgetSatietyBar; } } protected UBusyRoleStateController? UIController; public override void Construct() { base.Construct(); WBP_SatietyBar.SetSatietyConfig(100, 200); UIController = UUIFunctionLibrary.GetUIController(this, "RoleState") as UBusyRoleStateController; InitRoleAttribute(); UIController.OnAttributeChangeDelegate += OnAttributeChanged; } public void InitRoleAttribute() { float CurHealth = UIController.GetControlledAttribute("Health"); float MaxHealth = UIController.GetControlledAttribute("MaxHealth"); float CurSatiety = UIController.GetControlledAttribute("Hunger"); float MaxSatiety = UIController.GetControlledAttribute("MaxHunger"); WBP_HealthBar.SetHpConfig(CurHealth, MaxHealth); WBP_SatietyBar.SetSatietyConfig(CurSatiety, MaxSatiety); } public override void Destruct() { base.Destruct(); UIController.OnAttributeChangeDelegate -= OnAttributeChanged; } [UFunction()] protected void OnAttributeChanged(FName AttributeName, float NewValue, float OldValue) { if (AttributeName == "Hunger") { WBP_SatietyBar.OnSatietyChanged(NewValue); } } }