Example #1
0
        private void OnEntityAdded(object sender, Creep creep)
        {
            if (!creep.IsValid || creep.Team == myTeam || creep.UnitType != 1152)
            {
                return;
            }

            var wave = CreepWaves.FirstOrDefault(x => !x.IsSpawned && x.Creeps.Any(z => z.Distance2D(creep) < 300));

            if (wave != null)
            {
                wave.Creeps.Add(creep);
            }
            else
            {
                var laneData = lanePaths.GetLaneData(creep.Position);
                if (laneData == null)
                {
                    return;
                }

                var newWave = new CreepWave(laneData.Value, creep.Team);
                newWave.Creeps.Add(creep);

                CreepWaves.Add(newWave);
            }
        }
Example #2
0
        private void OnEntityRemoved(object sender, Creep creep)
        {
            if (!creep.IsValid || creep.Team == myTeam || creep.UnitType != 1152)
            {
                return;
            }

            var wave = CreepWaves.FirstOrDefault(x => x.Creeps.Contains(creep));

            if (wave == null)
            {
                return;
            }

            wave.Creeps.Remove(creep);

            if (wave.Creeps.Any(x => x.IsValid))
            {
                return;
            }

            CreepWaves.Remove(wave);
        }
Example #3
0
        private void OnEntityRemoved(object sender, Creep creep)
        {
            if (!creep.IsValid || creep.Team == myTeam || creep.ClassId != ClassId.CDOTA_BaseNPC_Creep_Lane &&
                creep.ClassId != ClassId.CDOTA_BaseNPC_Creep_Siege)
            {
                return;
            }

            var wave = CreepWaves.FirstOrDefault(x => x.Creeps.Contains(creep));

            if (wave == null)
            {
                return;
            }

            wave.Creeps.Remove(creep);

            if (wave.Creeps.Any(x => x.IsValid))
            {
                return;
            }

            CreepWaves.Remove(wave);
        }