chore: address code review comments

This commit is contained in:
Jan
2024-09-18 23:01:13 +02:00
parent e0218dce2e
commit ae73f81a80
5 changed files with 217 additions and 143 deletions

View File

@ -8,6 +8,7 @@
#include "nlohmann/json.hpp"
#include <filesystem>
#include <format>
#include <fstream>
#include <unordered_set>
@ -124,7 +125,7 @@ namespace
{
std::unordered_map<unsigned int, std::string> result;
for (auto i = 0u; i < std::extent_v<decltype(SOUND_CURVES)>; i++)
result.emplace(T6::Common::SND_HashName(SOUND_CURVES[i].data()), SOUND_CURVES[i]);
result.emplace(T6::Common::SND_HashName(SOUND_CURVES[i]), SOUND_CURVES[i]);
return result;
}
@ -195,7 +196,7 @@ class AssetDumperSndBank::Internal
stream.NextRow();
}
static const char* FindNameForDuck(unsigned int id, const SndBank* bank)
static const char* FindNameForDuck(const unsigned int id, const SndBank* bank)
{
for (auto i = 0u; i < bank->duckCount; i++)
{
@ -208,7 +209,7 @@ class AssetDumperSndBank::Internal
return "";
}
std::string ConvertSndFormatToExtension(snd_asset_format format) const
static const char* ExtensionForSndFormat(const snd_asset_format format)
{
switch (format)
{
@ -219,17 +220,19 @@ class AssetDumperSndBank::Internal
return ".flac";
default:
assert(false);
return "";
}
}
static void WriteAliasToFile(CsvOutputStream& stream, const SndAlias* alias, std::string& extension, const SndBank* bank)
static void WriteAliasToFile(CsvOutputStream& stream, const SndAlias* alias, const std::optional<snd_asset_format> maybeFormat, const SndBank* bank)
{
// name
stream.WriteColumn(alias->name);
// file
stream.WriteColumn(alias->assetFileName ? alias->assetFileName + extension : "");
const auto* extension = maybeFormat ? ExtensionForSndFormat(*maybeFormat) : "";
stream.WriteColumn(alias->assetFileName ? std::format("{}{}", alias->assetFileName, extension) : "");
// template
stream.WriteColumn("");
@ -435,7 +438,7 @@ class AssetDumperSndBank::Internal
const auto outFile = OpenAssetOutputFile(assetFileName, ".wav");
if (!outFile)
{
std::cerr << "Failed to open sound output file: \"" << assetFileName << "\"\n";
std::cerr << std::format("Failed to open sound output file: \"{}\"\n", assetFileName);
return;
}
@ -462,7 +465,7 @@ class AssetDumperSndBank::Internal
const auto outFile = OpenAssetOutputFile(assetFileName, extension);
if (!outFile)
{
std::cerr << "Failed to open sound output file: \"" << assetFileName << "\"\n";
std::cerr << std::format("Failed to open sound output file: \"{}\"\n", assetFileName);
return;
}
@ -499,33 +502,30 @@ class AssetDumperSndBank::Internal
case SND_ASSET_FORMAT_WMA:
case SND_ASSET_FORMAT_WIIUADPCM:
case SND_ASSET_FORMAT_MPC:
std::cerr << "Cannot dump sound (Unsupported sound format " << format << "): \"" << alias.assetFileName << "\"\n";
std::cerr << std::format("Cannot dump sound (Unknown sound format {}): \"{}\"\n", static_cast<unsigned>(format), alias.assetFileName);
break;
default:
assert(false);
std::cerr << "Cannot dump sound (Unknown sound format " << format << "): \"" << alias.assetFileName << "\"\n";
std::cerr << std::format("Cannot dump sound (Unknown sound format {}): \"{}\"\n", static_cast<unsigned>(format), alias.assetFileName);
break;
}
return format;
}
else
{
std::cerr << "Could not find data for sound \"" << alias.assetFileName << "\"\n";
}
std::cerr << std::format("Could not find data for sound \"{}\"\n", alias.assetFileName);
return {};
}
void DumpSndBankAliases(const SndBank* sndBank) const
{
std::unordered_map<unsigned int, std::string> dumpedAssets;
std::unordered_map<unsigned int, std::optional<snd_asset_format>> dumpedAssets;
const auto outFile = OpenAssetOutputFile("soundbank/" + std::string(sndBank->name) + ".aliases", ".csv");
const auto outFile = OpenAssetOutputFile(std::format("soundbank/{}.aliases", sndBank->name), ".csv");
if (!outFile)
{
std::cerr << "Failed to open sound alias output file: \"" << sndBank->name << "\"\n";
std::cerr << std::format("Failed to open sound alias output file: \"\"\n", sndBank->name);
return;
}
@ -539,28 +539,23 @@ class AssetDumperSndBank::Internal
for (auto j = 0; j < aliasList.count; j++)
{
const auto& alias = aliasList.head[j];
std::string extension = "";
std::optional<snd_asset_format> maybeFormat;
if (alias.assetId && alias.assetFileName)
{
if (dumpedAssets.find(alias.assetId) == dumpedAssets.end())
const auto previouslyDeterminedFormat = dumpedAssets.find(alias.assetId);
if (previouslyDeterminedFormat == dumpedAssets.end())
{
std::optional<snd_asset_format> format = DumpSndAlias(alias);
if (format.has_value())
{
extension = ConvertSndFormatToExtension(format.value());
}
dumpedAssets[alias.assetId] = extension;
maybeFormat = DumpSndAlias(alias);
dumpedAssets[alias.assetId] = maybeFormat;
}
else
{
extension = dumpedAssets[alias.assetId];
maybeFormat = previouslyDeterminedFormat->second;
}
}
WriteAliasToFile(csvStream, &alias, extension, sndBank);
WriteAliasToFile(csvStream, &alias, maybeFormat, sndBank);
csvStream.NextRow();
}
}
@ -569,14 +564,12 @@ class AssetDumperSndBank::Internal
void DumpSoundRadverb(const SndBank* sndBank) const
{
if (sndBank->radverbCount <= 0)
{
return;
}
const auto outFile = OpenAssetOutputFile("soundbank/" + std::string(sndBank->name) + ".reverbs", ".csv");
const auto outFile = OpenAssetOutputFile(std::format("soundbank/{}.reverbs", sndBank->name), ".csv");
if (!outFile)
{
std::cerr << "Failed to open sound reverb output file: \"" << sndBank->name << "\"\n";
std::cerr << std::format("Failed to open sound reverb output file: \"{}\"\n", sndBank->name);
return;
}
@ -610,14 +603,12 @@ class AssetDumperSndBank::Internal
void DumpSoundDucks(const SndBank* sndBank) const
{
if (sndBank->duckCount <= 0)
{
return;
}
const auto outFile = OpenAssetOutputFile("soundbank/" + std::string(sndBank->name) + ".ducklist", ".csv");
const auto outFile = OpenAssetOutputFile(std::format("soundbank/{}.ducklist", sndBank->name), ".csv");
if (!outFile)
{
std::cerr << "Failed to open sound reverb output file: \"" << sndBank->name << "\"\n";
std::cerr << std::format("Failed to open sound reverb output file: \"{}\"\n", sndBank->name);
return;
}
@ -631,10 +622,10 @@ class AssetDumperSndBank::Internal
csvStream.WriteColumn(duck.name);
csvStream.NextRow();
const auto duckFile = OpenAssetOutputFile("soundbank/ducks/" + std::string(duck.name), ".duk");
const auto duckFile = OpenAssetOutputFile(std::format("soundbank/ducks/{}", duck.name), ".duk");
if (!outFile)
{
std::cerr << "Failed to open sound duck output file: \"" << duck.name << "\"\n";
std::cerr << std::format("Failed to open sound duck output file: \"{}\"\n", duck.name);
return;
}
@ -661,12 +652,12 @@ class AssetDumperSndBank::Internal
}
auto values = std::vector<nlohmann::json>{};
for (auto i = 0u; i < 32u; i++)
for (auto j = 0u; j < 32u; j++)
{
values.push_back({
{"duckGroup", SOUND_DUCK_GROUPS[i]},
{"attenuation", duck.attenuation[i] },
{"filter", duck.filter[i] }
{"duckGroup", SOUND_DUCK_GROUPS[j]},
{"attenuation", duck.attenuation[j] },
{"filter", duck.filter[j] }
});
}