X-Git-Url: https://deadsoftware.ru/gitweb?p=cavedroid.git;a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FMob.java;h=bcab5867bc4e8ee9186543eebd206e4733437b86;hp=3b7edae21ed1748870f7b0d663407a11f33e4cd6;hb=2948fcd9c40ebf588ef7d0e7cd8dd34ecaa1f9b2;hpb=d58d40ec24363550fad10bd6047cee2618912186 diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index 3b7edae..bcab586 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -6,21 +6,37 @@ import com.badlogic.gdx.math.Vector2; import java.io.Serializable; +/** + * Mob class. + */ public abstract class Mob implements Serializable { - public boolean flyMode; + public static final int LEFT = 0; + public static final int RIGHT = 1; + private float width, height; private int dir; + public boolean flyMode; public Vector2 pos; public Vector2 mov; private boolean dead; + protected int animDelta = 6; public boolean canJump; - protected int anim, animDelta = 6; - - protected Mob(float x, float y, float width, float height, int dir, boolean player) { + int anim; + + /** + * + * @param x in pixels + * @param y in pixels + * @param width in pixels + * @param height in pixels + * @param dir integer representing a direction where 0 is left and 1 is right. + * You should use {@link #LEFT} and {@link #RIGHT} constants + */ + public Mob(float x, float y, float width, float height, int dir) { pos = new Vector2(x, y); mov = new Vector2(0, 0); this.width = width; @@ -31,18 +47,38 @@ public abstract class Mob implements Serializable { this.dir = dir; } - protected Mob(float x, float y, float width, float height, int dir) { - this(x, y, width, height, dir, false); - } - + /** + * + * @return The X coordinate of a mob in blocks + */ public int getMapX() { return (int) (pos.x + (getWidth() / 2)) / 16; } - public int getMapY() { + /** + * + * @return The Y coordinate of mob's upper edge in blocks + */ + public int getUpperMapY() { + return (int) (pos.y / 16); + } + + /** + * + * @return The Y coordinate if mob's vertical center in blocks + */ + public int getMiddleMapY() { return (int) (pos.y + (getHeight() / 2)) / 16; } + /** + * + * @return The Y coordinate of mob's legs in blocks + */ + public int getLowerMapY() { + return (int) (pos.y + getHeight()) / 16; + } + public float getWidth() { return width; } @@ -51,22 +87,44 @@ public abstract class Mob implements Serializable { return height; } - public int getDir() { + /** + * + * @return Integer representing a direction in which mob is looking, where 0 is left and 1 is right + */ + public int getDirection() { return dir; } + public boolean looksLeft() { + return getDirection() == LEFT; + } + + public boolean looksRight() { + return getDirection() == RIGHT; + } + + /** + * Switches direction in which mob is looking + */ protected void switchDir() { - dir = -dir + 1; + dir = looksLeft() ? RIGHT : LEFT; } public boolean isDead() { return dead; } + /** + * Set's mob's dead variable to true and nothing else. It doesn't delete the mob. + */ public void kill() { dead = true; } + /** + * + * @return A {@link Rectangle} with mob's coordinates and size + */ public Rectangle getRect() { return new Rectangle(pos.x, pos.y, getWidth(), getHeight()); } @@ -77,5 +135,10 @@ public abstract class Mob implements Serializable { public abstract void draw(SpriteBatch spriteBatch, float x, float y); + /** + * + * @return 0 - if regular mob.
+ * 10 - if instance of {@link FallingSand}
11 - if instance of {@link FallingGravel} + */ public abstract int getType(); //0 - mob, 10 - sand, 11 - gravel }