mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
datamap_t init.
* Get datamap vars from class datamap.
This commit is contained in:
parent
9c1efe20ad
commit
d59d798d13
42
r5dev/public/datamap.cpp
Normal file
42
r5dev/public/datamap.cpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#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;
|
||||||
|
}
|
45
r5dev/public/datamap.h
Normal file
45
r5dev/public/datamap.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Usually an enum, need to re-check if it's still standard.
|
||||||
|
typedef int64_t fieldtype_t;
|
||||||
|
|
||||||
|
struct datamap_t;
|
||||||
|
struct typedescription_t;
|
||||||
|
|
||||||
|
// [ PIXIE ] TODO: Verify this again, been a long time since I reversed this.
|
||||||
|
struct datamap_t
|
||||||
|
{
|
||||||
|
typedescription_t* dataDesc;
|
||||||
|
int dataNumFields;
|
||||||
|
int unk1_;
|
||||||
|
const char* dataClassName;
|
||||||
|
uint64_t packed_size;
|
||||||
|
int64_t unk2;
|
||||||
|
datamap_t* baseMap;
|
||||||
|
// Verify size.
|
||||||
|
};
|
||||||
|
|
||||||
|
// [ PIXIE ] TODO: Verify this again, been a long time since I reversed this.
|
||||||
|
struct typedescription_t
|
||||||
|
{
|
||||||
|
fieldtype_t fieldType;
|
||||||
|
const char* fieldName;
|
||||||
|
int fieldOffset;
|
||||||
|
unsigned short fieldSize;
|
||||||
|
short flags;
|
||||||
|
uint64_t unk2[5];
|
||||||
|
datamap_t* td;
|
||||||
|
// Not full size yet.
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace DataMapHandler
|
||||||
|
{
|
||||||
|
int FindOffsetForField(datamap_t* map, const string& fieldName);
|
||||||
|
typedescription_t* FindFieldInDataMap(datamap_t* map, const string& fieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DATAMAP_VAR(type, name, datamap, varname) \
|
||||||
|
type& name() { \
|
||||||
|
static int _##name = NetVarManager::FindOffsetForField(datamap, varname); \
|
||||||
|
return *(type*)((std::uintptr_t)this + _##name); \
|
||||||
|
}
|
@ -92,6 +92,7 @@
|
|||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp" />
|
||||||
<ClCompile Include="..\public\utility\binstream.cpp" />
|
<ClCompile Include="..\public\utility\binstream.cpp" />
|
||||||
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
||||||
<ClCompile Include="..\public\utility\module.cpp" />
|
<ClCompile Include="..\public\utility\module.cpp" />
|
||||||
@ -252,6 +253,7 @@
|
|||||||
<ClInclude Include="..\public\avi\iavi.h" />
|
<ClInclude Include="..\public\avi\iavi.h" />
|
||||||
<ClInclude Include="..\public\avi\ibik.h" />
|
<ClInclude Include="..\public\avi\ibik.h" />
|
||||||
<ClInclude Include="..\public\bitmap\stb_image.h" />
|
<ClInclude Include="..\public\bitmap\stb_image.h" />
|
||||||
|
<ClInclude Include="..\public\datamap.h" />
|
||||||
<ClInclude Include="..\public\dt_common.h" />
|
<ClInclude Include="..\public\dt_common.h" />
|
||||||
<ClInclude Include="..\public\iengine.h" />
|
<ClInclude Include="..\public\iengine.h" />
|
||||||
<ClInclude Include="..\public\client_class.h" />
|
<ClInclude Include="..\public\client_class.h" />
|
||||||
|
@ -612,6 +612,9 @@
|
|||||||
<ClCompile Include="..\game\client\viewrender.cpp">
|
<ClCompile Include="..\game\client\viewrender.cpp">
|
||||||
<Filter>sdk\game\client</Filter>
|
<Filter>sdk\game\client</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\client\cdll_engine_int.h">
|
<ClInclude Include="..\client\cdll_engine_int.h">
|
||||||
@ -1802,6 +1805,9 @@
|
|||||||
<ClInclude Include="..\public\dt_common.h">
|
<ClInclude Include="..\public\dt_common.h">
|
||||||
<Filter>sdk\public</Filter>
|
<Filter>sdk\public</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\public\datamap.h">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="..\shared\resource\lockedserver.png">
|
<Image Include="..\shared\resource\lockedserver.png">
|
||||||
|
@ -214,6 +214,7 @@
|
|||||||
<ClInclude Include="..\pluginsystem\pluginsystem.h" />
|
<ClInclude Include="..\pluginsystem\pluginsystem.h" />
|
||||||
<ClInclude Include="..\protoc\cl_rcon.pb.h" />
|
<ClInclude Include="..\protoc\cl_rcon.pb.h" />
|
||||||
<ClInclude Include="..\protoc\sv_rcon.pb.h" />
|
<ClInclude Include="..\protoc\sv_rcon.pb.h" />
|
||||||
|
<ClInclude Include="..\public\datamap.h" />
|
||||||
<ClInclude Include="..\public\dt_common.h" />
|
<ClInclude Include="..\public\dt_common.h" />
|
||||||
<ClInclude Include="..\public\iengine.h" />
|
<ClInclude Include="..\public\iengine.h" />
|
||||||
<ClInclude Include="..\public\client_class.h" />
|
<ClInclude Include="..\public\client_class.h" />
|
||||||
@ -547,6 +548,7 @@
|
|||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp" />
|
||||||
<ClCompile Include="..\public\utility\binstream.cpp" />
|
<ClCompile Include="..\public\utility\binstream.cpp" />
|
||||||
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
||||||
<ClCompile Include="..\public\utility\module.cpp" />
|
<ClCompile Include="..\public\utility\module.cpp" />
|
||||||
|
@ -1257,6 +1257,9 @@
|
|||||||
<ClInclude Include="..\public\dt_common.h">
|
<ClInclude Include="..\public\dt_common.h">
|
||||||
<Filter>sdk\public</Filter>
|
<Filter>sdk\public</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\public\datamap.h">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\common\opcodes.cpp">
|
<ClCompile Include="..\common\opcodes.cpp">
|
||||||
@ -1577,6 +1580,9 @@
|
|||||||
<ClCompile Include="..\materialsystem\cmaterialsystem.cpp">
|
<ClCompile Include="..\materialsystem\cmaterialsystem.cpp">
|
||||||
<Filter>sdk\materialsystem</Filter>
|
<Filter>sdk\materialsystem</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\Dedicated.def" />
|
<None Include="..\Dedicated.def" />
|
||||||
|
@ -101,6 +101,7 @@
|
|||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp" />
|
||||||
<ClCompile Include="..\public\utility\binstream.cpp" />
|
<ClCompile Include="..\public\utility\binstream.cpp" />
|
||||||
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
<ClCompile Include="..\public\utility\memaddr.cpp" />
|
||||||
<ClCompile Include="..\public\utility\module.cpp" />
|
<ClCompile Include="..\public\utility\module.cpp" />
|
||||||
@ -278,6 +279,7 @@
|
|||||||
<ClInclude Include="..\public\avi\iavi.h" />
|
<ClInclude Include="..\public\avi\iavi.h" />
|
||||||
<ClInclude Include="..\public\avi\ibik.h" />
|
<ClInclude Include="..\public\avi\ibik.h" />
|
||||||
<ClInclude Include="..\public\bitmap\stb_image.h" />
|
<ClInclude Include="..\public\bitmap\stb_image.h" />
|
||||||
|
<ClInclude Include="..\public\datamap.h" />
|
||||||
<ClInclude Include="..\public\dt_common.h" />
|
<ClInclude Include="..\public\dt_common.h" />
|
||||||
<ClInclude Include="..\public\iengine.h" />
|
<ClInclude Include="..\public\iengine.h" />
|
||||||
<ClInclude Include="..\public\client_class.h" />
|
<ClInclude Include="..\public\client_class.h" />
|
||||||
|
@ -654,6 +654,9 @@
|
|||||||
<ClCompile Include="..\engine\gl_rmain.cpp">
|
<ClCompile Include="..\engine\gl_rmain.cpp">
|
||||||
<Filter>sdk\engine</Filter>
|
<Filter>sdk\engine</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\public\datamap.cpp">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\client\cdll_engine_int.h">
|
<ClInclude Include="..\client\cdll_engine_int.h">
|
||||||
@ -1898,6 +1901,9 @@
|
|||||||
<ClInclude Include="..\public\dt_common.h">
|
<ClInclude Include="..\public\dt_common.h">
|
||||||
<Filter>sdk\public</Filter>
|
<Filter>sdk\public</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\public\datamap.h">
|
||||||
|
<Filter>sdk\public</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="..\shared\resource\lockedserver.png">
|
<Image Include="..\shared\resource\lockedserver.png">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user