using Theriapolis.Core.Util;
namespace Theriapolis.Core.World.Polylines;
public enum PolylineType : byte { River, Road, Rail }
public enum RiverClass : byte { Stream, River, MajorRiver }
public enum RoadType : byte { Footpath, DirtRoad, PostRoad, Highway }
///
/// A polyline in world-pixel space (0..32768 on each axis).
/// Source of truth for rivers, roads, and rail. Per-tile flags on WorldTile are derived caches.
///
public sealed class Polyline
{
public PolylineType Type { get; init; }
public int Id { get; init; }
public List Points { get; } = new();
public List? SimplifiedPoints { get; set; }
public float Width { get; set; }
// River-specific
public RiverClass RiverClassification { get; set; }
public int FlowAccumulation { get; set; }
// Road-specific
public RoadType RoadClassification { get; set; }
// Infrastructure-specific (source/destination settlement IDs)
public int FromSettlementId { get; set; } = -1;
public int ToSettlementId { get; set; } = -1;
public bool IsEmpty => Points.Count < 2;
}