X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FPlayer.java;h=1f42039bfec7bd2969ec002bdacc4c9ee8ae4386;hb=3fdc2291218f6d3903ce923563d1e12051690c37;hp=df4e0c961a14ebce095b16456602bf896561b8ad;hpb=84377178320105196ad70bfa798ba8f299f961b2;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java index df4e0c9..1f42039 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java @@ -1,101 +1,92 @@ package ru.deadsoftware.cavedroid.game.mobs; +import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; -import ru.deadsoftware.cavedroid.game.mobs.Mob; +import ru.deadsoftware.cavedroid.game.objects.Drop; +import ru.deadsoftware.cavedroid.game.world.GameWorld; import ru.deadsoftware.cavedroid.misc.Assets; +import ru.deadsoftware.cavedroid.misc.utils.SpriteUtilsKt; -import java.io.Serializable; - -import static ru.deadsoftware.cavedroid.GameScreen.GP; - -public class Player extends Mob implements Serializable { +public class Player extends Mob { public final int[] inventory; public int slot; public final int gameMode; public boolean swim; + public float headRotation = 0f; - public Player(int gameMode) { - super(0, 0, 4, 30, 1); - this.gameMode = gameMode; + public Player() { + super(0, 0, 4, 30, randomDir(), Type.MOB); + this.gameMode = 1; inventory = new int[9]; swim = false; } - public void respawn() { - pos.set(getSpawnPoint()); - mov.setZero(); + public void respawn(GameWorld gameWorld) { + Vector2 pos = getSpawnPoint(gameWorld); + this.x = pos.x; + this.y = pos.y; + mVelocity.setZero(); } - private Vector2 getSpawnPoint() { - int x = 0, y; - for (y = 0; y < GP.world.getHeight(); y++) { - if (y == GP.world.getHeight() - 1) { - y = 60; - GP.world.setForeMap(x, y, 1); + public void pickUpDrop(Drop drop) { + for (int i = 0; i < inventory.length; i++) { + if (inventory[i] == 0 || inventory[i] == drop.getId()) { + inventory[i] = drop.getId(); + drop.setPickedUp(true); break; } - if (GP.world.hasForeAt(x, y) && GP.world.getForeMapBlock(x, y).hasCollision()) break; } - return new Vector2(x * 16 + 8 - getWidth() / 2, (float) y * 16 - getHeight()); - } - - public void setDir(int dir) { - if (dir != getDirection()) switchDir(); } - @Override - public void ai() { + private Vector2 getSpawnPoint(GameWorld gameWorld) { + int y; + for (y = 0; y < gameWorld.getHeight(); y++) { + if (y == gameWorld.getHeight() - 1) { + y = 60; + gameWorld.setForeMap(0, y, 1); + break; + } + if (gameWorld.hasForeAt(0, y) && gameWorld.getForeMapBlock(0, y).hasCollision()) { + break; + } + } + return new Vector2(8 - getWidth() / 2, (float) y * 16 - getHeight()); } - @Override - public void changeDir() { + public void setDir(Direction dir) { + if (dir != getDirection()) { + switchDir(); + } } @Override - public void draw(SpriteBatch spriteBatch, float x, float y) { - if (mov.x != 0 || Assets.playerSprite[0][2].getRotation() != 0) { - Assets.playerSprite[0][2].rotate(animDelta); - Assets.playerSprite[1][2].rotate(-animDelta); - Assets.playerSprite[0][3].rotate(-animDelta); - Assets.playerSprite[1][3].rotate(animDelta); - } else { - Assets.playerSprite[0][2].setRotation(0); - Assets.playerSprite[1][2].setRotation(0); - Assets.playerSprite[0][3].setRotation(0); - Assets.playerSprite[1][3].setRotation(0); - } - if (Assets.playerSprite[0][2].getRotation() >= 60 || Assets.playerSprite[0][2].getRotation() <= -60) - animDelta = -animDelta; - - //back hand - Assets.playerSprite[1][2].setPosition(x - 6, y); - Assets.playerSprite[1][2].draw(spriteBatch); - //back leg - Assets.playerSprite[1][3].setPosition(x - 6, y + 10); - Assets.playerSprite[1][3].draw(spriteBatch); - //front leg - Assets.playerSprite[0][3].setPosition(x - 6, y + 10); - Assets.playerSprite[0][3].draw(spriteBatch); - //head - spriteBatch.draw(Assets.playerSprite[getDirection()][0], x - 2, y - 2); - //body - spriteBatch.draw(Assets.playerSprite[getDirection()][1], x - 2, y + 8); - //front hand - Assets.playerSprite[0][2].setPosition(x - 6, y); - Assets.playerSprite[0][2].draw(spriteBatch); + public void ai(GameWorld gameWorld, float delta) { } @Override - public int getType() { - return 0; + public void changeDir() { } @Override - public Rectangle getRect() { - return new Rectangle(pos.x, pos.y, getWidth(), getHeight()); + public void draw(SpriteBatch spriteBatch, float x, float y, float delta) { + updateAnimation(delta); + + final Sprite backHand = Assets.playerSprite[1][2]; + final Sprite backLeg = Assets.playerSprite[1][3]; + final Sprite frontLeg = Assets.playerSprite[0][3]; + final Sprite head = Assets.playerSprite[dirMultiplier()][0]; + final Sprite body = Assets.playerSprite[dirMultiplier()][1]; + final Sprite frontHand = Assets.playerSprite[0][2]; + + SpriteUtilsKt.draw(spriteBatch, backHand, x + 2, y + 8, -mAnim); + SpriteUtilsKt.draw(spriteBatch, backLeg, x + 2, y + 20, mAnim); + SpriteUtilsKt.draw(spriteBatch, frontLeg, x + 2, y + 20, -mAnim); + SpriteUtilsKt.draw(spriteBatch, head, x, y, headRotation); + SpriteUtilsKt.draw(spriteBatch, body, x + 2, y + 8); + SpriteUtilsKt.draw(spriteBatch, frontHand, x + 2, y + 8, mAnim); } }