1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-02-02 19:56:13 +01:00

Fix #24785: Change scenery window filter to use filename instead of full path (#24786)

This commit is contained in:
mix
2025-07-23 11:03:09 +01:00
committed by GitHub
parent ec463164a2
commit 92cf940b86
4 changed files with 20 additions and 8 deletions

View File

@@ -226,7 +226,8 @@ namespace OpenRCT2::ObjectFactory
* @note jRoot is deliberately left non-const: json_t behaviour changes when const
*/
static std::unique_ptr<Object> CreateObjectFromJson(
IObjectRepository& objectRepository, json_t& jRoot, const IFileDataRetriever* fileRetriever, bool loadImageTable);
IObjectRepository& objectRepository, json_t& jRoot, const IFileDataRetriever* fileRetriever, bool loadImageTable,
const std::string_view path);
static ObjectSourceGame ParseSourceGame(const std::string_view s)
{
@@ -277,6 +278,7 @@ namespace OpenRCT2::ObjectFactory
{
result = CreateObject(entry.GetType());
result->SetDescriptor(ObjectEntryDescriptor(entry));
result->SetFileName(OpenRCT2::Path::GetFileNameWithoutExtension(path));
utf8 objectName[kDatNameLength + 1] = { 0 };
ObjectEntryGetNameFixed(objectName, sizeof(objectName), &entry);
@@ -446,7 +448,7 @@ namespace OpenRCT2::ObjectFactory
if (jRoot.is_object())
{
auto fileDataRetriever = ZipDataRetriever(path, *archive);
return CreateObjectFromJson(objectRepository, jRoot, &fileDataRetriever, loadImages);
return CreateObjectFromJson(objectRepository, jRoot, &fileDataRetriever, loadImages, path);
}
}
catch (const std::exception& e)
@@ -465,7 +467,7 @@ namespace OpenRCT2::ObjectFactory
{
json_t jRoot = Json::ReadFromFile(path.c_str());
auto fileDataRetriever = FileSystemDataRetriever(Path::GetDirectory(path));
return CreateObjectFromJson(objectRepository, jRoot, &fileDataRetriever, loadImages);
return CreateObjectFromJson(objectRepository, jRoot, &fileDataRetriever, loadImages, path);
}
catch (const std::runtime_error& err)
{
@@ -514,7 +516,8 @@ namespace OpenRCT2::ObjectFactory
}
std::unique_ptr<Object> CreateObjectFromJson(
IObjectRepository& objectRepository, json_t& jRoot, const IFileDataRetriever* fileRetriever, bool loadImageTable)
IObjectRepository& objectRepository, json_t& jRoot, const IFileDataRetriever* fileRetriever, bool loadImageTable,
const std::string_view path)
{
if (!jRoot.is_object())
{
@@ -573,6 +576,7 @@ namespace OpenRCT2::ObjectFactory
result->SetVersion(version);
result->SetIdentifier(id);
result->SetDescriptor(descriptor);
result->SetFileName(OpenRCT2::Path::GetFileNameWithoutExtension(path));
result->MarkAsJsonObject();
auto readContext = ReadObjectContext(objectRepository, id, loadImageTable, fileRetriever);
result->ReadJson(&readContext, jRoot);