import { visuallyHidden } from "@mui/utils"; import React from "react"; import { connect } from "react-redux"; import { ArmorClassBox, BoxBackground, SquaredBoxSvg344x95, SquaredBoxSvg408x95, } from "@dndbeyond/character-components/es"; import { rulesEngineSelectors, AbilityLookup, Condition, DefenseAdjustmentGroup, SpellCasterInfo, RuleData, CharacterTheme, } from "@dndbeyond/character-rules-engine/es"; import { PaneInfo, useSidebar } from "~/contexts/Sidebar/Sidebar"; import { InitiativeBox } from "~/subApps/sheet/components/InitiativeBox"; import { PaneComponentEnum } from "~/subApps/sheet/components/Sidebar/types"; import Subsection from "../../../Shared/components/Subsection"; import { StyleSizeTypeEnum } from "../../../Shared/reducers/appEnv"; import { appEnvSelectors } from "../../../Shared/selectors"; import { AppEnvDimensionsState } from "../../../Shared/stores/typings"; import ConditionsSummary from "../../components/ConditionsSummary"; import DefensesSummary from "../../components/DefensesSummary"; import { SheetAppState } from "../../typings"; interface Props { armorClass: number; resistances: Array; immunities: Array; vulnerabilities: Array; conditions: Array; abilityLookup: AbilityLookup; ruleData: RuleData; spellCasterInfo: SpellCasterInfo; dimensions: AppEnvDimensionsState; theme: CharacterTheme; diceEnabled: boolean; paneHistoryStart: PaneInfo["paneHistoryStart"]; } class Combat extends React.PureComponent { static defaultProps = { diceEnabled: false, }; handleArmorClassClick = (): void => { const { paneHistoryStart } = this.props; paneHistoryStart(PaneComponentEnum.ARMOR_MANAGE); }; handleDefensesSummaryClick = (evt: React.MouseEvent): void => { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); this.handleDefensesSummaryShow(); }; handleDefensesSummaryShow = (): void => { const { paneHistoryStart } = this.props; paneHistoryStart(PaneComponentEnum.DEFENSE_MANAGE); }; handleConditionSummaryClick = (evt: React.MouseEvent): void => { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); this.handleConditionSummaryShow(); }; handleConditionSummaryShow = (): void => { const { paneHistoryStart } = this.props; paneHistoryStart(PaneComponentEnum.CONDITION_MANAGE); }; renderDefault = (): React.ReactNode => { return (
Equip weapons or add spells to see your attacks here.
); }; render() { const { armorClass, resistances, vulnerabilities, immunities, conditions, theme, dimensions, } = this.props; let BoxBackgroundComponent: React.ComponentType = SquaredBoxSvg344x95; if (dimensions.styleSizeType > StyleSizeTypeEnum.DESKTOP) { BoxBackgroundComponent = SquaredBoxSvg408x95; } return (

Defenses and Conditions

Defenses
Conditions
); } } function mapStateToProps(state: SheetAppState) { return { spellCasterInfo: rulesEngineSelectors.getSpellCasterInfo(state), armorClass: rulesEngineSelectors.getAcTotal(state), resistances: rulesEngineSelectors.getActiveGroupedResistances(state), immunities: rulesEngineSelectors.getActiveGroupedImmunities(state), vulnerabilities: rulesEngineSelectors.getActiveGroupedVulnerabilities(state), conditions: rulesEngineSelectors.getActiveConditions(state), ruleData: rulesEngineSelectors.getRuleData(state), abilityLookup: rulesEngineSelectors.getAbilityLookup(state), dimensions: appEnvSelectors.getDimensions(state), theme: rulesEngineSelectors.getCharacterTheme(state), diceEnabled: appEnvSelectors.getDiceEnabled(state), }; } const CombatContainer = (props) => { const { pane: { paneHistoryStart }, } = useSidebar(); return ; }; export default connect(mapStateToProps)(CombatContainer);