diff --git a/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java b/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java
index 56aa9c1e4d098aef7d371f1be9083a9602b58484..11838d16195e8a3bf5e4c7faad17126704afc85a 100644 (file)
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
+import ru.deadsoftware.cavecraft.game.GameItems;
+import ru.deadsoftware.cavecraft.game.GameWorld;
-public class Player {
+import java.io.Serializable;
- public Vector2 position;
- public Vector2 moveX, moveY;
- public int width, height, dir;
+public class Player implements Serializable {
+
+ public static int ANIM_SPEED = 6;
+
+ public Vector2 pos;
+ public Vector2 move;
+ public int width, height, dir, texWidth, hp;
public boolean canJump;
- public int[] inventory;
+ public int[] inv;
public boolean flyMode = false;
+ public int gameMode;
- public Player() {
- position = new Vector2(0, 0);
- moveX = new Vector2(0, 0);
- moveY = new Vector2(0, 0);
+ public Player(GameWorld world, int gameMode) {
+ this.gameMode = gameMode;
+ pos = getSpawnPoint(world).cpy();
+ move = new Vector2(0, 0);
width = 4;
height = 30;
- inventory = new int[9];
- inventory[0] = 1;
- inventory[1] = 2;
- inventory[2] = 3;
+ texWidth = 8;
+ inv = new int[9];
+ hp = 20;
+ }
+
+ public void respawn(GameWorld world) {
+ pos.set(getSpawnPoint(world));
+ move.setZero();
+ hp = 20;
+ }
+
+ private Vector2 getSpawnPoint(GameWorld world) {
+ int x = 0, y;
+ for (y = 0; y < world.getHeight(); y++) {
+ if (y == world.getHeight() - 1) {
+ y = 60;
+ world.setForeMap(x, y, 1);
+ break;
+ }
+ if (world.getForeMap(x, y) > 0 && GameItems.getBlock(world.getForeMap(x, y)).coll) break;
+ }
+ x = x * 16 + texWidth / 2;
+ y = y * 16 - height;
+ return new Vector2(x, y);
}
public Rectangle getRect() {
- return new Rectangle(position.x+2, position.y, width, height);
+ return new Rectangle(pos.x + 2, pos.y, width, height);
}
}