Multiple needs handling and zombie shit
This commit is contained in:
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user