diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index b17c5cc19..433a3b8ef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -102,6 +102,8 @@ public class RedisKey { public static final String CUser_Chat = ":CUser_Chat:"; + public static final String USER_LOGIN_URL = "USER_LOGIN_URL:"; + public static String getKey(String type, String key, boolean withoutServerId) { if (withoutServerId) { return GameApplication.areaId + Delimiter_colon + type + Delimiter_colon + String.valueOf(key); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index bfb784fc9..223a18ff2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.logic.GlobalDataManaager; @@ -20,6 +22,7 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.thread.task.RPCServerTask; import com.ljsd.jieling.util.CBean2Proto; import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.TimeUtils; @@ -97,6 +100,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); ActivityLogic.getInstance().flushForLogin(user); + RedisUtil.getInstence().set(RedisKey.USER_LOGIN_URL + userId, RPCServerTask.userCallBackUrl); LOGGER.info("back to client!"); } catch (Exception e) { e.printStackTrace(); 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 e787cd7b2..3fd4d3064 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 @@ -192,7 +192,7 @@ public class MapLogic { if (reviveTime > 0) { mapEnterResponse.setReviveTime(reviveTime); } - if(mapManager.getTowerUnusedBuffer()!=null&&mapManager.getTowerUnusedBuffer().size()>1){ + if(mapManager.getTowerUnusedBuffer()!=null&&mapManager.getTowerUnusedBuffer().size()>=1){ List towerBuffs = new ArrayList<>(); for(Map.Entry buffer:mapManager.getTowerUnusedBuffer().entrySet()){ TowerBuff towerBuff = new TowerBuff(buffer.getKey(),buffer.getValue()); @@ -232,15 +232,14 @@ 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)); - } - } +// 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); } @@ -809,27 +808,32 @@ public class MapLogic { 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); - } +// 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); } } + MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder(); if(outType == 0||mapManager.getTower()-1==STrialConfig.getHighestTower()){ + if(mapManager.getTowerUnusedBuffer()!=null){ + mapManager.setTowerUnusedBuffer(null); + }; + LOGGER.info("退出地图"); boolean result = onlyLevelMap(user, true); if (!result) { MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), ""); return; } } - MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder(); - // builder.setUseTime(mapManager.getCurrTowerTime()); - LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime()); + int time = (int)(TimeUtils.now()-mapManager.getCurrTowerTime())/1000; + builder.setUseTime(time); + LOGGER.info("当前层使用时间{}",time); if(mapManager.getTower()>mapManager.getHighestTower()){ mapManager.setHighestTower(mapManager.getTower()); } @@ -1247,7 +1251,7 @@ public class MapLogic { } // if(mapManager.getBossType()==1) if(mapManager.getTower()==STrialConfig.getHighestTower()&&mapManager.getBossType()!=0){ - // fightEndResponse.setLastTowerTime(mapManager.getCurrTowerTime()); + fightEndResponse.setLastTowerTime((int)(TimeUtils.now()-mapManager.getCurrTowerTime())/1000); }else{ fightEndResponse.setLastTowerTime(0); } @@ -1564,7 +1568,7 @@ public class MapLogic { .setMapIntoReset(mapManager.getMapIntoFlag()) .build(); builder.setTowerCopyInfo(towerCopyInfo); - LOGGER.info("关卡信息{}"+towerCopyInfo.toString()); + LOGGER.info("关卡信息{}",towerCopyInfo.toString()); MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true); } @@ -2080,28 +2084,14 @@ public class MapLogic { int[][] bossType = config.getRandomBossType(); type = MathUtils.randomFromWeight(bossType); - if(mapManager.getTower()==1){ - type = 2; - }else if(mapManager.getTower()==2){ - type = 4; + if(mapManager.getTower()<=3){ + type = 3; } +// }else if(mapManager.getTower()==2){ +// type = 3; + -// int amount = 0; -// for(int i = 0 ; i 5){ - mapManager.setTower(mapManager.getTower()-mapManager.getTower()%5); + mapManager.setTower(mapManager.getTower()-(mapManager.getTower()%5)); }else{ mapManager.setTower(1); } @@ -2277,20 +2267,51 @@ 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(); + User user = UserManager.getUser(uid); String err = checkUseTowerBuff(mapManager, towerLevel, optionId); if(!"".equals(err)){ MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),err); return; } - int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel); + int eventId = 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); +// MapPointConfig pointConfig = MapPointConfig.getScMapEventMap().get(mapPointId); +// int initialEventId = pointConfig.getInitialEventId(); + SEventPointConfig sEventPointConfig = SEventPointConfig.sEventPointConfigMap.get(eventId); + int[] options = sEventPointConfig.getOption(); +// for(int option : options){ +// +// } + SOptionConfig sOptionConfig = SOptionConfig.sOptionConfigMap.get(optionId); + int behaviorType = sOptionConfig.getBehaviorType(); + int[][] behaviorTypeValues = sOptionConfig.getBehaviorTypeValues(); + BaseBehavior baseBehavior = baseBehaviorMap.get(behaviorType); + MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse = MapInfoProto.EventUpdateResponse.newBuilder(); + if (baseBehavior != null) { + boolean isSuccess = baseBehavior.process(optionId, user, behaviorTypeValues, eventUpdateResponse); + if (!isSuccess) { + LOGGER.info("updatePonintEvent() baseBehavior process fail! behaviorType=>{}", behaviorType); + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), ""); + return; + } + } + List eventBehaviorValuesList = new ArrayList<>(); + for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) { + CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues + .newBuilder(); + for (int j = 0; j < sOptionConfig.getBehaviorTypeValues()[i].length; j++) { + eventBehaviorValues.addBehaviorValues(sOptionConfig.getBehaviorTypeValues()[i][j]); + } + eventBehaviorValuesList.add(eventBehaviorValues.build()); + } + CommonProto.EventBehaviorCommon eventBehaviorCommon = CommonProto.EventBehaviorCommon + .newBuilder() + .setBehaviorType(sOptionConfig.getBehaviorType()) + .addAllEventBehaviorValues(eventBehaviorValuesList) + .build(); + LOGGER.info("使用第{},mapPointId,id是:{}",towerLevel,eventId); MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder(); - + useTowerBuffResponse.setEventBehaviorCommon(eventBehaviorCommon); // useTowerBuffResponse.setBuffId(buffId); MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyThreeBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyThreeBehavior.java index 79114465d..f02566445 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyThreeBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/FourtyThreeBehavior.java @@ -30,7 +30,7 @@ public class FourtyThreeBehavior extends BaseBehavior{ }; if (mapManager.getBossType()==3){ Cell cell = mapManager.getMapInfo().get(mapManager.getBossXY()); - LOGGER.info("暂存buff层数:"+mapManager.getTower()+",buff:"+cell.getEventId()); + LOGGER.info("暂存buff层数:"+mapManager.getTower()+",buff:"+cell.getEventId()+"pointId:"+cell.getPointId()); mapManager.addTowerUnusedBuffer(mapManager.getTower(),cell.getEventId()); return true; }else if(mapManager.getBossType()==4){ 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 a8ad2c828..87aa12677 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 @@ -32,6 +32,7 @@ public class FourtyTwoBehavior extends BaseBehavior{ mapManager.removeBoss(); mapManager.setTower(mapManager.getTower()+1); mapManager.setEssenceValue(0); + mapManager.setStartExporeTime(0); mapManager.setCurrTowerTime(TimeUtils.now()); user.getUserMissionManager().onGameEvent(user, GameEvent.COPY_TOWER_LEVEL,mapManager.getTower()); MapLogic.getInstance().initTrialMap(mapManager, user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index 964fda8a2..8fdf7257c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -87,7 +87,7 @@ public enum MissionType { case 14: return LEVEL_STORY_PASS; case 15: - return HERO_STORY_PASS; + return GENERAL_STORY_PASS; case 16: return HERO_STORY_PASS; case 17: diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java index 5356db81e..c269415f3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java @@ -18,10 +18,13 @@ import java.net.InetSocketAddress; public class RPCServerTask extends Thread{ private static final Logger LOGGER = LoggerFactory.getLogger(RPCServerTask.class); + public static String userCallBackUrl; + private CoreSettings coreSettings; public RPCServerTask(ConfigurableApplicationContext configurableApplicationContext){ this.coreSettings = configurableApplicationContext.getBean(CoreSettings.class); + userCallBackUrl = this.coreSettings.getIp() + ":" + this.coreSettings.getPort(); setName("rpc"); }