diff options
author | Kahrl <kahrl@gmx.net> | 2013-05-04 02:08:52 +0200 |
---|---|---|
committer | Kahrl <kahrl@gmx.net> | 2013-05-26 00:23:33 +0200 |
commit | 96fe1de8322a57ad82fcab3540c1eb44f74b9989 (patch) | |
tree | 44bc5db4e9d002f2a1fb6506db72e390cabae249 /src/server.cpp | |
parent | 730d316efe18c57760cd5ec518a6191ac271ce61 (diff) | |
download | minetest-96fe1de8322a57ad82fcab3540c1eb44f74b9989.tar.xz |
Add ObjectRef.hud_set_hotbar_itemcount and add TOCLIENT_HUD_SET_PARAM
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp index 12695e1b4..4268bb809 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3687,6 +3687,22 @@ void Server::SendHUDSetFlags(u16 peer_id, u32 flags, u32 mask) m_con.Send(peer_id, 0, data, true); } +void Server::SendHUDSetParam(u16 peer_id, u16 param, const std::string &value) +{ + std::ostringstream os(std::ios_base::binary); + + // Write command + writeU16(os, TOCLIENT_HUD_SET_PARAM); + writeU16(os, param); + os<<serializeString(value); + + // Make data buffer + std::string s = os.str(); + SharedBuffer<u8> data((u8 *)s.c_str(), s.size()); + // Send as reliable + m_con.Send(peer_id, 0, data, true); +} + void Server::BroadcastChatMessage(const std::wstring &message) { for(std::map<u16, RemoteClient*>::iterator @@ -4684,6 +4700,18 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask) { return true; } +bool Server::hudSetHotbarItemcount(Player *player, s32 hotbar_itemcount) { + if (!player) + return false; + if (hotbar_itemcount <= 0 || hotbar_itemcount > HUD_HOTBAR_ITEMCOUNT_MAX) + return false; + + std::ostringstream os(std::ios::binary); + writeS32(os, hotbar_itemcount); + SendHUDSetParam(player->peer_id, HUD_PARAM_HOTBAR_ITEMCOUNT, os.str()); + return true; +} + void Server::notifyPlayers(const std::wstring msg) { BroadcastChatMessage(msg); |