// Token: 0x060002E3 RID: 739 RVA: 0x0001ABDC File Offset: 0x00018DDC
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, Unit unit, INotificator notificator)
        {
            DrawableRemoteMinesAbility drawableRemoteMinesAbility = drawableAbilities.OfType <DrawableRemoteMinesAbility>().FirstOrDefault((DrawableRemoteMinesAbility x) => x.Unit == null && x.Position.Distance2D(unit.Position, false) < 10f);

            if (drawableRemoteMinesAbility != null)
            {
                drawableRemoteMinesAbility.AddUnit(unit);
                return;
            }
            Entity owner = unit.Owner;
            string name  = owner.Name;
            DrawableUnitAbility drawableUnitAbility = new DrawableUnitAbility
            {
                AbilityTexture     = base.AbilityId + "_rounded",
                HeroTexture        = name + "_rounded",
                MinimapHeroTexture = name + "_icon",
                Position           = unit.Position,
                Unit           = unit,
                IsShowingRange = base.ShowRange,
                Range          = base.Range,
                RangeColor     = base.RangeColor,
                Duration       = base.Duration,
                ShowUntil      = Game.RawGameTime + base.Duration,
                ShowHeroUntil  = Game.RawGameTime + base.TimeToShow,
                Owner          = owner
            };

            drawableUnitAbility.DrawRange();
            drawableAbilities.Add(drawableUnitAbility);
        }
        // Token: 0x060002E4 RID: 740 RVA: 0x0001ACFC File Offset: 0x00018EFC
        public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator)
        {
            Vector3 position = particle.GetControlPoint(base.ControlPoint);

            if (particle.Name.Contains("detonate"))
            {
                DrawableRemoteMinesAbility drawableRemoteMinesAbility = drawableAbilities.OfType <DrawableRemoteMinesAbility>().FirstOrDefault((DrawableRemoteMinesAbility x) => x.Position.Distance2D(position, false) < 10f);
                if (drawableRemoteMinesAbility != null)
                {
                    if (drawableRemoteMinesAbility.IsShowingRange)
                    {
                        drawableRemoteMinesAbility.RemoveRange();
                    }
                    drawableAbilities.Remove(drawableRemoteMinesAbility);
                    return;
                }
            }
            else
            {
                if (ObjectManager.GetEntitiesFast <Unit>().FirstOrDefault((Unit x) => x.Name == "npc_dota_techies_remote_mine" && x.Distance2D(position) < 10f) != null)
                {
                    return;
                }
                Unit9 owner = EntityManager9.GetUnit(particle.Owner.Handle);
                if (owner == null)
                {
                    return;
                }
                UpdateManager.BeginInvoke(delegate
                {
                    try
                    {
                        if (particle.IsValid)
                        {
                            DrawableRemoteMinesAbility drawableRemoteMinesAbility2 = new DrawableRemoteMinesAbility
                            {
                                AbilityTexture     = this.AbilityId + "_rounded",
                                HeroTexture        = owner.Name + "_rounded",
                                MinimapHeroTexture = owner.Name + "_icon",
                                Position           = position.SetZ(new float?((float)350)),
                                Duration           = this.Duration,
                                IsShowingRange     = this.ShowRange,
                                Range         = this.Range,
                                RangeColor    = this.RangeColor,
                                ShowUntil     = Game.RawGameTime + this.Duration,
                                ShowHeroUntil = Game.RawGameTime + this.TimeToShow,
                                Owner         = owner.BaseEntity
                            };
                            drawableRemoteMinesAbility2.DrawRange();
                            drawableAbilities.Add(drawableRemoteMinesAbility2);
                        }
                    }
                    catch (Exception exception)
                    {
                        Logger.Error(exception, null);
                    }
                }, 1000);
            }
        }
示例#3
0
        public override void AddDrawableAbility(
            List <IDrawableAbility> drawableAbilities,
            Particle particle,
            Team allyTeam,
            INotificator notificator)
        {
            var position = particle.GetControlPoint(this.ControlPoint);

            if (particle.Name.Contains("detonate"))
            {
                var mine = drawableAbilities.OfType <DrawableRemoteMinesAbility>().FirstOrDefault(x => x.Position.Distance2D(position) < 10);
                if (mine != null)
                {
                    if (mine.IsShowingRange)
                    {
                        mine.RemoveRange();
                    }

                    drawableAbilities.Remove(mine);
                }
            }
            else
            {
                var mine = EntityManager.GetEntities <Unit>()
                           .FirstOrDefault(x => x.Name == "npc_dota_techies_remote_mine" && x.Distance2D(position) < 10);

                if (mine != null)
                {
                    return;
                }

                var owner = EntityManager9.GetUnit(particle.Owner.Handle);
                if (owner == null)
                {
                    return;
                }

                UpdateManager.BeginInvoke(1000,
                                          () =>
                {
                    try
                    {
                        if (!particle.IsValid)
                        {
                            return;
                        }

                        var drawableAbility = new DrawableRemoteMinesAbility
                        {
                            AbilityTexture     = this.AbilityId.ToString(),
                            AbilityId          = this.AbilityId,
                            HeroTexture        = owner.Name,
                            MinimapHeroTexture = owner.Name,
                            Position           = position.SetZ(350),
                            Duration           = this.Duration,
                            IsShowingRange     = this.ShowRange,
                            Range         = this.Range,
                            RangeColor    = this.RangeColor,
                            ShowUntil     = GameManager.RawGameTime + this.Duration,
                            ShowHeroUntil = GameManager.RawGameTime + this.TimeToShow,
                            BaseEntity    = owner.BaseEntity
                        };

                        owner.ChangeBasePosition(drawableAbility.Position);

                        drawableAbility.DrawRange();
                        drawableAbilities.Add(drawableAbility);
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e);
                    }
                });
            }
        }