ResourceKey struct

A structure used to point a resource in the game, made by three IDs: instance, group and type.

The groupID is used when hashing and comparing, allowing this class to be used in containers such as hash_map or sorted vectors.

Public static variables

static const uint32_t kWildcardID

Public static functions

static auto Parse(ResourceKey& dst, const char16_t* pString, uint32_t defaultTypeID = 0, uint32_t defaultGroupID = 0) -> bool
Creates a ResourceKey from the given text, which is in the format "groupID!instanceID.typeID".

Constructors, destructors, conversion operators

ResourceKey()
ResourceKey(uint32_t nInstanceID, uint32_t nTypeID, uint32_t nGroupID)

Public functions

auto operator==(const ResourceKey& b) const -> bool
auto operator!=(const ResourceKey& b) const -> bool
auto operator<(const ResourceKey& b) const -> bool
auto operator>(const ResourceKey& b) const -> bool

Public variables

uint32_t instanceID
uint32_t typeID
uint32_t groupID

Function documentation

static bool ResourceKey::Parse(ResourceKey& dst, const char16_t* pString, uint32_t defaultTypeID = 0, uint32_t defaultGroupID = 0)

Creates a ResourceKey from the given text, which is in the format "groupID!instanceID.typeID".

Parameters
dst out The ResourceKey that will be filled with the parsed information.
pString in The string to parse.
defaultTypeID in [Optional] The typeID that will be used if no extension is specified in the text.
defaultGroupID in [Optional] The groupID that will be used if no group is specified in the text.
Returns True if the text was successfully parsed, false if the given string was nullptr.

The groupID and typeID can be ommited, however; if that happens, they will be replaced with the optional parameters nDefaultGroupID and nDefaultTypeID respectively.

The resulting uint32_ts will be the hashes of the strings separated by the '!' and '.' signs. The typeID can have a special treatment, however: before hashing it, it will check if there's a mapping for that extension in the ResourceManager class.

Examples: Parse(dstKey, "Properties.txt"); // this will be in the global (0x00000000) folder, with the appropiate mapping for the .txt extension) Parse(dstKey, "CreatureEditorBackground.rw4", 0, 0x40606000); // this will search in the editor_rigblocks~ (0x40606000) folder. Parse(dstKey, "CreatureGame!DifficultyTunning.prop");