diff --git a/sc2/src/sc2code/libs/reslib.h b/sc2/src/sc2code/libs/reslib.h index ba235c033..0bb20b7a3 100644 --- a/sc2/src/sc2code/libs/reslib.h +++ b/sc2/src/sc2code/libs/reslib.h @@ -67,6 +67,7 @@ BOOLEAN FreeResource (RESOURCE res); COUNT CountResourceTypes (void); DWORD res_GetIntResource (RESOURCE res); BOOLEAN res_GetBooleanResource (RESOURCE res); +const char *res_GetResourceType (RESOURCE res); void LoadResourceIndex (uio_DirHandle *dir, const char *filename); diff --git a/sc2/src/sc2code/libs/resource/getres.c b/sc2/src/sc2code/libs/resource/getres.c index f735ed12f..f078a0d68 100644 --- a/sc2/src/sc2code/libs/resource/getres.c +++ b/sc2/src/sc2code/libs/resource/getres.c @@ -73,6 +73,31 @@ err: return NULL; } +const char * +res_GetResourceType (RESOURCE res) +{ + RESOURCE_INDEX resourceIndex; + ResourceDesc *desc; + + if (res == NULL_RESOURCE) + { + log_add (log_Warning, "Trying to get type of null resource"); + return NULL; + } + + resourceIndex = _get_current_index_header (); + desc = lookupResourceDesc (resourceIndex, res); + if (desc == NULL) + { + log_add (log_Warning, "Trying to get type of undefined resource '%s'", + res); + return NULL; + } + + return desc->vtable->resType; +} + + // Get a resource by its resource ID. void * res_GetResource (RESOURCE res)