From aff29d9d71b8df51e466f27e55544299d1d40fde Mon Sep 17 00:00:00 2001 From: max Date: Sun, 7 Aug 2022 18:56:05 +0300 Subject: [PATCH] refactor: routes continue --- .../pack/burgsAndStates/specifyBurgs.ts | 7 ++++--- src/scripts/generation/pack/generateRoutes.ts | 16 ++++++++-------- src/types/pack/burgs.d.ts | 3 +++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/scripts/generation/pack/burgsAndStates/specifyBurgs.ts b/src/scripts/generation/pack/burgsAndStates/specifyBurgs.ts index 290e643d..e6918768 100644 --- a/src/scripts/generation/pack/burgsAndStates/specifyBurgs.ts +++ b/src/scripts/generation/pack/burgsAndStates/specifyBurgs.ts @@ -29,7 +29,7 @@ export function specifyBurgs( ): TBurgs { TIME && console.time("specifyBurgs"); - const burgs: IBurg[] = [...capitals, ...towns].map(burgData => { + const burgs = [...capitals, ...towns].map(burgData => { const {cell, culture, capital} = burgData; const state = stateIds[cell]; @@ -38,9 +38,10 @@ export function specifyBurgs( const [x, y] = defineLocation(cell, port); const type = defineType(cell, port, population); - const coa = defineEmblem(state, culture, port, capital, type, cultures, states); + const coa: ICoa = defineEmblem(state, culture, port, capital, type, cultures, states); - return {...burgData, state, port, population, x, y, type, coa}; + const burg: IBurg = {...burgData, state, port, population, x, y, type, coa}; + return burg; }); TIME && console.timeEnd("specifyBurgs"); diff --git a/src/scripts/generation/pack/generateRoutes.ts b/src/scripts/generation/pack/generateRoutes.ts index 2e4af1eb..9e7388ee 100644 --- a/src/scripts/generation/pack/generateRoutes.ts +++ b/src/scripts/generation/pack/generateRoutes.ts @@ -19,18 +19,18 @@ const getRoads = function (burgs: TBurgs) { if (capitals.length < 2) return []; // not enough capitals to build main roads - const paths = []; // array to store path segments + const routes = []; // array to store path segments - for (const b of capitals) { - const connect = capitals.filter(c => c.feature === b.feature && c !== b); - for (const t of connect) { - const [from, exit] = findLandPath(b.cell, t.cell, true); - const segments = restorePath(b.cell, exit, "main", from); - segments.forEach(s => paths.push(s)); + for (const {i, feature, cell: fromCell} of capitals) { + const sameFeatureCapitals = capitals.filter(capital => i !== capital.i && feature === capital.feature); + for (const {cell: toCell} of sameFeatureCapitals) { + const [from, exit] = findLandPath(fromCell, toCell, true); + const segments = restorePath(fromCell, exit, "main", from); + segments.forEach(s => routes.push(s)); } } cells.i.forEach(i => (cells.s[i] += cells.road[i] / 2)); // add roads to suitability score TIME && console.timeEnd("generateMainRoads"); - return paths; + return routes; }; diff --git a/src/types/pack/burgs.d.ts b/src/types/pack/burgs.d.ts index cc1ba602..01e39700 100644 --- a/src/types/pack/burgs.d.ts +++ b/src/types/pack/burgs.d.ts @@ -1,11 +1,14 @@ interface IBurg { i: number; name: string; + feature: number; + state: number; cell: number; x: number; y: number; population: number; type: TCultureType; + coa: ICoa | "string"; capital: Logical; // 1 - capital, 0 - burg port: number; // port feature id, 0 - not a port shanty?: number;