Skip to content

five-on-it / packages/catalogue/src/city/draw / drawCitySpec

Function: drawCitySpec() ​

drawCitySpec(seed, __namedParameters?): { climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; districts: object[]; grids: object[]; hills: object[]; name: string; parks: object[]; places: object[]; roads: object[]; roundabouts: object[]; seed: number; size: number; spawn: { near?: [number, number] | { at: [number, number]; grid: string; } | { arm: number; roundabout: string; } | { at: number | "start" | "end"; road: string; } | { hill: string; }; road: string; }; template: "city"; water: object[]; } | { base: number; biome: "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; details: "plain" | "rich"; features: ({ at: [number, number]; kind: "hill"; level: number; lighthouse?: boolean; name?: string; radius?: number; steep?: boolean; } | { at: [number, number]; kind: "mountain"; level: number; name?: string; radius?: number; } | { at: [number, number]; kind: "plateau"; level: number; name?: string; size: [number, number]; } | { at: [number, number]; kind: "valley"; level: number; name?: string; radius: number; steep?: boolean; } | { at: [number, number]; kind: "lake"; level: number; name?: string; size: [number, number]; } | { at: [number, number]; flow?: "north" | "east" | "south" | "west"; kind: "volcano"; level: number; name?: string; radius?: number; } | { at: [number, number]; kind: "ski"; name?: string; to: [number, number]; })[]; landuse: object[]; name: string; props: { rocks: boolean; trees: boolean; }; roads: object[]; seed: number; size: [number, number]; start?: string; template: "region"; towns: object[]; } | { avenues: { x: number[]; z: number[]; }; blocks: [number, number]; blockSize: number; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; compounds: object[]; districts: object & object[]; dressing: "none" | "lived-in"; name: string; parks: [number, number][]; props: { hydrants: boolean; lamps: boolean; trafficLights: boolean; trees: boolean; }; seed: number; streetWidth: number; template: "grid-town"; }

Defined in: packages/catalogue/src/city/draw.ts:30

A city drawn from seed (see the module documentation); with solvable, the first of up to 24 draws from the seed's own streams that the solver accepts (the last one when none is). Named as the platform names a draft's level. A big one is a city of the largest size a spec may have, where the level's budget of roads is tried.

Parameters ​

seed ​

number

__namedParameters? ​

big? ​

boolean = false

solvable? ​

boolean = false

Returns ​

{ climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; districts: object[]; grids: object[]; hills: object[]; name: string; parks: object[]; places: object[]; roads: object[]; roundabouts: object[]; seed: number; size: number; spawn: { near?: [number, number] | { at: [number, number]; grid: string; } | { arm: number; roundabout: string; } | { at: number | "start" | "end"; road: string; } | { hill: string; }; road: string; }; template: "city"; water: object[]; } | { base: number; biome: "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; details: "plain" | "rich"; features: ({ at: [number, number]; kind: "hill"; level: number; lighthouse?: boolean; name?: string; radius?: number; steep?: boolean; } | { at: [number, number]; kind: "mountain"; level: number; name?: string; radius?: number; } | { at: [number, number]; kind: "plateau"; level: number; name?: string; size: [number, number]; } | { at: [number, number]; kind: "valley"; level: number; name?: string; radius: number; steep?: boolean; } | { at: [number, number]; kind: "lake"; level: number; name?: string; size: [number, number]; } | { at: [number, number]; flow?: "north" | "east" | "south" | "west"; kind: "volcano"; level: number; name?: string; radius?: number; } | { at: [number, number]; kind: "ski"; name?: string; to: [number, number]; })[]; landuse: object[]; name: string; props: { rocks: boolean; trees: boolean; }; roads: object[]; seed: number; size: [number, number]; start?: string; template: "region"; towns: object[]; } | { avenues: { x: number[]; z: number[]; }; blocks: [number, number]; blockSize: number; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; clock?: { pace: number; start: string; }; compounds: object[]; districts: object & object[]; dressing: "none" | "lived-in"; name: string; parks: [number, number][]; props: { hydrants: boolean; lamps: boolean; trafficLights: boolean; trees: boolean; }; seed: number; streetWidth: number; template: "grid-town"; }