Exemple #1
0
        private static void OnNewPath(NewPathEventArgs args)
        {
            var sender = args.Source as IHero;

            if (sender == null || !sender.IsValid)
            {
                return;
            }

            var id = args.SourceId;

            if (!Storage.ContainsKey(id))
            {
                Storage.Add(id, new List <CachedPath>());
            }

            var list = Storage[id];

            list.Add(new CachedPath(args.Path.ToList <Vector3>().ToVector2()));

            if (list.Count > 50)
            {
                list.RemoveRange(0, 40);
            }
        }
Exemple #2
0
        private static void OnNewPath(NewPathEventArgs args)
        {
            if (!args.IsDash)
            {
                Storage.Remove(args.SourceId);
                return;
            }

            if (args.Source is IHero hero)
            {
                var startPos  = hero.Position;
                var endPos    = args.Path.Last();
                var startTime = Game.Time;
                var endTime   = startTime + startPos.Distance(endPos) / args.Speed;

                var dash = new DashEventArgs(args.SourceId, args.Path, args.Speed, startPos, endPos, startTime, endTime);

                Storage[args.SourceId] = dash;
                OnDash?.SafeInvoke(dash);
            }
        }