Multiple needs handling and zombie shit

This commit is contained in:
2024-04-06 18:30:26 +02:00
parent 12b856e6e1
commit bddedc2bf7
17 changed files with 1698 additions and 23 deletions

View File

@ -123,6 +123,8 @@ public class Developer : MonoBehaviour
[SerializeField, ShowOnly]
private float _talkTimer;
private List<GameObject> _needList = new List<GameObject>();
void Start()
{
_developerNeeds = gameObject.GetComponent<DeveloperNeeds>();
@ -179,6 +181,8 @@ public class Developer : MonoBehaviour
if (_caffeineNeed != null && _caffeineLevel > GameManager.Instance.NeedNotificationThreshold)
{
UpdateNeedPositions(_caffeineNeed);
_needList.Remove(_caffeineNeed);
NeedFullfilled(_caffeineNeed);
_caffeineNeed = null;
}
@ -209,6 +213,8 @@ public class Developer : MonoBehaviour
if (_hungerNeed != null && _hungerLevel > GameManager.Instance.NeedNotificationThreshold)
{
UpdateNeedPositions(_hungerNeed);
_needList.Remove(_hungerNeed);
NeedFullfilled(_hungerNeed);
_hungerNeed = null;
}
@ -239,6 +245,8 @@ public class Developer : MonoBehaviour
if (_toiletNeed != null && _urgeToUrinateLevel > GameManager.Instance.NeedNotificationThreshold)
{
UpdateNeedPositions(_toiletNeed);
_needList.Remove(_toiletNeed);
NeedFullfilled(_toiletNeed);
_toiletNeed = null;
}
@ -271,20 +279,23 @@ public class Developer : MonoBehaviour
if (Random.Range(0.0f, 1.0f) > 0.5f)
{
_caffeineNeed = _developerNeeds.SpawnMateNeed();
_caffeineNeed = _developerNeeds.SpawnMateNeed(_needList.Count);
_wantedDrink = WantedConsumable.Mate;
_needList.Add(_caffeineNeed);
}
else
{
_caffeineNeed = _developerNeeds.SpawnCoffeeNeed();
_caffeineNeed = _developerNeeds.SpawnCoffeeNeed(_needList.Count);
_wantedDrink = WantedConsumable.Coffee;
_needList.Add(_caffeineNeed);
}
}
if (_hungerLevel < GameManager.Instance.NeedNotificationThreshold && _hungerNeed == null)
{
_hungerNeed = _developerNeeds.SpawnHungerNeed();
_hungerNeed = _developerNeeds.SpawnHungerNeed(_needList.Count);
_wantedFood = WantedConsumable.Pizza;
_needList.Add(_hungerNeed);
}
if (_urgeToUrinateLevel < GameManager.Instance.NeedNotificationThreshold && _toiletNeed == null)
@ -293,7 +304,8 @@ public class Developer : MonoBehaviour
Debug.Log("Ich muss aufs Klo!");
_toiletNeed = _developerNeeds.SpawnToiletNeed();
_toiletNeed = _developerNeeds.SpawnToiletNeed(_needList.Count);
_needList.Add(_toiletNeed);
}
if (_hungerLevel <= 0.0)
@ -302,6 +314,23 @@ public class Developer : MonoBehaviour
}
}
private void UpdateNeedPositions(GameObject reference)
{
int referenceIndex = _needList.IndexOf(reference);
if (referenceIndex == -1)
{
Debug.LogError("Reference GameObject not in List.");
return;
}
for (int i = referenceIndex + 1; i < _needList.Count; i++)
{
GameObject currentItem = _needList[i];
currentItem.GetComponent<SpinningSpinner>().originalY -= 0.5f;
}
}
private void NeedFullfilled(GameObject needObject)
{
Instantiate(GameManager.Instance.NeedFullfilledParticleEffect, needObject.transform.position, needObject.transform.rotation);