Merge pull request #10881 from iwubcode/graphics-mod-draw-fb-texture-names

VideoCommon: fix graphics target texture names for efb/xfb
This commit is contained in:
Admiral H. Curtiss 2022-09-08 19:56:49 +02:00 committed by GitHub
commit 45c4aa288a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 21 deletions

View File

@ -124,30 +124,30 @@ std::optional<std::string> ExtractTextureFilenameForConfig(const picojson::objec
return std::nullopt; return std::nullopt;
} }
std::string texture_info = texture_filename_iter->second.get<std::string>(); std::string texture_info = texture_filename_iter->second.get<std::string>();
if (texture_info.find(EFB_DUMP_PREFIX) != std::string::npos)
{ const auto handle_fb_texture =
const auto letter_c_pos = texture_info.find_first_of('n'); [&texture_info](std::string_view type) -> std::optional<std::string> {
if (letter_c_pos == std::string::npos) const auto letter_n_pos = texture_info.find("_n");
if (letter_n_pos == std::string::npos)
{ {
ERROR_LOG_FMT(VIDEO, "Failed to load mod configuration file, value in 'texture_filename' " ERROR_LOG_FMT(VIDEO,
"is an efb without a count"); "Failed to load mod configuration file, value in 'texture_filename' "
"is {} without a count",
type);
return std::nullopt; return std::nullopt;
} }
texture_info =
texture_info.substr(letter_c_pos - 1, texture_info.find_first_of("_", letter_c_pos)); const auto post_underscore = texture_info.find_first_of('_', letter_n_pos + 2);
} if (post_underscore == std::string::npos)
else if (texture_info.find(XFB_DUMP_PREFIX) != std::string::npos) return texture_info.erase(letter_n_pos, texture_info.size() - letter_n_pos);
{ else
const auto letter_c_pos = texture_info.find_first_of('n'); return texture_info.erase(letter_n_pos, post_underscore - letter_n_pos);
if (letter_c_pos == std::string::npos) };
{
ERROR_LOG_FMT(VIDEO, "Failed to load mod configuration file, value in 'texture_filename' " if (texture_info.starts_with(EFB_DUMP_PREFIX))
"is an xfb without a count"); return handle_fb_texture("an efb");
return std::nullopt; else if (texture_info.starts_with(XFB_DUMP_PREFIX))
} return handle_fb_texture("a xfb");
texture_info =
texture_info.substr(letter_c_pos - 1, texture_info.find_first_of("_", letter_c_pos));
}
return texture_info; return texture_info;
} }
} // namespace } // namespace