Skip to content

Commit cf255b0

Browse files
committed
Added new methods of getting players distance
Added a way to get the NPC (dummy) to get to the player if only the player is 10 pixles away.
1 parent 6452d6f commit cf255b0

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/com/redomar/game/entities/Dummy.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.redomar.game.entities;
22

3+
import java.util.List;
4+
35
import com.redomar.game.Game;
46
import com.redomar.game.entities.efx.Swim;
57
import com.redomar.game.gfx.Colours;
@@ -27,8 +29,11 @@ public Dummy(LevelHandler level, String name, int x, int y, int shirtCol,
2729

2830
public void tick() {
2931

30-
followMovementAI(getX(), getY(), Game.getPlayer().getX(), Game
31-
.getPlayer().getY(), xa, ya, this);
32+
List<Player> players = level.getPlayers(this, 10);
33+
if (players.size() > 0) {
34+
followMovementAI(getX(), getY(), Game.getPlayer().getX(), Game
35+
.getPlayer().getY(), xa, ya, this);
36+
}
3237

3338
setSwim(new Swim(level, getX(), getY()));
3439
swimType = getSwim().swimming(isSwimming, isMagma, isMuddy);

src/com/redomar/game/level/LevelHandler.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import com.redomar.game.Game;
1313
import com.redomar.game.entities.Entity;
14+
import com.redomar.game.entities.Player;
1415
import com.redomar.game.entities.PlayerMP;
1516
import com.redomar.game.gfx.Screen;
1617
import com.redomar.game.level.tiles.Tile;
@@ -192,5 +193,36 @@ public void movePlayer(String username, int x, int y, int numSteps,
192193
player.setMoving(isMoving);
193194
player.setMovingDir(movingDir);
194195
}
196+
197+
public List<Entity> getEntities(Entity e, int radius){
198+
List<Entity> result = new ArrayList<Entity>();
199+
int ex = e.getX();
200+
int ey = e.getY();
201+
for (int i = 0; i < entities.size(); i++) {
202+
Entity entity = entities.get(i);
203+
int x = entity.getX();
204+
int y = entity.getY();
205+
206+
int dx = Math.abs(x - ex);
207+
int dy = Math.abs(y - ey);
208+
209+
double distance = Math.sqrt((dx*2) + (dy*2));
210+
if(distance <= radius){
211+
result.add(entity);
212+
}
213+
}
214+
return result;
215+
}
216+
217+
public List<Player> getPlayers(Entity e, int radius){
218+
List<Entity> entities = getEntities(e, radius);
219+
List<Player> result = new ArrayList<Player>();
220+
for (int i = 0; i < entities.size(); i++) {
221+
if (entities.get(i) instanceof Player) {
222+
result.add((Player) entities.get(i));
223+
}
224+
}
225+
return result;
226+
}
195227

196228
}

0 commit comments

Comments
 (0)