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

59 lines
1.5 KiB
C#
Raw Normal View History

using System;
2021-02-23 14:05:42 +01:00
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Ktyl.Util;
2021-02-23 14:05:42 +01:00
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);
}
2021-02-23 14:05:42 +01:00
public void FindArtefact(Artefact artefact)
{
_inventory.addA(artefact);
2021-04-16 20:30:49 +02:00
if (artefact.OnFound)
{
artefact.OnFound.Raise();
}
2021-02-23 14:05:42 +01:00
}
private void OnDisable()
{
_artefacts.Clear();
}
2021-02-23 14:05:42 +01:00
}