summaryrefslogtreecommitdiff
path: root/src/content_sao.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-09 20:46:56 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-03-10 11:28:13 +0200
commit8db89b8136686a5721080d18e8a14f03404aa095 (patch)
treea6a87bc6a50b9ab2030930faae35ed22814c7669 /src/content_sao.cpp
parent8c01ad8a9da86fc76bc9a180ccab10ede726625a (diff)
downloadminetest-8db89b8136686a5721080d18e8a14f03404aa095.tar.gz
minetest-8db89b8136686a5721080d18e8a14f03404aa095.tar.bz2
minetest-8db89b8136686a5721080d18e8a14f03404aa095.zip
LuaEntity armor groups
Diffstat (limited to 'src/content_sao.cpp')
-rw-r--r--src/content_sao.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/content_sao.cpp b/src/content_sao.cpp
index 0c105bb0f..02a4eb1eb 100644
--- a/src/content_sao.cpp
+++ b/src/content_sao.cpp
@@ -354,7 +354,8 @@ LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos,
m_last_sent_position(0,0,0),
m_last_sent_velocity(0,0,0),
m_last_sent_position_timer(0),
- m_last_sent_move_precision(0)
+ m_last_sent_move_precision(0),
+ m_armor_groups_sent(false)
{
// Only register type if no environment supplied
if(env == NULL){
@@ -475,6 +476,21 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
fabs(m_yaw - m_last_sent_yaw) > 1.0){
sendPosition(true, false);
}
+
+ if(m_armor_groups_sent == false){
+ m_armor_groups_sent = true;
+ std::ostringstream os(std::ios::binary);
+ writeU8(os, LUAENTITY_CMD_UPDATE_ARMOR_GROUPS);
+ writeU16(os, m_armor_groups.size());
+ for(ItemGroupList::const_iterator i = m_armor_groups.begin();
+ i != m_armor_groups.end(); i++){
+ os<<serializeString(i->first);
+ writeS16(os, i->second);
+ }
+ // create message and add to list
+ ActiveObjectMessage aom(getId(), true, os.str());
+ m_messages_out.push_back(aom);
+ }
}
std::string LuaEntitySAO::getClientInitializationData()
@@ -685,6 +701,12 @@ std::string LuaEntitySAO::getName()
return m_init_name;
}
+void LuaEntitySAO::setArmorGroups(const ItemGroupList &armor_groups)
+{
+ m_armor_groups = armor_groups;
+ m_armor_groups_sent = false;
+}
+
void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end)
{
m_last_sent_move_precision = m_base_position.getDistanceFrom(