Lotsa plumming :)
parent
a11fa9055a
commit
6775b7d02d
|
@ -52,6 +52,61 @@ namespace OpenSim.Framework
|
||||||
//
|
//
|
||||||
public bool AcceptNotices = true;
|
public bool AcceptNotices = true;
|
||||||
public int Contribution = 0;
|
public int Contribution = 0;
|
||||||
public uint GroupPowers = 0;
|
public ulong GroupPowers = 0;
|
||||||
|
public bool Active = false;
|
||||||
|
public UUID ActiveRole = UUID.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GroupTitlesData
|
||||||
|
{
|
||||||
|
public string Name;
|
||||||
|
public UUID UUID;
|
||||||
|
public bool Selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GroupProfileData
|
||||||
|
{
|
||||||
|
public UUID GroupID;
|
||||||
|
public string Name;
|
||||||
|
public string Charter;
|
||||||
|
public bool ShowInList;
|
||||||
|
public string MemberTitle;
|
||||||
|
public ulong PowersMask;
|
||||||
|
public UUID InsigniaID;
|
||||||
|
public UUID FounderID;
|
||||||
|
public int MembershipFee;
|
||||||
|
public bool OpenEnrollment;
|
||||||
|
public int Money;
|
||||||
|
public int GroupMembershipCount;
|
||||||
|
public int GroupRolesCount;
|
||||||
|
public bool AllowPublish;
|
||||||
|
public bool MaturePublish;
|
||||||
|
public UUID OwnerRole;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GroupMembersData
|
||||||
|
{
|
||||||
|
public UUID AgentID;
|
||||||
|
public int Contribution;
|
||||||
|
public string OnlineStatus;
|
||||||
|
public ulong AgentPowers;
|
||||||
|
public string Title;
|
||||||
|
public bool IsOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GroupRolesData
|
||||||
|
{
|
||||||
|
public UUID RoleID;
|
||||||
|
public string Name;
|
||||||
|
public string Title;
|
||||||
|
public string Description;
|
||||||
|
public ulong Powers;
|
||||||
|
public int Members;
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GroupRoleMembersData
|
||||||
|
{
|
||||||
|
public UUID RoleID;
|
||||||
|
public UUID MemberID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Statistics;
|
using OpenSim.Framework.Statistics;
|
||||||
using OpenSim.Region.ClientStack.LindenUDP;
|
using OpenSim.Region.ClientStack.LindenUDP;
|
||||||
|
using OpenSim.Region.Interfaces;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
using Timer = System.Timers.Timer;
|
using Timer = System.Timers.Timer;
|
||||||
|
|
||||||
|
@ -6483,6 +6484,260 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PacketType.ActivateGroup:
|
||||||
|
ActivateGroupPacket activateGroupPacket = (ActivateGroupPacket)Pack;
|
||||||
|
IGroupsModule grps = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
if (grps != null)
|
||||||
|
{
|
||||||
|
grps.ActivateGroup(this, activateGroupPacket.AgentData.GroupID);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.GroupTitlesRequest:
|
||||||
|
GroupTitlesRequestPacket groupTitlesRequest =
|
||||||
|
(GroupTitlesRequestPacket)Pack;
|
||||||
|
|
||||||
|
IGroupsModule grps2 = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
if (grps2 != null)
|
||||||
|
{
|
||||||
|
GroupTitlesReplyPacket groupTitlesReply = (GroupTitlesReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupTitlesReply);
|
||||||
|
|
||||||
|
groupTitlesReply.AgentData =
|
||||||
|
new GroupTitlesReplyPacket.AgentDataBlock();
|
||||||
|
|
||||||
|
groupTitlesReply.AgentData.AgentID = AgentId;
|
||||||
|
groupTitlesReply.AgentData.GroupID =
|
||||||
|
groupTitlesRequest.AgentData.GroupID;
|
||||||
|
|
||||||
|
groupTitlesReply.AgentData.RequestID =
|
||||||
|
groupTitlesRequest.AgentData.RequestID;
|
||||||
|
|
||||||
|
List<GroupTitlesData> titles =
|
||||||
|
grps2.GroupTitlesRequest(this,
|
||||||
|
groupTitlesRequest.AgentData.GroupID);
|
||||||
|
|
||||||
|
groupTitlesReply.GroupData =
|
||||||
|
new GroupTitlesReplyPacket.
|
||||||
|
GroupDataBlock[titles.Count];
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
foreach (GroupTitlesData d in titles)
|
||||||
|
{
|
||||||
|
groupTitlesReply.GroupData[i] =
|
||||||
|
new GroupTitlesReplyPacket.
|
||||||
|
GroupDataBlock();
|
||||||
|
|
||||||
|
groupTitlesReply.GroupData[i].Title =
|
||||||
|
Utils.StringToBytes(d.Name);
|
||||||
|
groupTitlesReply.GroupData[i].RoleID =
|
||||||
|
d.UUID;
|
||||||
|
groupTitlesReply.GroupData[i].Selected =
|
||||||
|
d.Selected;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
OutPacket(groupTitlesReply, ThrottleOutPacketType.Task);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.GroupProfileRequest:
|
||||||
|
GroupProfileRequestPacket groupProfileRequest =
|
||||||
|
(GroupProfileRequestPacket)Pack;
|
||||||
|
|
||||||
|
IGroupsModule grps3 = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
if (grps3 != null)
|
||||||
|
{
|
||||||
|
GroupProfileReplyPacket groupProfileReply = (GroupProfileReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupProfileReply);
|
||||||
|
|
||||||
|
groupProfileReply.AgentData = new GroupProfileReplyPacket.AgentDataBlock();
|
||||||
|
groupProfileReply.GroupData = new GroupProfileReplyPacket.GroupDataBlock();
|
||||||
|
groupProfileReply.AgentData.AgentID = AgentId;
|
||||||
|
|
||||||
|
GroupProfileData d = grps3.GroupProfileRequest(this,
|
||||||
|
groupProfileRequest.GroupData.GroupID);
|
||||||
|
|
||||||
|
groupProfileReply.GroupData.GroupID = d.GroupID;
|
||||||
|
groupProfileReply.GroupData.Name = Utils.StringToBytes(d.Name);
|
||||||
|
groupProfileReply.GroupData.Charter = Utils.StringToBytes(d.Charter);
|
||||||
|
groupProfileReply.GroupData.ShowInList = d.ShowInList;
|
||||||
|
groupProfileReply.GroupData.MemberTitle = Utils.StringToBytes(d.MemberTitle);
|
||||||
|
groupProfileReply.GroupData.PowersMask = d.PowersMask;
|
||||||
|
groupProfileReply.GroupData.InsigniaID = d.InsigniaID;
|
||||||
|
groupProfileReply.GroupData.FounderID = d.FounderID;
|
||||||
|
groupProfileReply.GroupData.MembershipFee = d.MembershipFee;
|
||||||
|
groupProfileReply.GroupData.OpenEnrollment = d.OpenEnrollment;
|
||||||
|
groupProfileReply.GroupData.Money = d.Money;
|
||||||
|
groupProfileReply.GroupData.GroupMembershipCount = d.GroupMembershipCount;
|
||||||
|
groupProfileReply.GroupData.GroupRolesCount = d.GroupRolesCount;
|
||||||
|
groupProfileReply.GroupData.AllowPublish = d.AllowPublish;
|
||||||
|
groupProfileReply.GroupData.MaturePublish = d.MaturePublish;
|
||||||
|
groupProfileReply.GroupData.OwnerRole = d.OwnerRole;
|
||||||
|
|
||||||
|
OutPacket(groupProfileReply, ThrottleOutPacketType.Task);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.GroupMembersRequest:
|
||||||
|
GroupMembersRequestPacket groupMembersRequestPacket =
|
||||||
|
(GroupMembersRequestPacket)Pack;
|
||||||
|
|
||||||
|
IGroupsModule grps4 = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
List<GroupMembersData> members =
|
||||||
|
grps4.GroupMembersRequest(this, groupMembersRequestPacket.GroupData.GroupID);
|
||||||
|
|
||||||
|
if (grps4 != null)
|
||||||
|
{
|
||||||
|
GroupMembersReplyPacket groupMembersReply = (GroupMembersReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupMembersReply);
|
||||||
|
|
||||||
|
groupMembersReply.AgentData =
|
||||||
|
new GroupMembersReplyPacket.AgentDataBlock();
|
||||||
|
groupMembersReply.GroupData =
|
||||||
|
new GroupMembersReplyPacket.GroupDataBlock();
|
||||||
|
groupMembersReply.MemberData =
|
||||||
|
new GroupMembersReplyPacket.MemberDataBlock[
|
||||||
|
members.Count];
|
||||||
|
|
||||||
|
groupMembersReply.AgentData.AgentID = AgentId;
|
||||||
|
groupMembersReply.GroupData.GroupID =
|
||||||
|
groupMembersRequestPacket.GroupData.GroupID;
|
||||||
|
groupMembersReply.GroupData.RequestID =
|
||||||
|
groupMembersRequestPacket.GroupData.RequestID;
|
||||||
|
groupMembersReply.GroupData.MemberCount = members.Count;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
foreach (GroupMembersData m in members)
|
||||||
|
{
|
||||||
|
groupMembersReply.MemberData[i] =
|
||||||
|
new GroupMembersReplyPacket.MemberDataBlock();
|
||||||
|
groupMembersReply.MemberData[i].AgentID =
|
||||||
|
m.AgentID;
|
||||||
|
groupMembersReply.MemberData[i].Contribution =
|
||||||
|
m.Contribution;
|
||||||
|
groupMembersReply.MemberData[i].OnlineStatus =
|
||||||
|
Utils.StringToBytes(m.OnlineStatus);
|
||||||
|
groupMembersReply.MemberData[i].AgentPowers =
|
||||||
|
m.AgentPowers;
|
||||||
|
groupMembersReply.MemberData[i].Title =
|
||||||
|
Utils.StringToBytes(m.Title);
|
||||||
|
groupMembersReply.MemberData[i].IsOwner =
|
||||||
|
m.IsOwner;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
OutPacket(groupMembersReply, ThrottleOutPacketType.Task);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.GroupRoleDataRequest:
|
||||||
|
GroupRoleDataRequestPacket groupRolesRequest =
|
||||||
|
(GroupRoleDataRequestPacket)Pack;
|
||||||
|
|
||||||
|
IGroupsModule grps5 = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
if (grps5 != null)
|
||||||
|
{
|
||||||
|
GroupRoleDataReplyPacket groupRolesReply = (GroupRoleDataReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupRoleDataReply);
|
||||||
|
|
||||||
|
groupRolesReply.AgentData =
|
||||||
|
new GroupRoleDataReplyPacket.AgentDataBlock();
|
||||||
|
|
||||||
|
groupRolesReply.AgentData.AgentID = AgentId;
|
||||||
|
|
||||||
|
groupRolesReply.GroupData =
|
||||||
|
new GroupRoleDataReplyPacket.
|
||||||
|
GroupDataBlock();
|
||||||
|
|
||||||
|
groupRolesReply.GroupData.GroupID =
|
||||||
|
groupRolesRequest.GroupData.GroupID;
|
||||||
|
|
||||||
|
groupRolesReply.GroupData.RequestID =
|
||||||
|
groupRolesRequest.GroupData.RequestID;
|
||||||
|
|
||||||
|
List<GroupRolesData> titles =
|
||||||
|
grps5.GroupRoleDataRequest(this,
|
||||||
|
groupRolesRequest.GroupData.GroupID);
|
||||||
|
|
||||||
|
groupRolesReply.GroupData.RoleCount =
|
||||||
|
titles.Count;
|
||||||
|
|
||||||
|
groupRolesReply.RoleData =
|
||||||
|
new GroupRoleDataReplyPacket.
|
||||||
|
RoleDataBlock[titles.Count];
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
foreach (GroupRolesData d in titles)
|
||||||
|
{
|
||||||
|
groupRolesReply.RoleData[i] =
|
||||||
|
new GroupRoleDataReplyPacket.
|
||||||
|
RoleDataBlock();
|
||||||
|
|
||||||
|
groupRolesReply.RoleData[i].RoleID =
|
||||||
|
d.RoleID;
|
||||||
|
groupRolesReply.RoleData[i].Name =
|
||||||
|
Utils.StringToBytes(d.Name);
|
||||||
|
groupRolesReply.RoleData[i].Title =
|
||||||
|
Utils.StringToBytes(d.Title);
|
||||||
|
groupRolesReply.RoleData[i].Description =
|
||||||
|
Utils.StringToBytes(d.Description);
|
||||||
|
groupRolesReply.RoleData[i].Powers =
|
||||||
|
d.Powers;
|
||||||
|
groupRolesReply.RoleData[i].Members =
|
||||||
|
(uint)d.Members;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(groupRolesReply.ToString());
|
||||||
|
OutPacket(groupRolesReply, ThrottleOutPacketType.Task);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PacketType.GroupRoleMembersRequest:
|
||||||
|
GroupRoleMembersRequestPacket groupRoleMembersRequest =
|
||||||
|
(GroupRoleMembersRequestPacket)Pack;
|
||||||
|
|
||||||
|
IGroupsModule grps6 = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
|
if (grps6 != null)
|
||||||
|
{
|
||||||
|
GroupRoleMembersReplyPacket groupRoleMembersReply = (GroupRoleMembersReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupRoleMembersReply);
|
||||||
|
groupRoleMembersReply.AgentData =
|
||||||
|
new GroupRoleMembersReplyPacket.AgentDataBlock();
|
||||||
|
groupRoleMembersReply.AgentData.AgentID =
|
||||||
|
AgentId;
|
||||||
|
groupRoleMembersReply.AgentData.GroupID =
|
||||||
|
groupRoleMembersRequest.GroupData.GroupID;
|
||||||
|
groupRoleMembersReply.AgentData.RequestID =
|
||||||
|
groupRoleMembersRequest.GroupData.RequestID;
|
||||||
|
|
||||||
|
List<GroupRoleMembersData> mappings =
|
||||||
|
grps6.GroupRoleMembersRequest(this,
|
||||||
|
groupRoleMembersRequest.GroupData.GroupID);
|
||||||
|
|
||||||
|
groupRoleMembersReply.AgentData.TotalPairs =
|
||||||
|
(uint)mappings.Count;
|
||||||
|
|
||||||
|
groupRoleMembersReply.MemberData =
|
||||||
|
new GroupRoleMembersReplyPacket.
|
||||||
|
MemberDataBlock[mappings.Count];
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
foreach (GroupRoleMembersData d in mappings)
|
||||||
|
{
|
||||||
|
groupRoleMembersReply.MemberData[i] =
|
||||||
|
new GroupRoleMembersReplyPacket.
|
||||||
|
MemberDataBlock();
|
||||||
|
|
||||||
|
groupRoleMembersReply.MemberData[i].RoleID =
|
||||||
|
d.RoleID;
|
||||||
|
groupRoleMembersReply.MemberData[i].MemberID =
|
||||||
|
d.MemberID;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OutPacket(groupRoleMembersReply, ThrottleOutPacketType.Task);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
m_log.Warn("[CLIENT]: unhandled packet " + Pack.ToString());
|
m_log.Warn("[CLIENT]: unhandled packet " + Pack.ToString());
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -162,7 +162,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
|
||||||
{
|
{
|
||||||
UUID ActiveGroupID;
|
UUID ActiveGroupID;
|
||||||
string ActiveGroupName;
|
string ActiveGroupName;
|
||||||
uint ActiveGroupPowers;
|
ulong ActiveGroupPowers;
|
||||||
|
|
||||||
string firstname = remoteClient.FirstName;
|
string firstname = remoteClient.FirstName;
|
||||||
string lastname = remoteClient.LastName;
|
string lastname = remoteClient.LastName;
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSim Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Region.Interfaces
|
||||||
|
{
|
||||||
|
public interface IGroupsModule
|
||||||
|
{
|
||||||
|
void ActivateGroup(IClientAPI remoteClient, UUID groupID);
|
||||||
|
List<GroupTitlesData> GroupTitlesRequest(IClientAPI remoteClient, UUID groupID);
|
||||||
|
List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID);
|
||||||
|
List<GroupRolesData> GroupRoleDataRequest(IClientAPI remoteClient, UUID groupID);
|
||||||
|
List<GroupRoleMembersData> GroupRoleMembersRequest(IClientAPI remoteClient, UUID groupID);
|
||||||
|
GroupProfileData GroupProfileRequest(IClientAPI remoteClient, UUID groupID);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -960,6 +960,7 @@
|
||||||
<Reference name="OpenMetaverse.dll"/>
|
<Reference name="OpenMetaverse.dll"/>
|
||||||
<Reference name="OpenSim.Region.Environment"/>
|
<Reference name="OpenSim.Region.Environment"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
|
<Reference name="OpenSim.Region.Interfaces"/>
|
||||||
<Reference name="OpenSim.Data"/>
|
<Reference name="OpenSim.Data"/>
|
||||||
<Reference name="OpenSim.Framework.Servers"/>
|
<Reference name="OpenSim.Framework.Servers"/>
|
||||||
<Reference name="OpenSim.Framework.Console"/>
|
<Reference name="OpenSim.Framework.Console"/>
|
||||||
|
|
Loading…
Reference in New Issue