逍遥游修改

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.MissionType;
import com.ljsd.jieling.network.session.ISession;
import com.sun.org.apache.bcel.internal.generic.NEW;
import rpc.protocols.CommonProto;
import rpc.protocols.MapInfoProto;
import rpc.protocols.MessageTypeProto;
@ -315,169 +316,147 @@ public class JourneyMap {
}
//取总点数和最大格子数,算出走的步数
diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath());
// 服务器调试,一次走一格
// diceAmount = 1;
// randomNum.clear();
// randomNum.add(1);
if(diceAmount==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
pathInfo.setCurrentPath(pathInfo.getCurrentPath()+diceAmount);
Path arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1];
int mapPointId = arrivePath.getMapPointId();
// 服务器调试,一次走一格
// int num = 4;
// diceAmount = num;
// randomNum.clear();
// randomNum.add(num);
MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum);
//基础奖励
int[] common = travelConfig.getCommonReward();
int[] commonRewardArray= new int[randomNum.size()] ;
for(int i=0;i<commonRewardArray.length;i++){
commonRewardArray[i] = common[randomNum.get(i)-1];
ArrayList<Integer> reward = new ArrayList<>();
for (int i = 0; i < randomNum.size(); i++) {
reward.add(common[randomNum.get(i)-1]);
}
CommonProto.Drop.Builder drop = null;// ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD);
//地图点判断
if(mapPointId==0){
builder.setPathType(0);
}else{
int pathType = 0;
MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
switch (config.getStyle()){
int pathType = 0;
Path arrivePath = null;
for (int i = 0; i < diceAmount; i++) {
case EventType.reward:
//奖励节点完成
commonRewardArray = new int[randomNum.size()+1];
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.setCurrentPath(pathInfo.getCurrentPath()+1);
arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1];
int mapPointId = arrivePath.getMapPointId();
pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1);
pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000));
List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList());
builder.addAllRandom(rewardList);
builder.setOverTime(pathInfo.getRemainRandomTime());
pathType = 6;
break;
case EventType.journeyBoss:
//怪物节点添加
int[] freeTravelBoss = travelConfig.getFreeTravelBoss();
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];
//地图点判断
if(mapPointId!=0){
MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
switch (config.getStyle()){
case EventType.reward:
//奖励节点完成
reward.add(arrivePath.getRewardId());
pathType = 1;
break;
case EventType.random:
//转盘节点添加
if(pathInfo.getRandomReward()==null){
//初始化转盘数组
pathInfo.setRandomReward(initRandom(travelConfig));
}
}
pathType = 2;
break;
case EventType.journeyFinal:
pathType = 7;
commonRewardArray = new int[randomNum.size()+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;
pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1);
int []commonRewardArrayNew = Arrays.copyOf(commonRewardArray,commonRewardArray.length
+travelConfig.getFinalReward().length);
pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000));
System.arraycopy(travelConfig.getFinalReward(),0,commonRewardArrayNew,
commonRewardArray.length,travelConfig.getFinalReward().length);
commonRewardArray=commonRewardArrayNew;
List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList());
builder.addAllRandom(rewardList);
if(!pathInfo.isFirstPass()){
commonRewardArray = Arrays.copyOf(commonRewardArray,commonRewardArray.length+1);
commonRewardArray[commonRewardArray.length-1] = travelConfig.getFirstReward();
pathInfo.setFirstPass(true);
}
break;
default:
break;
builder.setOverTime(pathInfo.getRemainRandomTime());
pathType = 6;
break;
case EventType.journeyBoss:
//怪物节点添加
int[] freeTravelBoss = travelConfig.getFreeTravelBoss();
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 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);
arrivePath.setMapPointId(0);
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]);
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.map.JourneyMap;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.MapInfoProto;
import rpc.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran