mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-18 10:01:23 +01:00
refactor(religions): define basic data
This commit is contained in:
parent
17e96524fb
commit
901120401f
11 changed files with 280 additions and 179 deletions
|
|
@ -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};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue