Ejemplo n.º 1
0
 protected override void Process(DemoParsingInfo infoObj, InputDisplayMode mode, bool isDefault)
 {
     infoObj.PrintOptionMessage("getting user inputs");
     try {
         foreach ((int tick, string repr) in GetUserInputs(infoObj.CurrentDemo, mode))
         {
             Console.WriteLine($"[{tick}] {repr}");
         }
     } catch (Exception) {
         Utils.Warning("Getting user inputs failed.\n");
     }
 }
Ejemplo n.º 2
0
        public static IEnumerable <(int tick, string repr)> GetUserInputs(SourceDemo demo, InputDisplayMode mode)
        {
            Buttons?prevButtons = null;
            int     prevTick    = int.MinValue;

            foreach (UserCmd u in demo.FilterForPacket <UserCmd>())
            {
                Buttons?b = u.Buttons;
                // don't want pauses taking up all the space
                if (prevButtons == b && prevTick == u.Tick)
                {
                    continue;
                }
                prevButtons = b;
                prevTick    = u.Tick;
                yield return(mode switch {
                    InputDisplayMode.Text => (u.Tick, b?.ToString() ?? "none"),
                    InputDisplayMode.Int => (u.Tick, b.HasValue ? ((uint)b.Value).ToString() : "0"),
                    InputDisplayMode.Flags => (u.Tick, Convert.ToString(b.HasValue ? (uint)b.Value : 0, 2).PadLeft(32, '0')),
                    _ => throw new ArgProcessProgrammerException($"invalid input display mode: \"{mode}\"")
                });
Ejemplo n.º 3
0
 protected override void AfterParse(DemoParsingSetupInfo setupObj, InputDisplayMode mode, bool isDefault)
 {
     setupObj.ExecutableOptions++;
 }