not bad city system

This commit is contained in:
33333-33333 2026-05-24 21:21:17 +09:00
commit 15c1031d72
6 changed files with 329 additions and 195 deletions

View file

@ -27,84 +27,112 @@ function municipalityNameFromRoot(root, center, fields, seed, ordinal = 0) {
export function finishMapOutput({
seed,
options,
terrainTemplate,
seaLevel,
cityPopulationCap,
stationInfluence,
roadInfluence,
railInfluence2,
elevation,
moisture,
slope,
sea,
ocean,
lake,
river,
floodplain,
plain,
agriculture,
settlementCluster,
ridgeField,
valleyField,
visibleRavineField,
surfaceTextureField,
basinField,
coastalLowland,
flowAccum,
erosionField,
depositionField,
arcSpineField,
branchRidgeField,
depositionalLowland,
alluvialFanField,
deltaField,
naturalBarrierScore,
villages,
ports,
crossings,
passes,
markets,
castles,
castleTowns,
premodernRoads,
minorRoads,
modernCities,
populationDensity,
railways,
branchRailways,
ringRailways,
externalRailways,
stations,
industrialZones,
nationalRoads,
ringRoads,
expressways,
ringExpressways,
icAccessRoads,
externalRoads,
externalExpressways,
interchanges,
logisticsParks,
satelliteCities,
newTowns,
landuse,
adminCentersRaw,
adminId,
adminBorders,
adminDebug,
riverPaths,
mainRivers,
tributaryRivers,
smallStreams,
externalGateways,
transportDebug,
prefectureMask,
prefectureBorder,
prefectureRegionId,
regionalDebug,
terrainDebug,
regionalPrefectureBorders,
terrain,
features,
admin,
}) {
const {
terrainTemplate,
seaLevel,
elevation,
moisture,
slope,
sea,
ocean,
lake,
river,
floodplain,
plain,
agriculture,
ridgeField,
valleyField,
visibleRavineField,
surfaceTextureField,
basinField,
coastalLowland,
flowAccum,
erosionField,
depositionField,
arcSpineField,
branchRidgeField,
depositionalLowland,
alluvialFanField,
deltaField,
naturalBarrierScore,
riverPaths,
mainRivers,
tributaryRivers,
smallStreams,
prefectureMask,
prefectureBorder,
prefectureRegionId,
regionalDebug,
terrainDebug,
regionalPrefectureBorders,
} = terrain;
const {
cityPopulationCap,
stationInfluence,
roadInfluence,
railInfluence2,
settlementCluster,
villages: inputVillages,
ports: inputPorts,
crossings: inputCrossings,
passes: inputPasses,
markets: inputMarkets,
castles: inputCastles,
castleTowns: inputCastleTowns,
premodernRoads,
minorRoads,
modernCities: inputModernCities,
populationDensity,
railways,
branchRailways,
ringRailways,
externalRailways,
stations: inputStations,
industrialZones: inputIndustrialZones,
nationalRoads,
ringRoads,
expressways,
ringExpressways,
icAccessRoads,
externalRoads,
externalExpressways,
interchanges: inputInterchanges,
logisticsParks: inputLogisticsParks,
satelliteCities: inputSatelliteCities,
newTowns: inputNewTowns,
landuse,
externalGateways: inputExternalGateways,
transportDebug,
} = features;
const {
adminCentersRaw,
adminId,
adminBorders,
adminDebug,
} = admin;
let villages = inputVillages;
let ports = inputPorts;
let crossings = inputCrossings;
let passes = inputPasses;
let markets = inputMarkets;
let castles = inputCastles;
let castleTowns = inputCastleTowns;
let modernCities = inputModernCities;
let stations = inputStations;
let industrialZones = inputIndustrialZones;
let interchanges = inputInterchanges;
let logisticsParks = inputLogisticsParks;
let satelliteCities = inputSatelliteCities;
let newTowns = inputNewTowns;
let externalGateways = inputExternalGateways;
const outputProgress = (step) => options?.onProgress?.({ status: "output-step", key: "output", label: `Output: ${step}`, step });
outputProgress("population recalculation");
// Final population pass after land-use cleanup, satellite municipality locking, and isolated urban deletion.
@ -147,14 +175,8 @@ export function finishMapOutput({
return out;
}
// Bridge and tunnel icon systems were removed from the visual model.
// Arrays remain empty for backward-compatible tests and downstream code.
const bridges = [];
const tunnels = [];
const harborWorks = makeHarborWorks(ports);
const abandonedRailways = branchRailways.filter((_, i) => i % 3 === 0);
let castleRuins = castles.filter((_, i) => i % 2 === 1).map((c) => ({ ...c, kind: "Castle Ruins" }));
const preservedOldRoads = premodernRoads.filter((_, i) => i % 2 === 0);
const nameFields = { elevation, slope, sea, river, plain, agriculture, ridgeField, valleyField, basinField, coastalLowland, flowAccum, landuse, populationDensity };
const usedNames = new Set();
const nameDebug = createNameDebug();
@ -318,17 +340,13 @@ export function finishMapOutput({
logisticsParks,
satelliteCities,
newTowns,
bridges,
tunnels,
harborWorks,
landuse,
adminCenters,
adminId,
adminBorders,
adminDebug,
abandonedRailways,
castleRuins,
preservedOldRoads,
riverPaths,
mainRivers,
tributaryRivers,