diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-08 17:41:09 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-08 17:41:09 +0900 |
| commit | 27c2ca50488680595c114dfae6f8de2ec3c48b32 (patch) | |
| tree | 913bad82798e39c40e14d1bbc7fa20683bdf3622 /packages/frontend/src/scripts | |
| parent | :art: (diff) | |
| download | sharkey-27c2ca50488680595c114dfae6f8de2ec3c48b32.tar.gz sharkey-27c2ca50488680595c114dfae6f8de2ec3c48b32.tar.bz2 sharkey-27c2ca50488680595c114dfae6f8de2ec3c48b32.zip | |
feat(client): 🍪👈
Diffstat (limited to 'packages/frontend/src/scripts')
| -rw-r--r-- | packages/frontend/src/scripts/clicker-game.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/clicker-game.ts b/packages/frontend/src/scripts/clicker-game.ts new file mode 100644 index 0000000000..77206cc8e2 --- /dev/null +++ b/packages/frontend/src/scripts/clicker-game.ts @@ -0,0 +1,46 @@ +import { ref, computed } from 'vue'; +import * as os from '@/os'; + +type SaveData = { + gameVersion: number; + cookies: number; + clicked: number; +}; + +export const saveData = ref<SaveData>(); +export const ready = computed(() => saveData.value != null); + +let prev = ''; + +export async function load() { + try { + saveData.value = await os.api('i/registry/get', { + scope: ['clickerGame'], + key: 'saveData', + }); + } catch (err) { + if (err.code === 'NO_SUCH_KEY') { + saveData.value = { + gameVersion: 1, + cookies: 0, + clicked: 0, + }; + save(); + return; + } + throw err; + } +} + +export async function save() { + const current = JSON.stringify(saveData.value); + if (current === prev) return; + + await os.api('i/registry/set', { + scope: ['clickerGame'], + key: 'saveData', + value: saveData.value, + }); + + prev = current; +} |