Exemplo n.º 1
0
        private void GroupRoleDataHandler(Packet packet, Simulator simulator)
        {
            GroupRoleDataReplyPacket       roles          = (GroupRoleDataReplyPacket)packet;
            Dictionary <LLUUID, GroupRole> groupRoleCache = null;

            lock (GroupRolesCaches)
            {
                // If nothing is registered to receive this RequestID drop the data
                if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID))
                {
                    groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID];

                    foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData)
                    {
                        GroupRole groupRole = new GroupRole(block.RoleID);

                        groupRole.Description = Helpers.FieldToString(block.Description);
                        groupRole.Name        = Helpers.FieldToString(block.Name);
                        groupRole.Powers      = block.Powers;
                        groupRole.Title       = Helpers.FieldToString(block.Title);

                        groupRoleCache[block.RoleID] = groupRole;
                    }
                }
            }

            // Check if we've received all the group members that are showing up
            if (groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount)
            {
                GroupRolesCallbacks[roles.GroupData.GroupID](groupRoleCache);
            }
        }
        private void GroupRoleDataHandler(Packet packet, Simulator simulator)
        {
            GroupRoleDataReplyPacket roles = (GroupRoleDataReplyPacket)packet;
            Dictionary<LLUUID, GroupRole> groupRoleCache = null;

            lock (GroupRolesCaches)
            {
                // If nothing is registered to receive this RequestID drop the data
                if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID))
                {
                    groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID];

                    foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData)
                    {
                        GroupRole groupRole = new GroupRole(block.RoleID);

                        groupRole.Description = Helpers.FieldToString(block.Description);
                        groupRole.Name = Helpers.FieldToString(block.Name);
                        groupRole.Powers = block.Powers;
                        groupRole.Title = Helpers.FieldToString(block.Title);

                        groupRoleCache[block.RoleID] = groupRole;
                    }
                }
            }

            // Check if we've received all the group members that are showing up
            if (groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount)
            {
                GroupRolesCallbacks[roles.GroupData.GroupID](groupRoleCache);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Create a new role
 /// </summary>
 /// <param name="group">Group to update</param>
 /// <param name="role">Role to create</param>
 public void CreateRole(LLUUID group, GroupRole role)
 {
     libsecondlife.Packets.GroupRoleUpdatePacket gru = new GroupRoleUpdatePacket();
     gru.AgentData.AgentID = Client.Self.AgentID;
     gru.AgentData.SessionID = Client.Self.SessionID;
     gru.AgentData.GroupID = group;
     gru.RoleData = new GroupRoleUpdatePacket.RoleDataBlock[1];
     gru.RoleData[0].Name = Helpers.StringToField(role.Name);
     gru.RoleData[0].Description = Helpers.StringToField(role.Description);
     gru.RoleData[0].Powers = (ulong)role.Powers;
     gru.RoleData[0].Title = Helpers.StringToField(role.Title);
     gru.RoleData[0].UpdateType = (byte)GroupRoleUpdate.Create;
     Client.Network.SendPacket(gru);
 }
Exemplo n.º 4
0
        private void GroupRoleDataHandler(Packet packet, Simulator simulator)
        {
            GroupRoleDataReplyPacket roles = (GroupRoleDataReplyPacket)packet;
            Dictionary<LLUUID, GroupRole> groupRoleCache = null;

            lock (GroupRolesCaches)
            {
                // If nothing is registered to receive this RequestID drop the data
                if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID))
                {
                    groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID];

                    foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData)
                    {
                        GroupRole groupRole = new GroupRole();

                        groupRole.ID = block.RoleID;
                        groupRole.Description = Helpers.FieldToUTF8String(block.Description);
                        groupRole.Name = Helpers.FieldToUTF8String(block.Name);
                        groupRole.Powers = (GroupPowers)block.Powers;
                        groupRole.Title = Helpers.FieldToUTF8String(block.Title);

                        groupRoleCache[block.RoleID] = groupRole;
                    }
                }
            }

            // Check if we've received all the group members that are showing up
            if (OnGroupRoles != null && groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount)
            {
                try { OnGroupRoles(groupRoleCache); }
                catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
            }
        }