Lotsa plumming :)
parent
a11fa9055a
commit
6775b7d02d
|
@ -52,6 +52,61 @@ namespace OpenSim.Framework
|
|||
//
|
||||
public bool AcceptNotices = true;
|
||||
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.Statistics;
|
||||
using OpenSim.Region.ClientStack.LindenUDP;
|
||||
using OpenSim.Region.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using Timer = System.Timers.Timer;
|
||||
|
||||
|
@ -6483,6 +6484,260 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
}
|
||||
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:
|
||||
m_log.Warn("[CLIENT]: unhandled packet " + Pack.ToString());
|
||||
break;
|
||||
|
|
|
@ -162,7 +162,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
|
|||
{
|
||||
UUID ActiveGroupID;
|
||||
string ActiveGroupName;
|
||||
uint ActiveGroupPowers;
|
||||
ulong ActiveGroupPowers;
|
||||
|
||||
string firstname = remoteClient.FirstName;
|
||||
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="OpenSim.Region.Environment"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
<Reference name="OpenSim.Region.Interfaces"/>
|
||||
<Reference name="OpenSim.Data"/>
|
||||
<Reference name="OpenSim.Framework.Servers"/>
|
||||
<Reference name="OpenSim.Framework.Console"/>
|
||||
|
|
Loading…
Reference in New Issue