private int WriteAction(EventDetailObject eventDetails, List <byte> actionData, int position) { foreach (var b in actionData) { eventDetails.WriteByte(b, position); position++; } return(position); }
private void ExtractEventDetails(int eventDetailsStart) { for (var i = 0; i < EventPositions.Count; i++) { var currentEvent = EventPositions[i]; if (currentEvent.Offset > 30000 || currentEvent.Offset == 0) { continue; } var eventEndOffset = 0; for (var j = i + 1; j < EventPositions.Count; j++) { var nextEvent = EventPositions[j]; if (nextEvent.Offset > 30000 || nextEvent.Offset < currentEvent.Offset) { continue; } eventEndOffset = nextEvent.Offset; break; } if (eventEndOffset == 0) { var currentOffset = eventDetailsStart + currentEvent.Offset; while (true) { var value1 = ReadUnsignedInt(currentOffset); var value2 = ReadUnsignedInt(currentOffset + 4); if (value1 == 0 && value2 == uint.MaxValue) { eventEndOffset = currentOffset - eventDetailsStart; break; } currentOffset++; } } if (currentEvent.Offset > eventEndOffset) { Console.WriteLine(currentEvent.Offset); continue; } var size = eventEndOffset - currentEvent.Offset; var eventDetails = new EventDetailObject(this, eventDetailsStart + currentEvent.Offset, currentEvent.Id, size); EventDetailData.AddMappedObject(eventDetails); } }