X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fobjects%2FBlock.java;h=0800b5b5cb8d8f713aef6e017a4c7af355675c79;hb=f4d52e3e4a3712050532786fca0aded5ff8b5a03;hp=defbd3b3dcc920bbbfe5d5851d2978637ed45d57;hpb=0a855ca3c1d0c84de41a928cc99fd8544a933015;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java index defbd3b..0800b5b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java @@ -1,44 +1,61 @@ package ru.deadsoftware.cavedroid.game.objects; +import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Rectangle; -public class Block { - - private int x, y, w, h; - private int tex; - private int hp, drop; - - //coll - collision, bg - background, tp - transparent, rb - requires block under it - private boolean coll, bg, tp, rb; - - public Block(int tex, int hp, int drop) { - this(0, 0, 16, 16, tex, hp, drop, true, false, false, false); - } - - public Block(int tex, int hp, int drop, boolean coll, boolean bg, boolean tp) { - this(0, 0, 16, 16, tex, hp, drop, coll, bg, tp, false); - } +import javax.annotation.CheckForNull; - public Block(int tex, int hp, int drop, boolean coll, boolean bg, boolean tp, boolean rb) { - this(0, 0, 16, 16, tex, hp, drop, coll, bg, tp, rb); - } - - public Block(int x, int y, int w, int h, int tex, int hp, int drop, boolean coll, boolean bg, boolean tp) { - this(x, y, w, h, tex, hp, drop, coll, bg, tp, false); - } +public class Block { - public Block(int x, int y, int w, int h, int tex, int hp, int drop, boolean coll, boolean bg, boolean tp, boolean rb) { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - this.tex = tex; + private final int x; + private final int y; + private final int w; + private final int h; + private final int hp; + private final String drop; + private final String meta; + @CheckForNull + private final Sprite tex; + + private final boolean coll; + private final boolean bg; + private final boolean tp; + private final boolean rb; + private final boolean fluid; + + /** + * @param left margin from left edge + * @param top margin from top edge + * @param right margin from right edge + * @param bottom margin from bottom edge + * @param hp hit points + * @param drop id of an item the block will drop when destroyed + * @param coll true if block has collision + * @param bg true if block should be drawn behind player + * @param tp true if block is transparent and renderer should draw a block behind it + * @param rb true if block should break when there is no block with collision under it + * @param fluid true if fluid + * @param meta extra info for storing + * @param tex block's texture + */ + public Block(int left, int top, int right, int bottom, int hp, String drop, boolean coll, boolean bg, boolean tp, + boolean rb, boolean fluid, String meta, @CheckForNull Sprite tex) { + this.x = left; + this.y = top; + this.w = 16 - right - left; + this.h = 16 - top - bottom; this.hp = hp; this.drop = drop; this.coll = coll; this.bg = bg; this.tp = tp; this.rb = rb; + this.fluid = fluid; + this.meta = meta; + this.tex = tex; + if (this.tex != null) { + this.tex.flip(false, true); + } } public boolean hasCollision() { @@ -57,26 +74,39 @@ public class Block { return rb; } - public int getTex() { - return tex; - } - public int getHp() { return hp; } - public int getDrop() { + public String getDrop() { return drop; } - public Rectangle getRect(int x, int y) { + public boolean hasDrop() { + return !drop.equals("none"); + } + + public Sprite getTexture() { + assert tex != null; + return tex; + } + + public Rectangle getRectangle(int x, int y) { x *= 16; y *= 16; return new Rectangle(x + this.x, y + this.y, w, h); } + public boolean isFluid() { + return fluid; + } + + public String getMeta() { + return meta; + } + public boolean toJump() { return (y < 8 && coll); } -} +} \ No newline at end of file