From 2f9aeb762294fe96606c76c2fefa17a6540639b5 Mon Sep 17 00:00:00 2001 From: BiSaXa <1669855+BiSaXa@users.noreply.github.com> Date: Sat, 27 Aug 2022 23:26:28 +0300 Subject: some cleaning --- messages/messages.go | 78 ++++++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 36 deletions(-) (limited to 'messages/messages.go') diff --git a/messages/messages.go b/messages/messages.go index 04c7268..7d00ec1 100644 --- a/messages/messages.go +++ b/messages/messages.go @@ -3,43 +3,38 @@ package messages import ( "fmt" "os" - "parser/classes" "parser/utils" ) -const ( - MSSC int32 = 2 -) +const MSSC int32 = 2 -func MessageTypeCheck(file *os.File) (statusCode int) { - Type := make([]byte, 1) - Tick := make([]byte, 4) - Slot := make([]byte, 1) - file.Read(Type) - file.Read(Tick) - file.Read(Slot) - switch Type[0] { +func ParseMessage(file *os.File) (statusCode int) { + var message Message + message.Type = utils.ReadByteFromFile(file, 1)[0] + message.Tick = int(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + message.Slot = utils.ReadByteFromFile(file, 1)[0] + switch message.Type { case 0x01: // SignOn var packet Packet - var cmdinfo classes.CmdInfo + // var cmdinfo classes.CmdInfo packet.PacketInfo = utils.ReadByteFromFile(file, 76*MSSC) packet.InSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.OutSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.Data = utils.ReadByteFromFile(file, packet.Size) - cmdinfo = classes.CmdInfoInit(packet.PacketInfo) - fmt.Println(cmdinfo) + // cmdinfo = classes.CmdInfoInit(packet.PacketInfo) + // fmt.Println(cmdinfo) return 1 case 0x02: // Packet var packet Packet - var cmdinfo classes.CmdInfo + // var cmdinfo classes.CmdInfo packet.PacketInfo = utils.ReadByteFromFile(file, 76*MSSC) packet.InSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.OutSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) packet.Data = utils.ReadByteFromFile(file, packet.Size) - cmdinfo = classes.CmdInfoInit(packet.PacketInfo) - fmt.Printf("[%d] %v\n", utils.IntFromBytes(Tick), cmdinfo) + // cmdinfo = classes.CmdInfoInit(packet.PacketInfo) + // fmt.Printf("[%d] %v\n", utils.IntFromBytes(Tick), cmdinfo) return 2 case 0x03: // SyncTick return 3 @@ -47,16 +42,16 @@ func MessageTypeCheck(file *os.File) (statusCode int) { var consolecmd ConsoleCmd consolecmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) consolecmd.Data = string(utils.ReadByteFromFile(file, consolecmd.Size)) - fmt.Printf("[%d] %s\n", utils.IntFromBytes(Tick), consolecmd.Data) + fmt.Printf("[%d] %s\n", message.Tick, consolecmd.Data) return 4 case 0x05: // Usercmd FIXME: Correct bit-packing inside classes var usercmd UserCmd - var usercmdinfo classes.UserCmdInfo + // var usercmdinfo classes.UserCmdInfo usercmd.Cmd = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) usercmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) usercmd.Data = utils.ReadByteFromFile(file, usercmd.Size) - usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, int(usercmd.Size)) - fmt.Printf("[%d] UserCmd: %v\n", utils.IntFromBytes(Tick), usercmdinfo) + // usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, int(usercmd.Size)) + // fmt.Printf("[%d] UserCmd: %v\n", utils.IntFromBytes(Tick), usercmdinfo) return 5 case 0x06: // DataTables var datatables DataTables @@ -67,26 +62,37 @@ func MessageTypeCheck(file *os.File) (statusCode int) { // fmt.Printf("[%d] DataTables: %v\n", utils.IntFromBytes(Size), stringtable) return 6 case 0x07: // Stop - fmt.Println("Stop") + fmt.Println("Stop - End of Demo") return 7 case 0x08: // CustomData - Unknown := make([]byte, 4) - file.Read(Unknown) - Size := make([]byte, 4) - file.Read(Size) - Data := make([]byte, utils.IntFromBytes(Size)) - file.Read(Data) + var customdata CustomData + customdata.Unknown = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + customdata.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + customdata.Data = utils.ReadByteFromFile(file, customdata.Size) return 8 case 0x09: // StringTables - Size := make([]byte, 4) - file.Read(Size) - Data := make([]byte, utils.IntFromBytes(Size)) - file.Read(Data) + var stringtables StringTables + stringtables.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + stringtables.Data = utils.ReadByteFromFile(file, stringtables.Size) return 9 default: return 0 } - //fmt.Println(Type[0]) - //fmt.Println(utils.IntFromBytes(Tick)) - //fmt.Println(Slot[0]) + +} + +func ParseHeader(file *os.File) { + var header Header + header.DemoFileStamp = string(utils.ReadByteFromFile(file, 8)) + header.DemoProtocol = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + header.NetworkProtocol = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + header.ServerName = string(utils.ReadByteFromFile(file, 260)) + header.ClientName = string(utils.ReadByteFromFile(file, 260)) + header.MapName = string(utils.ReadByteFromFile(file, 260)) + header.GameDirectory = string(utils.ReadByteFromFile(file, 260)) + header.PlaybackTime = float32(utils.FloatFromBytes(utils.ReadByteFromFile(file, 4))) + header.PlaybackTicks = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + header.PlaybackFrames = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + header.SignOnLength = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + fmt.Println(header) } -- cgit v1.2.3