コード例 #1
0
        public Task <List <TimelineEvent> > GetTimeLineEventList(Demo demo)
        {
            List <TimelineEvent> events = new List <TimelineEvent>();
            float tickrate = demo.ServerTickrate;

            foreach (KillEvent e in demo.Kills)
            {
                events.Add(new KillEventTimeline(tickrate, e.Tick, (int)(e.Tick + demo.Tickrate)));
            }

            foreach (Round round in demo.Rounds)
            {
                var e = new RoundEventTimeline(tickrate, round.Tick, round.EndTick);
                events.Add(e);
            }

            return(Task.FromResult(events));
        }
コード例 #2
0
        public Task <List <TimelineEvent> > GetTimeLineEventList(Demo demo)
        {
            List <TimelineEvent> events = new List <TimelineEvent>();
            float tickrate = demo.ServerTickrate;

            foreach (Round round in demo.Rounds)
            {
                int endTick = round.EndTickOfficially > 0 ? round.EndTickOfficially : round.EndTick;
                var e       = new RoundEventTimeline(tickrate, round.Tick, endTick)
                {
                    Number = round.Number,
                };
                events.Add(e);
            }

            foreach (KillEvent e in demo.Kills)
            {
                events.Add(new KillEventTimeline(tickrate, e.Tick, (int)(e.Tick + demo.Tickrate))
                {
                    VictimName = e.KilledName,
                    KillerName = e.KillerName,
                    WeaponName = e.Weapon.Name,
                });
            }

            List <WeaponFireEvent> flashs = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.Flash).ToList();

            foreach (WeaponFireEvent e in flashs)
            {
                events.Add(new FlashThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            List <WeaponFireEvent> smokes = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.Smoke).ToList();

            foreach (WeaponFireEvent e in smokes)
            {
                events.Add(new SmokeThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            List <WeaponFireEvent> he = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.HE).ToList();

            foreach (WeaponFireEvent e in he)
            {
                events.Add(new HeThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            List <WeaponFireEvent> molotovs = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.Molotov).ToList();

            foreach (WeaponFireEvent e in molotovs)
            {
                events.Add(new MolotovThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            List <WeaponFireEvent> incendiaries = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.Incendiary).ToList();

            foreach (WeaponFireEvent e in incendiaries)
            {
                events.Add(new IncendiaryThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            List <WeaponFireEvent> decoys = demo.WeaponFired.Where(e => e.Weapon.Element == EquipmentElement.Decoy).ToList();

            foreach (WeaponFireEvent e in decoys)
            {
                events.Add(new DecoyThrownEventTimeline(tickrate, e.Tick, e.Tick + (int)demo.Tickrate)
                {
                    ThrowerName = e.ShooterName,
                });
            }

            foreach (Round round in demo.Rounds)
            {
                if (round.BombPlanted != null)
                {
                    events.Add(new BombPlantedEventTimeline(tickrate, round.BombPlanted.Tick, round.BombPlanted.Tick + (int)demo.Tickrate)
                    {
                        PlanterName = round.BombPlanted.PlanterName,
                        Site        = round.BombPlanted.Site,
                    });
                }

                if (round.BombDefused != null)
                {
                    events.Add(new BombDefusedEventTimeline(tickrate, round.BombDefused.Tick, round.BombDefused.Tick + (int)demo.Tickrate)
                    {
                        Site        = round.BombDefused.Site,
                        DefuserName = round.BombDefused.DefuserName,
                    });
                }
                if (round.BombExploded != null)
                {
                    events.Add(new BombExplodedEventTimeline(tickrate, round.BombExploded.Tick, round.BombExploded.Tick + (int)demo.Tickrate)
                    {
                        PlanterName = round.BombExploded.PlanterName,
                        Site        = round.BombExploded.Site,
                    });
                }
            }

            return(Task.FromResult(events));
        }