Game Development Reference
In-Depth Information
Listing 23-17. The Updated Option Class
class Option
: public Visitable
{
public:
using Pointer = std::shared_ptr<Option>;
protected:
PlayerOptions m_chosenOption;
std::string m_outputText;
public:
Option(PlayerOptions chosenOption, const std::string& outputText)
: m_chosenOption(chosenOption)
, m_outputText(outputText)
{
}
const std::string& GetOutputText() const
{
return m_outputText;
}
virtual void Evaluate(Player& player) = 0;
};
The only change required is to inherit the Option class from Visitable . To take advantage of this,
a Visitor named EvaluateVisitor is created in Listing 23-18.
Listing 23-18. The EvaluateVisitor Class
class EvaluateVisitor
: public Visitor
{
private:
Player& m_player;
public:
EvaluateVisitor(Player& player)
: m_player{ player }
{
}
virtual void OnVisit(Visitable& visitable)
{
Option* pOption = dynamic_cast<Option*>(&visitable);
 
Search WWH ::




Custom Search