From 663b3c97236aebb71eb419fa0e8887d9dcd3500f Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 16 Oct 2020 14:19:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=8D=E9=81=A5=E6=B8=B8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 4 + .../com/ljsd/jieling/globals/GlobalGm.java | 1 + .../handler/GameGM/GMRequestHandler.java | 53 +- .../ljsd/jieling/handler/map/EventType.java | 7 + .../jieling/handler/map/JourneyGoods.java | 34 ++ .../ljsd/jieling/handler/map/JourneyMap.java | 555 ++++++++++++++++++ .../jieling/handler/map/JourneyMonster.java | 69 +++ .../ljsd/jieling/handler/map/MapManager.java | 27 + .../com/ljsd/jieling/handler/map/Path.java | 52 ++ .../ljsd/jieling/handler/map/PathInfo.java | 106 ++++ .../map/mapHandler/JourneyBuyHandler.java | 26 + .../map/mapHandler/JourneyDoHandler.java | 26 + .../map/mapHandler/JourneyFightHandler.java | 26 + .../map/mapHandler/JourneyGetInfoHandler.java | 28 + .../mapHandler/JourneyGetOneInfoHandler.java | 27 + .../map/mapHandler/JourneyRandomHandler.java | 26 + .../com/ljsd/jieling/util/MonsterUtil.java | 5 + tablemanager/src/main/java/config/SCMap.java | 5 +- .../src/main/java/config/SFreeTravel.java | 110 ++++ .../main/java/config/SFreeTravelStore.java | 61 ++ .../java/config/SGodSacrificeSetting.java | 91 +++ .../main/java/config/SSpiritAnimalBook.java | 43 ++ .../main/java/config/SSpiritAnimalLevel.java | 55 ++ .../main/java/config/SSpiritAnimalStar.java | 61 ++ test/src/main/java/ExcelUtils.java | 42 +- 25 files changed, 1522 insertions(+), 18 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyGoods.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMap.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMonster.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/Path.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/PathInfo.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyBuyHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyDoHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyFightHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetInfoHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetOneInfoHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyRandomHandler.java create mode 100644 tablemanager/src/main/java/config/SFreeTravel.java create mode 100644 tablemanager/src/main/java/config/SFreeTravelStore.java create mode 100644 tablemanager/src/main/java/config/SGodSacrificeSetting.java create mode 100644 tablemanager/src/main/java/config/SSpiritAnimalBook.java create mode 100644 tablemanager/src/main/java/config/SSpiritAnimalLevel.java create mode 100644 tablemanager/src/main/java/config/SSpiritAnimalStar.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 41bd53442..47388b333 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -147,6 +147,9 @@ public interface BIReason { int SITUATION_CHALLENGE_REWARD = 81;//轩辕宝镜获得 int HERO_CHANGE= 82;//抽卡 + int JOURNEY_COMMON_REWARD = 83;//逍遥游基础奖励 + int JOURNEY_FIGHT_REWARD = 84;//逍遥游击杀boss奖励 + int JOURNEY_RANDOM_REWARD = 85;//逍遥游转盘奖励 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 @@ -266,6 +269,7 @@ public interface BIReason { int DAILY_SCORE_CONSUME = 1063;//删除日常任务积分 int EQUIP_WEAR_CONSUME = 1064; int GUILD_CHALLENGE_BUFF_BUY_CONSUME = 1065;//公会副本购买buff + int JOURNEY_FIGHT_CONCUME = 1066;//逍遥游攻击boss消耗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalGm.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalGm.java index 02093506f..4e3a34fea 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalGm.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalGm.java @@ -24,6 +24,7 @@ public interface GlobalGm { int TREASURE_FINISH = 20;//戒灵秘宝一键完成 int FULL_OF = 21; //一键全满 int EXPEDITION_SCORE = 23;//天宫秘宝积分 + int JOURNEY_GM = 24;//逍遥游GM操作 // int TECNOLOGY_MAX = 21;//科技树一键满级 // int POKEMAN_MAX = 22;//一键获得所有满级异妖 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index 88e2a9733..18bca4b48 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -14,7 +14,7 @@ import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.globals.GlobalGm; import com.ljsd.jieling.globals.GlobalItemType; import com.ljsd.jieling.handler.BaseHandler; -import com.ljsd.jieling.handler.map.MapLogic; +import com.ljsd.jieling.handler.map.*; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CombatLogic; @@ -34,6 +34,7 @@ import config.*; import manager.STableManager; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import util.MathUtils; import util.StringUtil; import util.TimeUtils; @@ -44,6 +45,7 @@ import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; @Component public class GMRequestHandler extends BaseHandler{ @@ -373,6 +375,55 @@ public class GMRequestHandler extends BaseHandler{ case GlobalGm.EXPEDITION_SCORE: cUser.getExpeditionManager().addScore(prarm2); break; + case GlobalGm.JOURNEY_GM: + prarm2 = Integer.parseInt(commandArray[2]); + prarm3 = ""; + if(commandArray.length>3){ + prarm3 = commandArray[3]; + } + PathInfo pathInfo = cUser.getMapManager().getJourneyInfo().get(prarm2); + SFreeTravel travelConfig = SFreeTravel.journeyMapByMapId.get(prarm2); + switch (prarm1){ + case 1: + int bossId; + if(!prarm3.isEmpty()){ + bossId = Integer.valueOf(prarm3); + }else{ + int[] freeTravelBoss = travelConfig.getFreeTravelBoss(); + bossId = MathUtils.randomFromArray(freeTravelBoss); + } + int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward(); + int bossReward = MathUtils.randomFromArray(freeTravelBossReward); + JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.HOUR*2)/1000),0,bossReward); + Map> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId); + List list = monsterHpByGroup.get(0); + Map hpMap = new HashMap<>(); + for(int i = 1;i<=list.size();i++){ + hpMap.put(i,list.get(i-1)); + } + monster.setRemainHp(hpMap); + pathInfo.addMonster(TimeUtils.nowInt(),monster); + break; + case 2: + if(pathInfo.getRandomReward()==null){ + //初始化转盘数组 + pathInfo.setRandomReward(JourneyMap.getInstance().initRandom(travelConfig)); + } + pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1); + pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.HOUR*2)/1000)); + break; + case 3: + List sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(prarm2); + int[] goodsArray = new int[sFreeTravelStores.size()]; + for(int i = 0 ; i scMap = SCMap.sCMap.get(mapId); + Map point = new HashMap<>(); + for(Map.Entry entry:scMap.entrySet()){ + if(entry.getValue().getLocation().length>1||entry.getValue().getLocation()[0]==0){ + continue; + } + point.put(entry.getValue().getLocation()[0],entry.getValue()); + } + paths = new Path[point.size()]; + Map> randomPoint = new HashMap<>(); + for(Map.Entry entry:point.entrySet()){ + int[][] groups = entry.getValue().getGroups(); + for(int[] cell:groups){ + int cellId = CellUtil.xy2Pos(cell[0], cell[1]); + if(entry.getValue().getIsMustAppear()==1) { + paths[entry.getValue().getLocation()[0]-1] = new Path(cellId,entry.getValue().getLocation()[0],entry.getValue().getEvent()); + }else{ + if(!randomPoint.containsKey(entry.getValue().getEvent())){ + randomPoint.put(entry.getValue().getEvent(),new ArrayList<>()); + } + randomPoint.get(entry.getValue().getEvent()).add(entry.getValue()); + } + } + } + int[][] tempArray = SFreeTravel.journeyMapByMapId.get(mapId).getAdventureNumber(); + SFreeTravel travelConfig = SFreeTravel.journeyMapByMapId.get(mapId); + for(int[] array:tempArray){ + if(!randomPoint.containsKey(array[0])){ + continue; + } + int num = MathUtils.random(array[1], array[2]); + int[] randomArray = new int[randomPoint.get(array[0]).size()]; + for(int i = 0 ; i < randomArray.length;i++) { + randomArray[i] = randomPoint.get(array[0]).get(i).getLocation()[0]; + } + List randomLocation = MathUtils.randomForOneArray(randomArray, num); + randomPoint.get(array[0]).forEach(p->{ + if(randomLocation.contains(p.getLocation()[0])){ + paths[p.getLocation()[0]-1] = new Path(CellUtil.xy2Pos(p.getGroups()[0][0], p.getGroups()[0][1]),p.getLocation()[0],p.getEvent()); + if(MapPointConfig.getScMapEventMap().get(p.getEvent()).getStyle()==EventType.reward){ + paths[p.getLocation()[0]-1].setRewardId(getOneReward(travelConfig)); + }; + }else{ + paths[p.getLocation()[0]-1] = new Path(CellUtil.xy2Pos(p.getGroups()[0][0], p.getGroups()[0][1]),p.getLocation()[0],0); + } + }); + } + PathInfo pathInfo = user.getMapManager().getJourneyInfo().get(mapId); + if(pathInfo ==null) { + pathInfo = new PathInfo(); + } + pathInfo.setDiceNum(1); + pathInfo.setCurrentPath(1); + pathInfo.setAllPathInfo(paths); + user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo); + System.out.println("初始化逍遥游完成"); + } + + /** + * 获取所有信息 + * @param session + * @param messageType + */ + public void getAllInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception { + + User user = UserManager.getUser(session.getUid()); + Map journeyInfo = user.getMapManager().getJourneyInfo(); + MapInfoProto.JourneyGetInfoResponse.Builder response = MapInfoProto.JourneyGetInfoResponse.newBuilder(); + journeyInfo.forEach((k,v)->{ + CommonProto.JourneyInfo info = CommonProto.JourneyInfo.newBuilder() + .setMapId(k) + .setProcess(v.getCurrentPath()*100/v.getAllPathInfo().length).build(); + response.addInfos(info); + }); + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + /** + * 获取单个逍遥游信息 + * @param session + * @param mapId + * @param messageType + * @throws Exception + */ + public void getOneJourneyInfo(ISession session,int mapId, MessageTypeProto.MessageType messageType) throws Exception { + + User user = UserManager.getUser(session.getUid()); + user.getMapManager().setCurrentJourneyId(mapId); + Map journeyInfo = user.getMapManager().getJourneyInfo(); + if(!journeyInfo.containsKey(mapId)){ + init(user,mapId); + } + MapInfoProto.JourneyGetOneInfoResponse.Builder response = MapInfoProto.JourneyGetOneInfoResponse.newBuilder(); + PathInfo pathInfo = journeyInfo.get(mapId); + if(pathInfo.getCurrentPath()>=pathInfo.getAllPathInfo().length){ + init(user,mapId); + + } + + //地图格子信息 + Arrays.stream(pathInfo.getAllPathInfo()).forEach(path->{ + CommonProto.JourneyCell cell = CommonProto.JourneyCell.newBuilder() + .setCellId(path.getCellId()) + .setCellIndex(path.getCellIndex()) + .setPointId(path.getMapPointId()) + .setRewardId(path.getRewardId()) + .build(); + response.addCell(cell); + }); + response.setLocation(pathInfo.getCurrentPath());//当前位置 + response.setDiceNum(1);//当前骰子个数 + //怪物信息 + if(pathInfo.getMonsterMap()!=null&&pathInfo.getMonsterMap().size()>0){ + pathInfo.getMonsterMap().forEach((k,v)->{ + Map remainHp = v.getRemainHp(); + long allHp = 0; + Collection values = remainHp.values(); + for(int value:values){ + allHp+=value; + } + CommonProto.JourneyMonsterInfo monsterInfo = CommonProto.JourneyMonsterInfo.newBuilder() + .setMonsterHp(allHp) + .setMonsterId(v.getMonsterId()) + .setMonsterIndex(k) + .setRemainTime(v.getRemainTime()) + .setAttackNum(v.getAttackNum()) + .setRewardShow(v.getReward()) + .build(); + response.addMonsterInfo(monsterInfo); + }); + } + //转盘信息 + if(pathInfo.getRandomReward()!=null&&pathInfo.getRandomReward().length>0&&pathInfo.getRemainRandomTime()>TimeUtils.nowInt()&&pathInfo.getRamainRandomAmount()>0){ + List rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList()); + response.addAllRandomItem(rewardList); + response.setRandomTime(pathInfo.getRemainRandomTime()); + response.setRandomNum(pathInfo.getRamainRandomAmount()); + } + if(!pathInfo.getGoodsMap().isEmpty()){ + for(Map.Entry entry:pathInfo.getGoodsMap().entrySet()){ + CommonProto.JourneyGoodsInfo info = CommonProto.JourneyGoodsInfo.newBuilder() + .setGoodsId(entry.getValue().getGoodsId()) + .setRemainTime(entry.getValue().getGoodsRemainTime()) + .setGoodsIndex(entry.getKey()).build(); + response.addGoodsInfo(info); + } + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + /** + * 投骰子,进行游历 + * @param session + * @param messageType + */ + public void doJourney(ISession session,int mapId, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + if(mapId!=user.getMapManager().getCurrentJourneyId()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + Map journeyInfo = user.getMapManager().getJourneyInfo(); + PathInfo pathInfo = journeyInfo.get(mapId); + if(pathInfo.getCurrentPath()>=pathInfo.getAllPathInfo().length){ + throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); + } + SFreeTravel travelConfig = SFreeTravel.journeyMapByMapId.get(mapId); + int diceNum = pathInfo.getDiceNum(); + List randomNum = new ArrayList<>(); + + if(diceNum==0||diceNum==1){ + randomNum.add(MathUtils.random(1, 6)); + }else if(diceNum==2){ + randomNum.add(MathUtils.random(1, 6)); + randomNum.add(MathUtils.random(1, 6)); + }else{ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + + //骰子总点数 + int diceAmount = 0; + for(int one:randomNum){ + diceAmount+=one; + } + //取总点数和最大格子数,算出走的步数 + diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath()); + + 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(); + MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum); + //基础奖励 + int common = travelConfig.getCommonReward(); + + int[] commonRewardArray = new int[diceAmount]; + Arrays.stream(commonRewardArray).forEach(n->n=common); + CommonProto.Drop.Builder drop = 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()){ + + case EventType.reward: + //奖励节点完成 + commonRewardArray = new int[diceAmount+1]; + Arrays.stream(commonRewardArray).forEach(n->n=common); +// int[][] treasureChest = travelConfig.getTreasureChest(); +// int[] reward = MathUtils.randomFromWeightWithTaking(treasureChest, 1); +// commonRewardArray[commonRewardArray.length-1] = reward[0]; + commonRewardArray[commonRewardArray.length-1] = arrivePath.getRewardId(); + drop = ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD); + pathType = 1; + break; + case EventType.random: + //转盘节点添加 + if(pathInfo.getRandomReward()==null){ + //初始化转盘数组 + pathInfo.setRandomReward(initRandom(travelConfig)); + } + + pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1); + + pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.HOUR*2)/1000)); + + List 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.HOUR*2)/1000),0,bossReward); + Map> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId); + List list = monsterHpByGroup.get(0); + Map 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 hp:monster.getRemainHp().entrySet()){ + allHp+=hp.getValue(); + } + pathInfo.addMonster(TimeUtils.nowInt(),monster); + builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum()) + .setMonsterHp(allHp) + .setMonsterId(monster.getMonsterId()) + .setMonsterIndex(pathInfo.getMonsterMap().size()) + .setRewardShow(monster.getReward())); + builder.setOverTime(monster.getRemainTime()); + pathType = 5; + break; + case EventType.journeyStore: + List sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(mapId); + int[] goodsArray = new int[sFreeTravelStores.size()]; + for(int i = 0 ; i itemlistList = drop.getItemlistList(); + itemlistList.forEach(item->{ + item.toBuilder().setItemNum(item.getItemNum()*mutiNum).build(); + }); + + pathType = 2; + break; + case EventType.journeyFinal: + pathType = 1; + commonRewardArray = new int[diceAmount+1]; + Arrays.stream(commonRewardArray).forEach(n->n=common); + int finalReward = travelConfig.getFinalReward(); + commonRewardArray[commonRewardArray.length-1] = finalReward; + drop = ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD); + break; + default: + break; + } + builder.setPathType(pathType); + } + + builder.setDrop(drop); + arrivePath.setMapPointId(0); + user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo); + MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true); + } + + /** + * 获取一个宝箱 + */ + private static int getOneReward(SFreeTravel travelConfig){ + + int[][] treasureChest = travelConfig.getTreasureChest(); + int[] reward = MathUtils.randomFromWeightWithTaking(treasureChest, 1); + return reward[0]; + } + + + /** + * 挑战boss + * @param session + * @param mapId + * @param bossIndex + * @param messageType + */ + public void fightToBoss(ISession session, int mapId, int bossIndex, MessageTypeProto.MessageType messageType) throws Exception{ + User user = UserManager.getUser(session.getUid()); + + Map journeyInfo = user.getMapManager().getJourneyInfo(); + if(user.getMapManager().getCurrentJourneyId()!=mapId||!journeyInfo.containsKey(mapId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + PathInfo pathInfo = journeyInfo.get(mapId); + JourneyMonster monster = pathInfo.getMonsterMap().get(bossIndex); + + if(monster==null||monster.getRemainTime() map = new HashMap<>(); + map.put(bossConsume[0], bossConsume[1]); + + boolean b = ItemUtil.checkCost(user, map); + if(!b){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + PVEFightEvent pveFightEvent = new PVEFightEvent(session.getUid(), GlobalsDef.FORMATION_NORMAL, 10, "", GameFightType.MapFastFight, monster.getMonsterId(), 3); + + FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); + + int[] checkResult = fightResult.getCheckResult(); + + Map remainHp = monster.getRemainHp(); + List hps = new ArrayList<>(remainHp.values()); + + pveFightEvent.setMonsterRemainHp(hps); + + MapInfoProto.JourneyFightResponse.Builder response =MapInfoProto.JourneyFightResponse.newBuilder(); + + if(checkResult[0]==1){ + CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{monster.getReward()}, 1, 0, BIReason.JOURNEY_FIGHT_REWARD); + response.setDrop(drop); + pathInfo.removeMonster(bossIndex); + }else if(checkResult[0]==0){ + for(int i = 2;i journeyInfo = user.getMapManager().getJourneyInfo(); + if(user.getMapManager().getCurrentJourneyId()!=mapId||!journeyInfo.containsKey(mapId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + PathInfo pathInfo = journeyInfo.get(mapId); + if(pathInfo.getRandomReward()==null||pathInfo.getRamainRandomAmount()<1||pathInfo.getRemainRandomTime() rewardList = Arrays.stream(nextRandom).boxed().collect(Collectors.toList()); + + response.addAllNextRandom(rewardList); + }else { + pathInfo.setRandomReward(null); + } + CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{reward}, 1, 0, BIReason.JOURNEY_RANDOM_REWARD); + response.setDrop(drop); + response.setLocation(position); + + user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo); + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + //初始化一个转盘 + public int[] initRandom(SFreeTravel travelConfig){ + int[] rewardArray = new int[12]; + int[][] turntablePosition = travelConfig.getTurntablePosition(); + int[][] turntableGoods = travelConfig.getTurntableGoods(); + for(int i = 0 ; i< turntablePosition.length;i++){ + int length = turntablePosition[i].length; + int[] turntableGood = turntableGoods[i]; + List randomGoods = MathUtils.randomForOneArray(turntableGood,length); + for(int j = 0 ; j journeyInfo = user.getMapManager().getJourneyInfo(); + if(user.getMapManager().getCurrentJourneyId()!=mapId||!journeyInfo.containsKey(mapId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + PathInfo pathInfo = journeyInfo.get(mapId); + JourneyGoods journeyGoods = pathInfo.getGoodsMap().get(index); + if(journeyGoods==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + SFreeTravelStore freeTravelStore = STableManager.getConfig(SFreeTravelStore.class).get(journeyGoods.getGoodsId()); + + int[] cost = freeTravelStore.getCost(); + if(!ItemUtil.itemCost(user,new int[][]{cost},BIReason.STORE_BUY_ITEM,1)){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{freeTravelStore.getGoods()},BIReason.STORE_BUY_ITEM); + + pathInfo.removeGoods(index); + + user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo); + + MapInfoProto.JourneyBuyResponse response = MapInfoProto.JourneyBuyResponse.newBuilder().setDrop(drop).build(); + + MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMonster.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMonster.java new file mode 100644 index 000000000..746853019 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/JourneyMonster.java @@ -0,0 +1,69 @@ +package com.ljsd.jieling.handler.map; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author lvxinran + * @date 2020/10/13 + * @discribe + */ +public class JourneyMonster { + private int monsterId; + + private int remainTime; + + private int attackNum; + + private int reward; + + private Map remainHp = new HashMap<>(6); + + public int getMonsterId() { + return monsterId; + } + + public void setMonsterId(int monsterId) { + this.monsterId = monsterId; + } + + public int getRemainTime() { + return remainTime; + } + + public void setRemainTime(int remainTime) { + this.remainTime = remainTime; + } + + public int getAttackNum() { + return attackNum; + } + + public void setAttackNum(int attackNum) { + this.attackNum = attackNum; + } + + public int getReward() { + return reward; + } + + public void setReward(int reward) { + this.reward = reward; + } + + public Map getRemainHp() { + return remainHp; + } + + public void setRemainHp(Map remainHp) { + this.remainHp = remainHp; + } + + public JourneyMonster(int monsterId, int remainTime, int attackNum, int reward) { + this.monsterId = monsterId; + this.remainTime = remainTime; + this.attackNum = attackNum; + this.reward = reward; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 0d9f3d9f8..117ce5f29 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -113,6 +113,10 @@ public class MapManager extends MongoBase { private int curMapType; + private Map journeyInfo = new HashMap<>(); + + private int currentJourneyId; + public MapManager() { this.setRootCollection(User._COLLECTION_NAME); } @@ -837,6 +841,29 @@ public class MapManager extends MongoBase { updateString("curMapType",curMapType); } + + public Map getJourneyInfo() { + return journeyInfo; + } + + public void setJourneyInfo(Map journeyInfo) { + this.journeyInfo = journeyInfo; + updateString("journeyInfo",journeyInfo); + } + public void updateJourneyInfoByMapId(int mapId ,PathInfo info){ + journeyInfo.put(mapId,info); + updateString("journeyInfo",journeyInfo); + } + + public int getCurrentJourneyId() { + return currentJourneyId; + } + + public void setCurrentJourneyId(int currentJourneyId) { + this.currentJourneyId = currentJourneyId; + updateString("currentJourneyId",currentJourneyId); + + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Path.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Path.java new file mode 100644 index 000000000..f57ba2f98 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Path.java @@ -0,0 +1,52 @@ +package com.ljsd.jieling.handler.map; + +/** + * @author lvxinran + * @date 2020/10/30 + * @discribe + */ +public class Path { + + private int cellId; + private int cellIndex; + private int mapPointId; + private int rewardId; + + public Path(int cellId, int cellIndex, int mapPointId) { + this.cellId = cellId; + this.cellIndex = cellIndex; + this.mapPointId = mapPointId; + } + + public int getCellId() { + return cellId; + } + + public void setCellId(int cellId) { + this.cellId = cellId; + } + + public int getCellIndex() { + return cellIndex; + } + + public void setCellIndex(int cellIndex) { + this.cellIndex = cellIndex; + } + + public int getMapPointId() { + return mapPointId; + } + + public void setMapPointId(int mapPointId) { + this.mapPointId = mapPointId; + } + + public int getRewardId() { + return rewardId; + } + + public void setRewardId(int rewardId) { + this.rewardId = rewardId; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/PathInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/PathInfo.java new file mode 100644 index 000000000..c6d2c938c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/PathInfo.java @@ -0,0 +1,106 @@ +package com.ljsd.jieling.handler.map; + +import util.TimeUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/10/30 + * @discribe + */ +public class PathInfo { + private Path[] allPathInfo; + + private int currentPath; + + private Map monsterMap = new HashMap<>(); + + private Map goodsMap = new HashMap<>(); + + private int diceNum; + + private int[] randomReward; + + private int ramainRandomAmount; + + private int remainRandomTime; + + public int getDiceNum() { + return diceNum; + } + + public void setDiceNum(int diceNum) { + this.diceNum = diceNum; + } + + public Path[] getAllPathInfo() { + return allPathInfo; + } + + public void setAllPathInfo(Path[] allPathInfo) { + this.allPathInfo = allPathInfo; + } + + public int getCurrentPath() { + return currentPath; + } + + public void setCurrentPath(int currentPath) { + this.currentPath = currentPath; + } + + public Map getMonsterMap() { + return monsterMap; + } + + public void setMonsterMap(Map monsterMap) { + this.monsterMap = monsterMap; + } + public void addMonster(int bossIndex,JourneyMonster monster){ + monsterMap.put(bossIndex,monster); + } + public void removeMonster(int bossIndex){ + monsterMap.remove(bossIndex); + } + + public int[] getRandomReward() { + return randomReward; + } + + public void setRandomReward(int[] randomReward) { + this.randomReward = randomReward; + } + + public int getRamainRandomAmount() { + return ramainRandomAmount; + } + + public void setRamainRandomAmount(int ramainRandomAmount) { + this.ramainRandomAmount = ramainRandomAmount; + } + + public int getRemainRandomTime() { + return remainRandomTime; + } + + public void setRemainRandomTime(int remainRandomTime) { + this.remainRandomTime = remainRandomTime; + } + + public Map getGoodsMap() { + return goodsMap; + } + public void addGoods(int goodsIndex,JourneyGoods journeyGoods){ + goodsMap.put(goodsIndex,journeyGoods); + } + public void removeGoods(int goodsIndex){ + goodsMap.remove(goodsIndex); + } + + public void setGoodsMap(Map goodsMap) { + this.goodsMap = goodsMap; + } +} + diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyBuyHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyBuyHandler.java new file mode 100644 index 000000000..45f9ab2e8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyBuyHandler.java @@ -0,0 +1,26 @@ +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 com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/15 + * @discribe + */ +@Component +public class JourneyBuyHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_BUY_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, MapInfoProto.JourneyBuyRequest proto) throws Exception { + JourneyMap.getInstance().buyJourney(iSession,proto.getMapId(),proto.getGoodsIndex(), MessageTypeProto.MessageType.JOURNEY_BUY_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyDoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyDoHandler.java new file mode 100644 index 000000000..a27a3e107 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyDoHandler.java @@ -0,0 +1,26 @@ +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 com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/13 + * @discribe + */ +@Component +public class JourneyDoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_DO_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, MapInfoProto.JourneyDoRequest proto) throws Exception { + JourneyMap.getInstance().doJourney(iSession,proto.getMapId(),MessageTypeProto.MessageType.JOURNEY_DO_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyFightHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyFightHandler.java new file mode 100644 index 000000000..8d1df1981 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyFightHandler.java @@ -0,0 +1,26 @@ +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 com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/15 + * @discribe + */ +@Component +public class JourneyFightHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_FIGHT_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, MapInfoProto.JourneyFightRequest proto) throws Exception { + JourneyMap.getInstance().fightToBoss(iSession,proto.getMapId(),proto.getMonsterIndex(), MessageTypeProto.MessageType.JOURNEY_FIGHT_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetInfoHandler.java new file mode 100644 index 000000000..b4694338d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetInfoHandler.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.handler.map.mapHandler; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.handler.map.JourneyMap; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/13 + * @discribe + */ + +@Component +public class JourneyGetInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_GET_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + JourneyMap.getInstance().getAllInfo(iSession,MessageTypeProto.MessageType.JOURNEY_GET_INFO_RESPONSE); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetOneInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetOneInfoHandler.java new file mode 100644 index 000000000..025c70664 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyGetOneInfoHandler.java @@ -0,0 +1,27 @@ +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 com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/13 + * @discribe + */ +@Component +public class JourneyGetOneInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_GET_ONE_INFO_REQUEST; + } + + + @Override + public void processWithProto(ISession iSession, MapInfoProto.JourneyGetOneInfoRequest proto) throws Exception { + JourneyMap.getInstance().getOneJourneyInfo(iSession,proto.getMapId(), MessageTypeProto.MessageType.JOURNEY_GET_ONE_INFO_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyRandomHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyRandomHandler.java new file mode 100644 index 000000000..deeb684f3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapHandler/JourneyRandomHandler.java @@ -0,0 +1,26 @@ +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 com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/15 + * @discribe + */ +@Component +public class JourneyRandomHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.JOURNEY_RANDOM_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, MapInfoProto.JourneyRandomRequest proto) throws Exception { + JourneyMap.getInstance().random(iSession,proto.getMapId(),MessageTypeProto.MessageType.JOURNEY_RANDOM_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java index cceec1db8..7a1b31bc4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java @@ -127,7 +127,12 @@ public class MonsterUtil { for(int[] groupItem: groupIds){ List bossHps = new ArrayList<>(groupItem.length); for (int monsterId : groupItem) { + if(monsterId==0){ + bossHps.add(0); + continue; + } bossHps.add( STableManager.getConfig(SMonsterConfig.class).get(monsterId).getHp()); + } hps.put(index++,bossHps); } diff --git a/tablemanager/src/main/java/config/SCMap.java b/tablemanager/src/main/java/config/SCMap.java index aeb7f5a3d..b30649fb1 100644 --- a/tablemanager/src/main/java/config/SCMap.java +++ b/tablemanager/src/main/java/config/SCMap.java @@ -15,7 +15,7 @@ public class SCMap implements BaseConfig { private int event; private int[][] groups; private int isMustAppear; - + private int[] location; @Override public void init() throws Exception { sCMap = STableManager.getMapConfig(SCMap.class); @@ -36,4 +36,7 @@ public class SCMap implements BaseConfig { public int getIsMustAppear() { return isMustAppear; } + public int[] getLocation() { + return location; + } } diff --git a/tablemanager/src/main/java/config/SFreeTravel.java b/tablemanager/src/main/java/config/SFreeTravel.java new file mode 100644 index 000000000..560464a70 --- /dev/null +++ b/tablemanager/src/main/java/config/SFreeTravel.java @@ -0,0 +1,110 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name ="FreeTravel") +public class SFreeTravel implements BaseConfig { + + private int id; + + private int mapID; + + private int unlockLevel; + + private int[][] adventureNumber; + + private int[] consume; + + private int commonReward; + + private int finalReward; + + private int[][] treasureChest; + + private int[][] bossConsume; + + private int[] freeTravelBoss; + + private int[] freeTravelBossReward; + + private int[] turntableProbability; + + private int[][] turntablePosition; + + private int[][] turntableGoods; + + public static Map journeyMapByMapId; + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SFreeTravel.class); + Map journeyMapByMapIdTemp = new HashMap<>(); + for(Map.Entry entry:config.entrySet()){ + journeyMapByMapIdTemp.put(entry.getValue().getMapID(),entry.getValue()); + } + journeyMapByMapId = journeyMapByMapIdTemp; + } + + + public int getID() { + return id; + } + + public int getMapID() { + return mapID; + } + + public int getUnlockLevel() { + return unlockLevel; + } + + public int[][] getAdventureNumber() { + return adventureNumber; + } + + public int[] getConsume() { + return consume; + } + + public int getCommonReward() { + return commonReward; + } + + public int getFinalReward() { + return finalReward; + } + + public int[][] getTreasureChest() { + return treasureChest; + } + + public int[][] getBossConsume() { + return bossConsume; + } + + public int[] getFreeTravelBoss() { + return freeTravelBoss; + } + + public int[] getFreeTravelBossReward() { + return freeTravelBossReward; + } + + public int[] getTurntableProbability() { + return turntableProbability; + } + + public int[][] getTurntablePosition() { + return turntablePosition; + } + + public int[][] getTurntableGoods() { + return turntableGoods; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SFreeTravelStore.java b/tablemanager/src/main/java/config/SFreeTravelStore.java new file mode 100644 index 000000000..5c4b3bb1d --- /dev/null +++ b/tablemanager/src/main/java/config/SFreeTravelStore.java @@ -0,0 +1,61 @@ +package config; + +import manager.STableManager; +import manager.Table; +import util.MathUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Table(name ="FreeTravelStore") +public class SFreeTravelStore implements BaseConfig { + + private int id; + + private int mapID; + + private int weight; + + private int[] goods; + + private int[] cost; + + public static Map> storeMapByMapId = new HashMap<>(); + + + @Override + public void init() throws Exception { + Map configMap = STableManager.getConfig(SFreeTravelStore.class); + Map> storeMapByMapIdTemp = new HashMap<>(); + for(Map.Entry entry:configMap.entrySet()){ + storeMapByMapIdTemp.putIfAbsent(entry.getValue().getMapID(),new ArrayList<>()); + storeMapByMapIdTemp.get(entry.getValue().getMapID()).add(entry.getValue()); + } + storeMapByMapId = storeMapByMapIdTemp; + } + + + public int getID() { + return id; + } + + public int getMapID() { + return mapID; + } + + public int getWeight() { + return weight; + } + + public int[] getGoods() { + return goods; + } + + public int[] getCost() { + return cost; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SGodSacrificeSetting.java b/tablemanager/src/main/java/config/SGodSacrificeSetting.java new file mode 100644 index 000000000..7c06bf84a --- /dev/null +++ b/tablemanager/src/main/java/config/SGodSacrificeSetting.java @@ -0,0 +1,91 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="GodSacrificeSetting") +public class SGodSacrificeSetting implements BaseConfig { + + private int id; + + private int activityId; + + private int[] activityItems; + + private int activityMoney; + + private int[] rankType; + + private int[] rewardItemChangRate; + + private int qAId; + + private int itemDelete; + + private int timeRewardNum; + + private int[] timePointList; + + private int timeRewardGroup; + + private int lastTime; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int[] getActivityItems() { + return activityItems; + } + + public int getActivityMoney() { + return activityMoney; + } + + public int[] getRankType() { + return rankType; + } + + public int[] getRewardItemChangRate() { + return rewardItemChangRate; + } + + public int getQAId() { + return qAId; + } + + public int getItemDelete() { + return itemDelete; + } + + public int getTimeRewardNum() { + return timeRewardNum; + } + + public int[] getTimePointList() { + return timePointList; + } + + public int getTimeRewardGroup() { + return timeRewardGroup; + } + + public int getLastTime() { + return lastTime; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSpiritAnimalBook.java b/tablemanager/src/main/java/config/SSpiritAnimalBook.java new file mode 100644 index 000000000..f07e35b24 --- /dev/null +++ b/tablemanager/src/main/java/config/SSpiritAnimalBook.java @@ -0,0 +1,43 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="SpiritAnimalBook") +public class SSpiritAnimalBook implements BaseConfig { + + private int id; + + private int[][] teamers; + + private int[][] activePara; + + private int activeForce; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int[][] getTeamers() { + return teamers; + } + + public int[][] getActivePara() { + return activePara; + } + + public int getActiveForce() { + return activeForce; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSpiritAnimalLevel.java b/tablemanager/src/main/java/config/SSpiritAnimalLevel.java new file mode 100644 index 000000000..06cfa2cd8 --- /dev/null +++ b/tablemanager/src/main/java/config/SSpiritAnimalLevel.java @@ -0,0 +1,55 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="SpiritAnimalLevel") +public class SSpiritAnimalLevel implements BaseConfig { + + private int id; + + private int level; + + private int quality; + + private int[][] characterLevelPara; + + private int[][] consume; + + private int[][] sumConsume; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getLevel() { + return level; + } + + public int getQuality() { + return quality; + } + + public int[][] getCharacterLevelPara() { + return characterLevelPara; + } + + public int[][] getConsume() { + return consume; + } + + public int[][] getSumConsume() { + return sumConsume; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSpiritAnimalStar.java b/tablemanager/src/main/java/config/SSpiritAnimalStar.java new file mode 100644 index 000000000..7084c5235 --- /dev/null +++ b/tablemanager/src/main/java/config/SSpiritAnimalStar.java @@ -0,0 +1,61 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="SpiritAnimalStar") +public class SSpiritAnimalStar implements BaseConfig { + + private int id; + + private int star; + + private int quality; + + private int[][] starPara; + + private int consumeItemNum; + + private int consumeRes; + + private int sumConsume; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getStar() { + return star; + } + + public int getQuality() { + return quality; + } + + public int[][] getStarPara() { + return starPara; + } + + public int getConsumeItemNum() { + return consumeItemNum; + } + + public int getConsumeRes() { + return consumeRes; + } + + public int getSumConsume() { + return sumConsume; + } + + +} \ No newline at end of file diff --git a/test/src/main/java/ExcelUtils.java b/test/src/main/java/ExcelUtils.java index e1daf5c23..a0447ab40 100644 --- a/test/src/main/java/ExcelUtils.java +++ b/test/src/main/java/ExcelUtils.java @@ -8,7 +8,7 @@ import java.util.*; public class ExcelUtils { private static boolean isWrite = true; - private static String excelPath ="F:/work2/data_execl/base_data/"; //excel 文件 + private static String excelPath ="D:/excelData/master_develop/base_data/"; //excel 文件 // private static String excelPath ="D:/excel/0.94/data_execl/Map_data/"; //excel 文件 private static String path = "conf/server/"; private static Set oldFileNames = new HashSet<>(); @@ -20,17 +20,17 @@ public class ExcelUtils { oldFileNames.addAll(Arrays.asList(list)); readExcelData(); //只加载新文件 - Set newFileNames = new HashSet<>(); - File newfile = new File(path); - String[] newList = newfile.list(); - newFileNames.addAll(Arrays.asList(newList)); - newFileNames.removeAll(oldFileNames); - if(!newFileNames.isEmpty()) { - for (String newFileName : newFileNames) { - String finalNewFileName = newFileName.replaceAll(".txt", ""); - genJavaFile(finalNewFileName); - } - } +// Set newFileNames = new HashSet<>(); +// File newfile = new File(path); +// String[] newList = newfile.list(); +// newFileNames.addAll(Arrays.asList(newList)); +// newFileNames.removeAll(oldFileNames); +// if(!newFileNames.isEmpty()) { +// for (String newFileName : newFileNames) { +// String finalNewFileName = newFileName.replaceAll(".txt", ""); +// genJavaFile(finalNewFileName); +// } +// } } public static void genJavaFile(String fileName){ @@ -323,27 +323,37 @@ public class ExcelUtils { String[] split = entry.getKey().toString().split("#"); Object npc = entry.getKey(); Object isMustAppear = 0; + Object location = 0; if (split.length >= 3){ npc = split[1]; isMustAppear = split[2]; } + if(split.length==4){ + location = split[3]; + } List value = entry.getValue(); StringBuilder groups = new StringBuilder(); + StringBuilder locations = new StringBuilder(); for (Object info :value){ if (groups.length() == 0){ groups = new StringBuilder((String) info); }else{ groups.append("|").append(info); } + if (locations.length() == 0){ + locations = new StringBuilder(String.valueOf(location)); + }else{ + locations.append("#").append(location); + } } if (i == 0){ - out.write("id\tEvent\tGroups\tisMustAppear"); + out.write("id\tEvent\tGroups\tisMustAppear\tlocation"); out.write("\r\n"); - out.write("int"+"\t"+"int"+"\t"+"mut,int#int,2"+"\t"+"int"); + out.write("int"+"\t"+"int"+"\t"+"mut,int#int,2"+"\t"+"int"+"\t"+"mut,int#int,1"); out.write("\r\n"); } i = i +1 ; - out.write( i+"\t"+npc+"\t"+groups.toString()+"\t" + isMustAppear); + out.write( i+"\t"+npc+"\t"+groups.toString()+"\t" + isMustAppear+"\t"+locations.toString()); out.write("\r\n"); } } @@ -369,7 +379,7 @@ public class ExcelUtils { } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } return wb;