r5sdk/r5dev/public/datamap.cpp
Marvin D d59d798d13 datamap_t init.
* Get datamap vars from class datamap.
2022-11-19 03:16:49 +01:00

42 lines
971 B
C++

#include "core/stdafx.h"
#include "public/dt_common.h"
#include "public/datamap.h"
// [ PIXIE ]: Should work out of box when you pass proper datamap.
typedescription_t* DataMapHandler::FindFieldInDataMap(datamap_t* map, const string& fieldName)
{
while (map)
{
for (int i = 0; i < map->dataNumFields; i++)
{
string descFieldName = map->dataDesc[i].fieldName;
if (descFieldName.empty())
continue;
if (descFieldName.compare(fieldName) == 0)
return &map->dataDesc[i];
if (map->dataDesc[i].fieldType == 10) // FIELD_EMBEDDED
{
if (map->dataDesc[i].td)
{
typedescription_t* field = FindFieldInDataMap(map->dataDesc[i].td, fieldName);
if (field)
return field;
}
}
}
map = map->baseMap;
}
return nullptr;
}
int DataMapHandler::FindOffsetForField(datamap_t* map, const string& fieldName)
{
typedescription_t* field = FindFieldInDataMap(map, fieldName);
if (field)
return field->fieldOffset;
return 0;
}