天宫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; return effectItems;
} }
public void resetTreasureReward(int round){ public void resetTreasureReward(){
worldTreasureReward.reset(round); worldTreasureReward.reset();
onlyUpdateTreasureReward(); onlyUpdateTreasureReward();
} }

View File

@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase; import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import config.SExpeditionSetting;
import manager.STableManager;
import util.TimeUtils; import util.TimeUtils;
import java.util.HashMap; import java.util.HashMap;
@ -9,8 +11,10 @@ import java.util.Map;
public class WorldTreasureReward extends MongoBase { public class WorldTreasureReward extends MongoBase {
private int firstStartTime;
private int createTime; //取当天零点 根据其可以推算出期数。 private int createTime; //取当天零点 根据其可以推算出期数。
private int round=1; private int round;
private int score; private int score;
private Map<Integer,Integer> rewardStatusMap = new HashMap<>(); //领取状态 1表示领取基础奖励 2表示领取额外奖励。 private Map<Integer,Integer> rewardStatusMap = new HashMap<>(); //领取状态 1表示领取基础奖励 2表示领取额外奖励。
@ -18,17 +22,19 @@ public class WorldTreasureReward extends MongoBase {
this.setRootCollection(User._COLLECTION_NAME); 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){ 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{ }else{
do{ do{
createTime+=TimeUtils.DAY*30/1000; createTime+=TimeUtils.DAY*treasureTime/1000;
}while(createTime<TimeUtils.nowInt()); }while(createTime<TimeUtils.nowInt());
} }
score = 0; score = 0;
rewardStatusMap = new HashMap<>(); rewardStatusMap = new HashMap<>();
this.round = round; updateRound(round+1);
} }
@Override @Override
@ -47,6 +53,11 @@ public class WorldTreasureReward extends MongoBase {
} }
return round; return round;
} }
public void updateRound(int round) {
this.round = round;
updateString("round", round);
}
public int getScore() { public int getScore() {
return score; return score;
@ -64,4 +75,14 @@ public class WorldTreasureReward extends MongoBase {
rewardStatusMap.put(id,value); rewardStatusMap.put(id,value);
updateString("rewardStatusMap."+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); SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
int openRule = sExpeditionSetting.getOpenRules()[0]; int openRule = sExpeditionSetting.getOpenRules()[0];
if(openRule == type && sExpeditionSetting.getOpenRules()[1] == parm){ 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 { public static void checkAndResetTreasure(User user) throws Exception {
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward(); WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
int createTime =worldTreasureReward.getCreateTime(); if(worldTreasureReward.getFirstStartTime()>TimeUtils.nowInt()){
if(createTime==0){
return; return;
} }
int createTime =worldTreasureReward.getCreateTime();
//重置 //重置
if(TimeUtils.nowInt()>=worldTreasureReward.getCreateTime()){ if(TimeUtils.nowInt()>=createTime){
user.getExpeditionManager().resetTreasureReward(1); user.getExpeditionManager().resetTreasureReward();
sendAllTreasureInfo(user); sendAllTreasureInfo(user);
BuyGoodsLogic.sendGiftGooodsIndication(user.getId()); BuyGoodsLogic.sendGiftGooodsIndication(user.getId());
user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(106,0); user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(sExpeditionSetting.getTreasureTime()[0][2],0);
} }
} }
@ -1012,6 +1015,7 @@ public class ExpeditionLogic {
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward(); WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
Expedition.ExpeditionTreasureInfoResponse.Builder response = Expedition.ExpeditionTreasureInfoResponse.newBuilder(); Expedition.ExpeditionTreasureInfoResponse.Builder response = Expedition.ExpeditionTreasureInfoResponse.newBuilder();
if(worldTreasureReward.getFirstStartTime()<=TimeUtils.nowInt()){
Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap(); Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap();
WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class); WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class);
Set<SWorldBossTreasureConfig> sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound()); Set<SWorldBossTreasureConfig> sWorldBossTreasureConfigs = worldBossTreasureStaticConfig.getIdsByPeriods().get(worldTreasureReward.getRound());
@ -1023,6 +1027,10 @@ public class ExpeditionLogic {
response.addAllTreasureRewardState(states); response.addAllTreasureRewardState(states);
response.setScore(worldTreasureReward.getScore()); response.setScore(worldTreasureReward.getScore());
response.setResetTime(worldTreasureReward.getCreateTime()); response.setResetTime(worldTreasureReward.getCreateTime());
}else {
response.setResetTime(-1);
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
} }
} }