BITFALL/Assets/Artists/Scripts/Entities/Skins/EntityPropsDisplay.cs

77 lines
2.4 KiB
C#

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