Tracker made in React for keeping track of HP and MP and so on.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
2.1 KiB

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<Clock, Resource> =
createResourceManipulator<
Exclude<typeof ClockResourceMax[Resource]|typeof ClockResourceValue[Resource], undefined>,
Clock, Resource>(ClockResourceValue, ClockResourceMax)