Editor/Road/ArchBridgeType.cs
using System.Collections.Generic;

namespace Sunless.Architecture;

// A panel offering every field for every type stops being readable.
public enum ArchBridgeGroup {
	Deck,
	Spans,
	Pier,
	Ends,
	Parapet
}

// A bridge with no station yet - no second list of fields to keep in step.
public sealed class ArchBridgeType {
	public int Version { get; set; } = 1;
	public string Name { get; set; } = "bridge";
	public string Title { get; set; } = "Bridge";
	public string Description { get; set; } = "";
	public string Icon { get; set; } = "linear_scale";

	public ArchBridgePart Deck { get; set; } = new();

	// Empty means every group, so a pre-existing type keeps its panel.
	public List<ArchBridgeGroup> Shows { get; set; } = new();

	public bool Wants( ArchBridgeGroup group ) => Shows.Count == 0 || Shows.Contains( group );

	public ArchBridgePart Spanning( float from, float to ) {
		var part = Deck.Copy( from, to );

		part.Type = Name;

		return part;
	}
}