挂机奖励

back_recharge
wangyuan 2019-05-20 15:26:57 +08:00
parent 86858a8c25
commit b36f434768
2 changed files with 78 additions and 14 deletions

View File

@ -324,17 +324,17 @@ public class CombatLogic {
public void takeAdventureReward(ISession session,int type,int position) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
CommonProto.Drop.Builder advetureReward=null;
Map<Integer, CommonProto.Drop> adventureFastReward =null;
if(type == 2){
advetureReward = getAdventureReward(user, position);
adventureFastReward = getAdventureReward(user, position);
}else{
advetureReward = getAdventureFastReward(user,SGameSetting.getGameSetting().getAdventureFastBattle());
adventureFastReward = getAdventureFastReward(user, SGameSetting.getGameSetting().getAdventureFastBattle());
}
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(advetureReward).build();
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(adventureFastReward.get(1)).setRandomDrop(adventureFastReward.get(2)).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true);
}
private CommonProto.Drop.Builder getAdventureReward(User user, int position) throws Exception {
private Map<Integer,CommonProto.Drop> getAdventureReward(User user, int position) throws Exception {
AdventureManager adventureManager = user.getAdventureManager();
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap();
@ -342,6 +342,17 @@ public class CombatLogic {
SGameSetting gameSetting = SGameSetting.getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int adventureOffline = gameSetting.getAdventureOffline();
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();
for(AdventureStateInfo adventureStateInfoTmp:adventureStateInfoMap.values()) {
int positionTmp = adventureStateInfoTmp.getPosition();
if (position != -1 && positionTmp != position) {
@ -355,32 +366,58 @@ public class CombatLogic {
SAdventureConfig sAdventureConfig = SAdventureConfig.getConfig().get(positionTmp);
int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup();
int[][] randomRewardGroup = sAdventureConfig.getRandomRewardGroup();
ItemUtil.activityDrop(user, dropBuilder, new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times);
ItemUtil.activityDrop(user, dropBuilder, randomRewardGroup[adventureStateInfoTmp.getLevel()-1], times);
ItemUtil.combineReward(new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
}
}
return dropBuilder;
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
return result;
}
private CommonProto.Drop.Builder getAdventureFastReward(User user,int timeDuration) throws Exception {
private Map<Integer,CommonProto.Drop> getAdventureFastReward(User user,int timeDuration) throws Exception {
AdventureManager adventureManager = user.getAdventureManager();
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap();
int now = (int)(System.currentTimeMillis()/1000);
SGameSetting gameSetting = SGameSetting.getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int times = (now - timeDuration) / 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();
for(AdventureStateInfo adventureStateInfoTmp:adventureStateInfoMap.values()) {
int positionTmp = adventureStateInfoTmp.getPosition();
if (times > 0) {
SAdventureConfig sAdventureConfig = SAdventureConfig.getConfig().get(positionTmp);
int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup();
int[][] randomRewardGroup = sAdventureConfig.getRandomRewardGroup();
ItemUtil.activityDrop(user, dropBuilder, new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times);
ItemUtil.activityDrop(user, dropBuilder, randomRewardGroup[adventureStateInfoTmp.getLevel()-1], times);
ItemUtil.combineReward(new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
}
}
return dropBuilder;
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
return result;
}

View File

@ -70,6 +70,17 @@ public class ItemUtil {
addCard(user, cardMap, dropBuilder);
addEquip(user, equipMap, dropBuilder);
}
public static void getactivityDropInfo(int[] dropGroupIds, float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap ,Map<Integer, Integer> randomMap) throws Exception {
for (int dropGroupId : dropGroupIds) {
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null) {
continue;
}
selectDrop(sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio);
}
}
//掉落组概率
public static CommonProto.Drop.Builder drop(User user, Map<int [],Float> dropGroupAndRatioMap) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
@ -115,7 +126,6 @@ public class ItemUtil {
}
/**
* @param user
* @param dropGroupIds
* @param dropRatio
* @return
@ -136,6 +146,23 @@ public class ItemUtil {
return getReward(itemMap,cardMap,equipMap,randomMap);
}
public static void combineReward(int[] dropGroupIds,float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
for (int dropGroupId :dropGroupIds){
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null){
continue;
}
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
}
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap) throws Exception {
useRandomItem(user, randomMap);
addItem(user, itemMap, dropBuilder);
addCard(user, cardMap, dropBuilder);
addEquip(user, equipMap, dropBuilder);
}
private static String getReward(Map<Integer, Integer> itemMap,Map<Integer, Integer> cardMap,Map<Integer, Integer> equipMap, Map<Integer,Integer> randomMap) {
StringBuilder reward= new StringBuilder();
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()){