16 if (tileset_repo_->exists(tileset_name)) {
17 return std::unexpected{
"tileset already exists"};
21 auto maybe_porytiles_component = asset_generator_->generate();
22 if (!maybe_porytiles_component.has_value()) {
23 return std::unexpected{maybe_porytiles_component.error()};
25 auto porytiles_component = std::move(maybe_porytiles_component.value());
28 auto porymap_component = std::make_unique<PorymapTilesetComponent>();
31 Tileset tileset{tileset_name, std::move(porytiles_component), std::move(porymap_component)};
34 auto maybe_new_tileset = compiler_->compile(tileset);
35 if (!maybe_new_tileset.has_value()) {
37 std::string joined_error;
38 for (std::size_t i = 0; i < error_lines.size(); ++i) {
42 joined_error += error_lines[i];
44 return std::unexpected{joined_error};
46 const auto new_tileset = std::move(maybe_new_tileset.value());
56 if (
const auto save_result = tileset_repo_->save(*new_tileset); !save_result.has_value()) {
58 std::string joined_error;
59 for (std::size_t i = 0; i < error_lines.size(); ++i) {
63 joined_error += error_lines[i];
65 return std::unexpected{joined_error};
Result< void > create(const std::string &tileset_name) const
Creates the primary Tileset with the given tileset name.
TextFormatter implementation that strips all styling from text.
A complete tileset containing both Porytiles and Porymap components.
std::expected< T, E > Result
A result with some type T on success, otherwise an error of type E.