using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using BITKit; using BITKit.Entities; using BITKit.Mod; using BITKit.UX; using Cysharp.Threading.Tasks; using Net.BITKit.Localization; using Net.Project.B.Inventory; using Net.Project.B.Item; using Net.Project.B.UX; using Project.B.Entities; using Project.B.Item; using Project.B.Player; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Composites; using UnityEngine.UIElements; namespace Project.B.UX { public static class UXInventoryUtils { [RuntimeInitializeOnLoadMethod] private static void Reload() { _scriptableItems.Clear(); } private static readonly Dictionary _scriptableItems = new(); public static async UniTask GetScriptableItem(int scriptableId) { if (_scriptableItems.Count is 0) { BITApp.ServiceProvider.QueryComponents(out IEntitiesService entitiesService); foreach (var scriptableItem in entitiesService.QueryComponents().ToArray()) { _scriptableItems[scriptableItem.Id] = scriptableItem; } } if (_scriptableItems.TryGetValue(scriptableId, out var item)) { return item; } return await ModService.LoadAsset( DictionaryReferenceScriptableObject.Dictionary[scriptableId] ); } public static async UniTask Setup(VisualElement visualElement, IRuntimeItem item) { if(visualElement is null)return null; var scriptableItem = item is null ? null : await GetScriptableItem(item.ScriptableId); if (visualElement.Get