Net.Like.Xue.Tokyo/Packages-Local/Com.Project.B.Unity/Item/WorldItemPlaceholder.cs

63 lines
1.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO.Ports;
using BITKit;
using BITKit.Entities;
using BITKit.WorldNode;
using Microsoft.Extensions.DependencyInjection;
using Net.Project.B.WorldNode;
using Project.B.Item;
using UnityEngine;
namespace Net.Project.B.Item
{
public class WorldItemPlaceholder : MonoBehaviour
{
[SerializeField] private ScriptableItem scriptableItem;
[SerializeField] private SpriteRenderer spriteRenderer;
[BIT]
public void Rebuild()
{
if (!scriptableItem) return;
if (spriteRenderer)
{
spriteRenderer.sprite = scriptableItem.Icon;
spriteRenderer.material = spriteRenderer.sharedMaterial;
}
gameObject.name = scriptableItem.Name;
}
private void Start()
{
var entitiesService = BITApp.ServiceProvider.GetRequiredService<IEntitiesService>();
if (entitiesService.Entities.TryGetValue(gameObject.GetInstanceID(), out var entity) is false)
{
Debug.LogWarning("Not Registered",transform);
return;
}
var node = new UnityItemNode()
{
ItemPath = scriptableItem.name,
};
var info = new WorldInfoNode()
{
Name = scriptableItem.Name,
Description = scriptableItem.Description,
};
entity.ServiceCollection.AddSingleton(node);
entity.ServiceCollection.AddSingleton(info);
Destroy(this);
}
}
}