【家园功能1.0.2】生产建筑存储总上限修改,部分建筑生产无总上限,只有领取上限
parent
20b1c958e5
commit
4e852db95b
|
@ -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];
|
||||
// 存储总上限,数值可能为0,0表示没有上限
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue