ICT290 / src / scene / AIController / Goals / GoalEvaluator.h
GoalEvaluator.h
Raw
#pragma once

#include <glm/glm.hpp>

class Vehicle;
// struct Vector2D;

class GoalEvaluator {
   protected:
    // when the desirability score for a goal has been evaluated it is
    // multiplied by this value. It can be used to create bots with preferences
    // based upon their personality
    float m_CharacterBias;

   public:
    explicit GoalEvaluator(float CharacterBias)
        : m_CharacterBias(CharacterBias) {}

    virtual ~GoalEvaluator() = default;

    // returns a score between 0 and 1 representing the desirability of the
    // strategy the concrete subclass represents
    virtual float CalculateDesirability(Vehicle* Bot) = 0;

    // adds the appropriate goal to the given bot's brain
    virtual void SetGoal(Vehicle* Bot) = 0;
};