import { createResourceManipulator, MeteredResource, Resource, ResourceManipulator, UnmeteredResource } from "./Resources"; export enum ClockMode { HEROES_FILL = "fill", HEROES_EMPTY = "empty", } export interface Clock { readonly id: string readonly text: string readonly segments: number readonly filled: number readonly mode: ClockMode readonly order: number } const ClockResourceValue = { [MeteredResource.Blood]: undefined, [MeteredResource.Experience]: undefined, [MeteredResource.Health]: undefined, [MeteredResource.Items]: undefined, [MeteredResource.Magic]: undefined, [MeteredResource.Segments]: "filled", [MeteredResource.Turns]: undefined, [MeteredResource.Zero]: undefined, [UnmeteredResource.Materials]: undefined, [UnmeteredResource.Fabula]: undefined, [UnmeteredResource.Ultima]: undefined, [UnmeteredResource.Special]: undefined, [UnmeteredResource.Zenit]: undefined, [UnmeteredResource.Order]: "order", [UnmeteredResource.Level]: undefined, } as const satisfies {[key in Resource]: keyof Clock|undefined} const ClockResourceMax = { [MeteredResource.Blood]: undefined, [MeteredResource.Experience]: undefined, [MeteredResource.Health]: undefined, [MeteredResource.Items]: undefined, [MeteredResource.Magic]: undefined, [MeteredResource.Segments]: "segments", [MeteredResource.Turns]: undefined, [MeteredResource.Zero]: undefined, [UnmeteredResource.Materials]: undefined, [UnmeteredResource.Fabula]: undefined, [UnmeteredResource.Ultima]: undefined, [UnmeteredResource.Special]: undefined, [UnmeteredResource.Zenit]: undefined, [UnmeteredResource.Order]: undefined, [UnmeteredResource.Level]: undefined, } as const satisfies {[key in MeteredResource]: keyof Clock|undefined} & {[key in UnmeteredResource]: undefined} export const ClockResources: ResourceManipulator = createResourceManipulator< Exclude, Clock, Resource>(ClockResourceValue, ClockResourceMax)