35 lines
1.0 KiB
C++
35 lines
1.0 KiB
C++
#ifndef DOUWCO_HIVEMIND_PATH_TOOL_HPP
|
|
#define DOUWCO_HIVEMIND_PATH_TOOL_HPP
|
|
|
|
#include <vector>
|
|
#include <Screeps/ReturnTypes.hpp>
|
|
|
|
namespace DouwcoHivemind
|
|
{
|
|
|
|
static std::vector<int> flattenPathSteps(const std::vector<Screeps::PathStep> &pathSteps)
|
|
{
|
|
std::vector<int> flattened;
|
|
for (const auto &step : pathSteps)
|
|
{
|
|
flattened.push_back(step.x);
|
|
flattened.push_back(step.y);
|
|
flattened.push_back(step.dx);
|
|
flattened.push_back(step.dy);
|
|
flattened.push_back(step.direction);
|
|
}
|
|
return flattened;
|
|
}
|
|
|
|
static std::vector<Screeps::PathStep> unflattenPathSteps(const std::vector<int> &flattened)
|
|
{
|
|
std::vector<Screeps::PathStep> pathSteps;
|
|
for (size_t i = 0; i < flattened.size(); i += 5)
|
|
{
|
|
pathSteps.emplace_back(Screeps::PathStep(flattened[i], flattened[i + 1], flattened[i + 2], flattened[i + 3], flattened[i + 4]));
|
|
}
|
|
return pathSteps;
|
|
}
|
|
} // namespace Screeps
|
|
|
|
#endif // DOUWCO_HIVEMIND_PATH_TOOL_HPP
|