diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-15 01:00:16 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:42 +0200 |
commit | 4b8e4dae589cabef054991c08eb2cd47c867994a (patch) | |
tree | eb874a25245fa0a287ce5c8454887d7a88cca1df /src/server.cpp | |
parent | 0754f2a7af831922e26c12e707dfb6724897322f (diff) | |
download | hax-minetest-server-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.gz hax-minetest-server-4b8e4dae589cabef054991c08eb2cd47c867994a.zip |
Tool definition transfer to client
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp index 75fb7cd72..ca00ed29d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2106,6 +2106,9 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) Send some initialization data */ + // Send tool definitions + SendToolDef(m_con, peer_id, m_toolmgr); + // Send player info to all players SendPlayerInfos(); @@ -3594,6 +3597,29 @@ void Server::SendDeathscreen(con::Connection &con, u16 peer_id, con.Send(peer_id, 0, data, true); } +void Server::SendToolDef(con::Connection &con, u16 peer_id, + IToolDefManager *tooldef) +{ + DSTACK(__FUNCTION_NAME); + std::ostringstream os(std::ios_base::binary); + + /* + u16 command + u32 length of the next item + serialized ToolDefManager + */ + writeU16(os, TOCLIENT_TOOLDEF); + std::ostringstream tmp_os(std::ios::binary); + tooldef->serialize(tmp_os); + os<<serializeLongString(tmp_os.str()); + + // Make data buffer + std::string s = os.str(); + SharedBuffer<u8> data((u8*)s.c_str(), s.size()); + // Send as reliable + con.Send(peer_id, 0, data, true); +} + /* Non-static send methods */ |