summaryrefslogtreecommitdiffhomepage
path: root/wall-tileset-tool/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wall-tileset-tool/main.cpp')
-rw-r--r--wall-tileset-tool/main.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/wall-tileset-tool/main.cpp b/wall-tileset-tool/main.cpp
index 8fc463c8..ac4a7498 100644
--- a/wall-tileset-tool/main.cpp
+++ b/wall-tileset-tool/main.cpp
@@ -69,13 +69,15 @@ Direction& get_direction(wall_atlas_def& atlas, size_t i)
return const_cast<Direction&>(get_direction(const_cast<const wall_atlas_def&>(atlas), i));
}
-bool do_group(state st, size_t i, size_t j)
+bool do_group(state st, size_t i, size_t j, Group& new_dir)
{
const wall_atlas_def& old_atlas = st.old_atlas;
wall_atlas_def& new_atlas = st.new_atlas;
const auto& old_dir = get_direction(old_atlas, (size_t)i);
//auto& new_dir = get_direction(new_atlas, (size_t)i);
+ DBG << " group" << quoted2(Direction::groups[j].str);
+
return true;
}
@@ -83,7 +85,7 @@ bool do_direction(state& st, size_t i)
{
const auto name = wall_atlas::directions[i].name;
auto& atlas = st.new_atlas;
- DBG << "-" << name;
+ DBG << " direction" << quoted2(name);
const auto& old_dir = get_direction(st.old_atlas, i);
@@ -99,9 +101,9 @@ bool do_direction(state& st, size_t i)
.passability = old_dir.passability,
};
- for (auto [_str, _ptr, tag] : Direction::groups)
+ for (auto [_str, ptr, tag] : Direction::groups)
{
- if (!do_group(st, i, (size_t)tag))
+ if (!do_group(st, i, (size_t)tag, dir.*ptr))
return false;
}
@@ -112,7 +114,7 @@ bool do_direction(state& st, size_t i)
bool do_input_file(state& st)
{
- DBG << "input-file" << quoted(st.old_atlas.header.name);
+ DBG << "input" << quoted(st.old_atlas.header.name) << colon(',') << quoted(st.opts.input_file);
fm_assert(!st.buffer.empty());
fm_assert(loader.check_atlas_name(st.old_atlas.header.name));
@@ -150,20 +152,23 @@ inline String fixsep(String str)
Triple<options, Arguments, bool> parse_cmdline(int argc, const char* const* argv) noexcept
{
Corrade::Utility::Arguments args{};
- args.addOption('o', "output"s).setHelp("output"s, ""s, "DIR"s);
+ args.addOption('o', "output"s, "\0"_s).setHelp("output"s, ""_s, "DIR"s);
args.addArgument("input.json"s);
args.parse(argc, argv);
options opts;
- opts.output_dir = Path::join(loader.startup_directory(), fixsep(args.value<StringView>("output")));
opts.input_file = Path::join(loader.startup_directory(), fixsep(args.value<StringView>("input.json")));
opts.input_dir = Path::split(opts.input_file).first();
+ if (auto val = args.value<StringView>("output"); val != "\0"_s)
+ opts.output_dir = Path::join(loader.startup_directory(), fixsep(args.value<StringView>("output")));
+ else
+ opts.output_dir = opts.input_dir;
if (opts.output_dir.isEmpty())
opts.output_dir = opts.input_dir;
- DBG << "input-dir" << colon() << quoted(opts.input_dir);
- DBG << "output-dir" << colon() << quoted(opts.output_dir);
+ //DBG << "input-dir" << opts.input_dir;
+ //DBG << "output-dir" << opts.output_dir;
if (!Path::exists(opts.input_file))
Error{Error::Flag::NoSpace} << "fatal: input file '" << opts.input_file << "' doesn't exist";