added stackable functionality to items and improved inventory management
This commit is contained in:
@@ -5,6 +5,7 @@ import de.miaurizius.jgame2d.core.enums.Direction;
|
||||
import de.miaurizius.jgame2d.core.enums.EntityType;
|
||||
import de.miaurizius.jgame2d.core.enums.GameState;
|
||||
import de.miaurizius.jgame2d.core.handlers.KeyHandler;
|
||||
import de.miaurizius.jgame2d.entity.item.KeyObj;
|
||||
import de.miaurizius.jgame2d.entity.item.ShieldWoodObj;
|
||||
import de.miaurizius.jgame2d.entity.item.SwordNormalObj;
|
||||
import de.miaurizius.jgame2d.entity.projectile.FireballObj;
|
||||
@@ -150,11 +151,10 @@ public class Player extends Entity {
|
||||
}
|
||||
// INVENTORY ITEMS
|
||||
else {
|
||||
if(inventory.size() == maxInvSize) {
|
||||
if(!canObtainItem(panel.obj[panel.currentMap.getIndex()][index])) {
|
||||
panel.ui.addMessage("Your inventory is full!");
|
||||
return;
|
||||
}
|
||||
inventory.add(panel.obj[panel.currentMap.getIndex()][index]);
|
||||
panel.playSE(1);
|
||||
panel.ui.addMessage("Picked up " + panel.obj[panel.currentMap.getIndex()][index].name + "!");
|
||||
}
|
||||
@@ -289,9 +289,9 @@ public class Player extends Entity {
|
||||
currentShield = selectedItem;
|
||||
getDefense();
|
||||
}
|
||||
if(selectedItem.consumable) {
|
||||
selectedItem.use(this);
|
||||
}
|
||||
if(selectedItem.consumable)
|
||||
if(selectedItem.use(this))
|
||||
if(selectedItem.amt > 1) selectedItem.amt--; else inventory.remove(selectedItem);
|
||||
}
|
||||
public void setDefaultPositions() {
|
||||
worldX = panel.tileSize * 23;
|
||||
@@ -320,7 +320,7 @@ public class Player extends Entity {
|
||||
dexterity = 1;
|
||||
exp = 0;
|
||||
nextLevelExp = 5;
|
||||
coins = 0;
|
||||
coins = 500;
|
||||
currentWeapon = new SwordNormalObj(panel);
|
||||
currentShield = new ShieldWoodObj(panel);
|
||||
projectile = new FireballObj(panel);
|
||||
@@ -331,6 +331,7 @@ public class Player extends Entity {
|
||||
inventory.clear();
|
||||
inventory.add(currentWeapon);
|
||||
inventory.add(currentShield);
|
||||
inventory.add(new KeyObj(panel));
|
||||
}
|
||||
public int getAttack() {
|
||||
attackArea = currentWeapon.attackArea;
|
||||
@@ -373,5 +374,29 @@ public class Player extends Entity {
|
||||
break;
|
||||
}
|
||||
}
|
||||
public int searchItemInInventory(String itemName) {
|
||||
for(int i = 0; i < inventory.size(); i++) {
|
||||
if(inventory.get(i).name.equals(itemName)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 999;
|
||||
}
|
||||
public boolean canObtainItem(Entity item) {
|
||||
int i = searchItemInInventory(item.name);
|
||||
if(item.stackable) {
|
||||
if(i != 999) {
|
||||
inventory.get(i).amt++;
|
||||
return true;
|
||||
} else if(inventory.size() != maxInvSize) {
|
||||
inventory.add(item);
|
||||
return true;
|
||||
}
|
||||
} else if(inventory.size() != maxInvSize) {
|
||||
inventory.add(item);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user