Skip to content

Commit

Permalink
Adding network msg to network msg
Browse files Browse the repository at this point in the history
  • Loading branch information
ArturKnopik committed Dec 19, 2024
1 parent ccfd367 commit 5aaa927
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/luascript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2527,6 +2527,7 @@ void LuaScriptInterface::registerFunctions()
registerMethod(L, "NetworkMessage", "addDouble", LuaScriptInterface::luaNetworkMessageAddDouble);
registerMethod(L, "NetworkMessage", "addItem", LuaScriptInterface::luaNetworkMessageAddItem);
registerMethod(L, "NetworkMessage", "addItemId", LuaScriptInterface::luaNetworkMessageAddItemId);
registerMethod(L, "NetworkMessage", "addNetworkMessage", LuaScriptInterface::luaNetworkMessageAddNetworkMessage);

registerMethod(L, "NetworkMessage", "reset", LuaScriptInterface::luaNetworkMessageReset);
registerMethod(L, "NetworkMessage", "seek", LuaScriptInterface::luaNetworkMessageSeek);
Expand Down Expand Up @@ -6293,6 +6294,26 @@ int LuaScriptInterface::luaNetworkMessageAddItemId(lua_State* L)
return 1;
}

int LuaScriptInterface::luaNetworkMessageAddNetworkMessage(lua_State* L)
{
// networkMessage:addNetworkMessage(msg)
NetworkMessage* message = tfs::lua::getUserdata<NetworkMessage>(L, 1);
if (!message) {
lua_pushnil(L);
return 1;
}

NetworkMessage* msgToAdd = tfs::lua::getUserdata<NetworkMessage>(L, 2);
if (!msgToAdd) {
lua_pushnil(L);
return 1;
}

message->addNetworkMessage(msgToAdd);
tfs::lua::pushBoolean(L, true);
return 1;
}

int LuaScriptInterface::luaNetworkMessageReset(lua_State* L)
{
// networkMessage:reset()
Expand Down
1 change: 1 addition & 0 deletions src/luascript.h
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ class LuaScriptInterface
static int luaNetworkMessageAddDouble(lua_State* L);
static int luaNetworkMessageAddItem(lua_State* L);
static int luaNetworkMessageAddItemId(lua_State* L);
static int luaNetworkMessageAddNetworkMessage(lua_State* L);

static int luaNetworkMessageReset(lua_State* L);
static int luaNetworkMessageSeek(lua_State* L);
Expand Down
16 changes: 16 additions & 0 deletions src/networkmessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,19 @@ void NetworkMessage::addItem(const Item* item)
}

void NetworkMessage::addItemId(uint16_t itemId) { add<uint16_t>(Item::items[itemId].clientId); }

void NetworkMessage::addNetworkMessage(NetworkMessage* networkMsg)
{
if (!networkMsg) {
return;
}

if (!canAdd(networkMsg->getLength())) {
return;
}

std::memcpy(buffer.data() + info.position, networkMsg->getBuffer() + INITIAL_BUFFER_POSITION,
networkMsg->getLength());
info.position += networkMsg->getLength();
info.length += networkMsg->getLength();
}
1 change: 1 addition & 0 deletions src/networkmessage.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ class NetworkMessage
void addItem(uint16_t id, uint8_t count);
void addItem(const Item* item);
void addItemId(uint16_t itemId);
void addNetworkMessage(NetworkMessage* networkMsg);

MsgSize_t getLength() const { return info.length; }

Expand Down

0 comments on commit 5aaa927

Please sign in to comment.