UpdateListOfParcels, GetParcelListSnapshots, GetListOfParcels

This commit is contained in:
Madpeter 2024-07-15 21:01:26 +01:00
parent cc124a3767
commit efe66731d5

View file

@ -1,14 +1,33 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using OpenMetaverse; using OpenMetaverse;
using SecondBotEvents.Services; using SecondBotEvents.Services;
using Swan;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading; using System.Threading;
using static OpenMetaverse.DirectoryManager; using static OpenMetaverse.DirectoryManager;
using static OpenMetaverse.ParcelManager; using static OpenMetaverse.ParcelManager;
namespace SecondBotEvents.Commands namespace SecondBotEvents.Commands
{ {
public class parcelPacketReply
{
public List<string> groupuuids = new List<string>();
public List<parcelPacketData> parcels = new List<parcelPacketData>();
}
public class parcelPacketData
{
public int area;
public int groupindex;
public string name;
public int maxprims;
public int currentprims;
public string startbox;
public string endbox;
public byte[] bitmap;
}
[ClassInfo("Control the land under our feet")] [ClassInfo("Control the land under our feet")]
public partial class ParcelCommands : CommandsAPI public partial class ParcelCommands : CommandsAPI
{ {
@ -16,6 +35,54 @@ namespace SecondBotEvents.Commands
{ {
} }
[About("Requests the bot update its list of parcels ready for other commands")]
[ReturnHints("ok")]
public object UpdateListOfParcels()
{
GetClient().Parcels.RequestAllSimParcels(GetClient().Network.CurrentSim);
return BasicReply("ok");
}
[About("Requests a packet blob for the parcels snapshot data")]
[ReturnHints("json encoded object")]
public object GetParcelListSnapshots()
{
Dictionary<string, string> reply = new Dictionary<string, string>();
List<Parcel> Parcels = GetClient().Network.CurrentSim.Parcels.Copy().Values.ToList();
foreach (Parcel A in Parcels)
{
reply.Add(A.Name, A.SnapshotID.ToString());
}
return BasicReply(JsonConvert.SerializeObject(reply));
}
[About("Requests a packet blob for the parcels in the current sim\n call UpdateListOfParcels first to update list before calling")]
[ReturnHints("json encoded object")]
public object GetListOfParcels()
{
parcelPacketReply reply = new parcelPacketReply();
List<Parcel> Parcels = GetClient().Network.CurrentSim.Parcels.Copy().Values.ToList();
foreach (Parcel A in Parcels)
{
int index = reply.groupuuids.IndexOf(A.GroupID.ToString());
if (index == -1)
{
reply.groupuuids.Add(A.GroupID.ToString());
index = reply.groupuuids.IndexOf(A.GroupID.ToString());
}
parcelPacketData R = new parcelPacketData();
R.groupindex = index;
R.area = A.Area;
R.startbox = A.AABBMin.ToString();
R.endbox = A.AABBMax.ToString();
R.currentprims = A.TotalPrims;
R.maxprims = A.MaxPrims;
R.name = A.Name;
R.bitmap = A.Bitmap;
reply.parcels.Add(R);
}
return BasicReply(JsonConvert.SerializeObject(reply));
}
[About("Sets the current parcel for sale Also marks the parcel for sale")] [About("Sets the current parcel for sale Also marks the parcel for sale")]
[ReturnHints("ok")] [ReturnHints("ok")]
[ReturnHintsFailure("Error not in a sim")] [ReturnHintsFailure("Error not in a sim")]