From 183e4954c132d8be9d97f3e2b5bdf8f927653a3f Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 29 Aug 2019 05:52:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E5=89=AF=E6=9C=AC=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/GameApplication.java | 1 + .../com/ljsd/jieling/config/ServerConfig.java | 15 +++++- .../com/ljsd/jieling/core/FunctionIdEnum.java | 1 + .../jieling/handler/GetPlayerInfoHandler.java | 8 +-- .../jieling/handler/map/EndlessMapInfo.java | 12 +++++ .../ljsd/jieling/handler/map/MapLogic.java | 49 +++++++++++++++---- .../ljsd/jieling/handler/map/MapManager.java | 8 ++- .../jieling/logic/GlobalDataManaager.java | 29 +++++++++-- 8 files changed, 104 insertions(+), 19 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index a73fc4a71..5ac924ee0 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -111,6 +111,7 @@ public class GameApplication { serverConfigTmp.setOpenTime(format); serverConfigTmp.setCacheOpenTime(serverOenTime); serverConfigTmp.setId(1); + serverConfigTmp.setWorldLevel(1); MongoUtil.getInstence().getMyMongoTemplate().saveWithoutMongoRoot(serverConfigTmp); }else{ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java index 9c144d9b9..04ba5566f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/ServerConfig.java @@ -1,12 +1,13 @@ package com.ljsd.jieling.config; +import com.ljsd.common.mogodb.MongoBase; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Transient; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; @Document( collection = "server_config") -public class ServerConfig { +public class ServerConfig extends MongoBase { @Id private int id; @@ -14,6 +15,9 @@ public class ServerConfig { @Field(value = "open_time") private String openTime; + @Field(value = "world_level") + private int worldLevel; + @Transient private long cacheOpenTime; @@ -40,4 +44,13 @@ public class ServerConfig { public void setCacheOpenTime(long cacheOpenTime) { this.cacheOpenTime = cacheOpenTime; } + + public int getWorldLevel() { + return worldLevel; + } + + public void setWorldLevel(int worldLevel) { + this.worldLevel = worldLevel; + updateString("world_level",worldLevel); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java index ebbb5b534..e558d3a2f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java @@ -35,6 +35,7 @@ public enum FunctionIdEnum { Store(20), + Endless(46), WorkShopTech(101), WorkShopCreateEquip(102), WorkShopCreateProtectEquip(103), 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 36d011cbf..e521d7ed6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -3,8 +3,11 @@ package com.ljsd.jieling.handler; import com.ljsd.jieling.config.SChallengeConfig; import com.ljsd.jieling.config.SLotterySetting; import com.ljsd.jieling.config.SRechargeCommodityConfig; +import com.ljsd.jieling.config.ServerConfig; +import com.ljsd.jieling.db.mongo.MongoUtil; 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; import com.ljsd.jieling.logic.activity.ActivityLogic; @@ -114,9 +117,8 @@ public class GetPlayerInfoHandler extends BaseHandler{ //试炼已领取奖励层数 Set towerFloorReceivedReward = mapManager.getTowerReceivedReward().keySet(); CommonProto.EndlessInfo.Builder endless = CommonProto.EndlessInfo.newBuilder(); - endless.setMapId(4001); - endless.setNextTime((int)(TimeUtils.getNextWeekdayStartTime(TimeUtils.now(), 1)/1000)); - endless.setWorldLevel(99); + endless.setMapId(MapLogic.getEndlessMapId()); + endless.setWorldLevel(MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class).getWorldLevel()); PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java index 725a97fe4..bf1c81088 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EndlessMapInfo.java @@ -26,6 +26,10 @@ public class EndlessMapInfo { private Map mapInfo = new HashMap<>(); + private int season; + + + public int getCurMapId() { return curMapId; } @@ -114,4 +118,12 @@ public class EndlessMapInfo { public Map getMapInfo() { return mapInfo; } + + public int getSeason() { + return season; + } + + public void setSeason(int season) { + this.season = season; + } } 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 93c1946d9..d824a9a7e 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 @@ -16,6 +16,7 @@ import com.ljsd.jieling.handler.mission.Mission; import com.ljsd.jieling.ktbeans.KTGameType; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; +import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.activity.event.Poster; @@ -46,6 +47,9 @@ public class MapLogic { private Map baseBehaviorMap = new HashMap<>(); + private static int endlessSeason; + + private static int endlessMapId; public static final int STAR_1 = 1; // 完成任务 public static final int STAR_2 = 2; // 100% 探索度 public static final int STAR_3 = 3; // 复活次数少于N次 @@ -215,16 +219,23 @@ public class MapLogic { } } - Map endlessMapCellInfo = mapManager.getEndlessMapInfo().getMapInfo(); - if(endlessMapCellInfo !=null&&endlessMapCellInfo.size()>0){ - mapManager.setMapInfo(endlessMapCellInfo); - } - Set walkCell = mapManager.getEndlessMapInfo().getWalkCell(); - if(walkCell!=null&&walkCell.size()>0){ - mapManager.setWalkCells(walkCell); + EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo(); + if(endlessMapInfo.getSeason()!=endlessSeason){ + mapManager.updateEndlessSeason(endlessSeason); + mapManager.updateEndlessMapId(0); + mapManager.endlessWalkCellSave(new HashSet<>()); + mapManager.endlessMapInfoSave(new HashMap<>()); + }else{ + Map endlessMapCellInfo = mapManager.getEndlessMapInfo().getMapInfo(); + if(endlessMapCellInfo !=null&&endlessMapCellInfo.size()>0){ + mapManager.setMapInfo(endlessMapCellInfo); + } + Set walkCell = mapManager.getEndlessMapInfo().getWalkCell(); + if(walkCell!=null&&walkCell.size()>0){ + mapManager.setWalkCells(walkCell); + } } mapManager.updateEndlessMapId(mapId); - EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo(); for(Map.Entry> entry :endlessMapInfo.getMapSign().entrySet()){ int curMapId = entry.getKey(); for(Map.Entry signEntry: entry.getValue().entrySet()){ @@ -1007,8 +1018,8 @@ public class MapLogic { mapManager.updateEndlessFightCount(0); } //无尽副本信息保存 - mapManager.endlessWalkCellSave(); - mapManager.endlessMapInfoSave(); + mapManager.endlessWalkCellSave(mapManager.getWalkCells()); + mapManager.endlessMapInfoSave(mapManager.getMapInfo()); } if(outType == 0||mapManager.getTower()-1==STrialConfig.getHighestTower()){ if(mapManager.getTowerUnusedBuffer()!=null){ @@ -3214,4 +3225,22 @@ public class MapLogic { } } + /** + *更新无尽副本赛季 + */ + public void updateEndlessSeason(int season){ + this.endlessSeason = season; + } + + /** + * 无尽副本设置当前mapId + * @param endlessMapId + */ + public static void setEndlessMapId(int endlessMapId) { + MapLogic.endlessMapId = endlessMapId; + } + + public static int getEndlessMapId() { + return endlessMapId; + } } 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 e40e0e84b..75eac7b9d 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 @@ -769,14 +769,18 @@ public class MapManager extends MongoBase { endlessMapInfo.putRefreshTime(cellId,time); updateString("endlessMapInfo.cellRefreshTime."+cellId,time); } - public void endlessWalkCellSave(){ + public void endlessWalkCellSave(Set walkCells){ endlessMapInfo.setWalkCell(walkCells); updateString("endlessMapInfo.walkCells",walkCells); } - public void endlessMapInfoSave(){ + public void endlessMapInfoSave(Map mapInfo){ endlessMapInfo.setMapInfo(mapInfo); updateString("endlessMapInfo.mapInfo",mapInfo); } + public void updateEndlessSeason(int season){ + endlessMapInfo.setSeason(season); + updateString("endlessMapInfo.season",season); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 25b74b85c..c34b4380c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -3,11 +3,13 @@ package com.ljsd.jieling.logic; import com.ljsd.GameApplication; import com.ljsd.jieling.config.SDailyTasksConfig; import com.ljsd.jieling.config.SGlobalSystemConfig; +import com.ljsd.jieling.config.ServerConfig; import com.ljsd.jieling.config.json.KTSDKConstans; import com.ljsd.jieling.config.json.ServerProperties; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.mongo.MongoUtil; +import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.dao.GuilidManager; @@ -147,7 +149,8 @@ public class GlobalDataManaager { } - public void openAction(List ids){ + public void openAction(List ids) throws Exception { + ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class); for(Integer openId : ids){ FunctionIdEnum type = FunctionIdEnum.getFunctionIdEnumById(openId); if(type == null){ @@ -157,6 +160,11 @@ public class GlobalDataManaager { switch (type){ case Arena: ArenaLogic.getInstance().updateArenaSeason(timeControllerOfFunction.getTimes()); + break; + case Endless: + MapLogic.getInstance().updateEndlessSeason(timeControllerOfFunction.getTimes()); + serverConfigTmp.setWorldLevel(calWorldLevel()); + MapLogic.getInstance().setEndlessMapId(getEndleeMapIdByLevel()); default: break; } @@ -166,10 +174,15 @@ public class GlobalDataManaager { public void closeAction(List ids) throws Exception { for(Integer closeId : ids){ - switch (closeId){ - case 8: + FunctionIdEnum type = FunctionIdEnum.getFunctionIdEnumById(closeId); + + switch (type){ + case Arena: ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_SEASON_REWARD); ArenaLogic.getInstance().updateArenaSeason(0); + break; + case Endless: + MapLogic.getInstance().updateEndlessSeason(0); default: break; } @@ -184,6 +197,8 @@ public class GlobalDataManaager { if(globalSystemControl != null){ TimeControllerOfFunction timeControllerOfFunction = globalSystemControl.getTimeControllerOfFunctionMap().get(8); ArenaLogic.getInstance().updateArenaSeason(timeControllerOfFunction.getTimes()); + MapLogic.getInstance().updateEndlessSeason(globalSystemControl.getTimeControllerOfFunctionMap().get(46).getTimes()); + MapLogic.getInstance().setEndlessMapId(getEndleeMapIdByLevel()); } MissionEventDistributor.init(); DataManagerDistributor.init(); @@ -321,4 +336,12 @@ public class GlobalDataManaager { } + private static int calWorldLevel(){ + return 20; + } + private static int getEndleeMapIdByLevel() throws Exception { + ServerConfig config = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class); + int mapId = config.getWorldLevel() * 0 + 4001; + return mapId; + } }