|
|
@ -34,6 +34,8 @@ public class Zone extends AbstractWorldObject { |
|
|
|
public final Set<Building> zoneBuildingSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Building> zoneBuildingSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<NPC> zoneNPCSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<NPC> zoneNPCSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Mob> zoneMobSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Mob> zoneMobSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
|
|
|
|
public ZoneTemplate template; |
|
|
|
|
|
|
|
|
|
|
|
public final int playerCityUUID; |
|
|
|
public final int playerCityUUID; |
|
|
|
public final String zoneName; |
|
|
|
public final String zoneName; |
|
|
|
public final float xOffset; |
|
|
|
public final float xOffset; |
|
|
@ -58,17 +60,7 @@ public class Zone extends AbstractWorldObject { |
|
|
|
public boolean guild_zone; |
|
|
|
public boolean guild_zone; |
|
|
|
public String hash; |
|
|
|
public String hash; |
|
|
|
public float global_height = 0; |
|
|
|
public float global_height = 0; |
|
|
|
public float seaLevel = 0f; |
|
|
|
|
|
|
|
public float sea_level_offset = 0; |
|
|
|
|
|
|
|
public float major_radius; |
|
|
|
|
|
|
|
public float minor_radius; |
|
|
|
|
|
|
|
public float min_blend; |
|
|
|
|
|
|
|
public float max_blend; |
|
|
|
|
|
|
|
public String sea_level_type; |
|
|
|
|
|
|
|
public float sea_level; |
|
|
|
public float sea_level; |
|
|
|
public String terrain_type; |
|
|
|
|
|
|
|
public float terrain_max_y; |
|
|
|
|
|
|
|
public int terrain_image; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Terrain terrain = null; |
|
|
|
public Terrain terrain = null; |
|
|
|
|
|
|
|
|
|
|
@ -93,26 +85,6 @@ public class Zone extends AbstractWorldObject { |
|
|
|
this.icon3 = rs.getString("icon3"); |
|
|
|
this.icon3 = rs.getString("icon3"); |
|
|
|
this.min_level = rs.getInt("min_level"); |
|
|
|
this.min_level = rs.getInt("min_level"); |
|
|
|
this.max_level = rs.getInt("max_level"); |
|
|
|
this.max_level = rs.getInt("max_level"); |
|
|
|
this.major_radius = rs.getFloat("major_radius"); |
|
|
|
|
|
|
|
this.minor_radius = rs.getFloat("minor_radius"); |
|
|
|
|
|
|
|
this.min_blend = rs.getFloat("min_blend"); |
|
|
|
|
|
|
|
this.max_blend = rs.getFloat("max_blend"); |
|
|
|
|
|
|
|
this.sea_level_type = rs.getString("sea_level_type"); |
|
|
|
|
|
|
|
this.sea_level_offset = rs.getFloat("sea_level"); |
|
|
|
|
|
|
|
this.terrain_type = rs.getString("terrain_type"); |
|
|
|
|
|
|
|
this.terrain_max_y = rs.getFloat("terrain_max_y"); |
|
|
|
|
|
|
|
this.terrain_image = rs.getInt("terrain_image"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Configuration for player cities
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (this.guild_zone) { |
|
|
|
|
|
|
|
this.max_blend = 128; |
|
|
|
|
|
|
|
this.min_blend = 128; |
|
|
|
|
|
|
|
this.terrain_max_y = 5; |
|
|
|
|
|
|
|
this.major_radius = (int) Enum.CityBoundsType.ZONE.halfExtents; |
|
|
|
|
|
|
|
this.minor_radius = (int) Enum.CityBoundsType.ZONE.halfExtents; |
|
|
|
|
|
|
|
this.terrain_type = "PLANAR"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// If zone doesn't yet hava a hash then write it back to the zone table
|
|
|
|
// If zone doesn't yet hava a hash then write it back to the zone table
|
|
|
|
|
|
|
|
|
|
|
@ -177,12 +149,14 @@ public class Zone extends AbstractWorldObject { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void runAfterLoad() { |
|
|
|
public void runAfterLoad() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.template = ZoneManager._zone_templates.get(this.templateID); |
|
|
|
|
|
|
|
|
|
|
|
// First zone is always the seafloor
|
|
|
|
// First zone is always the seafloor
|
|
|
|
|
|
|
|
|
|
|
|
if (ZoneManager.seaFloor == null) |
|
|
|
if (ZoneManager.seaFloor == null) |
|
|
|
ZoneManager.seaFloor = this; |
|
|
|
ZoneManager.seaFloor = this; |
|
|
|
|
|
|
|
|
|
|
|
if (this.terrain_type.equals("NONE")) |
|
|
|
if (this.template.terrain_type.equals("NONE")) |
|
|
|
this.terrain = null; |
|
|
|
this.terrain = null; |
|
|
|
else |
|
|
|
else |
|
|
|
this.terrain = new Terrain(this); |
|
|
|
this.terrain = new Terrain(this); |
|
|
@ -207,7 +181,7 @@ public class Zone extends AbstractWorldObject { |
|
|
|
// Set initial bounds object
|
|
|
|
// Set initial bounds object
|
|
|
|
|
|
|
|
|
|
|
|
this.bounds = Bounds.borrow(); |
|
|
|
this.bounds = Bounds.borrow(); |
|
|
|
this.bounds.setBounds(new Vector2f(this.absX, this.absZ), new Vector2f(this.major_radius, this.minor_radius), 0.0f); |
|
|
|
this.bounds.setBounds(new Vector2f(this.absX, this.absZ), new Vector2f(this.template.major_radius, this.template.minor_radius), 0.0f); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -225,7 +199,7 @@ public class Zone extends AbstractWorldObject { |
|
|
|
this.absY = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.absY = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.global_height = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.global_height = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.absZ = this.zOffset; |
|
|
|
this.absZ = this.zOffset; |
|
|
|
this.seaLevel = 0; |
|
|
|
this.sea_level = 0; |
|
|
|
this.setBounds(); |
|
|
|
this.setBounds(); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -253,15 +227,15 @@ public class Zone extends AbstractWorldObject { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
switch (this.sea_level_type) { |
|
|
|
switch (this.template.sea_level_type) { |
|
|
|
case "WORLD": |
|
|
|
case "WORLD": |
|
|
|
this.sea_level = world_sea_level + this.sea_level_offset; |
|
|
|
this.sea_level = world_sea_level + this.template.sea_level; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case "PARENT": |
|
|
|
case "PARENT": |
|
|
|
this.sea_level = this.parent.sea_level + this.sea_level_offset; |
|
|
|
this.sea_level = this.parent.sea_level + this.template.sea_level; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case "SELF": |
|
|
|
case "SELF": |
|
|
|
this.sea_level = this.global_height + this.sea_level_offset; |
|
|
|
this.sea_level = this.global_height + this.template.sea_level; |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|