diff --git a/core/src/com/riiablo/map/RenderSystem.java b/core/src/com/riiablo/map/RenderSystem.java index 5072c306..8847c0a1 100644 --- a/core/src/com/riiablo/map/RenderSystem.java +++ b/core/src/com/riiablo/map/RenderSystem.java @@ -178,6 +178,22 @@ public class RenderSystem extends EntitySystem { return iso; } + public int getMinX() { + return renderMinX; + } + + public int getMinY() { + return renderMinY; + } + + public int getMaxX() { + return renderMaxX; + } + + public int getMaxY() { + return renderMaxY; + } + @Override public void addedToEngine(Engine engine) { entities = engine.getEntitiesFor(family); diff --git a/core/src/com/riiablo/screen/ClientScreen.java b/core/src/com/riiablo/screen/ClientScreen.java index aee92b72..4f659dd6 100644 --- a/core/src/com/riiablo/screen/ClientScreen.java +++ b/core/src/com/riiablo/screen/ClientScreen.java @@ -509,6 +509,7 @@ public class ClientScreen extends ScreenAdapter implements LoadingScreen.Loadabl LabelSystem labelSystem = engine.getSystem(LabelSystem.class); labelSystem.update(0); Array labels = labelSystem.getLabels(); + layoutLabels(labels); for (Actor label : labels) { label.draw(batch, 1); } @@ -737,6 +738,16 @@ public class ClientScreen extends ScreenAdapter implements LoadingScreen.Loadabl left = actor; } + private void layoutLabels(Array labels) { + for (Actor label : labels) { + tmpVec2.x = label.getX(); + tmpVec2.y = label.getY(); + tmpVec2.x = MathUtils.clamp(tmpVec2.x, renderer.getMinX(), renderer.getMaxX() - label.getWidth()); + tmpVec2.y = MathUtils.clamp(tmpVec2.y, renderer.getMinY(), renderer.getMaxY() - label.getHeight()); + label.setPosition(tmpVec2.x, tmpVec2.y); + } + } + public void setDetails(Actor details, Item item, Actor parent, Actor slot) { if (this.details == details) return; this.details = details;