diff options
| author | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-24 00:34:07 +0200 |
|---|---|---|
| committer | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-24 00:34:07 +0200 |
| commit | 13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29 (patch) | |
| tree | 077a963bae31729dffa6c7c678af112680bb6d38 /backend/ts/api/readyStateToggle.ts | |
| parent | 457ee1d7caa899bbe86bf7a1390f940b5b3176b7 (diff) | |
| download | fia-13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29.tar.gz fia-13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29.tar.zst fia-13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29.zip | |
Playing almost working
Diffstat (limited to 'backend/ts/api/readyStateToggle.ts')
| -rw-r--r-- | backend/ts/api/readyStateToggle.ts | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/backend/ts/api/readyStateToggle.ts b/backend/ts/api/readyStateToggle.ts index 6bca5b2..e1b08b2 100644 --- a/backend/ts/api/readyStateToggle.ts +++ b/backend/ts/api/readyStateToggle.ts @@ -1,19 +1,43 @@ import { Request, Response } from "express"; -import { makeQuery } from "../../../helpers/helpersBack"; +import { makeQuery, Data, getData, API_RES, waitForQueue } from "../../../helpers/helpersBack"; import startGame from "../startGame"; +import {global} from "../index"; export default async function (req: Request, res: Response) { - if (req.session === undefined || req.body.state === undefined) { + if (req.session === undefined || req.body.state === undefined || req.session.gid === undefined) { res.status(500); - res.send(""); + res.send(API_RES.failure); return; } - await makeQuery("UPDATE `fia` SET `playersAreReady`=`playersAreReady`+" + (req.body.state ? 1 : -1) - + " WHERE `id`=" + req.session.gid, []); - let start = ( - await makeQuery('SELECT playersAreReady=playersCount and playersCount > 1 "start" FROM `fia` WHERE `id`= ?', - [req.session.gid]) - )[0].start; - if(start === 1) - startGame(req, res); + + if(global.stop === true) { + await waitForQueue(); + } + global.stop = true; + + let data: { data: Data, started: number } = + (await makeQuery("SELECT `data`, `started` FROM `fia` WHERE `id` = ?", [req.session.gid]))[0], + i = 1, + started = false; + + if (data.started === 0) { + + for (let player of data.data) { + if (player.id === req.session.uid) + player.ready = req.body.state ? true : false; + else if (player.ready === true) + i++; + } + + await makeQuery("UPDATE `fia` SET `data` = ?, `playersAreReady`=`playersAreReady`+ ? WHERE `id`= ?", + [data.data, (req.body.state ? 1 : -1), req.session.gid]); + + if (data.data.length > 1 && data.data.length === i) { + startGame(req.session.gid); + started = true; + } + + } + global.stop = false; + res.send(`{"success": true, "started": ${started}}`); } |
