diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Player.java
index 0e8af6e0eed0407b1cc3a4be057ae2dc344f5b87..47d48d8a415374d61279a2c2af1c04d3da291e6a 100644 (file)
}
}
}
}
- @CheckForNull
- public Item inventory(int i) {
- return inventory.get(i).getItem();
- }
-
public void respawn(GameWorld gameWorld, GameItemsHolder itemsHolder) {
Vector2 pos = getSpawnPoint(gameWorld, itemsHolder);
this.x = pos.x;
public void respawn(GameWorld gameWorld, GameItemsHolder itemsHolder) {
Vector2 pos = getSpawnPoint(gameWorld, itemsHolder);
this.x = pos.x;
return inventory.get(slot);
}
return inventory.get(slot);
}
- public void pickUpDrop(Drop drop) {
- for (InventoryItem invItem : inventory) {
+ /**
+ * @return index of inventory where this drop could be placed or -1 if cant pick up
+ */
+ public int canPickUpDrop(Drop drop) {
+ for (int i = 0; i < 36; i++) {
+ final InventoryItem invItem = inventory.get(i);
+
if (!invItem.getItem().isTool()
&& invItem.getItem() == drop.getItem()
&& invItem.getAmount() < invItem.getItem().getParams().getMaxStack()) {
if (!invItem.getItem().isTool()
&& invItem.getItem() == drop.getItem()
&& invItem.getAmount() < invItem.getItem().getParams().getMaxStack()) {
- invItem.setAmount(invItem.getAmount() + 1);
- drop.setPickedUp(true);
- return;
+ return i;
}
}
- }
- for (int i = 0; i < inventory.size(); i++) {
- if (inventory(i) == null || inventory(i).getParams().getKey().equals(GameItemsHolder.FALLBACK_ITEM_KEY)) {
- inventory.set(i, drop.getItem().toInventoryItem());
- drop.setPickedUp(true);
- break;
+ if (invItem.getItem().isNone()) {
+ return i;
}
}
}
}
+
+ return -1;
+ }
+
+ public void pickUpDrop(Drop drop) {
+ int index = canPickUpDrop(drop);
+
+ if (index < 0) {
+ return;
+ }
+
+ final InventoryItem invItem = inventory.get(index);
+
+ if (invItem.getItem().equals(drop.getItem())) {
+ invItem.setAmount(invItem.getAmount() + 1);
+ drop.setPickedUp(true);
+ } else if (invItem.getItem().isNone()) {
+ inventory.set(index, drop.getItem().toInventoryItem());
+ drop.setPickedUp(true);
+ }
}
private Vector2 getSpawnPoint(GameWorld gameWorld, GameItemsHolder itemsHolder) {
}
private Vector2 getSpawnPoint(GameWorld gameWorld, GameItemsHolder itemsHolder) {
mVelocity.y = JUMP_VELOCITY;
}
mVelocity.y = JUMP_VELOCITY;
}
+ private boolean checkBlockCanBeHit(Block block) {
+ return !block.isNone() && block.getParams().getHitPoints() >= 0;
+ }
+
private void hitBlock(GameWorld gameWorld, GameItemsHolder gameItemsHolder) {
if (!hitting || !hittingWithDamage) {
return;
private void hitBlock(GameWorld gameWorld, GameItemsHolder gameItemsHolder) {
if (!hitting || !hittingWithDamage) {
return;
final Block foregroundBlock = gameWorld.getForeMap(cursorX, cursorY);
final Block backgroundBlock = gameWorld.getBackMap(cursorX, cursorY);
final Block foregroundBlock = gameWorld.getForeMap(cursorX, cursorY);
final Block backgroundBlock = gameWorld.getBackMap(cursorX, cursorY);
- if ((!foregroundBlock.isNone() && foregroundBlock.getParams().getHitPoints() >= 0) ||
- (foregroundBlock.isNone() && !backgroundBlock.isNone() && backgroundBlock.getParams().getHitPoints() >= 0)) {
+
+ if ((checkBlockCanBeHit(foregroundBlock)) ||
+ (foregroundBlock.isNone() && checkBlockCanBeHit(backgroundBlock))) {
if (gameMode == 0) {
if (gameMode == 0) {
- if (!foregroundBlock.isNone() && blockDamage >= foregroundBlock.getParams().getHitPoints()) {
- gameWorld.destroyForeMap(cursorX, cursorY);
- blockDamage = 0;
- } else if (!backgroundBlock.isNone() && blockDamage >= backgroundBlock.getParams().getHitPoints()) {
- gameWorld.destroyBackMap(cursorX, cursorY);
- blockDamage = 0;
+ if (!foregroundBlock.isNone()) {
+ if (blockDamage >= foregroundBlock.getParams().getHitPoints()) {
+ gameWorld.destroyForeMap(cursorX, cursorY);
+ blockDamage = 0;
+ }
+ } else if (!backgroundBlock.isNone()) {
+ if (blockDamage >= backgroundBlock.getParams().getHitPoints()) {
+ gameWorld.destroyBackMap(cursorX, cursorY);
+ blockDamage = 0;
+ }
}
} else {
if (!foregroundBlock.isNone()) {
}
} else {
if (!foregroundBlock.isNone()) {
final Block backgroundBlock = gameWorld.getBackMap(cursorX, cursorY);
@CheckForNull final Block target;
final Block backgroundBlock = gameWorld.getBackMap(cursorX, cursorY);
@CheckForNull final Block target;
- if (!foregroundBlock.isNone() && foregroundBlock.getParams().getHitPoints() >= 0) {
+ if (checkBlockCanBeHit(foregroundBlock)) {
target = foregroundBlock;
target = foregroundBlock;
- } else if (!backgroundBlock.isNone() && backgroundBlock.getParams().getHitPoints() >= 0) {
+ } else if (checkBlockCanBeHit(backgroundBlock)) {
target = backgroundBlock;
} else {
target = null;
target = backgroundBlock;
} else {
target = null;
}
private void drawItem(SpriteBatch spriteBatch, float x, float y, float anim) {
}
private void drawItem(SpriteBatch spriteBatch, float x, float y, float anim) {
- final Item item = inventory(slot);
+ final Item item = inventory.get(slot).getItem();
if (item == null || item.isNone()) {
return;
if (item == null || item.isNone()) {
return;