revival/game/Assets/Scripts/Artefacts/ArtefactSystem.cs

56 lines
1.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Ktyl.Util;
using UnityEngine;
[CreateAssetMenu(menuName = "KernelPanic/Artefacts/Artefact System")]
public class ArtefactSystem : ScriptableObject
{
[SerializeField] private DialogueSystem _dialogue;
[SerializeField] private ArtefactInventory _inventory;
[SerializeField] private SerialInt _nearbyArtefactId;
private readonly List<Artefact> _artefacts = new List<Artefact>();
public Artefact GetNearbyArtefact()
{
return _nearbyArtefactId == -1 ? null : GetArtefact(_nearbyArtefactId);
}
private Artefact GetArtefact(int id)
{
for (int i = 0; i < _artefacts.Count; i++)
{
if (_artefacts[i].artefactID == id) return _artefacts[i];
}
Debug.LogError($"no registered artefact with id {id}");
return null;
}
public void RegisterArtefact(Artefact artefact)
{
if (_artefacts.Contains(artefact))
{
Debug.LogError($"{artefact} already registered", this);
return;
}
_artefacts.Add(artefact);
}
public void FindArtefact(Artefact artefact)
{
_inventory.addA(artefact);
// _dialogue.PlayLine(artefact.dialogueKey);
}
private void OnDisable()
{
_artefacts.Clear();
}
}