public void WriteStructureLog(HMessage packet, ASClass messageClass) { if (_invalidStructures.Contains(packet.Header)) { return; } int position = 0; string structureLog = $"{{l}}{{u:{packet.Header}}}"; ASMethod msgCtor = messageClass.Instance.Constructor; foreach (ASParameter parameter in msgCtor.Parameters) { switch (parameter.Type.Name.ToLower()) { case "string": if (!packet.IsStringReadable(position)) { continue; } structureLog += ($"{{s:{packet.ReadString(ref position)}}}"); break; case "boolean": if (packet.GetReadableBytes(position) < 1) { continue; } structureLog += ($"{{b:{packet.ReadBoolean(ref position)}}}"); break; case "int": if (packet.GetReadableBytes(position) < 4) { continue; } structureLog += ($"{{i:{packet.ReadInteger(ref position)}}}"); break; } } if (packet.GetReadableBytes(position) == 0) { WriteHighlight(structureLog + "\r\n", StructureHighlight); } else { _invalidStructures.Add(packet.Header); } }