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:
parent
b3e69f1af4
commit
a7911f2d3d
11 changed files with 3925 additions and 96 deletions
|
|
@ -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
3730
src/Data/GameEventTypes.ts
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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},
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue