From 9973a2815458560521b56230a18fa5db381730e7 Mon Sep 17 00:00:00 2001 From: PJB3005 Date: Thu, 28 May 2026 00:40:05 +0200 Subject: [PATCH] EntryNum assignment for new aurora API changes --- src/dusk/modding/mod_loader_overlay.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/dusk/modding/mod_loader_overlay.cpp b/src/dusk/modding/mod_loader_overlay.cpp index 0607473f83..8f6953650e 100644 --- a/src/dusk/modding/mod_loader_overlay.cpp +++ b/src/dusk/modding/mod_loader_overlay.cpp @@ -3,6 +3,8 @@ #include "dusk/mod_loader.hpp" #include "mod_loader.hpp" +#include "absl/container/flat_hash_map.h" + #include using namespace std::string_literals; @@ -18,6 +20,19 @@ struct OverlayFileData { std::vector s_overlayFiles; +s32 s_nextEntryNum; +absl::flat_hash_map s_entryNumIndex; + +s32 assignEntryNum(std::string_view const fileName) { + if (s_entryNumIndex.contains(fileName)) { + return s_entryNumIndex[fileName]; + } + + auto const newEntryNum = s_nextEntryNum++; + s_entryNumIndex[fileName] = newEntryNum; + return newEntryNum; +} + void findOverlayFiles(std::vector& files, dusk::LoadedMod& mod) { for (const auto& file : mod.bundle->getFileNames()) { if (!file.starts_with("overlay/")) { @@ -32,7 +47,11 @@ void findOverlayFiles(std::vector& files, dusk::LoadedMod& mo const auto index = s_overlayFiles.size(); s_overlayFiles.emplace_back(file, &mod); - files.emplace_back(strdup(overlayPath.c_str()), reinterpret_cast(index), size); + files.emplace_back( + strdup(overlayPath.c_str()), + reinterpret_cast(index), + size, + assignEntryNum(overlayPath)); } } @@ -89,6 +108,8 @@ namespace dusk { void ModLoader::initOverlayFiles() { Log.debug("Initializing overlay files..."); + s_nextEntryNum = aurora_dvd_base_entry_count(); + aurora_dvd_overlay_callbacks(&s_overlayCallbacks); std::vector files;