示例#1
0
    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);
    }
示例#2
0
    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);
        }
    }
示例#3
0
    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();
    }