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 1aec5ead8..1402671fd 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 @@ -30,6 +30,7 @@ import org.luaj.vm2.LuaValue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ConfigurableApplicationContext; +import sun.plugin2.message.Message; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; @@ -130,6 +131,7 @@ public class MapLogic { } } } + if (user.getPlayerInfoManager().getMapId() < mapId) { user.getPlayerInfoManager().setMapId(mapId); } @@ -230,6 +232,15 @@ public class MapLogic { .build(); mapEnterResponse.addHeroInfos(heroInfo); } + List buffers = new ArrayList<>(); + if(mapManager.getTowerUnusedBuffer()!=null){ + for(Map.Entry entry:mapManager.getTowerUnusedBuffer().entrySet()){ + TowerBuff buff = new TowerBuff(entry.getKey(),entry.getValue()); + buffers.add(CBean2Proto.getTowerBuff(buff)); + } + } +// mapManager.setStartExporeTime(System.currentTimeMillis()); + mapEnterResponse.addAllBuf(buffers); LOGGER.info("enterMap() uid=>{} mapId =>{}", uid, mapManager.getCurMapId()); MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true); } @@ -795,16 +806,30 @@ public class MapLogic { public void outMap(ISession session, int mapId, MessageTypeProto.MessageType messageType) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); - SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId()); - if(user.getMapManager().getTower()>1&&challengeConfig.getType()==2){ - user.getMapManager().setMapIntoFlag(1); + MapManager mapManager = user.getMapManager(); + SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); + if(challengeConfig.getType()==2){ + int time = (int)((System.currentTimeMillis()-mapManager.getStartExporeTime())/1000); + mapManager.setCurrTowerTime(time); +// if(mapManager.getEveryTowerTime()!=null&&mapManager.getEveryTowerTime().get(mapManager.getTower())!=null){ +// mapManager.setTowerTimeByTower(mapManager.getTower(),time); +// } + if(mapManager.getTower()>=1){ + mapManager.setMapIntoFlag(1); + } } boolean result = onlyLevelMap(user, true); if (!result) { MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), ""); return; } - MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true); + if(mapManager.getTower()>mapManager.getHighestTower()){ + mapManager.setHighestTower(mapManager.getTower()); + } + MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder(); + builder.setUseTime(mapManager.getCurrTowerTime()); + LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime()); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true); } public void whenLogin(User user) throws Exception { @@ -1521,14 +1546,14 @@ public class MapLogic { builder.setStarNum(sChallengeStarBox.getStarNum()); } MapInfoProto.TowerCopyInfo towerCopyInfo = MapInfoProto.TowerCopyInfo.newBuilder() - .setTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower()) + .setTower(mapManager.getTower()) .setFightCount(mapManager.getFightCount()) - .setResetCount(mapManager.getResetCount()) - .setHighestTower(mapManager.getHighestTower()) + .setHighestTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower()) .setEssenceValue(mapManager.getEssenceValue()) .setMapIntoReset(mapManager.getMapIntoFlag()) .build(); builder.setTowerCopyInfo(towerCopyInfo); + LOGGER.info("关卡信息{}"+towerCopyInfo.toString()); MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true); } @@ -1915,6 +1940,7 @@ public class MapLogic { * @throws Exception */ public String initTrialMap(MapManager mapManager, User user) throws Exception { + STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(mapManager.getTower()); if (sTrialConfig == null) { LOGGER.info("initTrialMap() uid=>{} sTrialConfig == null =>{} ", user.getId(), mapManager.getTower()); @@ -2004,7 +2030,6 @@ public class MapLogic { mapManager.setCurXY(xy); mapManager.setMapInfo(newMap); mapManager.setEssenceValue(0); - mapManager.setStartExporeTime(System.currentTimeMillis()); if(mapManager.getTowerUnusedBuffer()==null){ mapManager.setTowerUnusedBuffer(new HashMap<>()); } @@ -2035,6 +2060,11 @@ public class MapLogic { int[][] bossType = config.getRandomBossType(); type = MathUtils.randomFromWeight(bossType); + if(mapManager.getTower()==1){ + type = 3; + }else if(mapManager.getTower()==2){ + type = 4; + } // int amount = 0; // for(int i = 0 ; i 0){ - mapManager.addTowerUnusedBuffer(currTower, randomPoint); - } - } +// if(type==3){ +// if(currTower>0){ +// mapManager.addTowerUnusedBuffer(currTower, randomPoint); +// } +// } MapInfoProto.MapTowerCallChiefResponse.Builder response = MapInfoProto.MapTowerCallChiefResponse.newBuilder(); Cell cell = BehaviorUtil.addBehaviorInfo(user,randomPoint,mapManager,mapManager.getCurMapId(),CellUtil.pos2XY(xyResult)[0],CellUtil.pos2XY(xyResult)[1]); CommonProto.Cell protoCell =CBean2Proto.getCell(cell); - response.setType(3); + response.setType(type); mapManager.setEssenceValue(-1); response.setMonsterInfo(protoCell); @@ -2208,7 +2238,6 @@ public class MapLogic { resetMapInfo(user, true); MapInfoProto.MapTowerResetResponse mapTowerResetResponse = MapInfoProto.MapTowerResetResponse .newBuilder() - .setResetCount(mapManager.getResetCount()) .setTower(1) .build(); MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapTowerResetResponse, true); @@ -2222,20 +2251,43 @@ public class MapLogic { public void useTowerBuff(ISession session,int towerLevel,int optionId , MessageTypeProto.MessageType messageType) throws Exception { int uid = session.getUid(); MapManager mapManager = UserManager.getUser(uid).getMapManager(); - if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){ - MessageUtil.sendErrorCode(session,0,"使用错误,当前层不存在buff"); + String err = checkUseTowerBuff(mapManager, towerLevel, optionId); + if(!"".equals(err)){ + MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),err); return; - }else{ - int buffId = mapManager.getTowerUnusedBuffer().get(towerLevel); - mapManager.consunmeTowerBuffer(towerLevel); - LOGGER.info("使用第"+towerLevel+"层buff"); - CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(mapManager,buffId); - MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder(); - useTowerBuffResponse.setBuffId(buffId); - MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true); } + int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel); + mapManager.consunmeTowerBuffer(towerLevel); + int buffId = SOptionConfig.sOptionConfigMap.get(optionId).getBehaviorTypeValues()[0][0]; + LOGGER.info("使用第{},mapPointId,id是:{}",towerLevel,mapPointId); + CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(mapManager,buffId); + LOGGER.info("使用第"+towerLevel+"层buff,id是:"+buffId); + MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder(); + useTowerBuffResponse.setBuffId(buffId); + MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true); + + } + private String checkUseTowerBuff(MapManager mapManager,int towerLevel,int optionId){ + if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){ + return "使用错误,当前层不存在buff"; + } + int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel); +// MapPointConfig mapPointConfig = MapPointConfig.getScMapEventMap().get(mapPointId); +// if(mapPointId == null){ +// return "parm wrong"; +// } +// int initialEventId = mapPointConfig.getInitialEventId(); +// mapManager.consunmeTowerBuffer(towerLevel); + SEventPointConfig sEventPointConfig = SEventPointConfig.sEventPointConfigMap.get(mapPointId); + int[] options = sEventPointConfig.getOption(); + for(int optionTmp : options){ + if(optionTmp == optionId){ + return ""; + } + } + return "wrong parm"; } /** 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 d568a0273..b98ebf621 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 @@ -91,7 +91,7 @@ public class MapManager extends MongoBase { //副本boss类型 private int bossType; //每层最快时间 - private int[] everyTowerTime; + private Map everyTowerTime; //当前层使用时间 private int currTowerTime; @@ -252,7 +252,7 @@ public class MapManager extends MongoBase { if (itemNum < playerInfoManager.getMaxStamina()) { int addValue = (updateTime - lastUpdateEnergyTime) / 60 / energyRecoverSpeed[1] * energyRecoverSpeed[0]; if (addValue != 0) { - int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, playerInfoManager.getMaxStamina()); + int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, SGameSetting.getGameSetting().getInitialEnergy()); item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy); setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime); } @@ -506,7 +506,7 @@ public class MapManager extends MongoBase { updateString("towerUnusedBuffer." + key, value); this.towerUnusedBuffer.put(key,value); } - + public void consunmeTowerBuffer(int tower){ removeString(getMongoKey() +".towerUnusedBuffer." + tower); this.towerUnusedBuffer.remove(tower); @@ -530,18 +530,6 @@ public class MapManager extends MongoBase { this.bossType = bossType; } - public int[] getEveryTowerTime() { - return everyTowerTime; - } - public void setEveryTowerTime(int[] everyTowerTime){ - this.everyTowerTime = everyTowerTime; - } - public void setEachTime(int index,int eachTime){ - if(everyTowerTime.length>0){ - this.everyTowerTime[index] = eachTime; - } - } - public int getCurrTowerTime() { return currTowerTime; } @@ -555,8 +543,23 @@ public class MapManager extends MongoBase { return mapIntoFlag; } - public void setMapIntoFlag(int mapIntoFlag) { + public int setMapIntoFlag(int mapIntoFlag) { updateString("mapIntoFlag",mapIntoFlag); this.mapIntoFlag = mapIntoFlag; + return mapIntoFlag; + } + + public Map getEveryTowerTime() { + return everyTowerTime; + } + + public void setEveryTowerTime(Map everyTowerTime) { + updateString("everyTowerTime",everyTowerTime); + this.everyTowerTime = everyTowerTime; + } + public void setTowerTimeByTower(int tower,int time){ + if(everyTowerTime!=null){ + everyTowerTime.put(tower,time); + } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java index ab46e215b..85c159be0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyTwoBehavior.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler.map.behavior; +import com.ljsd.jieling.config.SChallengeConfig; +import com.ljsd.jieling.config.STrialConfig; import com.ljsd.jieling.handler.map.EventType; import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.handler.map.MapManager; @@ -7,6 +9,8 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.protocols.MapInfoProto; import org.springframework.stereotype.Component; +import java.util.Map; + @Component public class FourtyTwoBehavior extends BaseBehavior{ @Override @@ -17,9 +21,21 @@ public class FourtyTwoBehavior extends BaseBehavior{ @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { MapManager mapManager = user.getMapManager(); - mapManager.setTower(user.getMapManager().getTower()+1); + int maxTower = 0; + Map sTrialConfig = STrialConfig.sTrialConfigMap; + for(Map.Entry entry:sTrialConfig.entrySet()){ + if(entry.getValue().getId()>maxTower){ + maxTower = entry.getValue().getId(); + } + } + SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId()); + if(challengeConfig.getType()==2&&mapManager.getTower()>=maxTower){ + LOGGER.info("当前层为{},最大层为{}"+mapManager.getTower()+maxTower); + return false; + } + LOGGER.info("当前层为{},进入下一层"+mapManager.getTower()); + mapManager.setTower(mapManager.getTower()+1); mapManager.setEssenceValue(0); - mapManager.setCurrTowerTime(Integer.parseInt(String.valueOf(System.currentTimeMillis()-mapManager.getStartExporeTime()/1000))); MapLogic.getInstance().initTrialMap(mapManager, user); return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index a41da3047..c601b0eef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -116,7 +116,7 @@ public class StoreLogic { } Map itemNumMap = new ConcurrentHashMap<>(); int rewardId = getRewardId(storeType,1,user); - itemNumMap.put(rewardId, 0); + itemNumMap.put(rewardId, 1); storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap); }else{ Map itemNumMap = storeInfo.getItemNumMap(); @@ -131,7 +131,7 @@ public class StoreLogic { Map sstoreTypeConfigMap = SStoreTypeConfig.getsStoreTypeConfigMap(); for ( Map.Entry entry :sstoreTypeConfigMap.entrySet()){ SStoreTypeConfig sStoreTypeConfig = entry.getValue(); - if (sStoreTypeConfig.getStoreOpenRule() == 1){ //固定商店 + if (sStoreTypeConfig.getStoreOpenRule() == 1 && sStoreTypeConfig.getId() !=8){ //固定商店 Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); long startTime = 0; long endTime = 0;