using BITKit; using BITKit.Entities; using System.Collections.Generic; using UnityEngine; using AYellowpaper.SerializedCollections; using BITFALL.Entities.Equipment; namespace BITFALL { public class EntityPropsDisplay : EntityComponent { [SerializeField] private SerializedDictionary equipments = new(); [SerializeField] private SerializedDictionary unEquipDictionary = new(); [SerializeField] private SerializedDictionary equipDictionary = new(); [Inject] private IEntityEquipment _entityEquipment; [Inject] private IPlayerEquipContainer _playerEquipContainer; [Inject] private IPlayerEquipSelector _playerEquipSelector; public override void OnStart() { _playerEquipContainer.OnEquip += OnEquip; _playerEquipContainer.OnDeEquip += OnDeEquip; _entityEquipment.OnEquip += OnEquip; _entityEquipment.OnDeEquip += OnDeEquip; _playerEquipSelector.OnUpdateEquip += OnUpdateEquip; foreach (var x in equipments) { x.Value.SetActive(false); } foreach (var x in unEquipDictionary) { x.Value.SetActive(false); } foreach (var x in equipDictionary) { x.Value.SetActive(false); } } private void OnDeEquip(IEquipmentSlot slot, IBasicItem item) { var asset = item.GetAssetable(); if (equipments.TryGetValue(asset.AddressablePath, out GameObject prop)) { prop.SetActive(false); } } private void OnEquip(IEquipmentSlot slot, IBasicItem item) { var asset = item.GetAssetable(); if(equipments.TryGetValue(asset.AddressablePath, out GameObject prop)) { prop.SetActive(true); } } private void OnEquip(IBasicItem item) { if(item is null) return; if (equipDictionary.TryGetValue(item.AddressablePath, out var model)) { model.SetActive(true); } } private void OnDeEquip(IBasicItem item) { foreach (var x in equipDictionary) { x.Value.gameObject.SetActive(false); } } private void OnUpdateEquip(IDictionary maps) { } } }