public virtual void Kill() { float survivalLength = Count / Total; AddReward(2.5f * survivalLength * survivalLength); GameManager.RelativeSurvivalLength.Add(survivalLength); if (ReportStats) { StatsRecorder stats = Academy.Instance.StatsRecorder; float citizenCount = GameManager.NumberOfNormalCitizen + GameManager.NumberOfExtrovertedCitizen + GameManager.NumberOfIntrovertedCitizen; stats.Add("Collisions/Collisions", GameManager.CollisionsTotal / citizenCount); stats.Add("Collisions/Symptomatic", GameManager.CollisionsSymptomatic / citizenCount); stats.Add("Collisions/Not Symptomatic", (GameManager.CollisionsTotal - GameManager.CollisionsSymptomatic) / citizenCount); stats.Add("Citizen/Susceptible at end", GameManager.GetCount(HealthStatus.Susceptible)); stats.Add("Citizen/Recovered at end", GameManager.GetCount(HealthStatus.Recovered)); stats.Add("Citizen/Relative survival length", GameManager.RelativeSurvivalLength.Average()); foreach (HealthStatus healthStatus in Enum.GetValues(typeof(HealthStatus))) { stats.Add($"Collisions/{healthStatus}", GameManager.Collisions[healthStatus] / citizenCount); } } EndEpisode(); Destroy(gameObject); }
public void Start() { _gameManager = FindObjectOfType <GameManager>(); _gameManager.OnRefresh += (sender, e) => DrawGraph(_gameManager.GetCount(HealthStatus.Susceptible), _gameManager.GetCount(HealthStatus.Infected), _gameManager.GetCount(HealthStatus.Recovered), _gameManager.HealedCounter); _gameManager.OnRestart += (sender, e) => Reset(); _xAxis = transform.GetChild(0); _yAxis = transform.GetChild(1); _bars = new List <GameObject>(); }