import React, { Fragment } from "react"; import { AbilityScoreCalculator } from "../../services/ability-score-calculator"; import { ICreature } from "../../interfaces/i-creature"; const MonsterBlockDefaultProps = { actions: [], conditionImmunities: [], damageImmunities: [], damageResistances: [], damageWeaknesses: [], features: [], inventory: [], reactions: [], savingThrows: [], senses: [], skills: [], languages: [] }; const MonsterBlock = ({ ac, actions, alignment, challenge, conditionImmunities, damageImmunities, damageResistances, damageWeaknesses, description, features, hp, image, inventory, languages, reactions, savingThrows, senses, size, skills, speed, stats, type }: ICreature) => { const renderAttributesSubsection = (label, qaTarget, items) => { if (!items || items.length <= 0) { return; } return (

{label}

); }; const renderFeaturesActionsSpellsSubsection = (label, qaTarget, items) => { if (!items || items.length <= 0) { return; } return (

{label}

{items.map((item, index) => { return (
{item.title}
{item.description}
); })}
); }; const renderDescription = () => { if (!description) { return; } return (

Description

{description}

); }; const renderImage = () => { if (!image) { return; } return ( monster image ); }; return (
{renderImage()}

{size} {type}, {alignment}


Armor Class
{ac}
Hit Points
{hp}
Speed
{speed}

STR DEX CON INT WIS CHA
{stats.str} {stats.dex} {stats.con} {stats.int} {stats.wis} {stats.cha}
{AbilityScoreCalculator.getModifier(stats.str)} {AbilityScoreCalculator.getModifier(stats.dex)} {AbilityScoreCalculator.getModifier(stats.con)} {AbilityScoreCalculator.getModifier(stats.int)} {AbilityScoreCalculator.getModifier(stats.wis)} {AbilityScoreCalculator.getModifier(stats.cha)}

{renderAttributesSubsection( "Saving Throws", "saving-throws", savingThrows )} {renderAttributesSubsection("Skills", "skills", skills)} {renderAttributesSubsection( "Condition Immunities", "condition-immunities", conditionImmunities )} {renderAttributesSubsection( "Damage Immunities", "damage-immunities", damageImmunities )} {renderAttributesSubsection( "Damage Resistances", "damage-resistances", damageResistances )} {renderAttributesSubsection( "Damage Weaknesses", "damage-weaknesses", damageWeaknesses )} {renderAttributesSubsection("Languages", "languages", languages)} {renderAttributesSubsection("Senses", "senses", senses)}

Challenge {challenge}

{renderDescription()} {renderAttributesSubsection("Inventory", "inventory", inventory)} {renderFeaturesActionsSpellsSubsection( "Features", "features", features )} {renderFeaturesActionsSpellsSubsection( "Reactions", "reactions", reactions )} {renderFeaturesActionsSpellsSubsection( "Actions", "actions", actions )}
); }; MonsterBlock.defaultProps = MonsterBlockDefaultProps; export { MonsterBlock };