aboutsummaryrefslogtreecommitdiff
path: root/pkg/messages/messages.go
blob: 626f462feaa630a3013b0937d87a70d6551cb0cf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package messages

import (
	"reflect"

	"github.com/pektezol/bitreader"
	messages "github.com/pektezol/demoparser/pkg/messages/types"
	"github.com/pektezol/demoparser/pkg/writer"
)

func ParseMessages(messageType uint64, reader *bitreader.Reader) any {
	var messageData any
	switch messageType {
	case 0:
		messageData = messages.ParseNetNop(reader)
	case 1:
		messageData = messages.ParseNetDisconnect(reader)
	case 2:
		messageData = messages.ParseNetFile(reader)
	case 3:
		messageData = messages.ParseNetSplitScreenUser(reader)
	case 4:
		messageData = messages.ParseNetTick(reader)
	case 5:
		messageData = messages.ParseNetStringCmd(reader)
	case 6:
		messageData = messages.ParseNetSetConVar(reader)
	case 7:
		messageData = messages.ParseNetSignOnState(reader)
	case 8:
		messageData = messages.ParseSvcServerInfo(reader)
	case 9:
		messageData = messages.ParseSvcSendTable(reader)
	case 10:
		messageData = messages.ParseSvcClassInfo(reader)
	case 11:
		messageData = messages.ParseSvcSetPause(reader)
	case 12:
		messageData = messages.ParseSvcCreateStringTable(reader) // TODO:
	case 13:
		messageData = messages.ParseSvcUpdateStringTable(reader) // TODO:
	case 14:
		messageData = messages.ParseSvcVoiceInit(reader)
	case 15:
		messageData = messages.ParseSvcVoiceData(reader)
	case 16:
		messageData = messages.ParseSvcPrint(reader)
	case 17:
		messageData = messages.ParseSvcSounds(reader) // TODO:
	case 18:
		messageData = messages.ParseSvcSetView(reader)
	case 19:
		messageData = messages.ParseSvcFixAngle(reader)
	case 20:
		messageData = messages.ParseSvcCrosshairAngle(reader)
	case 21:
		messageData = messages.ParseSvcBspDecal(reader) // untested
	case 22:
		messageData = messages.ParseSvcSplitScreen(reader) // skipped
	case 23:
		messageData = messages.ParseSvcUserMessage(reader)
	case 24:
		messageData = messages.ParseSvcEntityMessage(reader) // skipped
	case 25:
		messageData = messages.ParseSvcGameEvent(reader) // TODO:
	case 26:
		messageData = messages.ParseSvcPacketEntities(reader) // TODO:
	case 27:
		messageData = messages.ParseSvcTempEntities(reader) // skipped
	case 28:
		messageData = messages.ParseSvcPrefetch(reader)
	case 29:
		messageData = messages.ParseSvcMenu(reader) // skipped
	case 30:
		messageData = messages.ParseSvcGameEventList(reader) // TODO:
	case 31:
		messageData = messages.ParseSvcGetCvarValue(reader)
	case 32:
		messageData = messages.ParseSvcCmdKeyValues(reader)
	case 33:
		messageData = messages.ParseSvcPaintmapData(reader)
	default:
		return nil
	}
	writer.AppendLine("\tMessage: %s (%d):", reflect.ValueOf(messageData).Type(), messageType)
	writer.AppendOutputFromTemp()
	return messageData
}