X-Git-Url: https://deadsoftware.ru/gitweb?p=cavedroid.git;a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavecraft%2Fgame%2Fobjects%2FPlayer.java;h=5672807cc1205182190ff939d84913adc81f8c55;hp=546fb6ef7aaa307b2a98b4ad686cfbcb894f1832;hb=cef4b5a9985bcbdfea6dc652147ecde0721d7fdc;hpb=bea2a3c5b967bcd90ccd83e08e833d58449e963a diff --git a/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java b/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java index 546fb6e..5672807 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java +++ b/core/src/ru/deadsoftware/cavecraft/game/objects/Player.java @@ -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; @@ -9,25 +11,77 @@ public class Player implements Serializable { public static int ANIM_SPEED = 6; - public Vector2 position; - public Vector2 moveX, moveY; - public int width, height, dir, texWidth; + 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(Vector2 spawnPoint) { - position = spawnPoint.cpy(); - 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]; + 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()); } }