mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
lint fixes
This commit is contained in:
parent
00ef5499c6
commit
0aad1e874b
78 changed files with 879 additions and 851 deletions
|
|
@ -1,6 +1,6 @@
|
|||
export interface Chat {
|
||||
kind: string,
|
||||
from: string,
|
||||
text: string,
|
||||
tick: number,
|
||||
kind: string;
|
||||
from: string;
|
||||
text: string;
|
||||
tick: number;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ export enum GameEventValueType {
|
|||
SHORT = 4,
|
||||
BYTE = 5,
|
||||
BOOLEAN = 6,
|
||||
LOCAL = 7,
|
||||
LOCAL = 7
|
||||
}
|
||||
|
||||
export type GameEventValue = string | number | boolean;
|
||||
|
|
|
|||
|
|
@ -3528,7 +3528,7 @@ export type GameEvent = ServerSpawnEvent |
|
|||
|
||||
export type GameEventType = GameEvent['name'];
|
||||
|
||||
export type GameEventTypeMap = {
|
||||
export interface GameEventTypeMap {
|
||||
server_spawn: ServerSpawnEvent;
|
||||
server_changelevel_failed: ServerChangelevelFailedEvent;
|
||||
server_shutdown: ServerShutdownEvent;
|
||||
|
|
@ -3905,7 +3905,7 @@ export type GameEventTypeMap = {
|
|||
replay_endrecord: ReplayEndRecordEvent;
|
||||
replay_replaysavailable: ReplayReplaysAvailableEvent;
|
||||
replay_servererror: ReplayServerErrorEvent;
|
||||
};
|
||||
}
|
||||
|
||||
export type GameEventTypeId = number;
|
||||
|
||||
|
|
@ -4285,6 +4285,5 @@ export const GameEventTypeIdMap: Map<GameEventType, GameEventTypeId> = new Map<G
|
|||
['replay_sessioninfo', 372],
|
||||
['replay_endrecord', 373],
|
||||
['replay_replaysavailable', 374],
|
||||
['replay_servererror', 375],
|
||||
['replay_servererror', 375]
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,19 +3,19 @@ import {handleGameEvent} from '../PacketHandler/GameEvent';
|
|||
import {handlePacketEntities} from '../PacketHandler/PacketEntities';
|
||||
import {handleSayText2} from '../PacketHandler/SayText2';
|
||||
import {Building} from './Building';
|
||||
import {Chat} from './Chat';
|
||||
import {Death} from './Death';
|
||||
import {Packet} from './Packet';
|
||||
import {EntityId, PacketEntity} from './PacketEntity';
|
||||
import {ParserState} from './ParserState';
|
||||
import {Player} from './Player';
|
||||
import {PlayerResource} from './PlayerResource';
|
||||
import {Round} from './Round';
|
||||
import {StringTableEntry} from './StringTable';
|
||||
import {Team, TeamNumber} from './Team';
|
||||
import {UserInfo} from './UserInfo';
|
||||
import {Weapon} from './Weapon';
|
||||
import {World} from './World';
|
||||
import {Round} from './Round';
|
||||
import {Chat} from './Chat';
|
||||
import {Packet} from './Packet';
|
||||
import {ParserState} from './ParserState';
|
||||
import {StringTableEntry} from './StringTable';
|
||||
|
||||
export class Match {
|
||||
public tick: number = 0;
|
||||
|
|
@ -27,7 +27,7 @@ export class Match {
|
|||
public intervalPerTick: number = 0;
|
||||
public world: World = {
|
||||
boundaryMin: {x: 0, y: 0, z: 0},
|
||||
boundaryMax: {x: 0, y: 0, z: 0},
|
||||
boundaryMax: {x: 0, y: 0, z: 0}
|
||||
};
|
||||
public playerEntityMap: Map<EntityId, Player> = new Map();
|
||||
public weaponMap: Map<EntityId, Weapon> = new Map();
|
||||
|
|
@ -49,7 +49,7 @@ export class Match {
|
|||
classes: user.classes,
|
||||
name: user.name,
|
||||
steamId: user.steamId,
|
||||
userId: user.userId,
|
||||
userId: user.userId
|
||||
};
|
||||
if (user.team) {
|
||||
users[key].team = user.team;
|
||||
|
|
@ -62,7 +62,7 @@ export class Match {
|
|||
deaths: this.deaths,
|
||||
rounds: this.rounds,
|
||||
startTick: this.startTick,
|
||||
intervalPerTick: this.intervalPerTick,
|
||||
intervalPerTick: this.intervalPerTick
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -94,6 +94,38 @@ export class Match {
|
|||
}
|
||||
}
|
||||
|
||||
public getUserInfo(userId: number): UserInfo {
|
||||
// no clue why it does this
|
||||
// only seems to be the case with per user ready
|
||||
while (userId > 256) {
|
||||
userId -= 256;
|
||||
}
|
||||
const user = this.users.get(userId);
|
||||
if (!user) {
|
||||
|
||||
const newUser = {
|
||||
name: '',
|
||||
userId,
|
||||
steamId: '',
|
||||
classes: {},
|
||||
entityId: 0,
|
||||
team: ''
|
||||
};
|
||||
this.users.set(userId, newUser);
|
||||
return newUser;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
public getUserInfoForEntity(entity: PacketEntity): UserInfo | null {
|
||||
for (const user of this.users.values()) {
|
||||
if (user && user.entityId === entity.entityIndex) {
|
||||
return user;
|
||||
}
|
||||
}
|
||||
return this.calculateUserInfoByEntityId(entity.entityIndex);
|
||||
}
|
||||
|
||||
private calculateUserInfo() {
|
||||
for (const [text, extraData] of this.parserState.userInfoEntries.entries()) {
|
||||
this.calculateUserInfoFromEntry(text, extraData);
|
||||
|
|
@ -127,36 +159,4 @@ export class Match {
|
|||
throw new Error();
|
||||
}
|
||||
}
|
||||
|
||||
public getUserInfo(userId: number): UserInfo {
|
||||
// no clue why it does this
|
||||
// only seems to be the case with per user ready
|
||||
while (userId > 256) {
|
||||
userId -= 256;
|
||||
}
|
||||
const user = this.users.get(userId);
|
||||
if (!user) {
|
||||
|
||||
const newUser = {
|
||||
name: '',
|
||||
userId,
|
||||
steamId: '',
|
||||
classes: {},
|
||||
entityId: 0,
|
||||
team: '',
|
||||
};
|
||||
this.users.set(userId, newUser);
|
||||
return newUser;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
public getUserInfoForEntity(entity: PacketEntity): UserInfo | null {
|
||||
for (const user of this.users.values()) {
|
||||
if (user && user.entityId === entity.entityIndex) {
|
||||
return user;
|
||||
}
|
||||
}
|
||||
return this.calculateUserInfoByEntityId(entity.entityIndex);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import {Packet} from './Packet';
|
||||
import {BitStream} from 'bit-buffer';
|
||||
import {ServerClass} from './ServerClass';
|
||||
import {SendTable} from './SendTable';
|
||||
import {StringTable} from './StringTable';
|
||||
import {Packet} from './Packet';
|
||||
import {ParserState} from './ParserState';
|
||||
import {SendTable} from './SendTable';
|
||||
import {ServerClass} from './ServerClass';
|
||||
import {StringTable} from './StringTable';
|
||||
import {Vector} from './Vector';
|
||||
|
||||
export enum MessageType {
|
||||
|
|
@ -14,7 +14,7 @@ export enum MessageType {
|
|||
UserCmd = 5,
|
||||
DataTables = 6,
|
||||
Stop = 7,
|
||||
StringTables = 8,
|
||||
StringTables = 8
|
||||
}
|
||||
|
||||
export interface BaseMessage {
|
||||
|
|
@ -33,8 +33,7 @@ export interface PacketMessage extends BaseMessage {
|
|||
flags: number;
|
||||
}
|
||||
|
||||
export interface SigonMessage extends PacketMessage {
|
||||
}
|
||||
export type SigonMessage = PacketMessage;
|
||||
|
||||
export interface SyncTickMessage extends BaseMessage {
|
||||
type: MessageType.SyncTick;
|
||||
|
|
@ -53,7 +52,7 @@ export interface UserCmdMessage extends BaseMessage {
|
|||
export interface DataTablesMessage extends BaseMessage {
|
||||
type: MessageType.DataTables;
|
||||
tables: SendTable[];
|
||||
serverClasses: ServerClass[]
|
||||
serverClasses: ServerClass[];
|
||||
}
|
||||
|
||||
export interface StopMessage extends BaseMessage {
|
||||
|
|
@ -62,7 +61,7 @@ export interface StopMessage extends BaseMessage {
|
|||
|
||||
export interface StringTablesMessage extends BaseMessage {
|
||||
type: MessageType.StringTables;
|
||||
tables: StringTable[]
|
||||
tables: StringTable[];
|
||||
}
|
||||
|
||||
export type Message = SigonMessage |
|
||||
|
|
|
|||
|
|
@ -1,48 +1,45 @@
|
|||
import {BitStream} from 'bit-buffer';
|
||||
import {GameEventDefinition} from './GameEvent';
|
||||
import {GameEvent, GameEventType} from './GameEventTypes';
|
||||
import {EntityId, 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';
|
||||
import {
|
||||
BreakModelPumpkinPacket, ResetHUDPacket, TextMessagePacket, TrainPacket, UnknownUserMessagePacket,
|
||||
UserMessagePacket, UserMessageType,
|
||||
UserMessageTypeMap, VoiceSubtitlePacket, SayText2Packet
|
||||
BreakModelPumpkinPacket, ResetHUDPacket, SayText2Packet, TextMessagePacket, TrainPacket,
|
||||
UnknownUserMessagePacket, UserMessagePacket,
|
||||
UserMessageType, UserMessageTypeMap, VoiceSubtitlePacket
|
||||
} from './UserMessage';
|
||||
import {Vector} from './Vector';
|
||||
|
||||
export interface BasePacket {
|
||||
}
|
||||
|
||||
export interface StringTablePacket extends BasePacket {
|
||||
export interface StringTablePacket {
|
||||
packetType: 'stringTable';
|
||||
tables: StringTable[];
|
||||
}
|
||||
|
||||
export interface CreateStringTablePacket extends BasePacket {
|
||||
export interface CreateStringTablePacket {
|
||||
packetType: 'createStringTable';
|
||||
table: StringTable;
|
||||
}
|
||||
|
||||
export interface UpdateStringTablePacket extends BasePacket {
|
||||
export interface UpdateStringTablePacket {
|
||||
packetType: 'updateStringTable';
|
||||
entries: StringTableEntry[];
|
||||
tableId: number;
|
||||
}
|
||||
|
||||
export interface ConsoleCmdPacket extends BasePacket {
|
||||
export interface ConsoleCmdPacket {
|
||||
packetType: 'consoleCmd';
|
||||
command: string;
|
||||
}
|
||||
|
||||
export interface DataTablePacket extends BasePacket {
|
||||
export interface DataTablePacket {
|
||||
packetType: 'dataTable';
|
||||
tables: SendTable[];
|
||||
serverClasses: ServerClass[];
|
||||
}
|
||||
|
||||
export interface BSPDecalPacket extends BasePacket {
|
||||
export interface BSPDecalPacket {
|
||||
packetType: 'bspDecal';
|
||||
position: Vector;
|
||||
textureIndex: number;
|
||||
|
|
@ -51,35 +48,35 @@ export interface BSPDecalPacket extends BasePacket {
|
|||
lowPriority: boolean;
|
||||
}
|
||||
|
||||
export interface ClassInfoPacket extends BasePacket {
|
||||
export interface ClassInfoPacket {
|
||||
packetType: 'classInfo';
|
||||
number: number;
|
||||
create: boolean;
|
||||
entries: {
|
||||
entries: Array<{
|
||||
classId: number;
|
||||
className: string;
|
||||
dataTableName: string;
|
||||
}[];
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface EntityMessagePacket extends BasePacket {
|
||||
export interface EntityMessagePacket {
|
||||
packetType: 'entityMessage';
|
||||
classId: number;
|
||||
length: number;
|
||||
data: string;
|
||||
}
|
||||
|
||||
export interface GameEventPacket extends BasePacket {
|
||||
export interface GameEventPacket {
|
||||
packetType: 'gameEvent';
|
||||
event: GameEvent;
|
||||
}
|
||||
|
||||
export interface GameEventListPacket extends BasePacket {
|
||||
export interface GameEventListPacket {
|
||||
packetType: 'gameEventList';
|
||||
eventList: Map<number, GameEventDefinition<GameEvent['name']>>;
|
||||
}
|
||||
|
||||
export interface PacketEntitiesPacket extends BasePacket {
|
||||
export interface PacketEntitiesPacket {
|
||||
packetType: 'packetEntities';
|
||||
entities: PacketEntity[];
|
||||
removedEntities: EntityId[];
|
||||
|
|
@ -89,7 +86,7 @@ export interface PacketEntitiesPacket extends BasePacket {
|
|||
updatedBaseLine: boolean;
|
||||
}
|
||||
|
||||
export interface ParseSoundsPacket extends BasePacket {
|
||||
export interface ParseSoundsPacket {
|
||||
packetType: 'parseSounds';
|
||||
reliable: boolean;
|
||||
num: number;
|
||||
|
|
@ -97,24 +94,24 @@ export interface ParseSoundsPacket extends BasePacket {
|
|||
data: BitStream;
|
||||
}
|
||||
|
||||
export interface SetConVarPacket extends BasePacket {
|
||||
export interface SetConVarPacket {
|
||||
packetType: 'setConVar';
|
||||
vars: Map<string, string>;
|
||||
}
|
||||
|
||||
export interface TempEntitiesPacket extends BasePacket {
|
||||
export interface TempEntitiesPacket {
|
||||
packetType: 'tempEntities';
|
||||
entities: PacketEntity[];
|
||||
}
|
||||
|
||||
export interface VoiceInitPacket extends BasePacket {
|
||||
export interface VoiceInitPacket {
|
||||
packetType: 'voiceInit';
|
||||
codec: string;
|
||||
quality: number;
|
||||
extraData: number;
|
||||
}
|
||||
|
||||
export interface VoiceDataPacket extends BasePacket {
|
||||
export interface VoiceDataPacket {
|
||||
packetType: 'voiceData';
|
||||
client: number;
|
||||
proximity: number;
|
||||
|
|
@ -122,54 +119,54 @@ export interface VoiceDataPacket extends BasePacket {
|
|||
data: BitStream;
|
||||
}
|
||||
|
||||
export interface MenuPacket extends BasePacket {
|
||||
export interface MenuPacket {
|
||||
packetType: 'menu';
|
||||
type: number;
|
||||
length: number;
|
||||
data: BitStream;
|
||||
}
|
||||
|
||||
export interface CmdKeyValuesPacket extends BasePacket {
|
||||
export interface CmdKeyValuesPacket {
|
||||
packetType: 'cmdKeyValues';
|
||||
length: number;
|
||||
data: BitStream;
|
||||
}
|
||||
|
||||
export interface VoidPacket extends BasePacket {
|
||||
export interface VoidPacket {
|
||||
packetType: 'void';
|
||||
}
|
||||
|
||||
export interface FilePacket extends BasePacket {
|
||||
export interface FilePacket {
|
||||
packetType: 'file';
|
||||
transferId: number;
|
||||
fileName: string;
|
||||
requested: boolean;
|
||||
}
|
||||
|
||||
export interface NetTickPacket extends BasePacket {
|
||||
export interface NetTickPacket {
|
||||
packetType: 'netTick';
|
||||
tick: number;
|
||||
frameTime: number;
|
||||
stdDev: number;
|
||||
}
|
||||
|
||||
export interface StringCmdPacket extends BasePacket {
|
||||
export interface StringCmdPacket {
|
||||
packetType: 'stringCmd';
|
||||
command: string;
|
||||
}
|
||||
|
||||
export interface SigOnStatePacket extends BasePacket {
|
||||
export interface SigOnStatePacket {
|
||||
packetType: 'sigOnState';
|
||||
state: number;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface PrintPacket extends BasePacket {
|
||||
export interface PrintPacket {
|
||||
packetType: 'print';
|
||||
value: string;
|
||||
}
|
||||
|
||||
export interface ServerInfoPacket extends BasePacket {
|
||||
export interface ServerInfoPacket {
|
||||
packetType: 'serverInfo';
|
||||
version: number;
|
||||
serverCount: number;
|
||||
|
|
@ -188,17 +185,17 @@ export interface ServerInfoPacket extends BasePacket {
|
|||
replay: boolean;
|
||||
}
|
||||
|
||||
export interface SetPausePacket extends BasePacket {
|
||||
export interface SetPausePacket {
|
||||
packetType: 'setPause';
|
||||
paused: boolean;
|
||||
}
|
||||
|
||||
export interface SetViewPacket extends BasePacket {
|
||||
export interface SetViewPacket {
|
||||
packetType: 'setView';
|
||||
index: number;
|
||||
}
|
||||
|
||||
export interface FixAnglePacket extends BasePacket {
|
||||
export interface FixAnglePacket {
|
||||
packetType: 'fixAngle';
|
||||
relative: boolean;
|
||||
x: number;
|
||||
|
|
@ -206,12 +203,12 @@ export interface FixAnglePacket extends BasePacket {
|
|||
z: number;
|
||||
}
|
||||
|
||||
export interface PreFetchPacket extends BasePacket {
|
||||
export interface PreFetchPacket {
|
||||
packetType: 'preFetch';
|
||||
index: number;
|
||||
}
|
||||
|
||||
export interface GetCvarValuePacket extends BasePacket {
|
||||
export interface GetCvarValuePacket {
|
||||
packetType: 'getCvarValue';
|
||||
cookie: number;
|
||||
value: string;
|
||||
|
|
@ -312,5 +309,5 @@ export enum PacketTypeId {
|
|||
menu = 29,
|
||||
gameEventList = 30,
|
||||
getCvarValue = 31,
|
||||
cmdKeyValues = 32,
|
||||
cmdKeyValues = 32
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,12 +6,21 @@ export enum PVS {
|
|||
PRESERVE = 0,
|
||||
ENTER = 1,
|
||||
LEAVE = 2,
|
||||
DELETE = 4,
|
||||
DELETE = 4
|
||||
}
|
||||
|
||||
export type EntityId = number;
|
||||
|
||||
export class PacketEntity {
|
||||
public static getPropByFullName(props: SendProp[], fullName: string): SendProp | null {
|
||||
for (const prop of props) {
|
||||
if (prop.definition.fullName === fullName) {
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public serverClass: ServerClass;
|
||||
public entityIndex: EntityId;
|
||||
public props: SendProp[];
|
||||
|
|
@ -28,15 +37,6 @@ export class PacketEntity {
|
|||
this.pvs = pvs;
|
||||
}
|
||||
|
||||
public static getPropByFullName(props: SendProp[], fullName: string): SendProp | null {
|
||||
for (const prop of props) {
|
||||
if (prop.definition.fullName === fullName) {
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public getPropByDefinition(definition: SendPropDefinition) {
|
||||
return PacketEntity.getPropByFullName(this.props, definition.fullName);
|
||||
}
|
||||
|
|
@ -75,7 +75,7 @@ export class PacketEntity {
|
|||
}
|
||||
|
||||
public diffFromBaseLine(baselineProps: SendProp[]): SendProp[] {
|
||||
return this.props.filter(prop => {
|
||||
return this.props.filter((prop) => {
|
||||
const baseProp = PacketEntity.getPropByFullName(baselineProps, prop.definition.fullName);
|
||||
return (!baseProp || prop.value !== baseProp.value);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
import {BitStream} from 'bit-buffer';
|
||||
import {GameEventDefinition} from './GameEvent';
|
||||
import {EntityId} from './PacketEntity';
|
||||
import {SendTable, SendTableName} from './SendTable';
|
||||
import {ServerClass, ServerClassId} from './ServerClass';
|
||||
import {StringTable} from './StringTable';
|
||||
import {GameEventType} from './GameEventTypes';
|
||||
import {SendProp} from './SendProp';
|
||||
import {Packet, PacketTypeId} from './Packet';
|
||||
import {handleGameEventList} from '../PacketHandler/GameEventList';
|
||||
import {handlePacketEntitiesForState} from '../PacketHandler/PacketEntities';
|
||||
import {
|
||||
handleStringTable, handleStringTables, handleStringTableUpdate,
|
||||
handleTable
|
||||
} from '../PacketHandler/StringTable';
|
||||
import {handleGameEventList} from '../PacketHandler/GameEventList';
|
||||
import {GameEventDefinition} from './GameEvent';
|
||||
import {GameEventType} from './GameEventTypes';
|
||||
import {DataTablesMessage, Message, MessageType, StringTablesMessage} from './Message';
|
||||
import {handlePacketEntitiesForState} from '../PacketHandler/PacketEntities';
|
||||
import {Packet, PacketTypeId} from './Packet';
|
||||
import {EntityId} from './PacketEntity';
|
||||
import {SendProp} from './SendProp';
|
||||
import {SendTable, SendTableName} from './SendTable';
|
||||
import {ServerClass, ServerClassId} from './ServerClass';
|
||||
import {StringTable} from './StringTable';
|
||||
|
||||
export class ParserState {
|
||||
public version: number = 0;
|
||||
|
|
@ -62,6 +62,14 @@ export class ParserState {
|
|||
}
|
||||
}
|
||||
|
||||
public getStringTable(name: string): StringTable | null {
|
||||
const table = this.stringTables.find((stringTable) => stringTable.name === name);
|
||||
if (!table) {
|
||||
return null;
|
||||
}
|
||||
return table;
|
||||
}
|
||||
|
||||
private handleDataTableMessage(message: DataTablesMessage) {
|
||||
for (const table of message.tables) {
|
||||
this.sendTables.set(table.name, table);
|
||||
|
|
@ -74,14 +82,6 @@ export class ParserState {
|
|||
handleTable(table, this);
|
||||
}
|
||||
}
|
||||
|
||||
public getStringTable(name: string): StringTable | null {
|
||||
const table = this.stringTables.find(table => table.name === name);
|
||||
if (!table) {
|
||||
return null;
|
||||
}
|
||||
return table;
|
||||
}
|
||||
}
|
||||
|
||||
export function getClassBits(state: ParserState) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
import {Match} from './Match';
|
||||
import {EntityId} from './PacketEntity';
|
||||
import {PlayerCondition} from './PlayerCondition';
|
||||
import {UserInfo} from './UserInfo';
|
||||
import {Vector} from './Vector';
|
||||
import {Weapon} from './Weapon';
|
||||
import {EntityId} from './PacketEntity';
|
||||
|
||||
export enum LifeState {
|
||||
ALIVE = 0,
|
||||
DYING = 1,
|
||||
DEATH = 2,
|
||||
RESPAWNABLE = 3,
|
||||
RESPAWNABLE = 3
|
||||
}
|
||||
|
||||
export class Player {
|
||||
|
|
@ -33,8 +33,8 @@ export class Player {
|
|||
|
||||
get weapons(): Weapon[] {
|
||||
return this.weaponIds
|
||||
.map(id => this.match.outerMap.get(id) as EntityId)
|
||||
.filter(entityId => entityId > 0)
|
||||
.map(entityId => this.match.weaponMap.get(entityId) as Weapon);
|
||||
.map((id) => this.match.outerMap.get(id) as EntityId)
|
||||
.filter((entityId) => entityId > 0)
|
||||
.map((entityId) => this.match.weaponMap.get(entityId) as Weapon);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,5 +77,5 @@ export enum PlayerCondition {
|
|||
TF_COND_HALLOWEEN_TINY = (1 << 75),
|
||||
TF_COND_HALLOWEEN_IN_HELL = (1 << 76),
|
||||
TF_COND_HALLOWEEN_GHOST_MODE = (1 << 77),
|
||||
TF_COND_MINICRITBOOSTED_ON_KILL = (1 << 78),
|
||||
TF_COND_MINICRITBOOSTED_ON_KILL = (1 << 78)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
export interface Round {
|
||||
winner: 'red' | 'blue',
|
||||
winner: 'red' | 'blue';
|
||||
length: number;
|
||||
end_tick: number;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,21 @@
|
|||
import {SendTable} from './SendTable';
|
||||
|
||||
export class SendPropDefinition {
|
||||
public static formatFlags(flags: number) {
|
||||
const names: string[] = [];
|
||||
for (const name in SendPropFlag) {
|
||||
if ((SendPropFlag as object).hasOwnProperty(name)) {
|
||||
const flagValue = SendPropFlag[name] as SendPropFlag | string;
|
||||
if (typeof flagValue === 'number') {
|
||||
if (flags & flagValue) {
|
||||
names.push(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
public type: SendPropType;
|
||||
public name: string;
|
||||
public flags: number;
|
||||
|
|
@ -41,7 +56,7 @@ export class SendPropDefinition {
|
|||
name: this.name,
|
||||
type: SendPropType[this.type],
|
||||
flags: this.flags,
|
||||
bitCount: this.bitCount,
|
||||
bitCount: this.bitCount
|
||||
};
|
||||
if (this.type === SendPropType.DPT_Float) {
|
||||
data.lowValue = this.lowValue;
|
||||
|
|
@ -61,19 +76,6 @@ export class SendPropDefinition {
|
|||
get allFlags() {
|
||||
return SendPropDefinition.formatFlags(this.flags);
|
||||
}
|
||||
|
||||
static formatFlags(flags: number) {
|
||||
let names: string[] = [];
|
||||
for (const name in SendPropFlag) {
|
||||
const flagValue = <SendPropFlag | string>SendPropFlag[name];
|
||||
if (typeof flagValue === 'number') {
|
||||
if (flags & flagValue) {
|
||||
names.push(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
return names;
|
||||
}
|
||||
}
|
||||
|
||||
export enum SendPropType {
|
||||
|
|
@ -84,7 +86,7 @@ export enum SendPropType {
|
|||
DPT_String,
|
||||
DPT_Array,
|
||||
DPT_DataTable,
|
||||
DPT_NUMSendPropTypes,
|
||||
DPT_NUMSendPropTypes
|
||||
}
|
||||
|
||||
export enum SendPropFlag {
|
||||
|
|
@ -111,5 +113,5 @@ export enum SendPropFlag {
|
|||
SPROP_COORD_MP_LOWPRECISION = (1 << 14), // Like SPROP_COORD, but special handling for multiplayer games
|
||||
// where the fractional component only gets a 3 bits instead of 5
|
||||
SPROP_COORD_MP_INTEGRAL = (1 << 15), // SPROP_COORD_MP, but coordinates are rounded to integral boundaries
|
||||
SPROP_VARINT = (1 << 5),
|
||||
SPROP_VARINT = (1 << 5)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ export enum TeamNumber {
|
|||
UNASGINED = 0,
|
||||
SPECTATOR = 1,
|
||||
RED = 2,
|
||||
BLU = 3,
|
||||
BLU = 3
|
||||
}
|
||||
|
||||
export interface Team {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import {BasePacket} from './Packet';
|
||||
import {BitStream} from 'bit-buffer';
|
||||
|
||||
export enum UserMessageType {
|
||||
|
|
@ -59,14 +58,14 @@ export enum UserMessageType {
|
|||
HapPunch = 54,
|
||||
HapSetDrag = 55,
|
||||
HapSet = 56,
|
||||
HapMeleeContact = 57,
|
||||
HapMeleeContact = 57
|
||||
}
|
||||
|
||||
export interface BaseDataUserPacket extends BasePacket {
|
||||
export interface BaseDataUserPacket {
|
||||
data: number;
|
||||
}
|
||||
|
||||
export interface SayText2Packet extends BasePacket {
|
||||
export interface SayText2Packet {
|
||||
packetType: 'sayText2';
|
||||
client: number;
|
||||
raw: number;
|
||||
|
|
@ -82,7 +81,7 @@ export enum HudTextLocation {
|
|||
HUD_PRINTCENTER = 4
|
||||
}
|
||||
|
||||
export interface TextMessagePacket extends BasePacket {
|
||||
export interface TextMessagePacket {
|
||||
packetType: 'textMsg';
|
||||
destType: HudTextLocation;
|
||||
text: string;
|
||||
|
|
@ -96,14 +95,14 @@ export interface TrainPacket extends BaseDataUserPacket {
|
|||
packetType: 'train';
|
||||
}
|
||||
|
||||
export interface VoiceSubtitlePacket extends BasePacket {
|
||||
export interface VoiceSubtitlePacket {
|
||||
packetType: 'voiceSubtitle';
|
||||
client: number;
|
||||
menu: number;
|
||||
item: number;
|
||||
}
|
||||
|
||||
export interface ShakePacket extends BasePacket {
|
||||
export interface ShakePacket {
|
||||
packetType: 'shake';
|
||||
command: number;
|
||||
amplitude: number;
|
||||
|
|
@ -111,7 +110,7 @@ export interface ShakePacket extends BasePacket {
|
|||
duration: number;
|
||||
}
|
||||
|
||||
export interface UnknownUserMessageBasePacket extends BasePacket {
|
||||
export interface UnknownUserMessageBasePacket {
|
||||
data: BitStream;
|
||||
type: number;
|
||||
}
|
||||
|
|
@ -136,7 +135,7 @@ export type UserMessagePacket = SayText2Packet
|
|||
| BreakModelPumpkinPacket
|
||||
| ShakePacket;
|
||||
|
||||
export type UserMessageTypeMap = {
|
||||
export interface UserMessageTypeMap {
|
||||
sayText2: SayText2Packet;
|
||||
textMsg: TextMessagePacket;
|
||||
unknownUserMessage: GenericUnknownUserMessagePacket;
|
||||
|
|
@ -147,12 +146,13 @@ export type UserMessageTypeMap = {
|
|||
shake: ShakePacket;
|
||||
}
|
||||
|
||||
export const UserMessagePacketTypeMap: Map<UserMessagePacket['packetType'], UserMessageType> = new Map<UserMessagePacket['packetType'], UserMessageType>([
|
||||
['sayText2', UserMessageType.SayText2],
|
||||
['textMsg', UserMessageType.TextMsg],
|
||||
['train', UserMessageType.Train],
|
||||
['voiceSubtitle', UserMessageType.VoiceSubtitle],
|
||||
['breakModelPumpkin', UserMessageType.BreakModel_Pumpkin],
|
||||
['resetHUD', UserMessageType.ResetHUD],
|
||||
['shake', UserMessageType.Shake]
|
||||
]);
|
||||
export const UserMessagePacketTypeMap: Map<UserMessagePacket['packetType'], UserMessageType> =
|
||||
new Map<UserMessagePacket['packetType'], UserMessageType>([
|
||||
['sayText2', UserMessageType.SayText2],
|
||||
['textMsg', UserMessageType.TextMsg],
|
||||
['train', UserMessageType.Train],
|
||||
['voiceSubtitle', UserMessageType.VoiceSubtitle],
|
||||
['breakModelPumpkin', UserMessageType.BreakModel_Pumpkin],
|
||||
['resetHUD', UserMessageType.ResetHUD],
|
||||
['shake', UserMessageType.Shake]
|
||||
]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue