2023-05-30 20:40:18 +02:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using UnityEngine;
|
|
|
|
|
2023-06-19 01:51:08 +02:00
|
|
|
/**
|
|
|
|
* Einfaches Inventory Script v1.1
|
|
|
|
* Ein Item muss den Tag 'Item' haben um aufgehoben zu werden
|
|
|
|
* Schlüssel müssen 'Key' im Namen haben
|
|
|
|
* Türen welche mit Schlüssel geöffnet werden sollen brauchen den Tag 'Openable'
|
|
|
|
*/
|
|
|
|
|
2023-05-31 10:50:32 +02:00
|
|
|
public class InventoryBasic : MonoBehaviour
|
2023-05-30 20:40:18 +02:00
|
|
|
{
|
2023-06-12 16:48:23 +02:00
|
|
|
private LinkedList<GameObject> items;
|
2023-06-19 01:51:08 +02:00
|
|
|
|
2023-05-30 20:40:18 +02:00
|
|
|
// Start is called before the first frame update
|
|
|
|
void Start()
|
|
|
|
{
|
2023-06-12 16:48:23 +02:00
|
|
|
items = new LinkedList<GameObject>();
|
2023-05-30 20:40:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Update is called once per frame
|
|
|
|
void Update()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnCollisionEnter2D(Collision2D other)
|
|
|
|
{
|
|
|
|
switch (other.gameObject.tag) // switch-case hier damit in zukunft einfach fälle hinzugefügt werden können
|
|
|
|
{
|
|
|
|
case "Item":
|
|
|
|
other.gameObject.SetActive(false);
|
2023-06-12 16:48:23 +02:00
|
|
|
items.AddFirst(other.gameObject);
|
2023-05-30 20:40:18 +02:00
|
|
|
Debug.Log("Pickup: Take " + other.gameObject.name);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "Openable":
|
|
|
|
// Entfernt den ersten "Key" welcher unter den Items gefunden wird, falls es einen gibt
|
2023-06-19 01:51:08 +02:00
|
|
|
if ( items.Remove((from item in items where item.name.Contains("Key") select item).First()) )
|
2023-05-30 20:40:18 +02:00
|
|
|
{ // falls ein "Key" gefunden wurde, wird dieser genutzt
|
|
|
|
other.gameObject.SetActive(false);
|
|
|
|
Debug.Log("Pickup: Use Key");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|