From 9b7fc0a93bbdf32ff413530193cb5da572e5d5f3 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Wed, 13 Sep 2023 21:07:57 -0500 Subject: [PATCH] region height work --- src/engine/devcmd/cmds/RegionCmd.java | 41 +++++------------------ src/engine/objects/AbstractCharacter.java | 4 ++- src/engine/objects/Mob.java | 3 +- src/engine/objects/NPC.java | 2 +- 4 files changed, 14 insertions(+), 36 deletions(-) diff --git a/src/engine/devcmd/cmds/RegionCmd.java b/src/engine/devcmd/cmds/RegionCmd.java index ca19fd25..b7b12c7e 100644 --- a/src/engine/devcmd/cmds/RegionCmd.java +++ b/src/engine/devcmd/cmds/RegionCmd.java @@ -9,9 +9,9 @@ package engine.devcmd.cmds; +import engine.Enum; import engine.devcmd.AbstractDevCmd; -import engine.objects.AbstractGameObject; -import engine.objects.PlayerCharacter; +import engine.objects.*; import java.lang.reflect.Field; @@ -25,42 +25,17 @@ public class RegionCmd extends AbstractDevCmd { protected void _doCmd(PlayerCharacter pc, String[] words, AbstractGameObject target) { - - if (pc.region == null) { + Regions region = ((AbstractCharacter)target).region; + if (region == null) { this.throwbackInfo(pc, "No Region Found."); return; } - - String newLine = System.getProperty("line.separator"); - String result = ""; - result += (pc.region.getClass().getSimpleName()); - 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); + if(region != null) { + this.throwbackInfo(pc, "Region Info: " + ((AbstractCharacter) target).getName()); + this.throwbackInfo(pc, "Region Name: " + region); + this.throwbackInfo(pc, "Region Height: " + region.lerpY((AbstractCharacter)target)); } - result += ("}"); - - this.throwbackInfo(pc, result.toString()); - } diff --git a/src/engine/objects/AbstractCharacter.java b/src/engine/objects/AbstractCharacter.java index d5da6a61..f74f1a66 100644 --- a/src/engine/objects/AbstractCharacter.java +++ b/src/engine/objects/AbstractCharacter.java @@ -11,6 +11,7 @@ package engine.objects; import engine.Enum; import engine.Enum.*; +import engine.InterestManagement.HeightMap; import engine.InterestManagement.InterestManager; import engine.InterestManagement.WorldGrid; import engine.exception.SerializationException; @@ -986,8 +987,9 @@ public abstract class AbstractCharacter extends AbstractWorldObject { public final void setLoc(final Vector3fImmutable value) { Regions region = Regions.GetRegionForTeleport(value); if(region != null){ + float regionHeight = region.lerpY(this); 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 this.resetLastSetLocUpdate(); } else { diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 311839ea..a7528f9e 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -1649,7 +1649,7 @@ public class Mob extends AbstractIntelligenceAgent { // Setup location for this Mobile - this.loc = new Vector3fImmutable(bindLoc); + this.setLoc(bindLoc); this.endLoc = new Vector3fImmutable(bindLoc); // Initialize inventory @@ -1743,6 +1743,7 @@ public class Mob extends AbstractIntelligenceAgent { this.level = (short) newRank; this.recalculateStats(); this.setHealth(this.healthMax); + this.setLoc(this.bindLoc); } public boolean isRanking() { diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index 61eb24d5..10d8884f 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -865,7 +865,7 @@ public class NPC extends AbstractCharacter { this.bindLoc = new Vector3fImmutable(this.statLat, this.statAlt, this.statLon); this.bindLoc = this.parentZone.getLoc().add(this.bindLoc); - this.loc = new Vector3fImmutable(bindLoc); + this.setLoc(bindLoc); // Handle NPCs within buildings