using BITKit; using BITKit.Entities; using System.Collections.Generic; using UnityEngine; using AYellowpaper.SerializedCollections; namespace BITFALL { public class EntityPropsDisplay : EntityComponent { [SerializeField] private SerializedDictionary equipments = new(); [SerializeField] private SerializedDictionary unEquipDictionary = new(); [SerializeField] private SerializedDictionary equipDictionary = new(); public override void OnStart() { var playerEquipContainer = entity.Get(); var equipSelector = entity.Get(); playerEquipContainer.OnEquip += OnEquip; playerEquipContainer.OnDeEquip += OnDeEquip; equipSelector.OnEquip += OnEquip; equipSelector.OnDeEquip += OnDeEquip; equipSelector.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) { } } }