From 36b1071efc0eb2c9ad040f0a1e70f673f3afa643 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 15 Jul 2019 14:35:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E4=B8=BA=E7=B1=BB=E5=9E=8B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/map/behavior/DunBehavior.java | 72 ++++++------------- .../java/com/ljsd/jieling/util/MathUtils.java | 13 ++++ 2 files changed, 33 insertions(+), 52 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java index d91b2948c..9e5784289 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/DunBehavior.java @@ -2,9 +2,13 @@ package com.ljsd.jieling.handler.map.behavior; import com.ljsd.jieling.handler.map.*; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.util.MathUtils; import org.springframework.stereotype.Component; +import java.util.List; + @Component public class DunBehavior extends BaseBehavior { @Override @@ -14,57 +18,21 @@ public class DunBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { -// boolean hasMission = MissionLogic.getInstance().hasMission(user, behaviorTypeValues[0][0]); -// if (hasMission) { -// return false; -// } -// MapManager mapManager = user.getMapManager(); -// SCMapConfig scMapConfig = SCMapConfig.getsCMapSize().get(mapManager.getCurMapId()); -// int[] mapSize = scMapConfig.getSize(); -// Map newDunEvents = new HashMap<>(); -// Map newDunEventIds = new HashMap<>(); -// int i = 0; -// Random random = new Random(); -// while (newDunEventIds.size() < 3) { -// int randomIndex = random.nextInt(behaviorTypeValues[0].length - 3) + 3; -// int newDunEventId = behaviorTypeValues[0][randomIndex]; -// MapPointConfig mapPointConfig = MapPointConfig.scMapEventMap.get(newDunEventId); -// newDunEventIds.put(newDunEventIds.size(), mapPointConfig); -// i++; -// if (i >= 1000) { -// break; -// } -// } -// if (newDunEventIds.size() < 3) { -// return false; -// } -// i = 0; -// while (newDunEvents.size() < 3) { -// int x = random.nextInt(mapSize[0]) + 1; -// int y = random.nextInt(mapSize[1]) + 1; -// int xy = CellUtil.xy2Pos(x, y); -// if (mapManager.getMapInfo().containsKey(xy)) { -// continue; -// } -// MapPointConfig mapPointConfig = newDunEventIds.get(newDunEvents.size()); -// Cell cellValue = new Cell(xy, mapPointConfig.getInitialEventId(), mapPointConfig.getId()); -// newDunEvents.put(xy, cellValue); -// i++; -// if (i >= 1000) { -// break; -// } -// // 开新事件 -// BehaviorUtil.addBehaviorInfo(mapManager.getCurMapId(), mapManager, mapPointConfig.getId(), x, y); -// } -// mapManager.getMapInfo().putAll(newDunEvents); -// Mission mission = new Mission(); -// mission.setMissionId(behaviorTypeValues[0][0]); -// mission.setMissionStep(0); -// mission.setMissionInfo(mapManager.getCurXY() + "#" + behaviorTypeValues[0][2]); -// user.getMissionManager().updateOneDoingMissions(behaviorTypeValues[0][0], mission); -// CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission); -// eventUpdateResponse.addMission(missionProto); -// return true; - return false; + int[] behaviorTypeValue = behaviorTypeValues[0]; + int randomANums = behaviorTypeValue[0]; + int randomBNums = behaviorTypeValue[1]; + if(randomANums!=0 || randomBNums!=0){ + List randomAEvents = MathUtils.randomForOneArray(behaviorTypeValues[1], randomANums); + List randomBEvents = MathUtils.randomForOneArray(behaviorTypeValues[2], randomBNums); + randomBEvents.addAll(randomAEvents); + List randomABPosList = MathUtils.randomForOneArray(behaviorTypeValues[3], randomBNums); + for(Integer pos : randomABPosList){ + eventUpdateResponse.addAddMapInfo(CommonProto.Cell.newBuilder() + .setCellId(pos) + .setPointId(randomBEvents.remove(0)) + .build()); + } + } + return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java index 0dcb0316d..3b193e5dd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java @@ -1,8 +1,11 @@ package com.ljsd.jieling.util; +import com.sun.nio.sctp.PeerAddressChangeNotification; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; @@ -169,4 +172,14 @@ public class MathUtils { return result; } + public static List randomForOneArray(int sourceArray[], int randomNums) { + List result = new ArrayList<>(); + int length = sourceArray.length; + while (randomNums>0){ + result.add(sourceArray[randomInt(length)]); + randomNums--; + } + return result; + + } }