From ff5ef1ca4bb67716fed598160d228eb99c4d1a32 Mon Sep 17 00:00:00 2001 From: Azgaar Date: Sat, 10 Sep 2022 23:04:03 +0300 Subject: [PATCH] refactor: add poles to state data --- .../pack/burgsAndStates/generateBurgsAndStates.ts | 9 ++++++++- .../generation/pack/burgsAndStates/specifyStates.ts | 6 +++++- src/scripts/getPolesOfInaccessibility.ts | 3 ++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/scripts/generation/pack/burgsAndStates/generateBurgsAndStates.ts b/src/scripts/generation/pack/burgsAndStates/generateBurgsAndStates.ts index d2d2dc8f..471a6bc1 100644 --- a/src/scripts/generation/pack/burgsAndStates/generateBurgsAndStates.ts +++ b/src/scripts/generation/pack/burgsAndStates/generateBurgsAndStates.ts @@ -1,4 +1,5 @@ import {WARN} from "config/logging"; +import {getPolesOfInaccessibility} from "scripts/getPolesOfInaccessibility"; import {pick} from "utils/functionUtils"; import {getInputNumber} from "utils/nodeUtils"; import {collectStatistics} from "./collectStatistics"; @@ -70,7 +71,13 @@ export function generateBurgsAndStates( const statistics = collectStatistics({...cells, state: stateIds, burg: burgIds}, burgs); const diplomacy = generateRelations(statesData, statistics, pick(cells, "f")); - const {states, conflicts} = specifyStates(statesData, statistics, diplomacy, cultures, burgs); + const poles = getPolesOfInaccessibility({ + vertices, + getType: (cellId: number) => stateIds[cellId], + cellNeighbors: cells.c, + cellVertices: cells.v + }); + const {states, conflicts} = specifyStates(statesData, statistics, diplomacy, poles, cultures, burgs); return {burgIds, stateIds, burgs, states, conflicts}; diff --git a/src/scripts/generation/pack/burgsAndStates/specifyStates.ts b/src/scripts/generation/pack/burgsAndStates/specifyStates.ts index ba9be9ee..3edbe3c2 100644 --- a/src/scripts/generation/pack/burgsAndStates/specifyStates.ts +++ b/src/scripts/generation/pack/burgsAndStates/specifyStates.ts @@ -14,6 +14,7 @@ export function specifyStates( statesData: TStateData[], statistics: TStateStatistics, diplomacy: TDiplomacy, + poles: Dict, cultures: TCultures, burgs: TBurgs ): {states: TStates; conflicts: IConflict[]} { @@ -41,6 +42,8 @@ export function specifyStates( const name = defineStateName(center, capitalName, nameBase, formName); const fullName = defineFullStateName(name, formName); + const pole = poles[i]; + return { name, ...stateData, @@ -52,7 +55,8 @@ export function specifyStates( burgs: burgsNumber, ...stats, neighbors, - relations + relations, + pole }; }); diff --git a/src/scripts/getPolesOfInaccessibility.ts b/src/scripts/getPolesOfInaccessibility.ts index dd40f43d..384cea99 100644 --- a/src/scripts/getPolesOfInaccessibility.ts +++ b/src/scripts/getPolesOfInaccessibility.ts @@ -2,6 +2,7 @@ import polylabel from "polylabel"; import {TIME} from "config/logging"; import {connectVertices} from "./connectVertices"; +import {rn} from "utils/numberUtils"; interface IGetPolesProps { vertices: IGraphVertices; @@ -17,7 +18,7 @@ export function getPolesOfInaccessibility(props: IGetPolesProps) { const poles: Dict = Object.fromEntries( Object.entries(multiPolygons).map(([id, multiPolygon]) => { const [x, y] = polylabel(multiPolygon, 20); - return [id, [x, y]]; + return [id, [rn(x), rn(y)]]; }) );