98 lines
3.4 KiB
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>
|
|
|
|
|