Add event to get a specific player's info.

This commit is contained in:
Oliver-Akins 2020-10-22 23:28:43 -06:00
parent a8d0cb5b19
commit 647bdde1f1
4 changed files with 43 additions and 1 deletions

View file

@ -0,0 +1,30 @@
import { Server, Socket } from "socket.io";
import { active_games, log } from "../main";
export const GetPlayerInfo = (io: Server, socket: Socket, data: GetPlayerInfo) => {
try {
// Check if it's an active game
if (active_games[data.game_code] == null) {
log.debug(`Can't find an active game with code: ${data.game_code}`);
socket.emit(`GameJoined`, {
success: false,
message: `Could not find an active game with that game code.`
});
return;
};
let game = active_games[data.game_code];
let player = game.players[data.user];
log.debug(`Sent player info to ${data.user}`);
socket.emit(`PlayerInfo`, {
success: true,
role: player.role,
});
} catch (err) {
log.prettyError(err);
socket.emit(`PlayerInfo`, {
success: false,
message: `${err.name}: ${err.message}`,
});
};
}

View file

@ -15,6 +15,7 @@ import { RemovePlayer } from "./events/RemovePlayer";
import { ExecutePlayer } from "./events/ExecutePlayer"; import { ExecutePlayer } from "./events/ExecutePlayer";
import { GetPlayerList } from "./events/GetPlayerList"; import { GetPlayerList } from "./events/GetPlayerList";
import { NextPresident } from "./events/NextPresident"; import { NextPresident } from "./events/NextPresident";
import { GetPlayerInfo } from "./events/GetPlayerInfo";
import { InvestigateParty } from "./events/InvestigateParty"; import { InvestigateParty } from "./events/InvestigateParty";
import { ChancellorPolicy } from "./events/ChancellorPolicy"; import { ChancellorPolicy } from "./events/ChancellorPolicy";
import { PresidentPolicies } from "./events/PresidentPolicies"; import { PresidentPolicies } from "./events/PresidentPolicies";
@ -73,7 +74,7 @@ process.on('SIGINT', clean_up);
const io = sio.listen(WSS_PORT); const io = sio.listen(WSS_PORT);
io.on(`connection`, (socket: sio.Socket) => { io.on(`connection`, (socket: sio.Socket) => {
log.info(`Client connected with id ${socket.id}`); log.silly(`Client connected with id ${socket.id}`);
// Game Management // Game Management
socket.on(`HostGame`, (data: HostGame) => HostGame(io, socket, data)); socket.on(`HostGame`, (data: HostGame) => HostGame(io, socket, data));
@ -104,6 +105,7 @@ io.on(`connection`, (socket: sio.Socket) => {
// Utility Events // Utility Events
socket.on(`GetPlayerList`, (data: GetPlayerList) => GetPlayerList(io, socket, data)); socket.on(`GetPlayerList`, (data: GetPlayerList) => GetPlayerList(io, socket, data));
socket.on(`GetPlayerInfo`, (data: GetPlayerInfo) => GetPlayerInfo(io, socket, data));
}); });
io.on(`reconnect_attempt`, (socket: sio.Socket) => { io.on(`reconnect_attempt`, (socket: sio.Socket) => {

View file

@ -20,6 +20,11 @@ interface GameJoined extends response {
uuid?: string; uuid?: string;
} }
interface PlayerInfo extends response {
// properties depend on `success` being `true`
role?: roles;
}
interface PlayerList extends response { interface PlayerList extends response {
// properties depend on `success` being `true` // properties depend on `success` being `true`
players?: string[] players?: string[]

5
src/types/data.d.ts vendored
View file

@ -26,6 +26,11 @@ interface ChancellorPolicy extends request {
policy: policy; policy: policy;
} }
interface GetPlayerInfo extends request {
success: boolean;
role: roles;
}
interface GetPlayerList { interface GetPlayerList {
game_code: string; game_code: string;
} }