GameVsJam/3d Prototyp/Assets/Scripts/DeveloperNeeds.cs

76 lines
2.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeveloperNeeds : MonoBehaviour
{
[SerializeField] List<GameObject> Needs = new List<GameObject>();
private Text2Speech _text2speech;
private AudioSource _audioSource;
// Start is called before the first frame update
void Start()
{
_text2speech = GetComponent<Text2Speech>();
_audioSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
}
// TODO: Enums statt strings verwenden
// TODO: Multiple Needs möglich übereinander anzeigen?
public GameObject SpawnCoffeeNeed() => spawnNeed("coffee");
public GameObject SpawnMateNeed() => spawnNeed("mate");
public GameObject SpawnToiletNeed() => spawnNeed("toilet");
public GameObject SpawnHungerNeed() => spawnNeed("hunger");
public GameObject SpawnMoneyNeed() => spawnNeed("money");
public GameObject spawnNeed(string needName)
{
GameObject spawnedNeed = null;
string context = "";
switch (needName)
{
case "coffee":
spawnedNeed = Instantiate(Needs[0], new Vector3(0.0f, 2f, 0.0f), Needs[0].transform.rotation);
context = "The NPC wants coffee";
break;
case "mate":
spawnedNeed = Instantiate(Needs[1], new Vector3(0.0f, 2f, 0.0f), Needs[0].transform.rotation);
context = "The NPC wants a Blub Mate (Yes, its a drink called Blub Mate)";
break;
case "toilet":
spawnedNeed = Instantiate(Needs[2], new Vector3(0.0f, 2f, 0.0f), Needs[0].transform.rotation);
context = "The NPC wants to go to the toilet, toilet is clogged and dirty";
break;
case "money":
spawnedNeed = Instantiate(Needs[3], new Vector3(0.0f, 2f, 0.0f), Needs[0].transform.rotation);
context = "The NPC wants a raise, The NPC needs more money";
break;
default:
Debug.LogError($"Unbekannter need \"{needName}\"");
break;
}
if (spawnedNeed != null)
{
spawnedNeed.transform.SetParent(transform, false);
spawnedNeed.transform.localScale = new Vector3(0.4f, 0.01f, 0.4f);
if (!_audioSource.isPlaying)
{
_text2speech.Generate(context);
}
return spawnedNeed;
}
return null;
}
}