Skip to content

Commit 00759ce

Browse files
committed
Update the SDK submodules
Use the SDK's NetworkClassRegistration_t Use the SDK's names for convar flags 33, 36 and 37 Write the flags enum flag in schemas.json Print the alternate baseline entity class flag names
1 parent f842921 commit 00759ce

10 files changed

Lines changed: 111 additions & 118 deletions

File tree

‎src/main/dumpers/concommands/concommands.cpp‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,10 @@ static const std::vector<std::pair<uint64_t, const char*>> g_flagMap{
8181
{ FCVAR_EXECUTE_PER_TICK, "execute_per_tick" },
8282
{ FCVAR_SNAPSHOT_IGNORED, "snapshot_ignored" },
8383
{ FCVAR_DEFENSIVE, "defensive" },
84-
{ 1ull << 33, "execute_immediately" }, // TODO: Not in any SDK, name is ours. Runs right away inside a __beginseq batch instead of being queued (exec, execifexists)
84+
{ FCVAR_EXECUTE_IMMEDIATELY, "execute_immediately" },
8585
{ FCVAR_GAMEINFO_CANNOT_OVERRIDE, "gameinfo_cannot_override" },
86-
{ 1ull << 37, "enum_value" }, // TODO: Not in any SDK, name is ours. Value is a schema enum or enum flags, written as enumerator names
86+
{ FCVAR_VCONSOLE_NO_CHANGE_NOTIFY, "vconsole_no_change_notify" },
87+
{ FCVAR_ENUM_VALUE, "enum_value" },
8788
};
8889

8990
static std::vector<std::string> GetFlagNames(uint64_t flags)
@@ -322,7 +323,7 @@ static const char* ValidateQueued(const ConVarRegList::Entry_t& queued)
322323
return "enum info function";
323324

324325
auto enumInfo = GetEnum(info);
325-
if (!Modules::FindModuleContaining(enumInfo) || !Modules::IsValidName(enumInfo->m_pszName))
326+
if (!Modules::FindModuleContaining(enumInfo) || !Modules::IsValidName(enumInfo->m_pName))
326327
return "enum info";
327328
}
328329

@@ -553,12 +554,12 @@ static bool WriteQueued(Queue_t& queue, bool isConVar, std::set<std::string>& wh
553554
maxValue = entry.m_Max;
554555
}
555556

556-
WriteValueLine(entry.m_eType == EConVarType_String ? QuoteString(value.m_Text) : value.m_Text, minValue, maxValue, entry.m_pEnum ? entry.m_pEnum->m_pszName : nullptr, flags, output);
557+
WriteValueLine(entry.m_eType == EConVarType_String ? QuoteString(value.m_Text) : value.m_Text, minValue, maxValue, entry.m_pEnum ? entry.m_pEnum->m_pName : nullptr, flags, output);
557558

558559
item["type"] = value.m_pszType;
559560
if (entry.m_pEnum)
560561
{
561-
item["enum"] = entry.m_pEnum->m_pszName;
562+
item["enum"] = entry.m_pEnum->m_pName;
562563
g_EnumConVars[name] = entry.m_pEnum;
563564
}
564565
if (hasDefault)
@@ -647,10 +648,10 @@ bool AddEnumModules()
647648
if (it == g_EnumConVars.end())
648649
continue;
649650

650-
auto project = it->second->m_pszProjectName;
651+
auto project = it->second->m_pProjectName;
651652
if (!Modules::IsValidName(project))
652653
{
653-
spdlog::critical("Enum {} of convar {} has no module after installing schema bindings, SchemaEnumInfoData_t in the SDK needs updating", it->second->m_pszName, it->first);
654+
spdlog::critical("Enum {} of convar {} has no module after installing schema bindings, SchemaEnumInfoData_t in the SDK needs updating", it->second->m_pName, it->first);
654655
return false;
655656
}
656657

‎src/main/dumpers/entities/entities.cpp‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ static const std::pair<int, const char*> g_ClassFlagNames[] = {
9090
{ ECF_BECOME_SUSPENDED_INSTEAD_OF_DORMANT, "ECF_BECOME_SUSPENDED_INSTEAD_OF_DORMANT" },
9191
{ ECF_ANONYMOUS_ENTITY, "ECF_ANONYMOUS_ENTITY" },
9292
{ ECF_PRECACHE_NETWORKED_ENTITY_ON_CLIENT, "ECF_PRECACHE_NETWORKED_ENTITY_ON_CLIENT" },
93-
{ ECF_UNK001, "ECF_UNK001" },
94-
{ ECF_UNK002, "ECF_UNK002" },
93+
{ ECF_HAS_ALTERNATE_BASELINES, "ECF_HAS_ALTERNATE_BASELINES" },
94+
{ ECF_ALTERNATE_BASELINES_USE_RECIPIENTS_FILTERS, "ECF_ALTERNATE_BASELINES_USE_RECIPIENTS_FILTERS" },
9595
{ ECF_FORCE_WORLDGROUPID, "ECF_FORCE_WORLDGROUPID" },
9696
};
9797

@@ -303,7 +303,7 @@ static bool GetModuleSchemas(const CModule& module, ModuleSchemas_t& schemas)
303303
return false;
304304
}
305305

306-
schemas.m_Enums.try_emplace(enumInfo->m_pszName, enumInfo);
306+
schemas.m_Enums.try_emplace(enumInfo->m_pName, enumInfo);
307307
}
308308

309309
// Validated by the schemas dumper
@@ -313,10 +313,10 @@ static bool GetModuleSchemas(const CModule& module, ModuleSchemas_t& schemas)
313313
if (!classInfo)
314314
continue;
315315

316-
schemas.m_Classes.try_emplace(classInfo->m_pszName, classInfo);
316+
schemas.m_Classes.try_emplace(classInfo->m_pName, classInfo);
317317

318-
if (classInfo->m_pDataDescMap && dataMaps.insert(classInfo->m_pDataDescMap).second)
319-
schemas.m_DataMaps.emplace_back(classInfo->m_pDataDescMap, classInfo->m_pszProjectName);
318+
if (classInfo->m_pDataDesc && dataMaps.insert(classInfo->m_pDataDesc).second)
319+
schemas.m_DataMaps.emplace_back(classInfo->m_pDataDesc, classInfo->m_pProjectName);
320320
}
321321
}
322322

@@ -438,7 +438,7 @@ static bool AddKeyFields(const datamap_t* map, KeyTarget_t& target, const std::s
438438
keyJson["enum"] = field.enumName;
439439

440440
if (enumInfo)
441-
keyJson["enumModule"] = enumInfo->m_pszProjectName;
441+
keyJson["enumModule"] = enumInfo->m_pProjectName;
442442
}
443443

444444
target.m_Entity.m_Strings.push_back(key);
@@ -456,7 +456,7 @@ static bool AddKeyFields(const datamap_t* map, KeyTarget_t& target, const std::s
456456

457457
// Embedded structs can be from another module, like hudtextparms_t in server's CGameText is only in client
458458
if (auto it = schemas.m_Classes.find(map->dataClassName); it != schemas.m_Classes.end())
459-
keyJson["declaredInModule"] = it->second->m_pszProjectName;
459+
keyJson["declaredInModule"] = it->second->m_pProjectName;
460460

461461
if (target.m_pszComponent)
462462
keyJson["component"] = target.m_pszComponent;
@@ -511,8 +511,8 @@ static bool AddKeyFields(const datamap_t* map, KeyTarget_t& target, const std::s
511511
lines.push_back(fmt::format("{}{}(intchoices) : \"{}\" : : \"\" = // {}", indent, keyName, keyName, comment));
512512
lines.push_back(indent + "[");
513513

514-
for (uint16_t e = 0; e < enumInfo->m_nEnumeratorCount; e++)
515-
lines.push_back(fmt::format("{}\t{} : \"{}\"", indent, enumInfo->m_pEnumerators[e].m_nValue, enumInfo->m_pEnumerators[e].m_pszName));
514+
for (uint16_t e = 0; e < enumInfo->m_nNumEnumerators; e++)
515+
lines.push_back(fmt::format("{}\t{} : \"{}\"", indent, enumInfo->m_pEnumerators[e].m_nValue, enumInfo->m_pEnumerators[e].m_pName));
516516

517517
lines.push_back(indent + "]");
518518
}
@@ -616,7 +616,7 @@ static nlohmann::json GetPulseParams(const nlohmann::ordered_json& meta, const c
616616
if (auto prefix = type.find(enumPrefix); prefix != std::string::npos)
617617
{
618618
if (auto it = schemas.m_Enums.find(type.substr(prefix + enumPrefix.size())); it != schemas.m_Enums.end())
619-
paramJson["enumModule"] = it->second->m_pszProjectName;
619+
paramJson["enumModule"] = it->second->m_pProjectName;
620620
}
621621

622622
params.push_back(std::move(paramJson));
@@ -800,7 +800,7 @@ static const char* ValidateEntityClass(const CModule& module, const CEntityClass
800800
}
801801

802802
// The schema class, which can be in another module like CEntityInstance in entity2
803-
if (auto binding = classInfo->m_pSchemaBinding; binding && (!Modules::FindModuleContaining(binding) || !Modules::IsValidName(binding->m_pszProjectName)))
803+
if (auto binding = classInfo->m_pSchemaBinding; binding && (!Modules::FindModuleContaining(binding) || !Modules::IsValidName(binding->m_pProjectName)))
804804
return "schema binding";
805805

806806
if (entityClass->m_pfnEnumerateComponents && !Modules::IsInModule(module, (const void*)entityClass->m_pfnEnumerateComponents))
@@ -852,10 +852,10 @@ static const datamap_t* GetComponentDataMap(const ModuleSchemas_t& schemas, cons
852852
auto classInfo = it->second;
853853
for (int depth = 0; classInfo && depth < g_MaxDataMapDepth; depth++)
854854
{
855-
if (classInfo->m_pDataDescMap)
856-
return classInfo->m_pDataDescMap;
855+
if (classInfo->m_pDataDesc)
856+
return classInfo->m_pDataDesc;
857857

858-
classInfo = classInfo->m_nBaseClassCount > 0 ? classInfo->m_pBaseClasses[0].m_pClass : nullptr;
858+
classInfo = classInfo->m_nNumBaseClasses > 0 ? classInfo->m_pBaseClasses[0].m_pClass : nullptr;
859859
}
860860

861861
return nullptr;
@@ -1029,7 +1029,7 @@ static nlohmann::json GetEntitiesJson(std::map<std::string, std::map<std::string
10291029

10301030
// Values that are the same as the entity's own are left out: classModule when it's the module,
10311031
// and the declaring class and module of keys when they're the entity's class
1032-
const std::string classModule = classInfo->m_pSchemaBinding ? classInfo->m_pSchemaBinding->m_pszProjectName : module;
1032+
const std::string classModule = classInfo->m_pSchemaBinding ? classInfo->m_pSchemaBinding->m_pProjectName : module;
10331033

10341034
for (auto& key : entity.m_Keys)
10351035
{

‎src/main/dumpers/network/network.cpp‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#define INETCHANNEL_H
2525
#include <bitvec.h>
2626
#include <const.h>
27+
#include <engine2/server_class.h>
2728
#include <networksystem/inetworkserializer.h>
2829

2930
#include "appframework.h"
@@ -406,25 +407,25 @@ static bool AddNetworkClasses(CModule& module, Classes_t& classes)
406407
std::set<std::string> names;
407408
for (auto registration = *head; registration; registration = registration->m_pNext)
408409
{
409-
if (!Modules::IsInModule(module, registration) || !Modules::IsValidName(registration->m_pszClassName) ||
410-
!Modules::IsValidName(registration->m_pszNetworkName) || !names.insert(registration->m_pszClassName).second)
410+
if (!Modules::IsInModule(module, registration) || !Modules::IsValidName(registration->m_pDLLClassName) ||
411+
!Modules::IsValidName(registration->m_pNetworkName) || !names.insert(registration->m_pDLLClassName).second)
411412
{
412-
spdlog::critical("Network class {} in {} does not match, NetworkClassRegistration_t in gamedata.h needs updating", names.size(), module.m_pszModule);
413+
spdlog::critical("Network class {} in {} does not match, NetworkClassRegistration_t in the SDK needs updating", names.size(), module.m_pszModule);
413414
return false;
414415
}
415416

416417
// The client links its classes to the server's by network name, which so far is always the class name
417-
if (strcmp(registration->m_pszClassName, registration->m_pszNetworkName))
418+
if (strcmp(registration->m_pDLLClassName, registration->m_pNetworkName))
418419
{
419-
spdlog::critical("Network class {} in {} is networked as {}, which is not written", registration->m_pszClassName, module.m_pszModule,
420-
registration->m_pszNetworkName);
420+
spdlog::critical("Network class {} in {} is networked as {}, which is not written", registration->m_pDLLClassName, module.m_pszModule,
421+
registration->m_pNetworkName);
421422
return false;
422423
}
423424

424-
auto networkClass = classes.find(registration->m_pszClassName);
425+
auto networkClass = classes.find(registration->m_pDLLClassName);
425426
if (networkClass == classes.end())
426427
{
427-
spdlog::critical("Network class {} in {} is not in its network database", registration->m_pszClassName, module.m_pszModule);
428+
spdlog::critical("Network class {} in {} is not in its network database", registration->m_pDLLClassName, module.m_pszModule);
428429
return false;
429430
}
430431

‎src/main/dumpers/schemas/json_exporter.cpp‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ static json SerializeType(CSchemaType* type)
125125
{
126126
j["category"] = "declared_class";
127127
auto* classType = static_cast<CSchemaType_DeclaredClass*>(type);
128-
if (classType->m_pClassInfo && classType->m_pClassInfo->m_pszName)
128+
if (classType->m_pClassInfo && classType->m_pClassInfo->m_pName)
129129
{
130-
j["name"] = classType->m_pClassInfo->m_pszName;
131-
j["module"] = classType->m_pClassInfo->m_pszProjectName;
130+
j["name"] = classType->m_pClassInfo->m_pName;
131+
j["module"] = classType->m_pClassInfo->m_pProjectName;
132132
}
133133
else
134134
j["name"] = type->m_sTypeName.String();
@@ -138,10 +138,10 @@ static json SerializeType(CSchemaType* type)
138138
{
139139
j["category"] = "declared_enum";
140140
auto* enumType = static_cast<CSchemaType_DeclaredEnum*>(type);
141-
if (enumType->m_pEnumInfo && enumType->m_pEnumInfo->m_pszName)
141+
if (enumType->m_pEnumInfo && enumType->m_pEnumInfo->m_pName)
142142
{
143-
j["name"] = enumType->m_pEnumInfo->m_pszName;
144-
j["module"] = enumType->m_pEnumInfo->m_pszProjectName;
143+
j["name"] = enumType->m_pEnumInfo->m_pName;
144+
j["module"] = enumType->m_pEnumInfo->m_pProjectName;
145145
}
146146
else
147147
j["name"] = type->m_sTypeName.String();

‎src/main/dumpers/schemas/metadata_stringifier.cpp‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,10 @@ static void AddHiddenClassKeys(const SchemaClassInfoData_t* classInfo, std::unor
175175
if (!classInfo)
176176
return;
177177

178-
if (auto it = GameData::g_HiddenClassDefaultKeys.find(classInfo->m_pszName); it != GameData::g_HiddenClassDefaultKeys.end())
178+
if (auto it = GameData::g_HiddenClassDefaultKeys.find(classInfo->m_pName); it != GameData::g_HiddenClassDefaultKeys.end())
179179
keys.insert(it->second.begin(), it->second.end());
180180

181-
for (uint16_t i = 0; i < classInfo->m_nBaseClassCount; i++)
181+
for (uint16_t i = 0; i < classInfo->m_nNumBaseClasses; i++)
182182
AddHiddenClassKeys(classInfo->m_pBaseClasses[i].m_pClass, keys);
183183
}
184184

@@ -248,7 +248,7 @@ static bool HasMetadataValue(const SchemaMetadataEntryData_t& entry)
248248
if (!entry.m_pData)
249249
return false;
250250

251-
auto it = g_mapMetadataNameToValue.find(entry.m_pszName);
251+
auto it = g_mapMetadataNameToValue.find(entry.m_pName);
252252
return it == g_mapMetadataNameToValue.end() || it->second != MetadataValueType::FUNCTION;
253253
}
254254

@@ -258,11 +258,11 @@ static std::optional<std::string> GetMetadataValue(const SchemaMetadataEntryData
258258
if (!entry.m_pData)
259259
return {};
260260

261-
auto valueType = g_mapMetadataNameToValue.find(entry.m_pszName);
261+
auto valueType = g_mapMetadataNameToValue.find(entry.m_pName);
262262
if (valueType == g_mapMetadataNameToValue.end())
263263
{
264-
if (!g_unknownMetadataSamples.contains(entry.m_pszName))
265-
g_unknownMetadataSamples[entry.m_pszName] = fmt::format("on {}: {}", metadataTargetName, DescribeUnknownMetadata(entry.m_pData));
264+
if (!g_unknownMetadataSamples.contains(entry.m_pName))
265+
g_unknownMetadataSamples[entry.m_pName] = fmt::format("on {}: {}", metadataTargetName, DescribeUnknownMetadata(entry.m_pData));
266266

267267
return {};
268268
}
@@ -309,7 +309,7 @@ static std::optional<std::string> GetMetadataValue(const SchemaMetadataEntryData
309309

310310
IntermediateMetadata GetMetadata(const SchemaMetadataEntryData_t& entry, const char* metadataTargetName, const SchemaClassInfoData_t* classInfo)
311311
{
312-
IntermediateMetadata metadata{ .name = entry.m_pszName, .hasValue = HasMetadataValue(entry) };
312+
IntermediateMetadata metadata{ .name = entry.m_pName, .hasValue = HasMetadataValue(entry) };
313313
metadata.stringValue = GetMetadataValue(entry, metadataTargetName, classInfo, metadata.jsonValue);
314314
return metadata;
315315
}

0 commit comments

Comments
 (0)