using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using BITFALL.Player.Survival; using BITKit.Entities; using BITKit.Entities.Player; using BITKit.UX; using Cysharp.Threading.Tasks; using RotaryHeart.Lib.SerializableDictionary; using UnityEngine; using UnityEngine.TextCore.Text; using UnityEngine.UIElements; namespace BITFALL.UX { public class UXSurvival : MonoBehaviour { [SerializeReference,SubclassSelector] private IPlayerService playerService; [SerializeField] private UXBuilder survivalEventBuilder; private readonly ConcurrentDictionary spawnedSurvivalEvents = new(); private IPlayerSurvivalService _playerSurvival; private void Start() { playerService.OnPlayerInitialized += OnPlayerInitialized; } private async void OnPlayerInitialized(Entity obj) { await UniTask.Yield(); _playerSurvival = obj.Get(); survivalEventBuilder.Clear(); spawnedSurvivalEvents.Clear(); foreach (var x in _playerSurvival.Elements) { spawnedSurvivalEvents.GetOrAdd(x, Create); } } private UXContainer Create(IPlayerSurvivalElement arg) { var container = survivalEventBuilder.BuildAsContainer(); container.Get