1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00

strict game event types

This commit is contained in:
Robin Appelman 2017-09-02 22:44:10 +02:00
commit a7911f2d3d
11 changed files with 3925 additions and 96 deletions

View file

@ -1,20 +1,17 @@
export interface GameEventDefinition {
id: number;
name: string;
entries: GameEventEntry[];
}
import {GameEvent} from './GameEventTypes';
export interface GameEvent {
name: string;
values: GameEventValues;
export interface GameEventDefinition<T extends GameEvent['name']> {
id: number;
name: T;
entries: GameEventEntry[];
}
export interface GameEventEntry {
name: string;
type: GameEventType;
type: GameEventValueType;
}
export enum GameEventType {
export enum GameEventValueType {
STRING = 1,
FLOAT = 2,
LONG = 3,
@ -24,42 +21,8 @@ export enum GameEventType {
LOCAL = 7,
}
export interface DeathEventValues {
attacker: number;
userid: number;
assister: number;
weapon: string;
}
export interface RoundWinEventValues {
winreason: number;
team: number;
round_time: number;
}
export interface PlayerSpawnEventValues {
userid: number;
team: number;
'class': number;
}
export interface ObjectDestroyedValues {
userid: number;
attacker: number;
weapon: string;
weapinid: number;
objecttype: number;
index: number;
}
export type GameEventValue = string | number | boolean;
export interface GameEventValueMap {
export interface GameEventValues {
[name: string]: GameEventValue;
}
export type GameEventValues = GameEventValueMap |
DeathEventValues |
RoundWinEventValues |
PlayerSpawnEventValues |
ObjectDestroyedValues;

3730
src/Data/GameEventTypes.ts Normal file

File diff suppressed because it is too large Load diff

View file

@ -20,6 +20,7 @@ import {Weapon} from './Weapon';
import {World} from './World';
import {Round} from './Round';
import {Chat} from './Chat';
import {GameEvent} from './GameEventTypes';
export class Match {
public tick: number = 0;
@ -30,7 +31,7 @@ export class Match {
public startTick: number = 0;
public intervalPerTick: number = 0;
public staticBaseLines: BitStream[] = [];
public eventDefinitions: Map<number, GameEventDefinition> = new Map();
public eventDefinitions: Map<number, GameEventDefinition<GameEvent['name']>> = new Map();
public world: World = {
boundaryMin: {x: 0, y: 0, z: 0},
boundaryMax: {x: 0, y: 0, z: 0},

View file

@ -1,10 +1,11 @@
import {BitStream} from 'bit-buffer';
import {GameEvent, GameEventDefinition} from './GameEvent';
import {GameEventDefinition} from './GameEvent';
import {PacketEntity} from './PacketEntity';
import {SendTable} from './SendTable';
import {ServerClass} from './ServerClass';
import {StringTable, StringTableEntry} from './StringTable';
import {Vector} from './Vector';
import {GameEvent, GameEventType} from './GameEventTypes';
export interface BasePacket {
}
@ -70,7 +71,7 @@ export interface GameEventPacket extends BasePacket {
export interface GameEventListPacket extends BasePacket {
packetType: 'gameEventList';
eventList: Map<number, GameEventDefinition>;
eventList: Map<number, GameEventDefinition<GameEvent['name']>>;
}
export interface PacketEntitiesPacket extends BasePacket {