Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
TracerDS committed Jun 16, 2024
1 parent 85027ef commit 2295099
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 31 deletions.
11 changes: 6 additions & 5 deletions Client/mods/deathmatch/logic/lua/CLuaArgument.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,8 @@ void CLuaArgument::ReadTable(const CLuaArguments* table) noexcept

CClientEntity* CLuaArgument::GetElement() const noexcept
{
return CElementIDs::GetElement(TO_ELEMENTID(m_pUserData));
ElementID ID = TO_ELEMENTID(m_pUserData);
return CElementIDs::GetElement(ID);
}

void CLuaArgument::Push(lua_State* luaVM, CFastHashMap<CLuaArguments*, int>* pKnownTables) const noexcept
Expand Down Expand Up @@ -581,7 +582,7 @@ bool CLuaArgument::ReadFromBitStream(NetBitStreamInterface& bitStream, std::vect
}

// Can't use bitStream.Version() here as it is sometimes not set
bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) const noexcept
bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) const noexcept
{
SLuaTypeSync type;

Expand Down Expand Up @@ -609,7 +610,7 @@ bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashM
// Table argument
case LUA_TTABLE:
{
ulong* pTableId;
std::uint32_t* pTableId;
if (pKnownTables && (pTableId = MapFind(*pKnownTables, m_pTableData)))
{
// Self-referencing table
Expand Down Expand Up @@ -774,7 +775,7 @@ void CLuaArgument::DeleteTableData() noexcept
m_pTableData = nullptr;
}

json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) noexcept
json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) noexcept
{
switch (GetType())
{
Expand All @@ -788,7 +789,7 @@ json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaA
}
case LUA_TTABLE:
{
ulong* pTableId;
std::uint32_t* pTableId;
if (pKnownTables && (pTableId = MapFind(*pKnownTables, m_pTableData)))
{
// Self-referencing table
Expand Down
4 changes: 2 additions & 2 deletions Client/mods/deathmatch/logic/lua/CLuaArgument.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ class CLuaArgument
CClientEntity* GetElement() const noexcept;

bool ReadFromBitStream(NetBitStreamInterface& bitStream, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) const noexcept;
json_object* WriteToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) const noexcept;
json_object* WriteToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) noexcept;
bool ReadFromJSONObject(json_object* object, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
char* WriteToString(char* szBuffer, int length) noexcept;

Expand Down
25 changes: 13 additions & 12 deletions Server/mods/deathmatch/logic/lua/CLuaArgument.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -344,28 +344,28 @@ void CLuaArgument::ReadElement(const CElement* pElement) noexcept
}

m_iType = LUA_TUSERDATA;
m_pUserData = reinterpret_cast<void*>(pElement->GetID().Value());
m_pUserData = reinterpret_cast<void*>(&pElement->GetID().Value());
}

void CLuaArgument::ReadElementID(ElementID ID) noexcept
{
m_strString = "";
DeleteTableData();
m_iType = LUA_TUSERDATA;
m_pUserData = (void*)reinterpret_cast<unsigned int*>(ID.Value());
m_pUserData = (void*)reinterpret_cast<std::uint32_t*>(&ID.Value());
}

void CLuaArgument::ReadScriptID(std::uint32_t uiScriptID) noexcept
{
m_strString = "";
DeleteTableData();
m_iType = LUA_TUSERDATA;
m_pUserData = reinterpret_cast<void*>(uiScriptID);
m_pUserData = reinterpret_cast<void*>(&uiScriptID);
}

CElement* CLuaArgument::GetElement() const noexcept
{
return CElementIDs::GetElement(TO_ELEMENTID(m_pUserData));
return CElementIDs::GetElement(*reinterpret_cast<std::uint32_t*>(m_pUserData));
}

bool CLuaArgument::GetAsString(SString& strBuffer) noexcept
Expand Down Expand Up @@ -558,7 +558,7 @@ bool CLuaArgument::ReadFromBitStream(NetBitStreamInterface& bitStream, std::vect
}

// Can't use bitStream.Version() here as it is sometimes not set
bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) const noexcept
bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) const noexcept
{
SLuaTypeSync type;

Expand Down Expand Up @@ -586,7 +586,7 @@ bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashM
// Table argument
case LUA_TTABLE:
{
ulong* pThingy;
std::uint32_t* pThingy;
if (pKnownTables && (pThingy = MapFind(*pKnownTables, m_pTableData)))
{
// Self-referencing table
Expand Down Expand Up @@ -664,7 +664,7 @@ bool CLuaArgument::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashM
bitStream.Write(&type);

// Write its length
uint uiLength = sizeTemp;
auto uiLength = static_cast<std::uint32_t>(sizeTemp);
bitStream.WriteCompressed(uiLength);

// Write the content too if it's not empty
Expand Down Expand Up @@ -745,7 +745,7 @@ void CLuaArgument::DeleteTableData() noexcept
m_pTableData = nullptr;
}

json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) noexcept
json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) noexcept
{
switch (GetType())
{
Expand All @@ -759,7 +759,7 @@ json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaA
}
case LUA_TTABLE:
{
ulong* pTableId;
std::uint32_t* pTableId;
if (pKnownTables && (pTableId = MapFind(*pKnownTables, m_pTableData)))
{
// Self-referencing table
Expand Down Expand Up @@ -795,7 +795,7 @@ json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaA
}
if (strTemp.length() <= USHRT_MAX)
{
return json_object_new_string_len((char*)strTemp.c_str(), strTemp.length());
return json_object_new_string_len((char*)strTemp.c_str(), static_cast<int>(strTemp.length()));
}
else
{
Expand All @@ -807,7 +807,7 @@ json_object* CLuaArgument::WriteToJSONObject(bool bSerialize, CFastHashMap<CLuaA
case LUA_TUSERDATA:
{
CElement* pElement = GetElement();
CResource* pResource = g_pGame->GetResourceManager()->GetResourceFromScriptID(reinterpret_cast<unsigned long>(GetUserData()));
CResource* pResource = g_pGame->GetResourceManager()->GetResourceFromScriptID(*reinterpret_cast<std::uint32_t*>(GetUserData()));

// Elements are dynamic, so storing them is potentially unsafe
if (pElement && bSerialize)
Expand Down Expand Up @@ -903,8 +903,9 @@ char* CLuaArgument::WriteToString(char* szBuffer, int length) noexcept
case LUA_TLIGHTUSERDATA:
case LUA_TUSERDATA:
{
auto id = *reinterpret_cast<std::uint32_t*>(GetUserData());
CElement* pElement = GetElement();
CResource* pResource = g_pGame->GetResourceManager()->GetResourceFromScriptID(reinterpret_cast<unsigned long>(GetUserData()));
CResource* pResource = g_pGame->GetResourceManager()->GetResourceFromScriptID(id);
if (pElement)
{
snprintf(szBuffer, length, "#E#%d", (int)pElement->GetID().Value());
Expand Down
4 changes: 2 additions & 2 deletions Server/mods/deathmatch/logic/lua/CLuaArgument.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ class CLuaArgument
bool GetAsString(SString& strBuffer) noexcept;

bool ReadFromBitStream(NetBitStreamInterface& bitStream, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) const noexcept;
json_object* WriteToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) const noexcept;
json_object* WriteToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) noexcept;
bool ReadFromJSONObject(json_object* object, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
char* WriteToString(char* szBuffer, int length) noexcept;

Expand Down
16 changes: 8 additions & 8 deletions Server/mods/deathmatch/logic/lua/CLuaArguments.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ void CLuaArguments::PushAsTable(lua_State* luaVM, CFastHashMap<CLuaArguments*, i
// push it onto the known tables
auto size = pKnownTables->size();
lua_getfield(luaVM, LUA_REGISTRYINDEX, "cache");
lua_pushnumber(luaVM, ++size);
lua_pushnumber(luaVM, static_cast<lua_Number>(++size));
lua_pushvalue(luaVM, -3);
lua_settable(luaVM, -3);
lua_pop(luaVM, 1);
Expand Down Expand Up @@ -213,7 +213,7 @@ bool CLuaArguments::Call(CLuaMain* pLuaMain, const CLuaFunctionRef& iLuaFunction
// Call the function with our arguments
pLuaMain->ResetInstructionCount();

int iret = pLuaMain->PCall(luaVM, m_Arguments.size(), LUA_MULTRET, 0);
int iret = pLuaMain->PCall(luaVM, static_cast<int>(m_Arguments.size()), LUA_MULTRET, 0);
if (iret == LUA_ERRRUN || iret == LUA_ERRMEM)
{
SString strRes = ConformResourcePath(lua_tostring(luaVM, -1));
Expand Down Expand Up @@ -526,18 +526,18 @@ bool CLuaArguments::ReadFromBitStream(NetBitStreamInterface& bitStream, std::vec
return true;
}

bool CLuaArguments::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) const noexcept
bool CLuaArguments::WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) const noexcept
{
bool bKnownTablesCreated = false;
if (!pKnownTables)
{
pKnownTables = new CFastHashMap<CLuaArguments*, unsigned long>();
pKnownTables = new CFastHashMap<CLuaArguments*, std::uint32_t>();
bKnownTablesCreated = true;
}

bool bSuccess = true;
pKnownTables->insert(make_pair((CLuaArguments*)this, pKnownTables->size()));
bitStream.WriteCompressed(static_cast<unsigned int>(m_Arguments.size()));
bitStream.WriteCompressed(static_cast<std::uint32_t>(m_Arguments.size()));

for (const auto& pArg : m_Arguments)
{
Expand Down Expand Up @@ -578,12 +578,12 @@ json_object* CLuaArguments::WriteToJSONArray(bool bSerialize) noexcept
return my_array;
}

json_object* CLuaArguments::WriteTableToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables) noexcept
json_object* CLuaArguments::WriteTableToJSONObject(bool bSerialize, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables) noexcept
{
bool bKnownTablesCreated = false;
if (!pKnownTables)
{
pKnownTables = new CFastHashMap<CLuaArguments*, unsigned long>();
pKnownTables = new CFastHashMap<CLuaArguments*, std::uint32_t>();
bKnownTablesCreated = true;
}

Expand Down Expand Up @@ -683,7 +683,7 @@ bool CLuaArguments::ReadFromJSONString(const char* szJSON) noexcept

std::vector<CLuaArguments*> knownTables;

for (auto i = 0; i < json_object_array_length(object); i++)
for (std::size_t i = 0; i < json_object_array_length(object); i++)
{
json_object* arrayObject = json_object_array_get_idx(object, i);
CLuaArgument* pArgument = new CLuaArgument();
Expand Down
4 changes: 2 additions & 2 deletions Server/mods/deathmatch/logic/lua/CLuaArguments.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ class CLuaArguments

bool ReadFromBitStream(NetBitStreamInterface& bitStream, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
bool ReadFromJSONString(const char* szJSON) noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) const noexcept;
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) const noexcept;
bool WriteToJSONString(std::string& strJSON, bool bSerialize = false, int flags = JSON_C_TO_STRING_PLAIN) noexcept;
json_object* WriteTableToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = nullptr) noexcept;
json_object* WriteTableToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, std::uint32_t>* pKnownTables = nullptr) noexcept;
json_object* WriteToJSONArray(bool bSerialize) noexcept;
bool ReadFromJSONObject(json_object* object, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
bool ReadFromJSONArray(json_object* object, std::vector<CLuaArguments*>* pKnownTables = nullptr) noexcept;
Expand Down

0 comments on commit 2295099

Please sign in to comment.