diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index aa3f3d763..58db75172 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -3217,6 +3217,7 @@ public class MapLogic { } } + List deleteCell = new ArrayList<>(); //判断添加buff for(Cell cell:mapInfo.values()){ if(MapPointConfig.getScMapEventMap().get(cell.getPointId()).getStyle()!=9){//9为地图点buff类型 @@ -3224,11 +3225,19 @@ public class MapLogic { } int optionId = STableManager.getConfig(SEventPointConfig.class).get(cell.getEventId()).getOption()[0]; SOptionConfig sOptionConfig = SOptionConfig.sOptionConfigMap.get(optionId); - int behaviorType = sOptionConfig.getBehaviorType(); - BaseBehavior baseBehavior = baseBehaviorMap.get(behaviorType); - baseBehavior.process(optionId,user,sOptionConfig.getBehaviorTypeValues(),null); + List buffIds = mapManager.getTrialInfo().getBuffIds(); + for(int[] values:sOptionConfig.getBehaviorTypeValues()){ + for(int value:values){ + buffIds.add(value); + } + } + deleteCell.add(cell); + mapManager.updateTrialBuffIds(buffIds); response.addBuffIds(sOptionConfig.getBehaviorTypeValues()[0][0]); } + for(Cell cell:deleteCell){ + BehaviorUtil.destoryApointXY(user,cell.getCellId()); + } }else{ for(int i = 0 ; i operationInfo = mapGameInfo.getOperationInfo(); if(operationInfo.size()==3){ @@ -74,7 +74,7 @@ public class BombGame extends ColorGame { CommonProto.Drop.Builder drop = null; - //是否抽到炸弹 + //是否已经抽取过该位置 if(operationInfo.contains((int)params[0]-1)){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } @@ -88,11 +88,11 @@ public class BombGame extends ColorGame { }else{ user.getMapManager().updateMapGameInfo(null); } - MapInfoProto.MapGameUpdateResponse response = MapInfoProto.MapGameUpdateResponse.newBuilder().setDrop(drop) - .setGameStatus(gameStatus) - .setResultId(resultId).build(); - - return response; + MapInfoProto.MapGameUpdateResponse.Builder response = MapInfoProto.MapGameUpdateResponse.newBuilder().setGameStatus(gameStatus).setResultId(resultId); + if(drop!=null){ + response.setDrop(drop); + } + return response.build(); } //乱序数组 private int [] shuffle(int [] arr) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java index 196105c8d..f5e458fda 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; * @discribe */ public class ForceCurrRank extends AbstractRank implements IEventHandler{ + private static int TRANSPORT_SIZE = 100; public ForceCurrRank(int type, String redisKey) { super(type, redisKey); @@ -62,11 +63,13 @@ public class ForceCurrRank extends AbstractRank implements IEventHandler{ int size = infoQueue.size(); List eventList = new ArrayList<>(size); - if(size<100){ - for(int i = 0 ; i < size;i++){ - eventList.add(infoQueue.poll()); - } + //看队列长度和每次最多传输多少比较,找最小 + int transport = Math.min(size,TRANSPORT_SIZE); + + for(int i = 0 ; i < transport;i++){ + eventList.add(infoQueue.poll()); } + Set changeId = new HashSet<>(); eventList.forEach(n->changeId.add(n.getUid())); changeId.forEach(i-> {