fix: use dependency filter selector

This commit is contained in:
Lukas Obermann
2023-10-31 19:58:44 +01:00
parent ed064da419
commit d3720b4464
4 changed files with 19 additions and 164 deletions
@@ -7,7 +7,6 @@ import {
isAttributeDecreasable,
isAttributeIncreasable,
} from "../../shared/domain/attributeBounds.ts"
import { filterApplyingRatedDependencies } from "../../shared/domain/dependencies/filterApplyingDependencies.ts"
import {
AdvantageIdentifier,
AttributeIdentifier,
@@ -68,6 +67,7 @@ import {
selectStaticZibiljaRituals,
} from "../slices/databaseSlice.ts"
import { selectIsInCharacterCreation } from "./characterSelectors.ts"
import { selectFilterApplyingRatedDependencies } from "./dependencySelectors.ts"
import {
selectCurrentExperienceLevel,
selectMaximumTotalAttributePoints,
@@ -199,18 +199,12 @@ export const selectVisibleAttributes = createSelector(
createPropertySelector(selectActiveOptionalRules, OptionalRuleIdentifier.MaximumAttributeScores),
selectAttributeAdjustmentId,
selectDerivedCharacteristics,
selectDynamicSkills,
selectDynamicCloseCombatTechniques,
selectDynamicRangedCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicLiturgicalChants,
selectDynamicCeremonies,
selectHighestMagicalPrimaryAttributes,
selectBlessedPrimaryAttribute,
selectAttributeMinimaByAssociatedAttributes,
selectMagicalPrimaryAttributeDependencies,
selectBlessedPrimaryAttributeDependencies,
selectFilterApplyingRatedDependencies,
(
attributes,
dynamicAttributes,
@@ -223,30 +217,13 @@ export const selectVisibleAttributes = createSelector(
maximumAttributeScores,
attributeAdjustmentId,
derivedCharacteristics,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
highestMagicalPrimaryAttributes,
blessedPrimaryAttribute,
attributeMinimaByAssociatedAttributes,
magicalPrimaryAttributeDependencies,
blessedPrimaryAttributeDependencies,
filterApplyingDependencies,
): DisplayedAttribute[] => {
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes: dynamicAttributes,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
})
const singleHighestMagicalPrimaryAttribute =
highestMagicalPrimaryAttributes.list.length === 1
? highestMagicalPrimaryAttributes.list[0]
@@ -14,7 +14,6 @@ import {
isCombatTechniqueDecreasable,
isCombatTechniqueIncreasable,
} from "../../shared/domain/combatTechniqueBounds.ts"
import { filterApplyingRatedDependencies } from "../../shared/domain/dependencies/filterApplyingDependencies.ts"
import {
AdvantageIdentifier,
GeneralSpecialAbilityIdentifier,
@@ -26,14 +25,9 @@ import { createPropertySelector } from "../../shared/utils/redux.ts"
import {
selectDynamicAdvantages,
selectDynamicAttributes,
selectDynamicCeremonies,
selectDynamicCloseCombatTechniques,
selectDynamicGeneralSpecialAbilities,
selectDynamicLiturgicalChants,
selectDynamicRangedCombatTechniques,
selectDynamicRituals,
selectDynamicSkills,
selectDynamicSpells,
} from "../slices/characterSlice.ts"
import { createInitialDynamicCloseCombatTechnique } from "../slices/closeCombatTechniqueSlice.ts"
import {
@@ -42,6 +36,7 @@ import {
} from "../slices/databaseSlice.ts"
import { createInitialDynamicRangedCombatTechnique } from "../slices/rangedCombatTechniqueSlice.ts"
import { selectCanRemove, selectIsInCharacterCreation } from "./characterSelectors.ts"
import { selectFilterApplyingRatedDependencies } from "./dependencySelectors.ts"
import { selectStartExperienceLevel } from "./experienceLevelSelectors.ts"
import { selectIsEntryAvailable } from "./publicationSelectors.ts"
@@ -110,14 +105,9 @@ export const selectVisibleCloseCombatTechniques = createSelector(
GeneralSpecialAbilityIdentifier.Hunter,
),
selectDynamicAttributes,
selectDynamicSkills,
selectDynamicRangedCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicLiturgicalChants,
selectDynamicCeremonies,
selectRangedCombatTechniquesAt10,
selectIsEntryAvailable,
selectFilterApplyingRatedDependencies,
(
staticCloseCombatTechniques,
dynamicCloseCombatTechniques,
@@ -127,30 +117,14 @@ export const selectVisibleCloseCombatTechniques = createSelector(
exceptionalSkill,
hunter,
attributes,
skills,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
rangedCombatTechniquesAt10,
isEntryAvailable,
filterApplyingDependencies,
): DisplayedCloseCombatTechnique[] => {
if (startExperienceLevel === undefined) {
return []
}
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes,
skills,
closeCombatTechniques: dynamicCloseCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
})
return Object.values(staticCloseCombatTechniques)
.filter(staticLiturgicalChant => isEntryAvailable(staticLiturgicalChant.src))
.map(combatTechnique => {
@@ -218,14 +192,9 @@ export const selectVisibleRangedCombatTechniques = createSelector(
GeneralSpecialAbilityIdentifier.FireEater,
),
selectDynamicAttributes,
selectDynamicSkills,
selectDynamicCloseCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicLiturgicalChants,
selectDynamicCeremonies,
selectRangedCombatTechniquesAt10,
selectIsEntryAvailable,
selectFilterApplyingRatedDependencies,
(
staticRangedCombatTechniques,
dynamicRangedCombatTechniques,
@@ -236,30 +205,14 @@ export const selectVisibleRangedCombatTechniques = createSelector(
hunter,
fireEater,
attributes,
skills,
closeCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
rangedCombatTechniquesAt10,
isEntryAvailable,
filterApplyingDependencies,
): DisplayedRangedCombatTechnique[] => {
if (startExperienceLevel === undefined) {
return []
}
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes,
skills,
closeCombatTechniques,
rangedCombatTechniques: dynamicRangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
})
const isFireEaterActive = isActive(fireEater)
return Object.values(staticRangedCombatTechniques)
@@ -3,14 +3,9 @@ import {
selectDynamicAttributes,
selectDynamicBlessings,
selectDynamicCeremonies,
selectDynamicCloseCombatTechniques,
selectDynamicKarmaSpecialAbilities,
selectDynamicLiturgicalChants,
selectDynamicLiturgicalStyleSpecialAbilities,
selectDynamicRangedCombatTechniques,
selectDynamicRituals,
selectDynamicSkills,
selectDynamicSpells,
} from "../slices/characterSlice.ts"
import {
selectStaticBlessings,
@@ -20,7 +15,6 @@ import {
import { createSelector } from "@reduxjs/toolkit"
import { getOptions } from "../../shared/domain/activatableEntry.ts"
import { filterApplyingRatedDependencies } from "../../shared/domain/dependencies/filterApplyingDependencies.ts"
import {
AdvantageIdentifier,
KarmaSpecialAbilityIdentifier,
@@ -50,6 +44,7 @@ import {
import { partition } from "../../shared/utils/array.ts"
import { createPropertySelector } from "../../shared/utils/redux.ts"
import { selectCanRemove, selectIsInCharacterCreation } from "./characterSelectors.ts"
import { selectFilterApplyingRatedDependencies } from "./dependencySelectors.ts"
import { selectStartExperienceLevel } from "./experienceLevelSelectors.ts"
import { selectIsEntryAvailable } from "./publicationSelectors.ts"
import { selectActiveBlessedTradition } from "./traditionSelectors.ts"
@@ -119,14 +114,9 @@ export const selectVisibleActiveLiturgicalChants = createSelector(
selectCanRemove,
createPropertySelector(selectDynamicAdvantages, AdvantageIdentifier.ExceptionalSkill),
selectDynamicAttributes,
selectDynamicSkills,
selectDynamicCloseCombatTechniques,
selectDynamicRangedCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicCeremonies,
selectLiturgicalChantsAbove10ByAspect,
selectActiveAspectKnowledges,
selectFilterApplyingRatedDependencies,
(
staticLiturgicalChants,
dynamicLiturgicalChants,
@@ -135,30 +125,14 @@ export const selectVisibleActiveLiturgicalChants = createSelector(
canRemove,
exceptionalSkill,
attributes,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
ceremonies,
liturgicalChantsAbove10ByAspect,
activeAspectKnowledges,
filterApplyingDependencies,
): DisplayedActiveLiturgicalChant[] => {
if (startExperienceLevel === undefined) {
return []
}
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants: dynamicLiturgicalChants,
ceremonies,
})
return getActiveLiturgicalChantsOrCeremonies(
"liturgicalChant",
staticLiturgicalChants,
@@ -187,14 +161,9 @@ export const selectVisibleActiveCeremonies = createSelector(
selectCanRemove,
createPropertySelector(selectDynamicAdvantages, AdvantageIdentifier.ExceptionalSkill),
selectDynamicAttributes,
selectDynamicSkills,
selectDynamicCloseCombatTechniques,
selectDynamicRangedCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicLiturgicalChants,
selectLiturgicalChantsAbove10ByAspect,
selectActiveAspectKnowledges,
selectFilterApplyingRatedDependencies,
(
staticCeremonies,
dynamicCeremonies,
@@ -203,30 +172,14 @@ export const selectVisibleActiveCeremonies = createSelector(
canRemove,
exceptionalSkill,
attributes,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
liturgicalChantsAbove10ByAspect,
activeAspectKnowledges,
filterApplyingDependencies,
): DisplayedActiveCeremony[] => {
if (startExperienceLevel === undefined) {
return []
}
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes,
skills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies: dynamicCeremonies,
})
return getActiveLiturgicalChantsOrCeremonies(
"ceremony",
staticCeremonies,
+6 -34
View File
@@ -1,7 +1,6 @@
import { createSelector } from "@reduxjs/toolkit"
import { Skill } from "optolith-database-schema/types/Skill"
import { getHighestAttributeValue } from "../../shared/domain/attribute.ts"
import { filterApplyingRatedDependencies } from "../../shared/domain/dependencies/filterApplyingDependencies.ts"
import {
AdvantageIdentifier,
GeneralSpecialAbilityIdentifier,
@@ -18,19 +17,14 @@ import { createPropertySelector } from "../../shared/utils/redux.ts"
import {
selectDynamicAdvantages,
selectDynamicAttributes,
selectDynamicCeremonies,
selectDynamicCloseCombatTechniques,
selectDynamicGeneralSpecialAbilities,
selectDynamicLiturgicalChants,
selectDynamicRangedCombatTechniques,
selectDynamicRituals,
selectDynamicSkills,
selectDynamicSpells,
} from "../slices/characterSlice.ts"
import { selectStaticSkills } from "../slices/databaseSlice.ts"
import { createInitialDynamicSkill } from "../slices/skillsSlice.ts"
import { selectCanRemove, selectIsInCharacterCreation } from "./characterSelectors.ts"
import { selectCurrentCulture } from "./cultureSelectors.ts"
import { selectFilterApplyingRatedDependencies } from "./dependencySelectors.ts"
import { selectStartExperienceLevel } from "./experienceLevelSelectors.ts"
/**
@@ -66,12 +60,7 @@ export const selectVisibleSkills = createSelector(
GeneralSpecialAbilityIdentifier.CraftInstruments,
),
selectCurrentCulture,
selectDynamicCloseCombatTechniques,
selectDynamicRangedCombatTechniques,
selectDynamicSpells,
selectDynamicRituals,
selectDynamicLiturgicalChants,
selectDynamicCeremonies,
selectFilterApplyingRatedDependencies,
(
skills,
dynamicSkills,
@@ -82,25 +71,9 @@ export const selectVisibleSkills = createSelector(
exceptionalSkill,
craftInstruments,
culture,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
): DisplayedSkill[] => {
const filterApplyingDependencies = filterApplyingRatedDependencies({
attributes,
skills: dynamicSkills,
closeCombatTechniques,
rangedCombatTechniques,
spells,
rituals,
liturgicalChants,
ceremonies,
})
return Object.values(skills).map(skill => {
filterApplyingDependencies,
): DisplayedSkill[] =>
Object.values(skills).map(skill => {
const dynamicSkill = dynamicSkills[skill.id] ?? createInitialDynamicSkill(skill.id)
const minimum = getSkillMinimum(
@@ -127,6 +100,5 @@ export const selectVisibleSkills = createSelector(
isIncreasable: isSkillIncreasable(dynamicSkill, maximum),
commonness: culture === undefined ? undefined : getSkillCommonness(culture, skill),
}
})
},
}),
)