2025-05-28 15:36:51 -07:00

292 lines
8.8 KiB
JavaScript

import { keyBy } from 'lodash';
import { TypeScriptUtils } from '../../utils';
import { getNotes, getValue, getValueId, getValueIntId } from './accessors';
import { AdjustmentTypeEnum } from './constants';
import { generateEntityContextKey, generateUniqueKey } from './generators';
/**
*
* @param valueLookup
* @param typeId
* @param valueId
* @param valueTypeId
* @param contextId
* @param contextTypeId
* @returns
*/
export function getData(valueLookup, typeId, valueId = null, valueTypeId = null, contextId = null, contextTypeId = null) {
const key = generateUniqueKey(typeId, valueId, valueTypeId, contextId, contextTypeId);
if (valueLookup.hasOwnProperty(key)) {
return valueLookup[key];
}
return null;
}
/**
*
* @param valueLookup
* @param typeIds
* @param valueId
* @param valueTypeId
* @param contextId
* @param contextTypeId
* @returns
*/
export function getDataLookup(valueLookup, typeIds, valueId = null, valueTypeId = null, contextId = null, contextTypeId = null) {
const data = typeIds
.map((typeId) => getData(valueLookup, typeId, valueId, valueTypeId, contextId, contextTypeId))
.filter(TypeScriptUtils.isNotNullOrUndefined);
return keyBy(data, 'typeId');
}
/**
*
* @param entityValueLookup
* @param valueId
* @param valueTypeId
* @param contextId
* @param contextTypeId
* @returns
*/
export function getEntityData(entityValueLookup, valueId, valueTypeId, contextId = null, contextTypeId = null) {
const key = generateEntityContextKey(valueId, valueTypeId, contextId, contextTypeId);
if (entityValueLookup.hasOwnProperty(key)) {
return entityValueLookup[key];
}
return {};
}
/**
*
* @param typeValueLookup
* @param typeId
* @returns
*/
export function getTypeData(typeValueLookup, typeId) {
if (typeId === null) {
return [];
}
if (typeValueLookup.hasOwnProperty(typeId)) {
return typeValueLookup[typeId];
}
return [];
}
/**
*
* @param typeValueLookup
* @param typeId
* @returns
*/
export function getTypeValues(typeValueLookup, typeId) {
return getTypeData(typeValueLookup, typeId)
.map((charValue) => getValue(charValue))
.filter(TypeScriptUtils.isNotNullOrUndefined);
}
/**
*
* @param typeValueLookup
* @param typeId
* @returns
*/
export function getTypeValueIds(typeValueLookup, typeId) {
return getTypeData(typeValueLookup, typeId)
.map((charValue) => getValueId(charValue))
.filter(TypeScriptUtils.isNotNullOrUndefined);
}
/**
*
* @param typeValueLookup
* @param typeId
* @returns
*/
export function getTypeValueIntIds(typeValueLookup, typeId) {
return getTypeData(typeValueLookup, typeId)
.map((charValue) => getValueIntId(charValue))
.filter(TypeScriptUtils.isNotNullOrUndefined);
}
/**
*
* @param valueLookup
* @param typeId
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
* @returns
*/
export function getKeyValue(valueLookup, typeId, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
const charValue = getData(valueLookup, typeId, valueId, valueTypeId, contextId, contextTypeId);
if (charValue !== null) {
return getValue(charValue);
}
return defaultValue;
}
/**
*
* @param valueLookup
* @param typeId
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
* @returns
*/
export function getKeyNotes(valueLookup, typeId, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
const charValue = getData(valueLookup, typeId, valueId, valueTypeId, contextId, contextTypeId);
if (charValue !== null) {
return getNotes(charValue);
}
return defaultValue;
}
/**
*
* @param valueLookup
* @param typeId
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getTypedKeyValue(valueLookup, typeId, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getKeyValue(valueLookup, typeId, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param characterValue
* @param defaultValue
*/
export function getCharacterValueValue(characterValue, defaultValue = null) {
const value = getValue(characterValue);
if (value === null) {
return defaultValue;
}
return value;
}
/**
*
* @param characterValue
* @param defaultValue
*/
export function getTypedCharacterValueValue(characterValue, defaultValue = null) {
return getCharacterValueValue(characterValue, defaultValue);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getSavingThrowMiscBonusValue(valueLookup, valueId = null, valueTypeId = null, defaultValue = 0, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.SAVING_THROW_MISC_BONUS, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getSavingThrowMagicBonusValue(valueLookup, valueId = null, valueTypeId = null, defaultValue = 0, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.SAVING_THROW_MAGIC_BONUS, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getSavingThrowOverrideValue(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.SAVING_THROW_OVERRIDE, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getSavingThrowProficiencyLevelValue(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.SAVING_THROW_PROFICIENCY_LEVEL, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param defaultValue
*/
export function getOverridePassivePerceptionValue(valueLookup, defaultValue = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.OVERRIDE_PASSIVE_PERCEPTION, undefined, undefined, defaultValue);
}
/**
*
* @param valueLookup
* @param defaultValue
*/
export function getOverridePassiveInvestigationValue(valueLookup, defaultValue = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.OVERRIDE_PASSIVE_INVESTIGATION, undefined, undefined, defaultValue);
}
/**
*
* @param valueLookup
* @param defaultValue
*/
export function getOverridePassiveInsightValue(valueLookup, defaultValue = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.OVERRIDE_PASSIVE_INSIGHT, undefined, undefined, defaultValue);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getIsOffhand(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.IS_OFFHAND, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getFixedValueBonus(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.FIXED_VALUE_BONUS, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getToHitBonus(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.TO_HIT_BONUS, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}
/**
*
* @param valueLookup
* @param valueId
* @param valueTypeId
* @param defaultValue
* @param contextId
* @param contextTypeId
*/
export function getToHitOverride(valueLookup, valueId = null, valueTypeId = null, defaultValue = null, contextId = null, contextTypeId = null) {
return getTypedKeyValue(valueLookup, AdjustmentTypeEnum.TO_HIT_OVERRIDE, valueId, valueTypeId, defaultValue, contextId, contextTypeId);
}