Added MixedSpawnArea

To save server resources, a mixed spawn area can consist of dynamic
groups and lair  groups. Also the minimal distance from dynamic group to
nearest lair will be kept to prevent lairs and NPCs too close together a
bit more.
This commit is contained in:
CharonInferar
2014-05-23 01:44:25 +02:00
parent 2840eb30f5
commit d450228e60
9 changed files with 190 additions and 42 deletions
+22
View File
@@ -418,6 +418,28 @@ public class SpawnService {
spawnAreas.get(planet).add(dynamicSpawnArea);
core.simulationService.addCollidable(collidableCircle, x, z);
}
public void addMixedSpawnArea(Vector<String> passedGroups, float x, float z, float radius, String planetName) {
Vector<SpawnGroup> mixedSpawnGroups = new Vector<SpawnGroup>();
for (String template : passedGroups){
if (dynamicGroupTemplates.get(template)!=null){
mixedSpawnGroups.add(dynamicGroupTemplates.get(template));
}
if (lairGroupTemplates.get(template)!=null){
mixedSpawnGroups.add(lairGroupTemplates.get(template));
}
if(dynamicGroupTemplates.get(template) == null && lairGroupTemplates.get(template)==null)
return;
}
Planet planet = core.terrainService.getPlanetByName(planetName);
if(mixedSpawnGroups == null || mixedSpawnGroups.size() == 0 || planet == null)
return;
CollidableCircle collidableCircle = new CollidableCircle(new Point3D(x, 0, z), radius, planet);
MixedSpawnArea dynamicSpawnArea = new MixedSpawnArea(planet, collidableCircle, mixedSpawnGroups);
spawnAreas.get(planet).add(dynamicSpawnArea);
core.simulationService.addCollidable(collidableCircle, x, z);
}
public Map<String, MobileTemplate> getMobileTemplates() {
return mobileTemplates;