diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java b/core/src/ru/deadsoftware/cavedroid/game/objects/Block.java
index defbd3b3dcc920bbbfe5d5851d2978637ed45d57..b6628cb20a1f283ab17f63a61e833a79461e9032 100644 (file)
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;
+ 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() {
return rb;
}
- public int getTex() {
- return tex;
- }
-
public int getHp() {
return hp;
}
- public int getDrop() {
+ public String getDrop() {
return drop;
}
+ public boolean hasDrop() {
+ return !drop.equals("none");
+ }
+
+ public Sprite getTex() {
+ return tex;
+ }
+
public Rectangle getRect(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