@nichathan-gaming/map-generator
Version:
Creates and generates a 2 dimensional array with various path generation functions.
25 lines (22 loc) • 1.14 kB
JavaScript
import assertIndex from "../helpers/assertIndex.js";
import getConnectedIndexes from "../helpers/getConnectedIndexes.js";
import mapGenerator from "../mapGenerator.js";
import { assertArray, assertInstanceOf } from "@nichathan-gaming/assertions";
/**
* Gets new indexes based on the given index for Prims
* @param {mapGenerator} map The current game map element
* @param {[number, number]} searchIndex The index to use for new indexes
* @param {T} baseValue A value that denotes a part of the map that cannot be walked on
* @param {(a, b)=>boolean} equalityFunction A function to determine if 2 elements are equal
* @returns {[number, number][]} A shuffled array of new indexes
*/
const getNewIndexes = (map, searchIndex, currentLocations, baseValue) => {
assertInstanceOf(map, mapGenerator);
assertIndex(searchIndex);
assertArray(currentLocations);
map.assertBasicType(baseValue);
return getConnectedIndexes(map, searchIndex).filter(el=>{
return !currentLocations.includes(el) && !map.isValueAtIndexEqualToValue(el, baseValue);
});
};
export default getNewIndexes;