Chérif et Luke coop, invitations fix et timeout
This commit is contained in:
@@ -168,12 +168,12 @@ function privateMatchmaking(player: ClientPlayer)
|
||||
const maxPlayersNumber = 2;
|
||||
privateMatchmakingMap.set(player.id, player);
|
||||
const matchOptions = player.matchOptions;
|
||||
console.log(player)
|
||||
|
||||
const token = player.token;
|
||||
const compatiblePlayers: ClientPlayer[] = [];
|
||||
for (const [id, client] of privateMatchmakingMap)
|
||||
{
|
||||
if (client.token === token)
|
||||
if (client.token === token && client.username !== player.username)
|
||||
{
|
||||
compatiblePlayers.push(client);
|
||||
if (compatiblePlayers.length === maxPlayersNumber) {
|
||||
@@ -188,6 +188,16 @@ function privateMatchmaking(player: ClientPlayer)
|
||||
});
|
||||
createGameSession(compatiblePlayers, matchOptions);
|
||||
}
|
||||
else {
|
||||
setTimeout(function abortMatch() {
|
||||
if (!player.gameSession)
|
||||
{
|
||||
// TODO: informe le back de l'invalidité du token d'invitation
|
||||
player.socket.send(JSON.stringify( new ev.EventMatchAbort() ));
|
||||
clientTerminate(player);
|
||||
}
|
||||
}, 60000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -223,7 +233,7 @@ function createGameSession(playersArr: ClientPlayer[], matchOptions: en.MatchOpt
|
||||
{
|
||||
gameSessionsMap.delete(gameSession.id);
|
||||
gameSession.playersMap.forEach((client) => {
|
||||
client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchAbort) ));
|
||||
client.socket.send(JSON.stringify( new ev.EventMatchAbort() ));
|
||||
client.gameSession = null;
|
||||
clientTerminate(client);
|
||||
});
|
||||
@@ -245,27 +255,27 @@ async function playerReadyConfirmationListener(this: WebSocket, data: string)
|
||||
{
|
||||
// WIP nest , send gameSession.id
|
||||
const gameSessionPlayersIterator = gameSession.playersMap.values();
|
||||
const body = {
|
||||
gameServerIdOfTheMatch : gameSession.id,
|
||||
gameOptions: gameSession.matchOptions,
|
||||
playerOneUsername: (<ClientPlayer>gameSessionPlayersIterator.next().value).username,
|
||||
playerTwoUsername: (<ClientPlayer>gameSessionPlayersIterator.next().value).username,
|
||||
playerOneUsernameResult : 0,
|
||||
playerTwoUsernameResult : 0
|
||||
};
|
||||
const response = await fetch(c.addressBackEnd + "/game/gameserver/creategame",
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
gameServerIdOfTheMatch : gameSession.id,
|
||||
gameOptions: gameSession.matchOptions,
|
||||
playerOneUsername: (<ClientPlayer>gameSessionPlayersIterator.next().value).username,
|
||||
playerTwoUsername: (<ClientPlayer>gameSessionPlayersIterator.next().value).username,
|
||||
playerOneUsernameResult : 0,
|
||||
playerTwoUsernameResult : 0
|
||||
|
||||
})
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
if (!response.ok)
|
||||
{
|
||||
gameSessionsMap.delete(gameSession.id);
|
||||
gameSession.playersMap.forEach((client) => {
|
||||
client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchAbort) ));
|
||||
client.socket.send(JSON.stringify( new ev.EventMatchAbort() ));
|
||||
client.gameSession = null;
|
||||
clientTerminate(client);
|
||||
});
|
||||
|
||||
@@ -71,6 +71,13 @@ export class EventMatchEnd extends ServerEvent {
|
||||
}
|
||||
}
|
||||
|
||||
export class EventMatchAbort extends ServerEvent {
|
||||
|
||||
constructor() {
|
||||
super(en.EventTypes.matchAbort);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* From Client */
|
||||
export class ClientEvent {
|
||||
|
||||
Reference in New Issue
Block a user