天宫7天限制

lvxinran 2020-09-03 15:29:48 +08:00
parent 62fbd0f9b8
commit 445f0a4965
3 changed files with 54 additions and 25 deletions

View File

@ -128,8 +128,8 @@ public class ExpeditionManager extends MongoBase {
return effectItems;
}
public void resetTreasureReward(int round){
worldTreasureReward.reset(round);
public void resetTreasureReward(){
worldTreasureReward.reset();
onlyUpdateTreasureReward();
}

View File

@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.dao.root.User;
import config.SExpeditionSetting;
import manager.STableManager;
import util.TimeUtils;
import java.util.HashMap;
@ -9,8 +11,10 @@ import java.util.Map;
public class WorldTreasureReward extends MongoBase {
private int firstStartTime;
private int createTime; //取当天零点 根据其可以推算出期数。
private int round=1;
private int round;
private int score;
private Map<Integer,Integer> rewardStatusMap = new HashMap<>(); //领取状态 1表示领取基础奖励 2表示领取额外奖励。
@ -18,17 +22,19 @@ public class WorldTreasureReward extends MongoBase {
this.setRootCollection(User._COLLECTION_NAME);
}
public void reset(int round){
public void reset(){
SExpeditionSetting setting = STableManager.getConfig(SExpeditionSetting.class).get(1);
int treasureTime = setting.getTreasureTime()[0][1];
if(createTime == 0){
createTime =(int)((TimeUtils.getLastOrUnderHour(TimeUtils.now(), 5,0, true)+TimeUtils.DAY*30)/1000);
createTime =(int)((TimeUtils.getLastOrUnderHour(TimeUtils.now(), 5,0, true)+TimeUtils.DAY*treasureTime)/1000);
}else{
do{
createTime+=TimeUtils.DAY*30/1000;
createTime+=TimeUtils.DAY*treasureTime/1000;
}while(createTime<TimeUtils.nowInt());
}
score = 0;
rewardStatusMap = new HashMap<>();
this.round = round;
updateRound(round+1);
}
@Override
@ -47,6 +53,11 @@ public class WorldTreasureReward extends MongoBase {
}
return round;
}
public void updateRound(int round) {
this.round = round;
updateString("round", round);
}
public int getScore() {
return score;
@ -64,4 +75,14 @@ public class WorldTreasureReward extends MongoBase {
rewardStatusMap.put(id,value);
updateString("rewardStatusMap."+id, value);
}
public int getFirstStartTime() {
return firstStartTime;
}
public void setFirstStartTime(int firstStartTime) {
this.firstStartTime = firstStartTime;
}
}

View File

@ -763,23 +763,26 @@ public class ExpeditionLogic {
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
int openRule = sExpeditionSetting.getOpenRules()[0];
if(openRule == type && sExpeditionSetting.getOpenRules()[1] == parm){
user.getExpeditionManager().resetTreasureReward(1);
sendAllTreasureInfo(user);
//设置第一次七天后开启
user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+7*TimeUtils.ONE_DAY)/1000));
// user.getExpeditionManager().resetTreasureReward(1);
// sendAllTreasureInfo(user);
}
}
public static void checkAndResetTreasure(User user) throws Exception {
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
int createTime =worldTreasureReward.getCreateTime();
if(createTime==0){
if(worldTreasureReward.getFirstStartTime()>TimeUtils.nowInt()){
return;
}
int createTime =worldTreasureReward.getCreateTime();
//重置
if(TimeUtils.nowInt()>=worldTreasureReward.getCreateTime()){
user.getExpeditionManager().resetTreasureReward(1);
if(TimeUtils.nowInt()>=createTime){
user.getExpeditionManager().resetTreasureReward();
sendAllTreasureInfo(user);
BuyGoodsLogic.sendGiftGooodsIndication(user.getId());
user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(106,0);
user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(sExpeditionSetting.getTreasureTime()[0][2],0);
}
}
@ -1012,17 +1015,22 @@ public class ExpeditionLogic {
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
Expedition.ExpeditionTreasureInfoResponse.Builder response = Expedition.ExpeditionTreasureInfoResponse.newBuilder();
Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap();
WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class);
Set<SWorldBossTreasureConfig> sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound());
List<Expedition.TreasureRewardState> states = new ArrayList<>(100);
sWorldBossTreasureConfigs.forEach(item->{
Expedition.TreasureRewardState.Builder builder = Expedition.TreasureRewardState.newBuilder().setId(item.getId()).setState(rewardStatusMap.getOrDefault(item.getId(),0));
states.add(builder.build());
});
response.addAllTreasureRewardState(states);
response.setScore(worldTreasureReward.getScore());
response.setResetTime(worldTreasureReward.getCreateTime());
if(worldTreasureReward.getFirstStartTime()<=TimeUtils.nowInt()){
Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap();
WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class);
Set<SWorldBossTreasureConfig> sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound());
List<Expedition.TreasureRewardState> states = new ArrayList<>(100);
sWorldBossTreasureConfigs.forEach(item->{
Expedition.TreasureRewardState.Builder builder = Expedition.TreasureRewardState.newBuilder().setId(item.getId()).setState(rewardStatusMap.getOrDefault(item.getId(),0));
states.add(builder.build());
});
response.addAllTreasureRewardState(states);
response.setScore(worldTreasureReward.getScore());
response.setResetTime(worldTreasureReward.getCreateTime());
}else {
response.setResetTime(-1);
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
}