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

better handling of user messages

This commit is contained in:
Robin Appelman 2017-09-27 01:26:27 +02:00
commit 171b5c4049
6 changed files with 86 additions and 45 deletions

View file

@ -85,8 +85,12 @@ export class Match {
this.calculateUserInfo();
}
break;
case 'sayText2':
handleSayText2(packet, this);
case 'userMessage':
switch (packet.userMessageType) {
case 'sayText2':
handleSayText2(packet, this);
break;
}
break;
case 'gameEvent':
handleGameEvent(packet, this);

View file

@ -18,11 +18,11 @@ export enum MessageType {
}
export interface BaseMessage {
tick: number;
rawData: BitStream;
}
export interface PacketMessage extends BaseMessage {
tick: number;
type: MessageType.Packet;
packets: Packet[];
viewOrigin: [Vector, Vector];
@ -36,30 +36,35 @@ export interface PacketMessage extends BaseMessage {
export type SigonMessage = PacketMessage;
export interface SyncTickMessage extends BaseMessage {
tick: number;
type: MessageType.SyncTick;
}
export interface ConsoleCmdMessage extends BaseMessage {
type: MessageType.ConsoleCmd;
command: string;
}
export interface UserCmdMessage extends BaseMessage {
type: MessageType.UserCmd;
sequenceOut: number;
}
export interface DataTablesMessage extends BaseMessage {
type: MessageType.DataTables;
tables: SendTable[];
serverClasses: ServerClass[];
}
export interface StopMessage extends BaseMessage {
type: MessageType.Stop;
}
export interface ConsoleCmdMessage extends BaseMessage {
tick: number;
type: MessageType.ConsoleCmd;
command: string;
}
export interface UserCmdMessage extends BaseMessage {
tick: number;
type: MessageType.UserCmd;
sequenceOut: number;
}
export interface DataTablesMessage extends BaseMessage {
tick: number;
type: MessageType.DataTables;
tables: SendTable[];
serverClasses: ServerClass[];
}
export interface StringTablesMessage extends BaseMessage {
tick: number;
type: MessageType.StringTables;
tables: StringTable[];
}

View file

@ -66,7 +66,8 @@ export interface BaseDataUserPacket {
}
export interface SayText2Packet {
packetType: 'sayText2';
packetType: 'userMessage',
userMessageType: 'sayText2';
client: number;
raw: number;
kind: 'TF_Chat_All' | 'TF_Chat_Team' | 'TF_Chat_AllDead';
@ -82,28 +83,33 @@ export enum HudTextLocation {
}
export interface TextMessagePacket {
packetType: 'textMsg';
packetType: 'userMessage',
userMessageType: 'textMsg';
destType: HudTextLocation;
text: string;
}
export interface ResetHUDPacket extends BaseDataUserPacket {
packetType: 'resetHUD';
packetType: 'userMessage',
userMessageType: 'resetHUD';
}
export interface TrainPacket extends BaseDataUserPacket {
packetType: 'train';
packetType: 'userMessage',
userMessageType: 'train';
}
export interface VoiceSubtitlePacket {
packetType: 'voiceSubtitle';
packetType: 'userMessage',
userMessageType: 'voiceSubtitle';
client: number;
menu: number;
item: number;
}
export interface ShakePacket {
packetType: 'shake';
packetType: 'userMessage',
userMessageType: 'shake';
command: number;
amplitude: number;
frequency: number;
@ -116,11 +122,13 @@ export interface UnknownUserMessageBasePacket {
}
export interface BreakModelPumpkinPacket extends UnknownUserMessageBasePacket {
packetType: 'breakModelPumpkin';
packetType: 'userMessage',
userMessageType: 'breakModelPumpkin';
}
export interface GenericUnknownUserMessagePacket extends UnknownUserMessageBasePacket {
packetType: 'unknownUserMessage';
packetType: 'userMessage',
userMessageType: 'unknownUserMessage';
}
export type UnknownUserMessagePacket = GenericUnknownUserMessagePacket |
@ -135,6 +143,8 @@ export type UserMessagePacket = SayText2Packet
| BreakModelPumpkinPacket
| ShakePacket;
export type UserMessagePacketType = UserMessagePacket['userMessageType'];
export interface UserMessageTypeMap {
sayText2: SayText2Packet;
textMsg: TextMessagePacket;
@ -146,13 +156,14 @@ export interface UserMessageTypeMap {
shake: ShakePacket;
}
export const UserMessagePacketTypeMap: Map<UserMessagePacket['packetType'], UserMessageType> =
new Map<UserMessagePacket['packetType'], UserMessageType>([
export const UserMessagePacketTypeMap: Map<UserMessagePacketType, UserMessageType> =
new Map<UserMessagePacketType, UserMessageType>([
['sayText2', UserMessageType.SayText2],
['textMsg', UserMessageType.TextMsg],
['train', UserMessageType.Train],
['voiceSubtitle', UserMessageType.VoiceSubtitle],
['breakModelPumpkin', UserMessageType.BreakModel_Pumpkin],
['resetHUD', UserMessageType.ResetHUD],
['shake', UserMessageType.Shake]
['shake', UserMessageType.Shake],
['unknownUserMessage', -1]
]);