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
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) |