コード例 #1
0
 public static IEnumerable <(Rumble userMessage, int tick)> GetPortalsFiredByPlayer(SourceDemo demo)
 {
     return(demo.FilterForUserMessage <Rumble>().Where(t =>
                                                       t.userMessage.RumbleType == RumbleLookup.PortalgunLeft ||
                                                       t.userMessage.RumbleType == RumbleLookup.PortalgunRight ||
                                                       t.userMessage.RumbleType == RumbleLookup.PortalPlacementFailure));
 }
コード例 #2
0
        public static IEnumerable <(EntityPortalled userMessage, int tick)> FindTeleports(SourceDemo demo, FilterFlags flags)
        {
            var messages = demo.FilterForUserMessage <EntityPortalled>();

            if ((flags & FilterFlags.PlayerOnly) != 0)
            {
                messages = messages.Where(t => t.userMessage.Portalled.EntIndex == 1);
            }
            return(messages);
        }
コード例 #3
0
        public void RemoveCaptions(string fileName)
        {
            var          before    = GetDemo(fileName);
            MemoryStream outStream = new MemoryStream();

            OptRemoveCaptions.RemoveCaptions(before, outStream);
            SourceDemo after = new SourceDemo(outStream.ToArray());

            after.Parse();
            // check that the new demo doesn't have captions
            CollectionAssert.IsEmpty(after.FilterForUserMessage <CloseCaption>());
            // check that all the packets are unchanged
            CollectionAssert.AreEqual(
                before.Frames.Select(frame => frame.Type),
                after.Frames.Select(frame => frame.Type));
            // check that all the non-caption and non-nop messages are unchanged
            CollectionAssert.AreEqual(
                before.FilterForMessages().Where(tuple => tuple.messageType != MessageType.NetNop)
                .Where(tuple => (tuple.message as SvcUserMessage)?.MessageType != UserMessageType.CloseCaption)
                .Select(tuple => tuple.messageType),
                after.FilterForMessages().Where(tuple => tuple.messageType != MessageType.NetNop)
                .Select(tuple => tuple.messageType)
                );
        }