feat: nominal deltas

This commit is contained in:
TrèsAbhi committed 2024-04-05 13:59:30 -05:00
1 parent cf419a9ebb
commit 1b88773e28
4 files changed
+90 -17

No files matched your search

+28 -4
View File
@@ -1,19 +1,43 @@
import { produce } from 'immer';
import { merge } from 'lodash';
import { create } from 'zustand';
import { persist, subscribeWithSelector } from 'zustand/middleware';
import { DuelMember } from './duel';
export interface CompareMember extends DuelMember {
crewSkills: Record<string, number>;
}
export interface Compare {
export interface CompareTemporary {
members: CompareMember[];
}
export const useCompare = create<Compare>()(() => ({
export type DeltaMode = 'none' | 'percentage' | 'nominal';
export interface ComparePersistent {
deltaMode: DeltaMode;
}
export const useCompareTemporary = create<CompareTemporary>()(() => ({
members: [],
}));
export default function mutateCompare(recipe: (draft: Compare) => void) {
useCompare.setState(produce(recipe));
export const useComparePersistent = create<ComparePersistent>()(
persist(
subscribeWithSelector<ComparePersistent>(() => ({
deltaMode: 'none',
})),
{ name: 'compare', merge: (a, b) => merge(b, a) },
),
);
export function mutateCompareTemporary(
recipe: (draft: CompareTemporary) => void,
) {
useCompareTemporary.setState(produce(recipe));
}
export function mutateComparePersistent(
recipe: (draft: ComparePersistent) => void,
) {
useComparePersistent.setState(produce(recipe));
}