refactor(religions): define basic data

This commit is contained in:
Azgaar 2022-08-26 01:28:19 +03:00
parent 17e96524fb
commit 901120401f
11 changed files with 280 additions and 179 deletions

View file

@ -1,8 +1,8 @@
import {TIME} from "config/logging";
import {unique} from "utils/arrayUtils";
import {findAll} from "utils/graphUtils";
import {pick} from "utils/functionUtils";
import {generateFolkReligions} from "./generateFolkReligions";
import {generateOrganizedReligionsAndCults} from "./generateOrganizedReligionsAndCults";
import {generateOrganizedReligions} from "./generateOrganizedReligions";
import {specifyReligions} from "./specifyReligions";
type TCellsData = Pick<IPack["cells"], "i" | "c" | "p" | "g" | "h" | "t" | "biome" | "pop" | "burg">;
@ -25,36 +25,20 @@ export function generateReligions({
}) {
TIME && console.time("generateReligions");
const religionIds = new Uint16Array(cells.c.length);
const folkReligions = generateFolkReligions(cultures);
const basicReligions = generateOrganizedReligionsAndCults(
states,
cultures,
burgs,
cultureIds,
const basicReligions = generateOrganizedReligions(burgs, cultureIds, pick(cells, "i", "p", "pop"));
const {religions, religionIds} = specifyReligions(
[...folkReligions, ...basicReligions],
stateIds,
burgIds,
folkReligions,
{
i: cells.i,
p: cells.p,
pop: cells.pop
}
cultures,
states,
burgs,
cells.p
);
console.log(folkReligions, basicReligions);
console.log(religions);
TIME && console.timeEnd("generateReligions");
return {religionIds};
}
function getReligionsInRadius(
religionIds: Uint16Array,
{x, y, r, max}: {x: number; y: number; r: number; max: number}
) {
if (max === 0) return [0];
const cellsInRadius = findAll(x, y, r);
const religions = unique(cellsInRadius.map(i => religionIds[i]).filter(r => r));
return religions.length ? religions.slice(0, max) : [0];
return {religionIds, religions};
}