Entwickler haben also Bedürfnisse?

This commit is contained in:
Simon Lübeß
2024-04-05 19:24:26 +02:00
parent 17dbb6a356
commit 1bae35b3be
9 changed files with 14720 additions and 15 deletions

View File

@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
@ -7,7 +8,9 @@ using Utility;
public partial class GameManager : MonoBehaviourSingleton<GameManager>
{
[SerializeField] private Difficulty _difficulty = Difficulty.Medium;
[SerializeField] private Difficulty _difficulty = Difficulty.Medium;
public GameObject NeedFullfilledParticleEffect;
[SerializeField]
private double _totalGameDurationSeconds;
@ -18,14 +21,25 @@ public partial class GameManager : MonoBehaviourSingleton<GameManager>
[SerializeField, ShowOnly]
private double _currentEfficiency = 0.0;
[SerializeField]
private double _generalNeedDrainScaling = 0.001;
[SerializeField]
private List<Developer> _developers = new();
[SerializeField]
private MultiFalsableBool _gameRunning = new(false);
[SerializeField, Tooltip("Der Schwellwert am dem eine Benachrichtigung für das Bedürfnis ausgelöst wird.")]
private double _needNotificationThreshold = 0.25;
[SerializeField]
private DifficultySettings _difficultySettings;
public Difficulty Difficulty => _difficulty;
public double NeedNotificationThreshold => _needNotificationThreshold;
/// <summary>
/// Wie weit das Spiel bereits fortgeschritten ist.
/// </summary>
@ -57,7 +71,9 @@ public partial class GameManager : MonoBehaviourSingleton<GameManager>
{
TimeManager.Instance.Init();
_totalGameDurationSeconds = TimeManager.Instance.CalculateActualDeveloperTime(_difficulty, 4);
_difficultySettings = _difficulty.GetSettings();
_totalGameDurationSeconds = TimeManager.Instance.CalculateActualDeveloperTime(_difficultySettings, 4);
_remainingGameDurationSeconds = _totalGameDurationSeconds;
@ -131,8 +147,13 @@ public partial class GameManager : MonoBehaviourSingleton<GameManager>
{
double developerEfficiency = 0.0f;
double caffeineDrain = _generalNeedDrainScaling * Math.Pow(2, _difficultySettings.CaffeineDrainScaling * GameProgress);
double hungerDrain = _generalNeedDrainScaling * Math.Pow(2, _difficultySettings.HungerDrainScaling * GameProgress);
double urinationDrain = _generalNeedDrainScaling * Math.Pow(2, _difficultySettings.UrinationDrainScaling * GameProgress);
foreach (Developer developer in _developers)
{
developer.UpdateStats(caffeineDrain, hungerDrain, urinationDrain);
developer.UpdateEfficiency();
developerEfficiency += developer.CurrentEfficiency;
}