UNPKG

isaacscript-common

Version:

Helper functions and features for IsaacScript mods.

145 lines (144 loc) 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultMapGetPlayer = defaultMapGetPlayer; exports.defaultMapSetPlayer = defaultMapSetPlayer; exports.mapDeletePlayer = mapDeletePlayer; exports.mapGetPlayer = mapGetPlayer; exports.mapHasPlayer = mapHasPlayer; exports.mapSetPlayer = mapSetPlayer; exports.setAddPlayer = setAddPlayer; exports.setDeletePlayer = setDeletePlayer; exports.setHasPlayer = setHasPlayer; const playerIndex_1 = require("./playerIndex"); /** * Helper function to make using default maps with an index of `PlayerIndex` easier. Use this * instead of the `DefaultMap.getAndSetDefault` method if you have a default map of this type. * * For example: * * ```ts * const v = { * run: { * playersSpeedBoost: new DefaultMap<PlayerIndex, int>(0), * }, * }; * * function evaluateCacheSpeed(player: EntityPlayer) { * player.MoveSpeed = defaultMapGetPlayer(v.run.playersSpeedBoost, player); * } * ``` * * @allowEmptyVariadic */ function defaultMapGetPlayer(map, player, ...extraArgs) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return map.getAndSetDefault(playerIndex, ...extraArgs); } /** * Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the * `Map.set` method if you have a map of this type. * * Since `Map` and `DefaultMap` set values in the same way, this function is simply an alias for the * `mapSetPlayer` helper function. */ function defaultMapSetPlayer( // eslint-disable-next-line complete/prefer-readonly-parameter-types map, player, value) { mapSetPlayer(map, player, value); } /** * Helper function to make using maps with an type of `PlayerIndex` easier. Use this instead of the * `Map.delete` method if you have a set of this type. */ function mapDeletePlayer( // eslint-disable-next-line complete/prefer-readonly-parameter-types map, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return map.delete(playerIndex); } /** * Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the * `Map.get` method if you have a map of this type. * * For example: * * ```ts * const v = { * run: { * playersSpeedBoost: new Map<PlayerIndex, int>(), * }, * }; * * function incrementSpeedBoost(player: EntityPlayer) { * const oldSpeedBoost = mapGetPlayer(v.run.playersSpeedBoost, player); * const newSpeedBoost = oldSpeedBoost + 0.1; * mapSetPlayer(v.run.playersSpeedBoost, player); * } * ``` */ function mapGetPlayer(map, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return map.get(playerIndex); } /** * Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the * `Map.has` method if you have a map of this type. */ function mapHasPlayer(map, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return map.has(playerIndex); } /** * Helper function to make using maps with an index of `PlayerIndex` easier. Use this instead of the * `Map.set` method if you have a map of this type. * * For example: * * ```ts * const v = { * run: { * playersSpeedBoost: new Map<PlayerIndex, int>(), * }, * }; * * function incrementSpeedBoost(player: EntityPlayer) { * const oldSpeedBoost = mapGetPlayer(v.run.playersSpeedBoost, player); * const newSpeedBoost = oldSpeedBoost + 0.1; * mapSetPlayer(v.run.playersSpeedBoost, player); * } * ``` */ function mapSetPlayer( // eslint-disable-next-line complete/prefer-readonly-parameter-types map, player, value) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); map.set(playerIndex, value); } /** * Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the * `Set.add` method if you have a set of this type. */ function setAddPlayer( // eslint-disable-next-line complete/prefer-readonly-parameter-types set, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); set.add(playerIndex); } /** * Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the * `Set.delete` method if you have a set of this type. */ function setDeletePlayer( // eslint-disable-next-line complete/prefer-readonly-parameter-types set, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return set.delete(playerIndex); } /** * Helper function to make using sets with an type of `PlayerIndex` easier. Use this instead of the * `Set.has` method if you have a set of this type. */ function setHasPlayer(set, player) { const playerIndex = (0, playerIndex_1.getPlayerIndex)(player); return set.has(playerIndex); }