dndbeyond_src/ddb_main/hooks/useRuleData.ts
2025-05-28 15:36:51 -07:00

105 lines
4.9 KiB
TypeScript

import { useSelector } from "react-redux";
import {
RuleDataUtils as ruleDataUtils,
ruleDataSelectors as s,
} from "@dndbeyond/character-rules-engine";
/**
* A hook that provides access to the rule data state without having to
* import rules engine all over the place in your components. This reduces
* touchpoints to the rules engine and makes it easier to refactor the rules
* engine in the future.
*/
export const useRuleData = () => ({
// Export all data coming from the RuleData selectors
allData: useSelector(s.getAllData),
abilityScoreDisplayTypes: useSelector(s.getAbilityScoreDisplayTypes),
abilitySkills: useSelector(s.getAbilitySkills),
activationTypes: useSelector(s.getActivationTypes),
additionalLevelTypes: useSelector(s.getAdditionalLevelTypes),
adjustmentDataTypes: useSelector(s.getAdjustmentDataTypes),
adjustmentTypes: useSelector(s.getAdjustmentTypes),
alignments: useSelector(s.getAlignments),
aoeTypes: useSelector(s.getAoeTypes),
armor: useSelector(s.getArmor),
basicActions: useSelector(s.getBasicActions),
baseWeaponReach: useSelector(s.getBaseWeaponReach),
basicMaxStatScore: useSelector(s.getBasicMaxStatScore),
challengeRatings: useSelector(s.getChallengeRatings),
conditionTypes: useSelector(s.getConditionTypes),
conditions: useSelector(s.getConditions),
creatureGroupCategories: useSelector(s.getCreatureGroupCategories),
creatureGroupFlags: useSelector(s.getCreatureGroupFlags),
creatureGroups: useSelector(s.getCreatureGroups),
creatureSizes: useSelector(s.getCreatureSizes),
currencyData: useSelector(s.getCurrencyData),
damageAdjustments: useSelector(s.getDamageAdjustments),
damageTypes: useSelector(s.getDamageTypes),
defaultArmorImageUrl: useSelector(s.getDefaultArmorImageUrl),
defaultAttunedItemCountMax: useSelector(s.getDefaultAttunedItemCountMax),
defaultGearImageUrl: useSelector(s.getDefaultGearImageUrl),
defaultRacePortraitUrl: useSelector(s.getDefaultRacePortraitUrl),
defaultWeaponImageUrl: useSelector(s.getDefaultWeaponImageUrl),
diceValues: useSelector(s.getDiceValues),
environments: useSelector(s.getEnvironments),
initiativeScore: useSelector(s.getInitiativeScore),
languageTypeId: useSelector(s.getLanguageTypeId),
languages: useSelector(s.getLanguages),
levelExperiencePoints: useSelector(s.getLevelExperiencePoints),
levelProficiencyBonuses: useSelector(s.getLevelProficiencyBonuses),
lifestyles: useSelector(s.getLifestyles),
limitedUseResetTypes: useSelector(s.getLimitedUseResetTypes),
longRestMinHitDiceUsedRecovered: useSelector(
s.getLongRestMinimumHitDiceUsedRecovered
),
maxAttunedItemCountMax: useSelector(s.getMaxAttunedItemCountMax),
maxCharacterLevel: useSelector(s.getMaxCharacterLevel),
maxDeathsavesFail: useSelector(s.getMaxDeathsavesFail),
maxDeathsavesSuccess: useSelector(s.getMaxDeathsavesSuccess),
maxSpellLevel: useSelector(s.getMaxSpellLevel),
maxStatScore: useSelector(s.getMaxStatScore),
minAttunedItemCountMax: useSelector(s.getMinAttunedItemCountMax),
minStatScore: useSelector(s.getMinStatScore),
minimumHpTotal: useSelector(s.getMinimumHpTotal),
minimumLimitedUseMaxUse: useSelector(s.getMinimumLimitedUseMaxUse),
monsterSubTypes: useSelector(s.getMonsterSubTypes),
monsterTypes: useSelector(s.getMonsterTypes),
movements: useSelector(s.getMovements),
multiClassSpellSlots: useSelector(s.getMultiClassSpellSlots),
naturalActions: useSelector(s.getNaturalActions),
noArmorAcAmount: useSelector(s.getNoArmorAcAmount),
pactMagicMultiClassSpellSlots: useSelector(
s.getPactMagicMultiClassSpellSlots
),
privacyTypes: useSelector(s.getPrivacyTypes),
proficiencyGroups: useSelector(s.getProficiencyGroups),
raceGroups: useSelector(s.getRaceGroups),
rangeTypes: useSelector(s.getRangeTypes),
ritualCastingTimeMinuteAddition: useSelector(
s.getRitualCastingTimeMinuteAddition
),
rules: useSelector(s.getRules),
senses: useSelector(s.getSenses),
sharingTypes: useSelector(s.getSharingTypes),
sourceCategories: useSelector(s.getSourceCategories),
sources: useSelector(s.getSources),
spellComponents: useSelector(s.getSpellComponents),
spellConditionTypes: useSelector(s.getSpellConditionTypes),
spellRangeTypes: useSelector(s.getSpellRangeTypes),
statModifiers: useSelector(s.getStatModifiers),
stats: useSelector(s.getStats),
stealthCheckTypes: useSelector(s.getStealthCheckTypes),
stringMartialArts: useSelector(s.getStringMartialArts),
stringPactMagic: useSelector(s.getStringPactMagic),
stringSpellCasting: useSelector(s.getStringSpellCasting),
stringSpellEldritchBlast: useSelector(s.getStringSpellEldritchBlast),
weapons: useSelector(s.getWeapons),
weaponCategories: useSelector(s.getWeaponCategories),
weaponProperties: useSelector(s.getWeaponProperties),
weaponPropertyReachDistance: useSelector(s.getWeaponPropertyReachDistance),
// Export all utils from RuleDataUtils
ruleDataUtils,
});