diff --git a/core/src/gdx/diablo/ai/Npc.java b/core/src/gdx/diablo/ai/Npc.java index f0674971..e1147bc3 100644 --- a/core/src/gdx/diablo/ai/Npc.java +++ b/core/src/gdx/diablo/ai/Npc.java @@ -31,6 +31,11 @@ public class Npc extends AI { id = name + "_greeting_inactive_1"; Diablo.audio.play(id, false); } + + actionTimer = 4; + actionPerformed = false; + entity.target().set(entity.position()); + entity.lookAt(gameScreen.player); } public void update(float delta) { diff --git a/core/src/gdx/diablo/entity/Entity.java b/core/src/gdx/diablo/entity/Entity.java index 490d4320..6a92319e 100644 --- a/core/src/gdx/diablo/entity/Entity.java +++ b/core/src/gdx/diablo/entity/Entity.java @@ -144,6 +144,8 @@ public class Entity { MapGraph.MapGraphPath path = new MapGraph.MapGraphPath(); Iterator targets = Collections.emptyIterator(); + private static final Vector2 tmpVec2 = new Vector2(); + public static Entity create(Map map, Map.Zone zone, DS1 ds1, DS1.Object obj) { final int type = obj.type; switch (type) { @@ -349,6 +351,15 @@ public class Entity { return Direction.radiansToDirection(angle, numDirs); } + public void lookAt(Entity entity) { + float x1 = +(entity.position.x * Tile.SUBTILE_WIDTH50) - (entity.position.y * Tile.SUBTILE_WIDTH50); + float y1 = -(entity.position.x * Tile.SUBTILE_HEIGHT50) - (entity.position.y * Tile.SUBTILE_HEIGHT50); + float x2 = +(position.x * Tile.SUBTILE_WIDTH50) - (position.y * Tile.SUBTILE_WIDTH50); + float y2 = -(position.x * Tile.SUBTILE_HEIGHT50) - (position.y * Tile.SUBTILE_HEIGHT50); + tmpVec2.set(x1, y1).sub(x2, y2); + setAngle(MathUtils.atan2(tmpVec2.y, tmpVec2.x)); + } + public final void invalidate() { dirty = Dirty.ALL; }