import { CharacterTheme, Constants, DataOrigin, DeathSaveInfo, DiceAdjustment, RuleData, } from "@dndbeyond/character-rules-engine/es"; import DiceAdjustmentSummary from "../../../Shared/components/DiceAdjustmentSummary"; interface Props { savingThrowDiceAdjustments: Array; onDataOriginClick?: (dataOrigin: DataOrigin) => void; deathSaveInfo: DeathSaveInfo; ruleData: RuleData; theme: CharacterTheme; } export default function SavingThrowsDetails({ savingThrowDiceAdjustments, onDataOriginClick, deathSaveInfo, ruleData, theme, }: Props) { const renderDiceAdjustmentList = ( diceAdjustments: Array, showDataOrigin: boolean = false ): React.ReactNode => { if (!diceAdjustments.length) { return null; } return ( <> {diceAdjustments.map((diceAdjustment, idx) => { return ( ); })} ); }; if ( !savingThrowDiceAdjustments.length && !deathSaveInfo.disadvantageAdjustments.length && !deathSaveInfo.advantageAdjustments.length ) { return (
You have no saving throw modifiers
); } const advantageSavingThrowAdjustments: Array = []; const disadvantageSavingThrowAdjustments: Array = []; const bonusSavingThrowAdjustments: Array = []; savingThrowDiceAdjustments.forEach((adjustment) => { if (adjustment.type === Constants.DiceAdjustmentTypeEnum.ADVANTAGE) { advantageSavingThrowAdjustments.push(adjustment); } if (adjustment.type === Constants.DiceAdjustmentTypeEnum.DISADVANTAGE) { disadvantageSavingThrowAdjustments.push(adjustment); } if (adjustment.type === Constants.DiceAdjustmentTypeEnum.BONUS) { bonusSavingThrowAdjustments.push(adjustment); } }); return (
{renderDiceAdjustmentList(advantageSavingThrowAdjustments)} {renderDiceAdjustmentList(deathSaveInfo.advantageAdjustments)} {renderDiceAdjustmentList(disadvantageSavingThrowAdjustments)} {renderDiceAdjustmentList(deathSaveInfo.disadvantageAdjustments)} {renderDiceAdjustmentList(bonusSavingThrowAdjustments, true)}
); }