35 lines
885 B
C++
35 lines
885 B
C++
#include "locationcontroller.h"
|
|
#include "location.h"
|
|
#include "policy.h"
|
|
#include "actor.h"
|
|
|
|
LocationController::LocationController(Initializer &&initializer) :
|
|
Controller(std::move(initializer))
|
|
{}
|
|
|
|
LocationController::~LocationController()
|
|
{}
|
|
|
|
std::string LocationController::interact(std::shared_ptr<Actor> actor)
|
|
{
|
|
std::string interaction_output;
|
|
|
|
const auto validation_result = validatePolicies();
|
|
interaction_output += validation_result.validation_output;
|
|
|
|
if (validation_result.success)
|
|
{
|
|
actor->moveToLocation(_location);
|
|
|
|
const std::string& node_interact_message = _location->interact();
|
|
interaction_output += (_interaction_message + "\n\n" + node_interact_message);
|
|
}
|
|
|
|
return interaction_output;
|
|
}
|
|
|
|
void LocationController::setDependentLocation(const std::shared_ptr<Location> &location)
|
|
{
|
|
_location = location;
|
|
}
|