所以我写了一个基本的库存系统,当我添加一个项目时,它被正确添加了,这很好,但是当我去从库存中移除项目时,它会检查它是否可堆叠,以及它的数量是否大于1,因此当我放下物品时,我看到物品的数量减少了1,但是物品没有被放置在玩家身上,只有物品数量为1时它才获得位置,并且我再次放下,它将从库存中移除并掉落在玩家所在的位置。
public void removeItem(int index) {
if (Objects.nonNull(slots[index])) {
slots[index].setX(player.getX());
slots[index].setY(player.getY());
if (slots[index].isStackable() && slots[index].getAmount() > 1) {
slots[index].setAmount(slots[index].getAmount() - 1);
Item dropItem = slots[index];
dropItem.setAmount(1);
StageManager.addActor(dropItem);
} else {
StageManager.addActor(slots[index]);
slots[index] = null;
}
}
}
似乎只有else语句会将物品放到播放器上
} else {
StageManager.addActor(slots[index]);
slots[index] = null;
}
我不确定为什么它不像它那样-1,但是为什么当它不为null时为什么不将dropItem放到播放器上。
答案 0 :(得分:0)
所以我只需要创建一个新项目。
public void removeItem(int index) {
if (Objects.nonNull(slots[index])) {
slots[index].setX(player.getX());
slots[index].setY(player.getY());
if (slots[index].isStackable() && slots[index].getAmount() > 1) {
slots[index].setAmount(slots[index].getAmount() - 1);
Item dropItem = new Item(slots[index].getId(), slots[index].getEntityType(), slots[index].getName(), (int)player.getX(), (int)player.getY(),
slots[index].getImage(), slots[index].getItemType(), slots[index].getSlotType(), slots[index].getLevel(), slots[index].getRarity(),
slots[index].getWeight(), 1, slots[index].getDescription(), slots[index].getAttributes(), slots[index].getShapeRenderer(), slots[index].isStackable());
StageManager.addActor(dropItem);
} else {
StageManager.addActor(slots[index]);
slots[index] = null;
}
}
}