forked from MagicBane/Server
region height work
This commit is contained in:
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
package engine.devcmd.cmds;
|
package engine.devcmd.cmds;
|
||||||
|
|
||||||
|
import engine.Enum;
|
||||||
import engine.devcmd.AbstractDevCmd;
|
import engine.devcmd.AbstractDevCmd;
|
||||||
import engine.objects.AbstractGameObject;
|
import engine.objects.*;
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
@@ -25,42 +25,17 @@ public class RegionCmd extends AbstractDevCmd {
|
|||||||
protected void _doCmd(PlayerCharacter pc, String[] words,
|
protected void _doCmd(PlayerCharacter pc, String[] words,
|
||||||
AbstractGameObject target) {
|
AbstractGameObject target) {
|
||||||
|
|
||||||
|
Regions region = ((AbstractCharacter)target).region;
|
||||||
if (pc.region == null) {
|
if (region == null) {
|
||||||
this.throwbackInfo(pc, "No Region Found.");
|
this.throwbackInfo(pc, "No Region Found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(region != null) {
|
||||||
String newLine = System.getProperty("line.separator");
|
this.throwbackInfo(pc, "Region Info: " + ((AbstractCharacter) target).getName());
|
||||||
String result = "";
|
this.throwbackInfo(pc, "Region Name: " + region);
|
||||||
result += (pc.region.getClass().getSimpleName());
|
this.throwbackInfo(pc, "Region Height: " + region.lerpY((AbstractCharacter)target));
|
||||||
result += (" {");
|
|
||||||
result += (newLine);
|
|
||||||
Field[] fields = pc.region.getClass().getDeclaredFields();
|
|
||||||
|
|
||||||
//print field names paired with their values
|
|
||||||
for (Field field : fields) {
|
|
||||||
field.setAccessible(true);
|
|
||||||
result += (" ");
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (field.getName().contains("Furniture"))
|
|
||||||
continue;
|
|
||||||
result += (field.getName());
|
|
||||||
result += (": ");
|
|
||||||
//requires access to private field:
|
|
||||||
result += (field.get(pc.region).toString());
|
|
||||||
} catch (IllegalAccessException ex) {
|
|
||||||
System.out.println(ex);
|
|
||||||
}
|
|
||||||
result.trim();
|
|
||||||
result += (newLine);
|
|
||||||
}
|
}
|
||||||
result += ("}");
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, result.toString());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ package engine.objects;
|
|||||||
|
|
||||||
import engine.Enum;
|
import engine.Enum;
|
||||||
import engine.Enum.*;
|
import engine.Enum.*;
|
||||||
|
import engine.InterestManagement.HeightMap;
|
||||||
import engine.InterestManagement.InterestManager;
|
import engine.InterestManagement.InterestManager;
|
||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.exception.SerializationException;
|
import engine.exception.SerializationException;
|
||||||
@@ -986,8 +987,9 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
|
|||||||
public final void setLoc(final Vector3fImmutable value) {
|
public final void setLoc(final Vector3fImmutable value) {
|
||||||
Regions region = Regions.GetRegionForTeleport(value);
|
Regions region = Regions.GetRegionForTeleport(value);
|
||||||
if(region != null){
|
if(region != null){
|
||||||
|
float regionHeight = region.lerpY(this);
|
||||||
this.region = region;
|
this.region = region;
|
||||||
Vector3fImmutable newValue = new Vector3fImmutable(value.x,value.y + region.lerpY(this),value.z); //account for height offset of the current character region
|
Vector3fImmutable newValue = new Vector3fImmutable(value.x,regionHeight,value.z); //account for height offset of the current character region
|
||||||
super.setLoc(newValue); // set the location in the world
|
super.setLoc(newValue); // set the location in the world
|
||||||
this.resetLastSetLocUpdate();
|
this.resetLastSetLocUpdate();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1649,7 +1649,7 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
|
|
||||||
// Setup location for this Mobile
|
// Setup location for this Mobile
|
||||||
|
|
||||||
this.loc = new Vector3fImmutable(bindLoc);
|
this.setLoc(bindLoc);
|
||||||
this.endLoc = new Vector3fImmutable(bindLoc);
|
this.endLoc = new Vector3fImmutable(bindLoc);
|
||||||
|
|
||||||
// Initialize inventory
|
// Initialize inventory
|
||||||
@@ -1743,6 +1743,7 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
this.level = (short) newRank;
|
this.level = (short) newRank;
|
||||||
this.recalculateStats();
|
this.recalculateStats();
|
||||||
this.setHealth(this.healthMax);
|
this.setHealth(this.healthMax);
|
||||||
|
this.setLoc(this.bindLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRanking() {
|
public boolean isRanking() {
|
||||||
|
|||||||
@@ -865,7 +865,7 @@ public class NPC extends AbstractCharacter {
|
|||||||
|
|
||||||
this.bindLoc = new Vector3fImmutable(this.statLat, this.statAlt, this.statLon);
|
this.bindLoc = new Vector3fImmutable(this.statLat, this.statAlt, this.statLon);
|
||||||
this.bindLoc = this.parentZone.getLoc().add(this.bindLoc);
|
this.bindLoc = this.parentZone.getLoc().add(this.bindLoc);
|
||||||
this.loc = new Vector3fImmutable(bindLoc);
|
this.setLoc(bindLoc);
|
||||||
|
|
||||||
// Handle NPCs within buildings
|
// Handle NPCs within buildings
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user