Merge branch 'master' of http://60.1.1.230/backend/jieling_server
commit
6abcb5ce6b
|
@ -41,7 +41,6 @@ import util.StringUtil;
|
|||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class CombatLogic {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(CombatLogic.class);
|
||||
|
@ -221,77 +220,17 @@ public class CombatLogic {
|
|||
}
|
||||
|
||||
public Map<Integer,CommonProto.Drop> getNewAdventureReward(User user,boolean sendMail) throws Exception {
|
||||
MainLevelManager mainLevelManager = user.getMainLevelManager();
|
||||
Map<Integer, Integer> fightStateInfo = user.getMainLevelManager().getFightStateInfo();
|
||||
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
|
||||
int adventureRefresh = gameSetting.getAdventureRefresh();
|
||||
int adventureOffline = gameSetting.getAdventureOffline()*60*60/adventureRefresh;
|
||||
Map<Integer, Integer> baseItemMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseCardMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseEquipMap = new HashMap<>();
|
||||
Map<Integer,Integer> baseRandomMap = new HashMap<>();
|
||||
|
||||
Map<Integer, Integer> randomItemMap = new HashMap<>();
|
||||
Map<Integer, Integer> randomCardMap = new HashMap<>();
|
||||
Map<Integer, Integer> randomEquipMap = new HashMap<>();
|
||||
Map<Integer,Integer> randomRandomMap = new HashMap<>();
|
||||
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
|
||||
CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder();
|
||||
int takeTimes= 0;
|
||||
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
|
||||
Integer fightId = fightStateInfoItem.getKey();
|
||||
Integer times = fightStateInfoItem.getValue();
|
||||
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
|
||||
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
|
||||
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
int timesTemp =times;
|
||||
while (timesTemp-->0){
|
||||
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
|
||||
}
|
||||
takeTimes+=times;
|
||||
}
|
||||
int fightId = mainLevelManager.getFightId();
|
||||
SMainLevelConfig targetMainLevelConfig = SMainLevelConfig.config.get(fightId);
|
||||
int lastTime = mainLevelManager.getLastTime();
|
||||
int now = (int) (System.currentTimeMillis() / 1000);
|
||||
int times = (now - lastTime)/STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureRefresh();
|
||||
int maxTimes = adventureOffline - takeTimes;
|
||||
int lastTimeTakes=0;
|
||||
boolean reset = maxTimes<times;
|
||||
if(maxTimes>0){
|
||||
times = times > maxTimes?maxTimes:times;
|
||||
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
|
||||
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
int timesTemp =times;
|
||||
while (timesTemp-->0){
|
||||
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
|
||||
}
|
||||
lastTimeTakes=times;
|
||||
}
|
||||
if(sendMail){
|
||||
if(!baseItemMap.isEmpty()){
|
||||
int vipLevel = user.getPlayerInfoManager().getVipLevel();
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_content",new Object[]{vipLevel});
|
||||
String reward = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
|
||||
String randomReward = ItemUtil.getReward(randomItemMap, randomCardMap, randomEquipMap, randomRandomMap);
|
||||
if(randomReward.length()!=0){
|
||||
reward = reward + "|" + randomReward;
|
||||
}
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,now,Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
mainLevelManager.afterTakeStateReward(true,0);
|
||||
return null;
|
||||
}
|
||||
mainLevelManager.afterTakeStateReward(reset,lastTimeTakes);
|
||||
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
|
||||
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
|
||||
GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke();
|
||||
if (getNewAdventureData.is()) return null;
|
||||
CommonProto.Drop.Builder baseBuilder = getNewAdventureData.getBaseBuilder();
|
||||
CommonProto.Drop.Builder randomBuilder = getNewAdventureData.getRandomBuilder();
|
||||
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
|
||||
result.put(1,baseBuilder.build());
|
||||
result.put(2,randomBuilder.build());
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ADVENTURE_TAKEREWARD,1);
|
||||
return result;
|
||||
}
|
||||
|
||||
private Map<Integer,CommonProto.Drop> getNewAdventureFastReward(User user,int timeDuration) throws Exception {
|
||||
MainLevelManager mainLevelManager = user.getMainLevelManager();
|
||||
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
|
||||
|
@ -907,4 +846,111 @@ public class CombatLogic {
|
|||
return result;
|
||||
}
|
||||
|
||||
public static class GetNewAdventureData {
|
||||
private boolean myResult;
|
||||
private User user;
|
||||
private boolean sendMail;
|
||||
private boolean viewBaseReward;
|
||||
private CommonProto.Drop.Builder baseBuilder;
|
||||
private CommonProto.Drop.Builder randomBuilder;
|
||||
private String rewardStr;
|
||||
|
||||
public GetNewAdventureData(User user, boolean sendMail,boolean viewBaseReward) {
|
||||
this.user = user;
|
||||
this.sendMail = sendMail;
|
||||
this.viewBaseReward = viewBaseReward;
|
||||
}
|
||||
|
||||
public boolean is() {
|
||||
return myResult;
|
||||
}
|
||||
|
||||
public CommonProto.Drop.Builder getBaseBuilder() {
|
||||
return baseBuilder;
|
||||
}
|
||||
|
||||
public CommonProto.Drop.Builder getRandomBuilder() {
|
||||
return randomBuilder;
|
||||
}
|
||||
|
||||
public String getRewardStr() {
|
||||
return rewardStr;
|
||||
}
|
||||
|
||||
public GetNewAdventureData invoke() throws Exception {
|
||||
MainLevelManager mainLevelManager = user.getMainLevelManager();
|
||||
Map<Integer, Integer> fightStateInfo = user.getMainLevelManager().getFightStateInfo();
|
||||
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
|
||||
int adventureRefresh = gameSetting.getAdventureRefresh();
|
||||
int adventureOffline = gameSetting.getAdventureOffline()*60*60/adventureRefresh;
|
||||
Map<Integer, Integer> baseItemMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseCardMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseEquipMap = new HashMap<>();
|
||||
Map<Integer,Integer> baseRandomMap = new HashMap<>();
|
||||
|
||||
Map<Integer, Integer> randomItemMap = new HashMap<>();
|
||||
Map<Integer, Integer> randomCardMap = new HashMap<>();
|
||||
Map<Integer, Integer> randomEquipMap = new HashMap<>();
|
||||
Map<Integer,Integer> randomRandomMap = new HashMap<>();
|
||||
baseBuilder = CommonProto.Drop.newBuilder();
|
||||
randomBuilder = CommonProto.Drop.newBuilder();
|
||||
int takeTimes= 0;
|
||||
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
|
||||
Integer fightId = fightStateInfoItem.getKey();
|
||||
Integer times = fightStateInfoItem.getValue();
|
||||
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
|
||||
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
|
||||
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
int timesTemp =times;
|
||||
while (!viewBaseReward&×Temp-->0){
|
||||
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
|
||||
}
|
||||
takeTimes+=times;
|
||||
}
|
||||
int fightId = mainLevelManager.getFightId();
|
||||
SMainLevelConfig targetMainLevelConfig = SMainLevelConfig.config.get(fightId);
|
||||
int lastTime = mainLevelManager.getLastTime();
|
||||
int now = (int) (System.currentTimeMillis() / 1000);
|
||||
int times = (now - lastTime)/STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureRefresh();
|
||||
int maxTimes = adventureOffline - takeTimes;
|
||||
int lastTimeTakes=0;
|
||||
boolean reset = maxTimes<times;
|
||||
if(maxTimes>0){
|
||||
times = times > maxTimes?maxTimes:times;
|
||||
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
|
||||
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
int timesTemp =times;
|
||||
while (!viewBaseReward&×Temp-->0){
|
||||
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
|
||||
}
|
||||
lastTimeTakes=times;
|
||||
}
|
||||
if(viewBaseReward){
|
||||
myResult = true;
|
||||
rewardStr = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
|
||||
return this;
|
||||
}
|
||||
if(sendMail){
|
||||
if(!baseItemMap.isEmpty()){
|
||||
int vipLevel = user.getPlayerInfoManager().getVipLevel();
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_content",new Object[]{vipLevel});
|
||||
String reward = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
|
||||
String randomReward = ItemUtil.getReward(randomItemMap, randomCardMap, randomEquipMap, randomRandomMap);
|
||||
if(randomReward.length()!=0){
|
||||
reward = reward + "|" + randomReward;
|
||||
}
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,now, Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
mainLevelManager.afterTakeStateReward(true,0);
|
||||
myResult = true;
|
||||
return this;
|
||||
}
|
||||
mainLevelManager.afterTakeStateReward(reset,lastTimeTakes);
|
||||
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.ADVENTURE_BASE_REWARD);
|
||||
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
|
||||
myResult = false;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.OnlineUserManager;
|
|||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.GuildInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.protocols.*;
|
||||
import config.SMainLevelConfig;
|
||||
|
@ -458,7 +459,7 @@ public class CBean2Proto {
|
|||
.build();
|
||||
}
|
||||
|
||||
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse( User user ){
|
||||
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse( User user ) throws Exception {
|
||||
long nowMs = TimeUtils.now();
|
||||
int now = (int)(nowMs/1000);
|
||||
MainLevelManager mainLevelManager = user.getMainLevelManager();
|
||||
|
@ -513,6 +514,10 @@ public class CBean2Proto {
|
|||
if(update){
|
||||
mainLevelManager.directUpdateDb();
|
||||
}
|
||||
CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke();
|
||||
if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){
|
||||
builder.setReward(getNewAdventureData.getRewardStr());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue