cs2-gsi-z
Version:
A modular, event-driven Game State Integration (GSI) handler for Counter-Strike 2 built with Node.js.
40 lines (36 loc) • 1.33 kB
JavaScript
import { ModelBase } from '../../models/ModelBase.js';
/**
* Represents the complete game state at a given moment. */
export class GameState extends ModelBase {
constructor({ player, round, map, provider, previously } = {}) {
super();
if (typeof player !== 'object' || player === null) {
console.warn('⚠️ GameState: invalid player, assigning empty object.');
player = {};
}
if (typeof round !== 'object' || round === null) {
console.warn('⚠️ GameState: invalid round, assigning empty object.');
round = {};
}
if (typeof map !== 'object' || map === null) {
console.warn('⚠️ GameState: invalid map, assigning empty object.');
map = {};
}
this.player = player; // It is assumed these are already instances of Player, Round, and Map.
this.round = round;
this.map = map;
this.provider = typeof provider === 'object' && provider !== null ? provider : {};
this.previously = typeof previously === 'object' && previously !== null ? previously : {};
}
/**
* Exports a clean snapshot of the current state. */
toJSON() {
return {
player: this.player,
round: this.round,
map: this.map,
provider: this.provider,
previously: this.previously,
};
}
}