using System; using System.Linq.Expressions; using TMPro; using UnityEngine; using UnityEngine.Localization.Components; using UnityEngine.UI; namespace DDD { public static class BindingHelper { public static void BindText(BindingContext context, TextMeshProUGUI text, string propertyPath, IValueConverter converter = null) { var target = new TextBindingTarget(text, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindLocalizedStringEvent(BindingContext context, LocalizeStringEvent localizeEvent, string propertyPath, IValueConverter converter = null) { var target = new LocalizeStringEventBindingTarget(localizeEvent, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindImage(BindingContext context, Image image, string propertyPath, IValueConverter converter = null) { var target = new ImageBindingTarget(image, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindImageFilled(BindingContext context, Image image, string propertyPath, IValueConverter converter = null) { var target = new ImageFilledBindingTarget(image, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindActive(BindingContext context, GameObject gameObject, string propertyPath, IValueConverter converter = null) { var target = new ActiveBindingTarget(gameObject, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindSlider(BindingContext context, Slider slider, string propertyPath, IValueConverter converter = null) { var target = new SliderBindingTarget(slider, propertyPath); context?.Bind(propertyPath, target, converter); } public static void BindText(BindingContext ctx, TextMeshProUGUI text, Expression> prop, IValueConverter conv = null) => BindText(ctx, text, BindingPath.For(prop), conv); public static void BindLocalizedStringEvent(BindingContext ctx, LocalizeStringEvent loc, Expression> prop, IValueConverter conv = null) => BindLocalizedStringEvent(ctx, loc, BindingPath.For(prop), conv); public static void BindImage(BindingContext ctx, Image img, Expression> prop, IValueConverter conv = null) => BindImage(ctx, img, BindingPath.For(prop), conv); public static void BindImageFilled(BindingContext ctx, Image img, Expression> prop, IValueConverter conv = null) => BindImageFilled(ctx, img, BindingPath.For(prop), conv); public static void BindActive(BindingContext ctx, GameObject go, Expression> prop, IValueConverter conv = null) => BindActive(ctx, go, BindingPath.For(prop), conv); public static void BindSlider(BindingContext ctx, Slider slider, Expression> prop, IValueConverter conv = null) => BindSlider(ctx, slider, BindingPath.For(prop), conv); public static void BindImage(BindingContext ctx, Image img, Expression> prop, IValueConverter conv = null) => BindImage(ctx, img, BindingPath.For(prop), conv); public static void BindActive(BindingContext ctx, GameObject go, Expression> prop, IValueConverter conv = null) => BindActive(ctx, go, BindingPath.For(prop), conv); public static void BindLocalizedStringEvent(BindingContext ctx, LocalizeStringEvent loc, Expression> prop, IValueConverter conv = null) => BindLocalizedStringEvent(ctx, loc, BindingPath.For(prop), conv); } }