edge-ruedelasoif/src/routes/party/[id]/+page.svelte

98 lines
3.4 KiB
Svelte

<script>
import { page } from '$app/stores';
import { onMount } from 'svelte';
import { goto } from '$app/navigation';
// Data
export let data;
// Focus
let partyname;
onMount(() => {
if(data.party.status!="playerwait") goto("/party")
});
Edge.Client.addEventListener("message", function(evt) {
if(evt.detail.hasOwnProperty("cmd")) {
console.log(evt.detail.cmd);
if(evt.detail.cmd=="REFRESH") {
location.reload();
}
}
});
// Upsert
async function upsert(event) {
// Affecter la party au player submiter
if(data.params.id==='submit')
data.party.playerid=data.player._id;
// Ajouter un player à la party
data.party.playernb=data.party.playernb+1;
// Si playernb ne depasse pas playernbmax = on affecte le jour à la party
if(data.party.playernb<=data.party.playernbmax&&data.party.status==="playerwait") {
data.party.status="playerwait";
data.party.playertile = await Edge.Client.rpc("getTile", 'st').catch(err => console.error(err));
// Submit de la party
let party=await Edge.Client.rpc("upsertParty", data.party).catch(err => console.error(err));
data.party._id=party._id;
// On affecte la party au player submiter
data.player.partyid=party._id;
let randomColor = Math.floor(Math.random()*16777215).toString(16);
await Edge.Client.rpc("upsertPlayer", data.player).catch(err => console.error(err));
// Génération du player party
let playerparty = { "playerid": data.player._id, "partyid": party._id, "tileid": "st", "cash": 100, "nbhappy": 0, "player": data.player, "color": "#"+ randomColor}
await Edge.Client.rpc("upsertPlayerParty", playerparty).catch(err => console.error(err));
// Sauvegarde du player party
data.party.playerparty=playerparty;
await Edge.Client.rpc("upsertParty", data.party).catch(err => console.error(err));
}
// refresh des party
Edge.Client.send({ "cmd": "REFRESH" });
// Goto game
goto("/game");
}
</script>
{#if $page.params.id==='submit'}
<h1>Création Partie</h1>
{:else}
<h1>Rejoindre une Partie</h1>
{/if}
<form on:submit|preventDefault={upsert} method="POST">
<div class="form-action">
{#if $page.params.id==='submit'}
<button type="submit" class="btn-submit">Valider</button>
{:else}
<button type="submit" class="btn-submit">Rejoindre la partie</button>
{/if}
<a href="/party" class="btn btn-cancel">Annuler</a>
</div>
{#if $page.params.id==='submit'}
<label class="required" for="partyname">Titre</label><br>
<input id="partyname" name="partyname" required type="text" bind:value={data.party.name} bind:this={partyname}>
<label class="required" for="playernbmax">Nombre de joueur maximum</label><br>
<input id="playernbmax" name="playernbmax" required type="number" bind:value={data.party.playernbmax}>
{:else}
Titre = {data.party.name}<br>
Créateur de la Partie = {data.partyplayer.name}<br>
Nombre de Jouers = {data.party.playernb} sur {data.party.playernbmax}<br>
{/if}
</form>