refactor: add poles to state data

This commit is contained in:
Azgaar 2022-09-10 23:04:03 +03:00
parent b2ab699843
commit ff5ef1ca4b
3 changed files with 15 additions and 3 deletions

View file

@ -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};

View file

@ -14,6 +14,7 @@ export function specifyStates(
statesData: TStateData[],
statistics: TStateStatistics,
diplomacy: TDiplomacy,
poles: Dict<TPoint>,
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
};
});

View file

@ -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<TPoint> = Object.fromEntries(
Object.entries(multiPolygons).map(([id, multiPolygon]) => {
const [x, y] = polylabel(multiPolygon, 20);
return [id, [x, y]];
return [id, [rn(x), rn(y)]];
})
);