diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Drop.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Drop.java
index e523c4e9d6b79d245b20f12896373086c85d2459..e9f2e61f489ac4b3a276075c4ed1479f2483ce14 100644 (file)
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
+import ru.deadsoftware.cavedroid.game.GameWorld;
import ru.deadsoftware.cavedroid.game.mobs.Player;
import java.io.Serializable;
-import static ru.deadsoftware.cavedroid.GameScreen.GP;
-
public class Drop extends Rectangle implements Serializable {
private final int id;
- private final Vector2 move;
+ private final Vector2 velocity;
private boolean pickedUp = false;
- public Drop(float x, float y, int id) {
+ Drop(float x, float y, int id) {
super(x, y, 8, 8);
this.id = id;
- this.move = new Vector2(0, -1);
+ this.velocity = new Vector2(0, -1);
}
- public Vector2 getMove() {
- return move;
+ public Vector2 getVelocity() {
+ return velocity;
}
- public int closeToPlayer() {
+ public int closeToPlayer(GameWorld gameWorld, Player player) {
boolean[] c = new boolean[3];
- c[0] = Intersector.overlaps(new Rectangle(GP.player.getX() - 16,
- GP.player.getY() - 16, GP.player.getWidth() + 32, GP.player.getHeight() + 32), this);
- c[1] = Intersector.overlaps(new Rectangle((GP.player.getX() + GP.world.getWidthPx()) - 16,
- GP.player.getY() - 16, GP.player.getWidth() + 32, GP.player.getHeight() + 32), this);
- c[2] = Intersector.overlaps(new Rectangle((GP.player.getX() - GP.world.getWidthPx()) - 16,
- GP.player.getY() - 16, GP.player.getWidth() + 32, GP.player.getHeight() + 32), this);
+ c[0] = Intersector.overlaps(new Rectangle(player.getX() - 16,
+ player.getY() - 16, player.getWidth() + 32, player.getHeight() + 32), this);
+ c[1] = Intersector.overlaps(new Rectangle((player.getX() + gameWorld.getWidthPx()) - 16,
+ player.getY() - 16, player.getWidth() + 32, player.getHeight() + 32), this);
+ c[2] = Intersector.overlaps(new Rectangle((player.getX() - gameWorld.getWidthPx()) - 16,
+ player.getY() - 16, player.getWidth() + 32, player.getHeight() + 32), this);
for (int i = 0; i < 3; i++) {
if (c[i]) {
return 0;
}
- public void moveToPlayer() {
- int ctp = closeToPlayer();
+ public void moveToPlayer(GameWorld gameWorld, Player player, int ctp) {
if (ctp > 0) {
- float px = GP.player.getX();
- float py = GP.player.getY();
+ float px = player.getX();
+ float py = player.getY();
switch (ctp) {
case 2:
- px += GP.world.getWidthPx();
+ px += gameWorld.getWidthPx();
break;
case 3:
- px -= GP.world.getWidthPx();
+ px -= gameWorld.getWidthPx();
break;
}
float dx = 0, dy = 0;
- if (px + GP.player.getWidth() < x + 4) {
+ if (px + player.getWidth() < x + 4) {
dx = -.5f;
} else if (px > x + 4) {
dx = .5f;
}
- if (py + GP.player.getHeight() < y + 4) {
+ if (py + player.getHeight() < y + 4) {
dy = -.5f;
} else if (py > y + 4) {
dy = .5f;
}
- move.add(dx, dy);
+ velocity.add(dx, dy);
- if (move.x > 2) {
- move.x = 1;
- } else if (move.x < -2) {
- move.x = -1;
+ if (velocity.x > 2) {
+ velocity.x = 1;
+ } else if (velocity.x < -2) {
+ velocity.x = -1;
}
- if (move.y > 2) {
- move.y = 1;
- } else if (move.y < -2) {
- move.y = -1;
+ if (velocity.y > 2) {
+ velocity.y = 1;
+ } else if (velocity.y < -2) {
+ velocity.y = -1;
}
}
}
}
private void checkWorldBounds() {
- if (x + 8 > GP.world.getWidthPx()) {
- x -= GP.world.getWidthPx();
- } else if (x < 0) {
- x += GP.world.getWidthPx();
- }
+// if (x + 8 > world.getWidthPx()) {
+// x -= world.getWidthPx();
+// } else if (x < 0) {
+// x += world.getWidthPx();
+// }
}
- public void move() {
- x += move.x;
- y += move.y;
+ public void move(float delta) {
+ x += velocity.x * delta;
+ y += velocity.y * delta;
checkWorldBounds();
y = MathUtils.round(y);
}