【家园功能1.0.2】生产建筑存储总上限修改,部分建筑生产无总上限,只有领取上限

back_recharge
duhui 2021-12-27 11:47:40 +08:00
parent 20b1c958e5
commit 4e852db95b
1 changed files with 22 additions and 9 deletions

View File

@ -101,6 +101,7 @@ public class HomeLogic {
info.setUpLvEndTime(landLevel1.getTime() + now);
}
}
// 取消
if (type == 3){
info.setUpLvEndTime(0);
}
@ -214,24 +215,36 @@ public class HomeLogic {
LOGGER.error("功能类建筑不能收获id{}", info.getId());
return;
}
// 经过了多少分钟
// 收益时间/分
int time = Math.max(0, nowInt - info.getProductionStartTime()) / 60;
// 1判断存储总上限
long itemNum = Optional.ofNullable(user.getItemManager().getItem(homeLandLevel.getGain()[0])).map(Item::getItemNum).orElse(0L);
if (itemNum >= homeLandLevel.getStorage()[1][1]) {
LOGGER.error("家园资源物品到达上限id:{}", homeLandLevel.getGain()[0]);
// 配置表参数生产道具id
int itemId = homeLandLevel.getGain()[0];
// 每分钟生产数量
int minutesNum = homeLandLevel.getGain()[1];
// 可领取上限
int getNumMax = homeLandLevel.getStorage()[0][1];
// 存储总上限数值可能为00表示没有上限
int totalMax = homeLandLevel.getStorage()[1][1];
// 获取已获得的数量
long itemNum = Optional.ofNullable(user.getItemManager().getItem(itemId)).map(Item::getItemNum).orElse(0L);
if (totalMax != 0 && itemNum >= totalMax) {
LOGGER.error("家园资源物品到达上限id:{}", itemId);
return;
}
// 可领取的数量,总上限
long maxLimit = homeLandLevel.getStorage()[1][1] - itemNum;
long maxLimit = totalMax - itemNum;
// 可领取的数量,单位上限
long unitLimit = Math.max(homeLandLevel.getGain()[1] * time, homeLandLevel.getStorage()[0][1]);
long unitLimit = Math.max(minutesNum*time, getNumMax);
// 可领取的数量
long getNum = Math.min(maxLimit, unitLimit);
if (totalMax == 0){
getNum = unitLimit;
}
// 走掉落,进背包
ItemUtil.drop(user, new long[][]{{homeLandLevel.getGain()[0], getNum}}, BIReason.ARCHITECTURE_EARNINGS, drop);
ItemUtil.drop(user, new long[][]{{itemId, getNum}}, BIReason.ARCHITECTURE_EARNINGS, drop);
// 未领取的数量
int time2 = (int) ((unitLimit - getNum) / homeLandLevel.getGain()[1] * 60);
int time2 = (int) ((unitLimit - getNum) / minutesNum * 60);
info.setProductionStartTime(nowInt - time2);
user.getPlayerInfoManager().putArchitectureInfo(homeLandLevel.getPoolID(), info);
}