コード例 #1
0
ファイル: GroupManager.cs プロジェクト: Belxjander/Asuna
 /// <summary>
 /// Assign an avatar to a role
 /// </summary>
 /// <param name="group">Group to update</param>
 /// <param name="role">Role to assign to</param>
 /// <param name="member">Avatar to assign</param>
 public void AddToRole(LLUUID group, LLUUID role, LLUUID member)
 {
     libsecondlife.Packets.GroupRoleChangesPacket grc = new GroupRoleChangesPacket();
     grc.AgentData.AgentID = Client.Self.AgentID;
     grc.AgentData.SessionID = Client.Self.SessionID;
     grc.AgentData.GroupID = group;
     grc.RoleChange = new GroupRoleChangesPacket.RoleChangeBlock[1];
     grc.RoleChange[0] = new GroupRoleChangesPacket.RoleChangeBlock();
     //Add to members and role
     grc.RoleChange[0].MemberID = member;
     grc.RoleChange[0].RoleID = role;
     //0 = Add to Role
     grc.RoleChange[0].Change = 0;
     Client.Network.SendPacket(grc);
 }
コード例 #2
0
 /// <summary>Remove an avatar from a role</summary>
 /// <param name="group">Group ID to update</param>
 /// <param name="role">Role ID to be removed from</param>
 /// <param name="member">Avatar's Key to remove</param>
 public void RemoveFromRole(UUID group, UUID role, UUID member)
 {
     OpenMetaverse.Packets.GroupRoleChangesPacket grc = new GroupRoleChangesPacket();
     grc.AgentData.AgentID = Client.Self.AgentID;
     grc.AgentData.SessionID = Client.Self.SessionID;
     grc.AgentData.GroupID = group;
     grc.RoleChange = new GroupRoleChangesPacket.RoleChangeBlock[1];
     grc.RoleChange[0] = new GroupRoleChangesPacket.RoleChangeBlock();
     //Add to members and role
     grc.RoleChange[0].MemberID = member;
     grc.RoleChange[0].RoleID = role;
     //1 = Remove From Role TODO: this should be in an enum
     grc.RoleChange[0].Change = 1;
     Client.Network.SendPacket(grc);
 }
コード例 #3
0
        private void UpdateMemberRoles()
        {
            EnhancedGroupMember m = (EnhancedGroupMember)lvwAssignedRoles.Tag;
            GroupRoleChangesPacket p = new GroupRoleChangesPacket();
            p.AgentData.AgentID = client.Self.AgentID;
            p.AgentData.SessionID = client.Self.SessionID;
            p.AgentData.GroupID = group.ID;
            List<GroupRoleChangesPacket.RoleChangeBlock> changes = new List<GroupRoleChangesPacket.RoleChangeBlock>();

            foreach (ListViewItem item in lvwAssignedRoles.Items)
            {
                if (!(item.Tag is GroupRole))
                    continue;

                GroupRole role = (GroupRole)item.Tag;
                var foundRole = roleMembers.Find((KeyValuePair<UUID, UUID> kvp) => { return kvp.Value == m.Base.ID && kvp.Key == role.ID; });
                bool hasRole = foundRole.Value == m.Base.ID;

                if (item.Checked != hasRole)
                {
                    if (item.Checked)
                        roleMembers.Add(new KeyValuePair<UUID, UUID>(role.ID, m.Base.ID));
                    else
                        roleMembers.Remove(foundRole);

                    var rc = new GroupRoleChangesPacket.RoleChangeBlock();
                    rc.MemberID = m.Base.ID;
                    rc.RoleID = role.ID;
                    rc.Change = item.Checked ? 0u : 1u;
                    changes.Add(rc);
                }
            }

            if (changes.Count > 0)
            {
                p.RoleChange = changes.ToArray();
                client.Network.CurrentSim.SendPacket(p);
            }

            btnApply.Enabled = false;
            lvwMemberDetails_SelectedIndexChanged(lvwMemberDetails, EventArgs.Empty);
        }