Decompile 2 functions in Source/Resource/ResourceMgr.cpp, Source/Resource/ResourceMgr.h

Batch #1385 by Yommy: 0 byte-identical, 2 confirmed by peer review.

- fn_18209 ResourceMgr::Instance: logic confirmed by peer review
- fn_18189 ResourceMgr::UnloadAll: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
This commit is contained in:
ragnarok-clanker 2026-10-28 12:08:03 +00:00
commit cdc3c895f1
2 changed files with 30 additions and 2 deletions

View file

@ -20,10 +20,18 @@ bool ResourceNameLess::operator()(const ResourceName* left, const ResourceName*
}
// INLINED
ResourceMgr::ResourceMgr(ResourceFailures& failures) : m_failures(&failures) {
ResourceMgr::ResourceMgr() : unknown_004C{} {
InitializeCriticalSection(&this->m_lock);
}
// OFFSET: 0x00AF1620
// FUNCTION: fn_18209
ResourceMgr& ResourceMgr::Instance() {
// GLOBAL: gl_24488
static ResourceMgr g_resourceMgr;
return g_resourceMgr;
}
// OFFSET: 0x00AEE070
// FUNCTION: fn_18169
ResourceMgr::~ResourceMgr() {
@ -186,6 +194,22 @@ void ResourceMgr::EraseTransient(CRes* resource) {
}
}
// OFFSET: 0x00AF0680
// FUNCTION: fn_18189
void ResourceMgr::UnloadAll() {
this->m_transient.clear();
for (std::size_t type = 0; type < this->m_resources.size(); ++type) {
auto& resources = this->m_resources[type];
for (auto entry = resources.begin(); entry != resources.end(); ++entry) {
entry->second->Unload();
delete entry->second;
}
resources.clear();
}
}
// OFFSET: 0x00AF0A10
// FUNCTION: fn_18192
void ResourceMgr::ClearUnused(const char* extension) {

View file

@ -4,6 +4,7 @@
#include "Resource/Resource.h"
#include "Resource/ResourceAliases.h"
#include <cstdint>
#include <map>
#include <vector>
#include <windows.h>
@ -16,14 +17,16 @@ struct ResourceNameLess {
class ResourceMgr {
public:
explicit ResourceMgr(ResourceFailures& failures);
ResourceMgr();
~ResourceMgr();
static ResourceMgr& Instance();
void Register(const char* extension, const char* prefix, CRes* prototype);
int FindType(const char* extension) const;
CRes* Find(int type, const char* name) const;
CRes* Load(const char* name);
void Remove(CRes* resource);
bool Exists(const char* name);
void UnloadAll();
void ClearUnused(const char* extension);
void ClearUnused();
void ClearExpired(const unsigned& reuseDelay);
@ -38,6 +41,7 @@ private:
CRITICAL_SECTION m_lock;
std::vector<CRes*> m_transient;
ResourceFailures* m_failures;
std::uint32_t unknown_004C[17];
void EraseTransient(CRes* resource);
ResourceMgr(const ResourceMgr&) = delete;
ResourceMgr& operator=(const ResourceMgr&) = delete;