Fixed resets

This commit is contained in:
thepaperpilot 2022-12-06 07:09:21 -06:00
parent 4207677944
commit 5fa2e521b2
2 changed files with 9 additions and 8 deletions

View file

@ -2,14 +2,14 @@ import type { OptionsFunc, Replace } from "features/feature";
import { getUniqueID } from "features/feature"; import { getUniqueID } from "features/feature";
import { globalBus } from "game/events"; import { globalBus } from "game/events";
import type { BaseLayer } from "game/layers"; import type { BaseLayer } from "game/layers";
import type { Persistent } from "game/persistence"; import type { Persistent, State } from "game/persistence";
import { DefaultValue, persistent, PersistentState } from "game/persistence"; import { DefaultValue, persistent, PersistentState } from "game/persistence";
import type { Unsubscribe } from "nanoevents"; import type { Unsubscribe } from "nanoevents";
import Decimal from "util/bignum"; import Decimal from "util/bignum";
import type { Computable, GetComputableType } from "util/computed"; import type { Computable, GetComputableType } from "util/computed";
import { processComputable } from "util/computed"; import { processComputable } from "util/computed";
import { createLazyProxy } from "util/proxies"; import { createLazyProxy } from "util/proxies";
import { isRef, unref } from "vue"; import { isRef, unref, WritableComputedRef } from "vue";
export const ResetType = Symbol("Reset"); export const ResetType = Symbol("Reset");
@ -44,10 +44,9 @@ export function createReset<T extends ResetOptions>(
reset.reset = function () { reset.reset = function () {
const handleObject = (obj: unknown) => { const handleObject = (obj: unknown) => {
if (obj && typeof obj === "object") { if (obj && typeof obj === "object") {
if (PersistentState in obj) { if (DefaultValue in obj) {
(obj as Persistent)[PersistentState].value = (obj as Persistent)[ const persistent = obj as WritableComputedRef<T> & { [DefaultValue]: T };
DefaultValue persistent.value = persistent[DefaultValue];
];
} else if (!(obj instanceof Decimal) && !isRef(obj)) { } else if (!(obj instanceof Decimal) && !isRef(obj)) {
Object.values(obj).forEach(obj => Object.values(obj).forEach(obj =>
handleObject(obj as Record<string, unknown>) handleObject(obj as Record<string, unknown>)

View file

@ -71,7 +71,7 @@ export type Persistent<T extends State = State> = Ref<T> & {
/** /**
* A non-persistent ref that just reads and writes ot the persistent ref. Used for passing to other features without duplicating the persistent ref in the constructed save data object. * A non-persistent ref that just reads and writes ot the persistent ref. Used for passing to other features without duplicating the persistent ref in the constructed save data object.
*/ */
[NonPersistent]: WritableComputedRef<T>; [NonPersistent]: WritableComputedRef<T> & { [DefaultValue]: T };
/** /**
* The path this persistent appears in within the save data object. Predominantly used to ensure it's only placed in there one time. * The path this persistent appears in within the save data object. Predominantly used to ensure it's only placed in there one time.
*/ */
@ -102,7 +102,7 @@ export function persistent<T extends State>(defaultValue: T | Ref<T>): Persisten
persistent[DefaultValue] = isRef(defaultValue) ? defaultValue.value : defaultValue; persistent[DefaultValue] = isRef(defaultValue) ? defaultValue.value : defaultValue;
persistent[StackTrace] = getStackTrace(); persistent[StackTrace] = getStackTrace();
persistent[Deleted] = false; persistent[Deleted] = false;
persistent[NonPersistent] = computed({ const nonPersistent: WritableComputedRef<T> & Partial<{ [DefaultValue]: T }> = computed({
get() { get() {
return persistent.value; return persistent.value;
}, },
@ -110,6 +110,8 @@ export function persistent<T extends State>(defaultValue: T | Ref<T>): Persisten
persistent.value = value; persistent.value = value;
} }
}); });
nonPersistent[DefaultValue] = persistent[DefaultValue];
persistent[NonPersistent] = nonPersistent as WritableComputedRef<T> & { [DefaultValue]: T };
persistent[SaveDataPath] = undefined; persistent[SaveDataPath] = undefined;
if (addingLayers.length === 0) { if (addingLayers.length === 0) {