Skip to content

Commit

Permalink
fixup
Browse files Browse the repository at this point in the history
  • Loading branch information
KhafraDev committed Jun 10, 2024
1 parent 041b696 commit dcb62e0
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 11 deletions.
13 changes: 11 additions & 2 deletions src/Synergism.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ import { changeSubTab, changeTab, Tabs } from './Tabs'
import { settingAnnotation, toggleIconSet, toggleTheme } from './Themes'
import { clearTimeout, clearTimers, setInterval, setTimeout } from './Timers'
import type { PlayerSave } from './types/LegacySynergism'
import { playerSchema } from './saves/PlayerSchema'

export const player: Player = {
firstPlayed: new Date().toISOString(),
Expand Down Expand Up @@ -1625,7 +1626,7 @@ const toAdapt = new Map<keyof Player, (data: PlayerSave) => unknown>([
]
])

export const loadSynergy = async () => {
const loadSynergy = async () => {
const save = (await localforage.getItem<Blob>('Synergysave2'))
?? localStorage.getItem('Synergysave2')

Expand Down Expand Up @@ -6352,7 +6353,15 @@ export const reloadShit = async (reset = false) => {
await Alert(i18next.t('main.transferredFromLZ'))
}

// await loadSynergy()
// @ts-ignore
globalThis.player = player
// @ts-ignore
globalThis.unvalidatedPlayer = JSON.parse(atob(saveObject))

const parsed = playerSchema.safeParse(JSON.parse(atob(saveObject)))
console.log(parsed.data, parsed.error)

await loadSynergy()
}

if (!reset) {
Expand Down
111 changes: 102 additions & 9 deletions src/saves/PlayerSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,17 @@ const ascendBuildingSchema = z.object({
multiplier: z.number()
})

const singularityUpgradeSchema = (key: string) => z.object({
level: z.number(),
toggleBuy: z.number(),
freeLevels: z.number(),
[key]: z.number()
})

export const playerSchema = z.object({
firstPlayed: z.string().date().optional().default(() => new Date().toISOString()),
worlds: z.object({ worlds: z.number() }).transform((obj) => {
return new QuarkHandler({ quarks: obj.worlds })
firstPlayed: z.string().datetime().optional().default(() => new Date().toISOString()),
worlds: z.number().transform((obj) => {
return new QuarkHandler({ quarks: obj })
}),
coins: decimalSchema,
coinsThisPrestige: decimalSchema,
Expand Down Expand Up @@ -208,10 +215,10 @@ export const playerSchema = z.object({
transcendShards: decimalSchema,
reincarnationShards: decimalSchema,

toggles: z.record(z.number(), z.boolean().default(false)),
toggles: z.record(z.string().regex(/^\d+$/), z.boolean().default(false)),

challengecompletions: z.number().array(),
highestchallengecompletions: z.number().array(),
highestchallengecompletions: z.union([z.number(), z.null()]).array(),
challenge15Exponent: z.number(),
highestChallenge15Exponent: z.number(),

Expand Down Expand Up @@ -297,7 +304,7 @@ export const playerSchema = z.object({
loaded1010: z.boolean(),
loaded10101: z.boolean(),

shopUpgrades: z.record(z.string(), z.number()),
shopUpgrades: z.record(z.string(), z.union([z.number(), z.null()])),

shopBuyMaxToggle: z.boolean(),
shopHideToggle: z.boolean(),
Expand Down Expand Up @@ -395,11 +402,11 @@ export const playerSchema = z.object({
autoOpenPlatonicsCubes: z.boolean(),
openPlatonicsCubes: z.number(),
roombaResearchIndex: z.number(),
ascStatToggles: z.record(z.number(), z.boolean()),
ascStatToggles: z.record(z.string().regex(/^\d+$/), z.boolean()),

prototypeCorruptions: z.number().array(),
usedCorruptions: z.number().array(),
corruptionLoadouts: z.record(z.number(), z.number().array()),
corruptionLoadouts: z.record(z.string().regex(/^\d+$/), z.number().array()),
corruptionLoadoutNames: z.string().array(),
corruptionShowStats: z.boolean(),

Expand All @@ -417,5 +424,91 @@ export const playerSchema = z.object({
autoChallengeIndex: z.number(),
autoChallengeToggles: z.boolean().array(),
autoChallengeStartExponent: z.number(),
autoChallengeTimer: z.record(z.string(), z.number())
autoChallengeTimer: z.record(z.string(), z.number()),

runeBlessingLevels: z.number().array(),
runeSpiritLevels: z.number().array(),
runeBlessingBuyAmount: z.number(),
runeSpiritBuyAmount: z.number(),

autoTesseracts: z.boolean().array(),

saveString: z.string(),
exporttest: z.boolean(),

dayCheck: z.string().datetime().nullable(),
dayTimer: z.number(),
cubeOpenedDaily: z.number(),
cubeQuarkDaily: z.number(),
tesseractOpenedDaily: z.number(),
tesseractQuarkDaily: z.number(),
hypercubeOpenedDaily: z.number(),
hypercubeQuarkDaily: z.number(),
platonicCubeOpenedDaily: z.number(),
platonicCubeQuarkDaily: z.number(),
overfluxOrbs: z.number(),
overfluxOrbsAutoBuy: z.boolean(),
overfluxPowder: z.number(),
dailyPowderResetUses: z.number(),
autoWarpCheck: z.boolean(),
loadedOct4Hotfix: z.boolean(),
loadedNov13Vers: z.boolean(),
loadedDec16Vers: z.boolean(),
loadedV253: z.boolean(),
loadedV255: z.boolean(),
loadedV297Hotfix1: z.boolean(),
loadedV2927Hotfix1: z.boolean(),
loadedV2930Hotfix1: z.boolean(),
loadedV2931Hotfix1: z.boolean(),
loadedV21003Hotfix1: z.boolean(),
loadedV21007Hotfix1: z.boolean(),
version: z.string(),
rngCode: z.number(),
promoCodeTiming: z.record(z.string(), z.number()),
singularityCount: z.number(),
highestSingularityCount: z.number(),
singularityCounter: z.number(),
goldenQuarks: z.number(),
quarksThisSingularity: z.number().nullable(),
totalQuarksEver: z.number(),
hotkeys: z.record(z.number(), z.string().array()),
theme: z.string(),
iconSet: z.number(),
notation: z.string(),

// TODO: why is this on player?
singularityUpgrades: z.record(z.string(), singularityUpgradeSchema('goldenQuarksInvested')),
octeractUpgrades: z.record(z.string(), singularityUpgradeSchema('octeractsInvested')),

dailyCodeUsed: z.boolean(),
hepteractAutoCraftPercentage: z.number(),
octeractTimer: z.number(),
insideSingularityChallenge: z.boolean(),

singularityChallenges: z.record(z.string(), z.object({
completions: z.number(),
highestSingularityCompleted: z.number(),
enabled: z.boolean()
})),

ambrosia: z.number(),
lifetimeAmbrosia: z.number(),
ambrosiaRNG: z.number(),
blueberryTime: z.number(),
visitedAmbrosiaSubtab: z.boolean(),
spentBlueberries: z.number(),
// TODO: is this right?
blueberryUpgrades: z.record(z.string(), singularityUpgradeSchema('blueberriesInvested')),

// TODO: what type?
blueberryLoadouts: z.record(z.string().regex(/^\d+$/), z.any()),
blueberryLoadoutMode: z.string(),

ultimateProgress: z.number(),
ultimatePixels: z.number(),

// TODO: what type?
caches: z.record(z.string(), z.any()),

lastExportedSave: z.number()
})

0 comments on commit dcb62e0

Please sign in to comment.