DEADSOFTWARE

Code improvements
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / game / objects / Player.java
index bcebde6f3d6198ae7ecba5185c4d3ff445ccabe6..5672807cc1205182190ff939d84913adc81f8c55 100644 (file)
@@ -1,41 +1,87 @@
 package ru.deadsoftware.cavecraft.game.objects;
 
-import com.badlogic.gdx.math.RandomXS128;
 import com.badlogic.gdx.math.Rectangle;
 import com.badlogic.gdx.math.Vector2;
-import ru.deadsoftware.cavecraft.Assets;
-import ru.deadsoftware.cavecraft.game.WorldGen;
+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, texWidth;
+public class Player implements Serializable {
+
+    public static int ANIM_SPEED = 6;
+
+    public Vector2 pos;
+    public Vector2 mov;
+    private int width, height, dir, hp;
     public boolean canJump;
-    public int[] inventory;
+    public int[] inv;
     public boolean flyMode = false;
+    public int gameMode;
 
-    public Player(int x, int y) {
-        position = new Vector2(x, y);
-        moveX = new Vector2(0, 0);
-        moveY = new Vector2(0, 0);
+    public Player(GameWorld world, int gameMode) {
+        this.gameMode = gameMode;
+        mov = new Vector2(0, 0);
         width = 4;
         height = 30;
-        texWidth = 8;
-        inventory = new int[9];
-        inventory[0] = 1;
-        inventory[1] = 2;
-        inventory[2] = 3;
-        inventory[3] = 4;
-        inventory[4] = 5;
-        inventory[5] = 6;
-        inventory[6] = 7;
-        inventory[7] = 8;
-        inventory[8] = 9;
+        inv = new int[9];
+        hp = 20;
+        pos = getSpawnPoint(world).cpy();
+    }
+
+    public void respawn(GameWorld world) {
+        pos.set(getSpawnPoint(world));
+        mov.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)).hasCollision()) break;
+        }
+        return new Vector2(x * 16 + 8 - (float) getWidth() / 2, (float) y * 16 - getHeight());
+    }
+
+    public int getMapX() {
+        return (int) (pos.x + (getWidth() / 2)) / 16;
+    }
+
+    public int getMapY() {
+        return (int) (pos.y + (getHeight() / 2)) / 16;
+    }
+
+    public int getWidth() {
+        return width;
+    }
+
+    public int getHeight() {
+        return height;
+    }
+
+    public int getHp() {
+        return hp;
+    }
+
+    public void setHp(int hp) {
+        this.hp = hp;
+    }
+
+    public int getDir() {
+        return dir;
+    }
+
+    public void setDir(int dir) {
+        this.dir = dir;
     }
 
     public Rectangle getRect() {
-        return new Rectangle(position.x+2, position.y, width, height);
+        return new Rectangle(pos.x, pos.y, getWidth(), getHeight());
     }
 
 }