java - 将重复的演员添加到舞台不会购物
问题描述
所以我写了一个基本的库存系统,当我添加一个项目时,它会被正确添加,这很好,但是当我从库存中删除项目时,它会检查它是否可堆叠,如果它的数量大于 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 数量,但为什么它不将 dropItem 在播放器不为空时丢弃。
解决方案
所以我只需要创建一个新项目。
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;
}
}
}
推荐阅读
- sql - 如果 A 不是 B 则数据合并
- aspnetboilerplate - 如何防止更新 LockoutEndDateUtc
- linux - 如何使用 mplayer 查看原始 yuv 文件?
- python - 如何从多项式拟合中排除值?
- jquery - 在 jquery 中创建一个随机边框
- postgresql - PostgreSQL 删除表无效参数
- r - 如何在执行 R 脚本时分配特定核心
- angular - 在 Angular Material 中使用两种不同的字体
- kubernetes-pod - container_cpu_cfs_throttled_seconds_total 指标是什么意思
- r - facet_wrap / facet_grid 在highcharter中有什么类似的功能吗?