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

extract team and weapon data

This commit is contained in:
Robin Appelman 2017-02-22 23:28:18 +01:00
commit 5488b14e63
7 changed files with 200 additions and 41 deletions

View file

@ -14,6 +14,8 @@ import {handleGameEvent} from "../PacketHandler/GameEvent";
import {handlePacketEntities} from "../PacketHandler/PacketEntities";
import {handleGameEventList} from "../PacketHandler/GameEventList";
import {handleDataTable} from "../PacketHandler/DataTable";
import {Weapon} from "./Weapon";
import {Team} from "./Team";
export class Match {
tick: number;
@ -34,6 +36,10 @@ export class Match {
entityClasses: {[entityId: string]: ServerClass};
sendTableMap: {[name: string]: SendTable};
baseLineCache: {[serverClass: string]: PacketEntity};
weaponMap: {[entityId: string]: Weapon};
outerMap: {[outer: number]: number};
teams: Team[];
teamMap: {[entityId: string]: Team};
constructor() {
this.tick = 0;
@ -57,6 +63,10 @@ export class Match {
this.entityClasses = {};
this.sendTableMap = {};
this.baseLineCache = {};
this.weaponMap = {};
this.outerMap = {};
this.teams = [];
this.teamMap = {};
}
getSendTable(name) {

View file

@ -41,7 +41,7 @@ export class PacketEntity {
return prop;
}
}
throw new Error('Property not found in entity');
throw new Error(`Property not found in entity (${originTable}.${name})`);
}
clone(): PacketEntity {

View file

@ -1,6 +1,14 @@
import {UserInfo} from "./UserInfo";
import {Vector} from "./Vector";
import {PlayerCondition} from "./PlayerCondition";
export enum LifeState {
ALIVE = 0,
DYING = 1,
DEATH = 2,
RESPAWNABLE = 3
}
export interface Player {
user: UserInfo;
position: Vector;
@ -9,4 +17,7 @@ export interface Player {
classId: number;
team: number;
viewAngle: number;
weapons: number[];
ammo: number[];
lifeState: LifeState
}

7
src/Data/Team.ts Normal file
View file

@ -0,0 +1,7 @@
export interface Team {
teamNumber: number;
name: string;
score: number;
roundsWon: number;
players: number[];
}

13
src/Data/Weapon.ts Normal file
View file

@ -0,0 +1,13 @@
export interface BaseCombatWeapon {
className: string;
owner: number;
}
export interface CWeaponMedigun {
className: 'CWeaponMedigun';
healTarget: number;
chargeLevel: number;
}
export type Weapon = BaseCombatWeapon|
CWeaponMedigun;