summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-01-08 17:41:09 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-01-08 17:41:09 +0900
commit27c2ca50488680595c114dfae6f8de2ec3c48b32 (patch)
tree913bad82798e39c40e14d1bbc7fa20683bdf3622 /packages/frontend/src/scripts
parent:art: (diff)
downloadsharkey-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.ts46
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;
+}