// SPDX-FileCopyrightText: 2021 Johannes Loher // SPDX-FileCopyrightText: 2021 Oliver Rümpelein // SPDX-FileCopyrightText: 2021 Gesina Schwalbe // SPDX-FileCopyrightText: 2021 Siegfried Krug // // SPDX-License-Identifier: MIT import { DS4 } from "../config"; import type { ModifiableData, ModifiableDataBase, ResourceData } from "../common/common-data"; export interface DS4ActorDataSourceDataBase { attributes: DS4ActorDataSourceDataAttributes; traits: DS4ActorDataSourceDataTraits; combatValues: DS4ActorDataSourceDataCombatValues; } type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; type Attribute = keyof DS4ActorDataSourceDataAttributes; export function isAttribute(value: unknown): value is Attribute { return (Object.keys(DS4.i18n.attributes) as Array).includes(value); } type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; type Trait = keyof DS4ActorDataSourceDataTraits; export function isTrait(value: unknown): value is Trait { return (Object.keys(DS4.i18n.traits) as Array).includes(value); } type DS4ActorDataSourceDataCombatValues = { [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" ? ResourceData : ModifiableData; }; type CombatValue = keyof DS4ActorDataSourceDataCombatValues; export function isCombatValue(value: string): value is CombatValue { return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); }