From 13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29 Mon Sep 17 00:00:00 2001 From: Maks Jopek Date: Sat, 24 Apr 2021 00:34:07 +0200 Subject: Playing almost working --- backend/ts/api/login.ts | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'backend/ts/api/login.ts') diff --git a/backend/ts/api/login.ts b/backend/ts/api/login.ts index 0c6ef75..b21a506 100644 --- a/backend/ts/api/login.ts +++ b/backend/ts/api/login.ts @@ -1,6 +1,7 @@ import { Request, Response } from "express"; -import { fiaTable, dbRes, Color, Colors, Helpers, makeQuery, Chequer, tColors } from "../../../helpers/helpersBack"; +import { fiaTable, dbRes, Color, Colors, Helpers, makeQuery, Chequer, tColors, waitForQueue } from "../../../helpers/helpersBack"; import startGame from "../startGame"; +import { global } from "../index"; export default async function apiLogin(req: Request, res: Response) { if (req.session === undefined) { @@ -11,27 +12,39 @@ export default async function apiLogin(req: Request, res: Response) { req.session.uid = req.session.id; req.session.name = req.body.name; - let dbRes = (await makeQuery("SELECT * FROM `fia` WHERE `started`= 0 LIMIT 1", [])) as Array, + if (global.stop === true) { + await waitForQueue(); + } + global.stop = true; + + let dbRes = (await makeQuery("SELECT * FROM `fia` WHERE `started`= 0 LIMIT 1", [])) as Array, row: fiaTable; - if (dbRes.length === 0) { - let color = Helpers.getRandomInt(0, 5); + if (dbRes[0] === undefined) { + let color = Helpers.getRandomInt(0, 4); row = {} as fiaTable; row.data = [{ id: req.session.uid, index: 0, - color: Color[color as keyof Colors], + ready: false, + color: color, name: req.body.name, }]; - req.session.color = Color.blue; + req.session.color = color; - await makeQuery('INSERT INTO `fia`(`data`, `started`) VALUES (?, ?)', [JSON.stringify(row.data), 0]); - req.session.gid = (await makeQuery('SELECT `id` FROM `fia` WHERE `data`= ?', [JSON.stringify(row.data)]) as any)[0].id; + await makeQuery('INSERT INTO `fia`(`data`) VALUES (?)', [row.data]); + req.session.gid = (await makeQuery('SELECT `id` FROM `fia` WHERE `data`= ?', [row.data]) as any)[0].id; } else { - row = Helpers.dbResToFiaTable(dbRes[0]); + // row = Helpers.dbResToFiaTable(dbRes[0]); + row = dbRes[0]; let playersColors: Array = [], colors = [...Array(4).keys()]; + if (row.data.filter(el => el.id !== req.session?.uid).length === 0) { + res.send(JSON.stringify({ data: row.data, uid: req.session.uid })); + return; + } + for (let playerData of row.data) playersColors.push(playerData.color); @@ -42,6 +55,7 @@ export default async function apiLogin(req: Request, res: Response) { row.data.push({ id: req.session.uid, index: index, + ready: false, color: color, name: req.body.name, }); @@ -49,12 +63,14 @@ export default async function apiLogin(req: Request, res: Response) { req.session.gid = row.id; req.session.index = index; - makeQuery('UPDATE `fia` SET `data`= ? WHERE `id`= ?', [JSON.stringify(row.data), row.id]); + await makeQuery('UPDATE `fia` SET `data`= ? WHERE `id`= ?', [row.data, row.id]); + + if (row.data.length >= 4) + startGame(req.session.gid); - if (row.data.length === 4) { - startGame(req, res); - } } - makeQuery("UPDATE `fia` SET `playersCount`=`playersCount`+1 WHERE `id`= ?", [req.session.gid]); - res.send(JSON.stringify(row.data)); + + await makeQuery("UPDATE `fia` SET `playersCount`=`playersCount`+1 WHERE `id`= ?", [req.session.gid]); + global.stop = false; + res.send(JSON.stringify({ data: row.data, uid: req.session.uid })); } -- cgit v1.3.1