Editor/Data/ArchSurface.cs
using System;
using System.Collections.Generic;
using System.Linq;
using Sandbox;

namespace Sunless.Architecture;

public enum ArchSurface {
	WallExterior,
	WallInterior,
	WallCap,
	Reveal,
	Trim,
	Sill,
	Baseboard,
	Floor,
	Ceiling,
	Roof,
	RoofEdge,
	Soffit,
	Gutter,
	StairTread,
	StairRiser,
	StairStringer,
	Pillar,
	PillarCap,
	DoorLeaf,
	Siding,
	Wainscot,
	WindowFrame,
	WindowSash,
	Glass,
	Deck,
	Railing,
	Foundation,
	// Append only - inserting mid-list renumbers every ordinal after it.
	Threshold,
	Road,
	Pavement,
	Kerb,
	RoadLine,
	Panel,
	Post,
	Wire,
	RoofFrame,
	Bridge,
	Pier,
	Lining,
	Portal,
	// Appended, never inserted - a mid-list role silently repaints the whole map.
	WallBase,
	// Burglar bar, security gate, boarded panel - the one thing on every window in these suburbs.
	Grille,
	Shutter,
	Sign,
	// Chimney cowls, vent stacks, tanks: what stands on a deck rather than what the deck is.
	Plant,
	// Services. Plumbing and electrical are two roles rather than one, so a map can paint a red rainwater run
	// apart from a grey cable tray without touching either part; the hangers are a third, because galvanised
	// stock reads as neither.
	Pipework,
	Cabling,
	Bracket,
	// Canvas over a shopfront. Its own role, or a striped awning can only be painted by repainting every
	// roller shutter in the map with it.
	Awning,
	// Fitted joinery. The box, the doors on it and the counter over it are three roles because they are three
	// materials in every kitchen there has ever been - melamine carcass, painted front, stone top.
	CabinetCarcass,
	CabinetFront,
	Worktop,
	// Ironmongery. Its own role because a handle is the one part of a cabinet that is never the colour of the
	// door it is screwed to.
	CabinetHandle
}