DEADSOFTWARE

Fix bugs
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / game / objects / Player.java
index 4c7d962ca37c86d2dae698016bd45b83aa350bdc..11838d16195e8a3bf5e4c7faad17126704afc85a 100644 (file)
@@ -2,6 +2,8 @@ package ru.deadsoftware.cavecraft.game.objects;
 
 import com.badlogic.gdx.math.Rectangle;
 import com.badlogic.gdx.math.Vector2;
+import ru.deadsoftware.cavecraft.game.GameItems;
+import ru.deadsoftware.cavecraft.game.GameWorld;
 
 import java.io.Serializable;
 
@@ -11,20 +13,42 @@ public class Player implements Serializable {
 
     public Vector2 pos;
     public Vector2 move;
-    public int width, height, dir, texWidth;
+    public int width, height, dir, texWidth, hp;
     public boolean canJump;
     public int[] inv;
     public boolean flyMode = false;
     public int gameMode;
 
-    public Player(Vector2 spawnPoint, int gameMode) {
+    public Player(GameWorld world, int gameMode) {
         this.gameMode = gameMode;
-        pos = spawnPoint.cpy();
+        pos = getSpawnPoint(world).cpy();
         move = new Vector2(0, 0);
         width = 4;
         height = 30;
         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() {