chore : working on game

This commit is contained in:
2024-12-30 00:39:39 +01:00
parent 9a0c26dd80
commit 08daf733d1
5 changed files with 48 additions and 29 deletions
+6 -2
View File
@@ -21,9 +21,13 @@ const currentGames = computed(() => {
<ClientOnly> <ClientOnly>
<template v-if="userStore.self && userStore.self.id"> <template v-if="userStore.self && userStore.self.id">
<User :id="userStore.self.id"></User> <User :id="userStore.self.id"></User>
<button>Logout</button> <NuxtLink :to="$config.public.endpoint + '/logout'"
><button>Logout</button></NuxtLink
>
</template> </template>
<button v-else>Login</button> <NuxtLink v-else :to="$config.public.discordLoginEndpoint">
<button>Login</button>
</NuxtLink>
</ClientOnly> </ClientOnly>
</template> </template>
+4
View File
@@ -16,10 +16,14 @@ const game = lobbyStore.games[props.id];
</script> </script>
<template> <template>
{{ game.id }}
{{ game.players.map((p) => p.user.username) }}
{{ game }} {{ game }}
<NuxtLink :to="'/game/' + id" <NuxtLink :to="'/game/' + id"
><input type="button" value="open" :disabled="!userStore.self || loading" ><input type="button" value="open" :disabled="!userStore.self || loading"
/></NuxtLink> /></NuxtLink>
<br />
</template> </template>
<style lang="css" scoped> <style lang="css" scoped>
+24 -18
View File
@@ -1,28 +1,34 @@
import { useLobbyStore } from "~/store/lobby.store"; import { useLobbyStore } from "~/store/lobby.store";
import type { LobbyCreateEvent, LobbyDeleteEvent, LobbyJoinEvent, LobbyLeaveEvent, LobbyStartEvent } from "../events/lobby.events"; import type {
LobbyCreateEvent,
LobbyDeleteEvent,
LobbyJoinEvent,
LobbyLeaveEvent,
LobbyStartEvent,
} from "../events/lobby.events";
export const handlers = { export const handlers = {
create: (event: LobbyCreateEvent) => { create: (event: LobbyCreateEvent) => {
const lobbyStore = useLobbyStore(); const lobbyStore = useLobbyStore();
lobbyStore.games[event.game.id] = event.game lobbyStore.games[event.game.id] = event.game;
}, },
start: (event:LobbyStartEvent)=>{ start: (event: LobbyStartEvent) => {
const lobbyStore = useLobbyStore() const lobbyStore = useLobbyStore();
lobbyStore.games[event.game.id].started = true lobbyStore.games[event.game.id].started = true;
}, },
delete:(event: LobbyDeleteEvent)=>{ delete: (event: LobbyDeleteEvent) => {
const lobbyStore = useLobbyStore() const lobbyStore = useLobbyStore();
delete lobbyStore.games[event.id] delete lobbyStore.games[event.id];
}, },
join:(event: LobbyJoinEvent)=>{ joingame: (event: LobbyJoinEvent) => {
const lobbyStore = useLobbyStore() const lobbyStore = useLobbyStore();
lobbyStore.games[event.game.id].players.push(event.player) lobbyStore.games[event.game.id].players.push(event.player);
},
leavegame: (event: LobbyLeaveEvent) => {
const lobbyStore = useLobbyStore();
const playerIndex = lobbyStore.games[event.game.id].players.findIndex(
(p) => p.user.id == event.player.user.id
);
lobbyStore.games[event.game.id].players.splice(playerIndex, 1);
}, },
leave:(event: LobbyLeaveEvent)=>{
const lobbyStore = useLobbyStore()
const playerIndex = lobbyStore.games[event.game.id].players.findIndex(p=>p.user.id == event.player.user.id)
lobbyStore.games[event.game.id].players.splice(playerIndex,1)
}
}; };
+13 -8
View File
@@ -11,13 +11,18 @@ async function createGame() {
return; return;
} }
loading.value = true; loading.value = true;
await lobbyStore.createGame().catch((e) => { await lobbyStore
if (e.data.statusCode == 400) { .createGame()
console.error("Owned game limit reached"); .then(() => {
} else { loading.value = false;
console.log(e); })
} .catch((e) => {
}); if (e.data.statusCode == 400) {
console.error("Owned game limit reached");
} else {
console.log(e);
}
});
} }
</script> </script>
@@ -27,7 +32,7 @@ async function createGame() {
type="button" type="button"
value="Create Game" value="Create Game"
@click="createGame" @click="createGame"
:disabled="!userStore.self" :disabled="!userStore.self || loading"
/> />
</template> </template>