🚧 Created independant game_control and game_state classes

This commit is contained in:
Proxyfil
2026-04-22 20:59:24 +02:00
parent a90f8008db
commit 4ed0b8d626
2 changed files with 71 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
export class GameState {
public game_id: string;
public players: any[];
public selected_question: number;
public timer_res: string;
public question_results: any;
public answer_count: number;
public shown_question_now: number;
public final_results: any;
constructor(game_id: string, players: any[]) {
this.game_id = game_id;
this.players = players;
this.selected_question = -1;
this.timer_res = '0';
this.question_results = null;
this.answer_count = 0;
this.shown_question_now = -1;
this.final_results = null;
}
}
@@ -0,0 +1,50 @@
import type { Socket } from 'socket.io-client';
/**
* Class that encapsulates all the socket calls related to game controls for the admin page.
* Still in development, but it will be used to avoid having socket calls directly in the svelte files, and to have a single place to manage all the game controls related socket calls.
*/
export class SocketGameControls {
socket: Socket;
constructor(socket: Socket) {
this.socket = socket;
}
set_question_number(q_number: number) {
this.socket.emit('set_question_number', q_number.toString());
};
get_question_results(game_id: string, question_number: number) {
this.socket.emit('get_question_results', {
game_id,
question_number
});
};
show_solutions() {
this.socket.emit('show_solutions', {});
};
get_final_results() {
this.socket.emit('get_final_results', {});
};
start_game() {
this.socket.emit('start_game', '');
}
kick_player(username: string, players: any[]) {
this.socket.emit('kick_player', { username: username });
for (let i = 0; i < players.length; i++) {
console.log(players[i].username, username);
if (players[i].username === username) {
players.splice(i, 1);
break;
}
}
return players;
}
}