mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: nominal deltas
This commit is contained in:
1 parent
cf419a9ebb
commit
1b88773e28
4 files changed
+90
-17
No files matched your search
+28
-4
@@ -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));
|
||||
}
|
||||
Reference in new issue
Block a user