diff --git a/src/components/Info.vue b/src/components/Info.vue index d65f31a..92ca2c9 100644 --- a/src/components/Info.vue +++ b/src/components/Info.vue @@ -43,6 +43,9 @@
Time Played: {{ timePlayed }}
+
+
Games won: {{ victories }}
+
Games lost: {{ losses }}
@@ -55,7 +58,7 @@ import type Changelog from "data/Changelog.vue"; import projInfo from "data/projInfo.json"; import { jsx } from "features/feature"; import player from "game/player"; -import { infoComponents } from "game/settings"; +import settings, { infoComponents } from "game/settings"; import { formatTime } from "util/bignum"; import { coerceComponent, render } from "util/vue"; import { computed, ref, toRefs, unref } from "vue"; @@ -69,6 +72,8 @@ const isOpen = ref(false); const timePlayed = computed(() => formatTime(player.timePlayed)); +const { victories, losses } = toRefs(settings); + const infoComponent = computed(() => { return coerceComponent(jsx(() => (<>{infoComponents.map(render)}))); }); diff --git a/src/data/projEntry.tsx b/src/data/projEntry.tsx index 20e7422..8da5cf4 100644 --- a/src/data/projEntry.tsx +++ b/src/data/projEntry.tsx @@ -11,7 +11,7 @@ import type { Player } from "game/player"; import settings from "game/settings"; import { formatWhole } from "util/bignum"; import { render } from "util/vue"; -import { computed, ref, TransitionGroup } from "vue"; +import { computed, ref, TransitionGroup, watch } from "vue"; import autoplay from "../../public/autoplay.png"; import defeatButton from "../../public/Defeat Button.png"; import defeatFace from "../../public/defeat face.png"; @@ -864,6 +864,15 @@ export const main = createLayer("main", function (this: BaseLayer) { } })); + watch([wins, lives], ([wins, lives]) => { + if (wins >= 5) { + settings.victories++; + } + if (lives <= 0) { + settings.losses++; + } + }); + return { name: "Game", minimizable: false, diff --git a/src/game/settings.ts b/src/game/settings.ts index 1a3f89b..62b98d5 100644 --- a/src/game/settings.ts +++ b/src/game/settings.ts @@ -25,6 +25,8 @@ export interface Settings { showTutorial: boolean; privateRoomName: string; privateRoomPassword: string; + victories: number; + losses: number; } const state = reactive>({ @@ -38,7 +40,9 @@ const state = reactive>({ fast: false, showTutorial: true, privateRoomName: "", - privateRoomPassword: "" + privateRoomPassword: "", + victories: 0, + losses: 0 }); watch( @@ -73,7 +77,12 @@ export const hardResetSettings = (window.hardResetSettings = () => { theme: Themes.Nordic, alignUnits: false, autoplay: false, - fast: false + fast: false, + showTutorial: true, + privateRoomName: "", + privateRoomPassword: "", + victories: 0, + losses: 0 }; globalBus.emit("loadSettings", settings); Object.assign(state, settings);