public void AddBonusAdjustments() { ScoreAdjust obstacles = new ScoreAdjust(); obstacles.adjustment = ConfigLoader.competition.getObstacleScore(); obstacles.reason = "Obstacles Bonus"; adjustments.Add(obstacles); ScoreAdjust noise = new ScoreAdjust(); noise.adjustment = ConfigLoader.competition.getNoiseScore(); noise.reason = "Noise Bonus"; adjustments.Add(noise); }
public void ReachWaypoint(int index) { Debug.Log("reached " + index); if (index == waypoints.Count - 1 && ConfigLoader.simulator.CompetitionMode) { StopSim(null); return; } if (index > 0) { ScoreAdjust waypointScore = new ScoreAdjust(); waypointScore.adjustment = 0.8f; waypointScore.reason = "Waypoint " + index + " reached"; adjustments.Add(waypointScore); } }
public void StopSim(string error) { if (State == GameState.QUITTING) { return; // Already quitting } Debug.Log("Job's done!"); State = GameState.QUITTING; float finalTime = Time.time - startTime; if (finalTime > maxTime || currentHealth == 0) { finalTime = maxTime; } float damageTaken = maxHealth - currentHealth; ScoreAdjust damageScore = new ScoreAdjust(); if (currentHealth > 0) { damageScore.adjustment = 1.0f + damageTaken * (9.0f / 100.0f); damageScore.reason = $"{(int)damageTaken}% Damaged"; } else { damageScore.adjustment = 100.0f; damageScore.reason = "Robot Destroyed"; } if (currentHealth < maxHealth) { adjustments.Add(damageScore); } StreamWriter writer = new StreamWriter("results.txt"); if (error != null) { writer.WriteLine("Error: " + error); writer.Close(); Application.Quit(); } float scoreMultiplier = 1f; foreach (ScoreAdjust score in adjustments) { scoreMultiplier *= score.adjustment; } writer.WriteLine($"Team {ConfigLoader.competition.Name}"); writer.WriteLine($"Date: {System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss zz")}"); writer.WriteLine($"Seed: {ConfigLoader.simulator.Seed}"); writer.WriteLine(); writer.WriteLine($"Time: {finalTime:0.000}"); writer.WriteLine($"Multiplier: x{scoreMultiplier:0.000}"); writer.WriteLine($"Score: {(finalTime * scoreMultiplier):0.000}"); writer.WriteLine(); writer.WriteLine("-- Multipliers --"); foreach (ScoreAdjust score in adjustments) { writer.WriteLine($"{score.reason}: x{score.adjustment:0.00}"); } writer.Close(); Application.Quit(); }