Program Listing for File ridge_based_object.h
↰ Return to documentation for file (src/ridge_impl/ridge_based_object.h)
#pragma once
#include <functional>
#include <iterator>
#include <vector>
#include "ridge.h"
#include "ridge_impl/ridge_group.h"
#include "tal/godot_core.h"
#include "types.h"
namespace sota {
class RidgeBased {
public:
void print_biomes() {
print("\n");
for (RidgeGroup& group : _mountain_groups) {
print("Mountain group of size ", (uint64_t)group.meshes().size());
}
for (RidgeGroup& group : _water_groups) {
print("Water group of size ", (uint64_t)group.meshes().size());
}
for (RidgeGroup& group : _hill_groups) {
print("Hill group of size ", (uint64_t)group.meshes().size());
}
for (RidgeGroup& group : _plain_groups) {
print("Plain group of size ", (uint64_t)group.meshes().size());
}
}
std::vector<std::reference_wrapper<RidgeGroup>> all_groups() {
std::vector<std::reference_wrapper<RidgeGroup>> res;
res.insert(res.end(), _mountain_groups.begin(), _mountain_groups.end());
res.insert(res.end(), _water_groups.begin(), _water_groups.end());
res.insert(res.end(), _plain_groups.begin(), _plain_groups.end());
res.insert(res.end(), _hill_groups.begin(), _hill_groups.end());
return res;
}
std::vector<RidgeGroup>& get_groups_by_biome(Biome biome) {
switch (biome) {
case Biome::PLAIN:
return _plain_groups;
case Biome::HILL:
return _hill_groups;
case Biome::MOUNTAIN:
return _mountain_groups;
case Biome::WATER:
return _water_groups;
default:
printerr("Unknown biome in get_groups_by_biome"); // should be never reached
}
printerr("Unknown biome in get_groups_by_biome"); // should be never reached
return _plain_groups;
}
protected:
std::vector<RidgeGroup> _mountain_groups;
std::vector<RidgeGroup> _water_groups;
std::vector<RidgeGroup> _plain_groups;
std::vector<RidgeGroup> _hill_groups;
RidgeConfig _ridge_config;
};
} // namespace sota