using System; using System.Collections; using System.Collections.Generic; using System.Linq; using BITKit; using BITKit.Entities; using BITKit.Mod; using BITKit.UX; using BITKit.WorldNode; using Cysharp.Threading.Tasks; using Microsoft.CodeAnalysis.Operations; using Microsoft.Extensions.Logging; using Net.Project.B.Cosmetics; using UnityEngine; using UnityEngine.UIElements; using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Net.Project.B.UX { [Serializable] public sealed class UXCosmeticsWorldProxy:IWorldNode { } public class UXCosmetics: UIToolkitSubPanel, IUXCosmetics where TRoot: IUXPanel { private readonly IWrapper _cosmeticsCustomize; private readonly ILogger> _logger; private readonly IEntitiesService _entitiesService; [UXBindPath("cosmetics-container")] private VisualElement _cosmeticsContainer; [UXBindPath("cosmetics-dragger",true)] private VisualElement _cosmeticsDragger; private VisualTreeAsset _template; private readonly Dictionary _cosmeticsMap=new (); private readonly Dictionary _cosmeticsElementMap=new (); public UXCosmetics(IServiceProvider serviceProvider, IEntitiesService entitiesService, ILogger> logger, IWrapper cosmeticsCustomize) : base(serviceProvider) { _entitiesService = entitiesService; _logger = logger; _cosmeticsCustomize = cosmeticsCustomize; _cosmeticsCustomize.OnValueChanged += OnCosmeticsChanged; } private void OnCosmeticsChanged(CosmeticsCustomizeComponent arg1, CosmeticsCustomizeComponent arg2) { foreach (var (id,visualElement) in _cosmeticsElementMap) { if (arg1.ComponentIds.Contains(id)) { visualElement.AddToClassList("selected"); } else { visualElement.RemoveFromClassList("selected"); } } } protected override async UniTask OnInitiatedAsync() { await base.OnInitiatedAsync(); _logger.LogInformation("正在获取所有饰品..."); _cosmeticsContainer.Clear(); _cosmeticsContainer.Create