From 44eefefe67a4a5f514faa4594370346fd1b54996 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Thu, 21 Sep 2023 19:26:40 +0300 Subject: organize packets and classes (#9) --- pkg/classes/signOn.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pkg/classes/signOn.go (limited to 'pkg/classes/signOn.go') diff --git a/pkg/classes/signOn.go b/pkg/classes/signOn.go new file mode 100644 index 0000000..fad696c --- /dev/null +++ b/pkg/classes/signOn.go @@ -0,0 +1,52 @@ +package classes + +import ( + "github.com/pektezol/bitreader" + "github.com/pektezol/demoparser/pkg/messages" + "github.com/pektezol/demoparser/pkg/writer" +) + +type SignOn struct { + PacketInfo []CmdInfo + InSequence uint32 + OutSequence uint32 + Size uint32 + Data []any +} + +func (signOn *SignOn) ParseSignOn(reader *bitreader.Reader) { + for count := 0; count < MSSC; count++ { + signOn.ParseCmdInfo(reader) + } + signOn.InSequence = reader.TryReadUInt32() + signOn.OutSequence = reader.TryReadUInt32() + signOn.Size = reader.TryReadUInt32() + packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(signOn.Size)), true) + for { + messageType, err := packetReader.ReadBits(6) + if err != nil { + break + } + signOn.Data = append(signOn.Data, messages.ParseMessages(messageType, packetReader)) + } +} + +func (signOn *SignOn) ParseCmdInfo(reader *bitreader.Reader) { + signOn.PacketInfo = append(signOn.PacketInfo, CmdInfo{ + Flags: reader.TryReadUInt32(), + ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + ViewOrigin2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + ViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + LocalViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, + }) + writer.AppendLine("\tFlags: %s", CmdInfoFlags(signOn.PacketInfo[len(signOn.PacketInfo)-1].Flags).String()) + writer.AppendLine("\tView Origin: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].ViewOrigin) + writer.AppendLine("\tView Angles: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].ViewAngles) + writer.AppendLine("\tLocal View Angles: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].LocalViewAngles) + writer.AppendLine("\tView Origin 2: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].ViewOrigin2) + writer.AppendLine("\tView Angles 2: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].ViewAngles2) + writer.AppendLine("\tLocal View Angles 2: %v", signOn.PacketInfo[len(signOn.PacketInfo)-1].LocalViewAngles2) + writer.AppendLine("") +} -- cgit v1.2.3