using System;
-
+using System.Collections.ObjectModel;
+using System.IO;
+using Vintagestory.API.Client;
using Vintagestory.API.Common;
using Vintagestory.API.MathTools;
/// </summary>
public struct PointOfInterest
{
- CollectibleObject Thing;
- string Notes;
- BlockPos Location;
- DateTimeOffset Timestamp;
+ [DisplayName(1, "Notes")]
+ public string Notes;
+ [DisplayName(0, "Loc.")]
+ public BlockPos Location;
+ [DisplayName(2, "Time")]
+ public DateTimeOffset Timestamp;
+ public void Write(StreamWriter stream, ICoreClientAPI ClientApi)
+ {
+ // this is gross i hate this
+ stream.Write("['{0}_{1}',[",
+ Location.X,
+ Location.Y
+ );
+ stream.Write("'{0}',", Location.PrettyCoords(ClientApi));
+ stream.Write("'{0}',", System.Web.HttpUtility.HtmlEncode(Notes).Replace("\n", " ").Replace("\\","\\\\"));
+ stream.Write("'{0}',", Timestamp);
+ stream.Write("]]");
+ }
+ }
+
+ public class PointsOfInterest : KeyedCollection<BlockPos, PointOfInterest>
+ {
+ protected override BlockPos GetKeyForItem(PointOfInterest item)
+ => item.Location;
+
+ internal void AddReplace(PointOfInterest poi)
+ {
+ if (Contains(poi.Location))
+ Remove(poi.Location);
+
+ Add(poi);
+ }
}
}