rodecomp/Source/Resource/ResourceMgr.h
ragnarok-clanker c6b30f7758 Decompile 17 functions in Source/Resource/ResourceMgr.h, Source/Resource/ResourceAliases.h, ...
Batch #16281 by kyoshi: 4 byte-identical, 13 confirmed by peer review.

- fn_19603 CNavigationManager::MapCellToView: byte-identical
- fn_18180 ResourceMgr::Resolve: logic confirmed by peer review
- fn_18187 ResourceMgr::LoadAliases: logic confirmed by peer review
- fn_18169 ResourceMgr::~ResourceMgr: logic confirmed by peer review (already on main)
- fn_18173 ResourceMgr::FindType: byte-identical
- fn_18176 ResourceMgr::Load: logic confirmed by peer review (already on main)
- fn_18181 ResourceMgr::Exists: logic confirmed by peer review (already on main)
- fn_18188 ResourceMgr::Register: logic confirmed by peer review (already on main)
- fn_18189 ResourceMgr::UnloadAll: byte-identical (already on main)
- fn_18190 ResourceMgr::Remove: logic confirmed by peer review (already on main)
- fn_18191 ResourceMgr::ClearExpired: logic confirmed by peer review (already on main)
- fn_18192 ResourceMgr::ClearUnused: logic confirmed by peer review (already on main)
- fn_18193 ResourceMgr::ClearUnused: logic confirmed by peer review (already on main)
- fn_18209 ResourceMgr::Instance: logic confirmed by peer review (already on main)
- fn_18175 ResourceMgr::Load: logic confirmed by peer review (already on main)
- fn_18182 ResourceMgr::Exists: logic confirmed by peer review (already on main)
- fn_18186 ResourceMgr::UpdateTransient: byte-identical (already on main)

Peer-reviewed-by: Yommy, youko
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-11-10 15:59:52 +00:00

68 lines
2 KiB
C++

#ifndef RAGNAROK_SOURCE_RESOURCE_RESOURCEMGR_H
#define RAGNAROK_SOURCE_RESOURCE_RESOURCEMGR_H
#include "Resource/Resource.h"
#include "Resource/ResourceAliases.h"
#include <cstdint>
#include <map>
#include <string>
#include <vector>
#include <windows.h>
struct ResourceExtensionLess {
bool operator()(const char* left, const char* right) const {
while (*left == *right && *left != '\0') {
++left;
++right;
}
return static_cast<unsigned char>(*left) < static_cast<unsigned char>(*right);
}
};
struct ResourceNameLess {
bool operator()(const ResourceName* left, const ResourceName* right) const;
};
class ResourceMgr {
public:
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);
CRes* Load(std::string name);
void Remove(CRes* resource);
bool Exists(const char* name);
bool Exists(std::string name);
void UnloadAll();
void ClearUnused(const char* extension);
void ClearUnused();
void ClearExpired();
void UpdateTransient();
const char* Resolve(const char* name) const;
std::string ResolveMapName(const char* name) const;
void LoadAliases(int option);
private:
/* 0000 */ std::map<const char*, int, ResourceExtensionLess> m_extensions;
/* 0008 */ std::vector<const char*> m_prefixes;
/* 0014 */ std::vector<CRes*> m_prototypes;
/* 0020 */ std::vector<std::map<const ResourceName*, CRes*, ResourceNameLess>> m_resources;
/* 002C */ CRITICAL_SECTION m_lock;
/* 0044 */ std::map<std::string, std::string> m_aliases;
/* 004C */ std::uint32_t unknown_004C[17];
/* 0090 */ std::vector<CRes*> m_transient;
void EraseTransient(CRes* resource);
CRes* LoadNamed(const char* name);
ResourceMgr(const ResourceMgr&) = delete;
ResourceMgr& operator=(const ResourceMgr&) = delete;
};
extern unsigned g_resourceReuseDelay;
extern unsigned char g_lowercaseTable[256];
#endif