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); } }
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); }
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); }