Add name to pathfinding classes
This commit is contained in:
parent
76f10725ec
commit
1b0edb664c
@ -17,11 +17,18 @@ Path LinearPathFinder::CalculatePath(WorldPos target)
|
||||
return path;
|
||||
}
|
||||
|
||||
Path BFS::CalculatePath(WorldPos target)
|
||||
{
|
||||
auto path = Path{target};
|
||||
return path;
|
||||
}
|
||||
|
||||
std::unique_ptr<PathFinderBase> create(PathFinderType type) {
|
||||
switch (type) {
|
||||
case PathFinderType::LINEAR:
|
||||
return std::move(std::make_unique<LinearPathFinder>());
|
||||
case PathFinderType::BFS:
|
||||
return std::move(std::make_unique<BFS>());
|
||||
case PathFinderType::COUNT:
|
||||
LOG_WARNING("Incorrect pathfinder type");
|
||||
return nullptr;
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
PathFinderBase& operator=(PathFinderBase&&) = delete;
|
||||
|
||||
void SetMap(std::shared_ptr<Map> map);
|
||||
virtual const std::string_view& GetName() const = 0;
|
||||
virtual Path CalculatePath(WorldPos target) = 0;
|
||||
|
||||
private:
|
||||
@ -35,11 +36,26 @@ private:
|
||||
|
||||
|
||||
class LinearPathFinder : public PathFinderBase {
|
||||
|
||||
public:
|
||||
Path CalculatePath(WorldPos target) override;
|
||||
const std::string_view& GetName() const override { return m_Name; }
|
||||
|
||||
private:
|
||||
const std::string_view m_Name = "Linear Path";
|
||||
};
|
||||
|
||||
class BFS: public PathFinderBase {
|
||||
|
||||
public:
|
||||
Path CalculatePath(WorldPos target) override;
|
||||
const std::string_view& GetName() const override { return m_Name; }
|
||||
|
||||
private:
|
||||
const std::string_view m_Name = "Breadth First Search";
|
||||
};
|
||||
|
||||
std::unique_ptr<PathFinderBase> create(PathFinderType type);
|
||||
|
||||
|
||||
} // pathfinder namespace
|
||||
|
||||
|
@ -89,6 +89,7 @@ void PathFindingDemo::HandleActions(const std::vector<UserAction> &actions) {
|
||||
using namespace pathfinder;
|
||||
PathFinderType type = static_cast<PathFinderType>(action.Argument.number);
|
||||
m_PathFinder = create(type);
|
||||
LOG_INFO("Switched to path finding method: ", m_PathFinder->GetName());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user