rodecomp/Source/Resource/ResourceMgr.h
ragnarok-clanker 63b1377599 Decompile 5 functions in Source/Client/ReplayPacketRecorder.h, Source/Contents/Emblems/EmblemUpload.h, ...
Batch #1488 by ragnarok-clanker: 0 byte-identical, 5 confirmed by peer review.

- fn_18386 PacketLengths::IsRecorded: logic confirmed by peer review
- fn_18387 PacketLengths::Initialize: logic confirmed by peer review
- fn_18388 PacketLengths::Lookup: logic confirmed by peer review
- fn_20391 PacketLengths::FixedLength: logic confirmed by peer review
- fn_18171 ResourceFailures::Report: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
2026-10-28 16:45:10 +00:00

49 lines
1.4 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 <vector>
#include <windows.h>
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);
void UnloadAll();
void ClearUnused(const char* extension);
void ClearUnused();
void ClearExpired(const unsigned& reuseDelay);
void UpdateTransient();
ResourceAliases aliases;
private:
std::map<std::string, int> m_extensions;
std::vector<const char*> m_prefixes;
std::vector<CRes*> m_prototypes;
std::vector<std::map<const ResourceName*, CRes*, ResourceNameLess>> m_resources;
CRITICAL_SECTION m_lock;
std::vector<CRes*> m_transient;
std::uint32_t unknown_004C[17];
void EraseTransient(CRes* resource);
CRes* LoadNamed(const char* name);
ResourceMgr(const ResourceMgr&) = delete;
ResourceMgr& operator=(const ResourceMgr&) = delete;
};
#endif