逍遥游修改

back_recharge
duhui 2022-08-15 13:55:17 +08:00
parent 8f17bdc655
commit 4d3d9abf1e
2 changed files with 123 additions and 143 deletions

View File

@ -17,6 +17,7 @@ import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.sun.org.apache.bcel.internal.generic.NEW;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.MapInfoProto; import rpc.protocols.MapInfoProto;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
@ -315,169 +316,147 @@ public class JourneyMap {
} }
//取总点数和最大格子数,算出走的步数 //取总点数和最大格子数,算出走的步数
diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath()); diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath());
// 服务器调试,一次走一格
// diceAmount = 1;
// randomNum.clear();
// randomNum.add(1);
if(diceAmount==0){ if(diceAmount==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
} }
pathInfo.setCurrentPath(pathInfo.getCurrentPath()+diceAmount); // 服务器调试,一次走一格
Path arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1]; // int num = 4;
int mapPointId = arrivePath.getMapPointId(); // diceAmount = num;
// randomNum.clear();
// randomNum.add(num);
MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum); MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum);
//基础奖励 //基础奖励
int[] common = travelConfig.getCommonReward(); int[] common = travelConfig.getCommonReward();
int[] commonRewardArray= new int[randomNum.size()] ; ArrayList<Integer> reward = new ArrayList<>();
for(int i=0;i<commonRewardArray.length;i++){ for (int i = 0; i < randomNum.size(); i++) {
commonRewardArray[i] = common[randomNum.get(i)-1]; reward.add(common[randomNum.get(i)-1]);
} }
CommonProto.Drop.Builder drop = null;// ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD); CommonProto.Drop.Builder drop = null;// ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD);
//地图点判断 int pathType = 0;
if(mapPointId==0){ Path arrivePath = null;
builder.setPathType(0); for (int i = 0; i < diceAmount; i++) {
}else{
int pathType = 0;
MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
switch (config.getStyle()){
case EventType.reward: pathInfo.setCurrentPath(pathInfo.getCurrentPath()+1);
//奖励节点完成 arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1];
commonRewardArray = new int[randomNum.size()+1]; int mapPointId = arrivePath.getMapPointId();
for(int i=0;i<commonRewardArray.length-1;i++){
commonRewardArray[i] = common[randomNum.get(i)-1];
}
// int[][] treasureChest = travelConfig.getTreasureChest();
// int[] reward = MathUtils.randomFromWeightWithTaking(treasureChest, 1);
// commonRewardArray[commonRewardArray.length-1] = reward[0];
commonRewardArray[commonRewardArray.length-1] = arrivePath.getRewardId();
pathType = 1;
break;
case EventType.random:
//转盘节点添加
if(pathInfo.getRandomReward()==null){
//初始化转盘数组
pathInfo.setRandomReward(initRandom(travelConfig));
}
pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1); //地图点判断
if(mapPointId!=0){
pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000)); MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
switch (config.getStyle()){
List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList()); case EventType.reward:
//奖励节点完成
builder.addAllRandom(rewardList); reward.add(arrivePath.getRewardId());
pathType = 1;
builder.setOverTime(pathInfo.getRemainRandomTime()); break;
pathType = 6; case EventType.random:
break; //转盘节点添加
case EventType.journeyBoss: if(pathInfo.getRandomReward()==null){
//怪物节点添加 //初始化转盘数组
int[] freeTravelBoss = travelConfig.getFreeTravelBoss(); pathInfo.setRandomReward(initRandom(travelConfig));
int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward();
int bossId = MathUtils.randomFromArray(freeTravelBoss);
int bossReward = MathUtils.randomFromArray(freeTravelBossReward);
JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000),0,bossReward);
Map<Integer, List<Long>> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId);
List<Long> list = monsterHpByGroup.get(0);
Map<Integer,Long> hpMap = new HashMap<>();
for(int i = 1;i<=list.size();i++){
hpMap.put(i,list.get(i-1));
}
monster.setRemainHp(hpMap);
long allHp =0;
for(Map.Entry<Integer,Long> hp:monster.getRemainHp().entrySet()){
allHp+=hp.getValue();
}
int monsterId = TimeUtils.nowInt();
pathInfo.addMonster(monsterId,monster);
builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum())
.setMonsterHp(allHp)
.setMonsterId(monster.getMonsterId())
.setMonsterIndex(monsterId)
.setRemainTime(monster.getRemainTime())
.setRewardShow(monster.getReward()));
builder.setOverTime(monster.getRemainTime());
pathType = 5;
break;
case EventType.journeyStore:
List<SFreeTravelStore> sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(mapId);
int[] goodsArray = new int[sFreeTravelStores.size()];
for(int i = 0 ; i <sFreeTravelStores.size();i++){
goodsArray[i] = sFreeTravelStores.get(i).getID();
}
int goodsId = MathUtils.randomFromArray(goodsArray);
JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME)) / 1000));
int index = TimeUtils.nowInt();
pathInfo.addGoods(index,journeyGoods);
builder.setGoodsInfo(CommonProto.JourneyGoodsInfo.newBuilder().setGoodsId(goodsId).setGoodsIndex(index).setRemainTime(journeyGoods.getGoodsRemainTime()).build());
pathType = 4;
break;
case EventType.diceEvent:
pathType = 3;
pathInfo.setDiceNum(2);
break;
case EventType.doubleReward:
//倍数
int mutiNum = config.getInitialEventId();
commonRewardArray = new int[randomNum.size()*mutiNum];
for(int j=0;j<randomNum.size();j++){//1
for(int i = 0;i<mutiNum;i++){//2
commonRewardArray[i+j*mutiNum] = common[randomNum.get(j)-1];
} }
}
pathType = 2;
break;
case EventType.journeyFinal:
pathType = 7;
commonRewardArray = new int[randomNum.size()+1]; pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1);
for(int i=0;i<commonRewardArray.length-1;i++){
commonRewardArray[i] = common[randomNum.get(i)-1];
}
//int []finalReward = travelConfig.getFinalReward();
//commonRewardArray[commonRewardArray.length-1] = finalReward;
int []commonRewardArrayNew = Arrays.copyOf(commonRewardArray,commonRewardArray.length pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000));
+travelConfig.getFinalReward().length);
System.arraycopy(travelConfig.getFinalReward(),0,commonRewardArrayNew, List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList());
commonRewardArray.length,travelConfig.getFinalReward().length);
commonRewardArray=commonRewardArrayNew;
builder.addAllRandom(rewardList);
if(!pathInfo.isFirstPass()){ builder.setOverTime(pathInfo.getRemainRandomTime());
commonRewardArray = Arrays.copyOf(commonRewardArray,commonRewardArray.length+1); pathType = 6;
commonRewardArray[commonRewardArray.length-1] = travelConfig.getFirstReward(); break;
pathInfo.setFirstPass(true); case EventType.journeyBoss:
} //怪物节点添加
break; int[] freeTravelBoss = travelConfig.getFreeTravelBoss();
default: int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward();
break; int bossId = MathUtils.randomFromArray(freeTravelBoss);
int bossReward = MathUtils.randomFromArray(freeTravelBossReward);
JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000),0,bossReward);
Map<Integer, List<Long>> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId);
List<Long> list = monsterHpByGroup.get(0);
Map<Integer,Long> hpMap = new HashMap<>();
for(int j = 1;j<=list.size();j++){
hpMap.put(j,list.get(j-1));
}
monster.setRemainHp(hpMap);
long allHp =0;
for(Map.Entry<Integer,Long> hp:monster.getRemainHp().entrySet()){
allHp+=hp.getValue();
}
int monsterId = TimeUtils.nowInt();
pathInfo.addMonster(monsterId,monster);
builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum())
.setMonsterHp(allHp)
.setMonsterId(monster.getMonsterId())
.setMonsterIndex(monsterId)
.setRemainTime(monster.getRemainTime())
.setRewardShow(monster.getReward()));
builder.setOverTime(monster.getRemainTime());
pathType = 5;
break;
case EventType.journeyStore:
List<SFreeTravelStore> sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(mapId);
int[] goodsArray = new int[sFreeTravelStores.size()];
for(int j = 0 ; j <sFreeTravelStores.size();j++){
goodsArray[j] = sFreeTravelStores.get(j).getID();
}
int goodsId = MathUtils.randomFromArray(goodsArray);
JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME)) / 1000));
int index = TimeUtils.nowInt();
pathInfo.addGoods(index,journeyGoods);
builder.setGoodsInfo(CommonProto.JourneyGoodsInfo.newBuilder().setGoodsId(goodsId).setGoodsIndex(index).setRemainTime(journeyGoods.getGoodsRemainTime()).build());
pathType = 4;
break;
case EventType.diceEvent:
pathType = 3;
pathInfo.setDiceNum(2);
break;
case EventType.doubleReward:
//倍数
int mutiNum = config.getInitialEventId();
for(int k=0; k<mutiNum; k++){//2
reward.add(common[randomNum.get(0)-1]);
}
pathType = 2;
break;
case EventType.journeyFinal:
pathType = 7;
if(!pathInfo.isFirstPass()){
reward.add(travelConfig.getFirstReward());
pathInfo.setFirstPass(true);
}
break;
default:
break;
}
} }
builder.setPathType(pathType);
// 逍遥游仙缘埋点
if (pathType == 4 || pathType == 5 || pathType == 6){
ReportUtil.onReportEvent(user, ReportEventEnum.START_IMMORTAL_BOOD.getType(), pathType, mapId);
}
// 逍遥游最终奖励埋点
if (pathType == 7){
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_TRAVEL.getType(), pathType, mapId);
int finishNum=user.getMapManager().getJourneyFinishNum()+1;
user.getMapManager().setJourneyFinishNum(finishNum);
}
} }
drop = ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD); builder.setPathType(pathType);
// 逍遥游仙缘埋点
if (pathType == 4 || pathType == 5 || pathType == 6){
ReportUtil.onReportEvent(user, ReportEventEnum.START_IMMORTAL_BOOD.getType(), pathType, mapId);
}
// 逍遥游最终奖励埋点
if (pathType == 7){
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_TRAVEL.getType(), pathType, mapId);
int finishNum=user.getMapManager().getJourneyFinishNum()+1;
user.getMapManager().setJourneyFinishNum(finishNum);
}
Integer[] array = reward.toArray(new Integer[0]);
int[] ints = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
drop = ItemUtil.drop(user,ints,1,0,BIReason.JOURNEY_COMMON_REWARD);
builder.setDrop(drop); builder.setDrop(drop);
arrivePath.setMapPointId(0); arrivePath.setMapPointId(0);
user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo); user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo);
@ -485,8 +464,9 @@ public class JourneyMap {
//消耗云游值任务 //消耗云游值任务
user.getUserMissionManager().onGameEvent(user, GameEvent.XIAOYAOYOU_CONSUME, MissionType.XIAOYAOYOU_CONSUME_NUM, consume[1]); user.getUserMissionManager().onGameEvent(user, GameEvent.XIAOYAOYOU_CONSUME, MissionType.XIAOYAOYOU_CONSUME_NUM, consume[1]);
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true); MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true);
reward.clear();
} }
/** /**

View File

@ -3,9 +3,9 @@ package com.ljsd.jieling.handler.map.mapHandler;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.handler.map.JourneyMap; import com.ljsd.jieling.handler.map.JourneyMap;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.MapInfoProto; import rpc.protocols.MapInfoProto;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
/** /**
* @author lvxinran * @author lvxinran