XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
UTF-8
using System.Text.Json;

namespace XFEEliteDangerous.Core;

public sealed record NativeBookmark
{
    public required ulong Id{get;init;}
    public required ulong SystemAddr{get;init;}
    public required ulong BodyAddr{get;init;}
    public required ulong MarketId{get;init;}
    public required string BookmarkName{get;init;}
    public required uint IconName{get;init;}
    public required uint BodyType{get;init;}
    public required bool IsCluster{get;init;}
    public required bool HasRings{get;init;}
    public required bool Favourite{get;init;}
    internal object Public()=>new{id=Id,systemAddr=SystemAddr,bodyAddr=BodyAddr,marketID=MarketId,bookmarkName=BookmarkName,
        iconName=IconName,bodyType=BodyType,isCluster=IsCluster,hasRings=HasRings,favourite=Favourite};
}

internal static class NativeBookmarkData
{
    internal const int Capacity=500;
    internal static bool Valid(IReadOnlyList<NativeBookmark>? entries)=>entries is not null&&entries.Count<=Capacity
        &&entries.All(value=>value is not null&&value.BookmarkName is {} name&&name.Length<=256&&!name.Any(char.IsControl))
        &&entries.Select(value=>value.Id).Distinct().Count()==entries.Count;
}