mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2025-12-24 12:50:05 +00:00
Implemented saving gruntwork results to file.
* Monkey Skyway paths are now saved in a format compatible with paths.json * flush() is called on every periodic DB save in addition to the /flush and /mss N export commands * Monkeys now accept WIP routes
This commit is contained in:
@@ -196,6 +196,8 @@ void TableData::init() {
|
||||
std::cerr << "[WARN] Malformed mobs.json file! Reason:" << err.what() << std::endl;
|
||||
}
|
||||
|
||||
loadGruntwork();
|
||||
|
||||
NPCManager::nextId = nextId;
|
||||
}
|
||||
|
||||
@@ -290,7 +292,6 @@ void TableData::constructPathSkyway(nlohmann::json::iterator _pathData) {
|
||||
}
|
||||
|
||||
void TableData::constructPathSlider(nlohmann::json points, int rotations, int sliderID) {
|
||||
|
||||
std::queue<WarpLocation> route;
|
||||
std::rotate(points.begin(), points.begin() + rotations, points.end()); // rotate points
|
||||
nlohmann::json::iterator _point = points.begin(); // iterator
|
||||
@@ -336,3 +337,64 @@ void TableData::constructPathNPC(nlohmann::json::iterator _pathData) {
|
||||
}
|
||||
TransportManager::NPCQueues[pathData["iNPCID"]] = points;
|
||||
}
|
||||
|
||||
// load gruntwork output; if it exists
|
||||
void TableData::loadGruntwork() {
|
||||
try {
|
||||
std::ifstream inFile(settings::GRUNTWORKJSON);
|
||||
nlohmann::json gruntwork;
|
||||
|
||||
// skip if there's no gruntwork to load
|
||||
if (inFile.fail())
|
||||
return;
|
||||
|
||||
inFile >> gruntwork;
|
||||
|
||||
// skyway paths
|
||||
auto skyway = gruntwork["skyway"];
|
||||
for (auto _route = skyway.begin(); _route != skyway.end(); _route++) {
|
||||
auto route = _route.value();
|
||||
std::vector<WarpLocation> points;
|
||||
|
||||
for (auto _point = route["points"].begin(); _point != route["points"].end(); _point++) {
|
||||
auto point = _point.value();
|
||||
points.push_back(WarpLocation{point["x"], point["y"], point["z"]});
|
||||
}
|
||||
|
||||
RunningSkywayRoutes[(int)route["iRouteID"]] = points;
|
||||
}
|
||||
|
||||
std::cout << "[INFO] Loaded gruntwork.json" << std::endl;
|
||||
}
|
||||
catch (const std::exception& err) {
|
||||
std::cerr << "[WARN] Malformed gruntwork.json file! Reason:" << err.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
// write gruntwork output to file
|
||||
void TableData::flush() {
|
||||
std::ofstream file(settings::GRUNTWORKJSON);
|
||||
nlohmann::json gruntwork;
|
||||
|
||||
for (auto& pair : RunningSkywayRoutes) {
|
||||
nlohmann::json route;
|
||||
|
||||
route["iRouteID"] = (int)pair.first;
|
||||
route["iMonkeySpeed"] = 1500; // TODO
|
||||
|
||||
std::cout << "serializing mss route " << (int)pair.first << std::endl;
|
||||
for (WarpLocation& point : pair.second) {
|
||||
nlohmann::json tmp;
|
||||
|
||||
tmp["x"] = point.x;
|
||||
tmp["y"] = point.y;
|
||||
tmp["z"] = point.z;
|
||||
|
||||
route["points"].push_back(tmp);
|
||||
}
|
||||
|
||||
gruntwork["skyway"].push_back(route);
|
||||
}
|
||||
|
||||
file << gruntwork << std::endl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user