diff --git a/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java b/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java
index 4a1ab9e01..7ef6e6be4 100644
--- a/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java
+++ b/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java
@@ -29,6 +29,8 @@ import java.util.concurrent.TimeUnit;
*
*
* 1 netty 回调channel回来加连接限制
+ *
+ * 外观模式 控制类
*/
public class NettyGameServer extends AbstractServer {
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/MapStaticConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/MapStaticConfig.java
index adba3b966..2cf60604e 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/MapStaticConfig.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/MapStaticConfig.java
@@ -23,8 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
public class MapStaticConfig extends AbstractClassStaticConfig {
- private Map difficultyMonster;
- private Map difficultyReward;
+
private Map monsterMap;
@@ -37,12 +36,6 @@ public class MapStaticConfig extends AbstractClassStaticConfig {
@Override
public void figureConfigs() {
- try {
- setDifficult();
- } catch (Exception e) {
- LOGGER.error("SEndlessDifficulty init fail");
- }
-
try {
Map monsterMapVo = new ConcurrentHashMap<>();
for (Map.Entry entry : STableManager.getConfig(SMonsterConfig.class).entrySet()){
@@ -64,44 +57,10 @@ public class MapStaticConfig extends AbstractClassStaticConfig {
}
- public Map getDifficultyMonster() {
- return difficultyMonster;
- }
-
- public Map getDifficultyReward() {
- return difficultyReward;
- }
public Map getMonsterMap() {
return monsterMap;
}
- public void setDifficult() throws Exception {
- SEndlessDifficulty baseDiff = STableManager.getConfig(SEndlessDifficulty.class).get(1);
- difficultyMonster = new HashMap<>();
- difficultyReward = new HashMap<>();
- ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
- if (serverConfigTmp.getWorldLevel() == 0) {
- for (int i = 0; i < baseDiff.getMonsterId().length; i++) {
- difficultyMonster.put(baseDiff.getMonsterId()[i], baseDiff.getMonsterId()[i]);
- }
- for (int i = 0; i < baseDiff.getRewardId().length; i++) {
- difficultyReward.put(baseDiff.getRewardId()[i], baseDiff.getRewardId()[i]);
- }
- } else {
- for (Map.Entry entry : STableManager.getConfig(SEndlessDifficulty.class).entrySet()) {
- if (serverConfigTmp.getWorldLevel() <= entry.getValue().getWorldLevel()[0] || serverConfigTmp.getWorldLevel() > entry.getValue().getWorldLevel()[1]) {
- continue;
- }
- for (int i = 0; i < baseDiff.getMonsterId().length; i++) {
- difficultyMonster.put(baseDiff.getMonsterId()[i], entry.getValue().getMonsterId()[i]);
- }
- for (int i = 0; i < baseDiff.getRewardId().length; i++) {
- difficultyReward.put(baseDiff.getRewardId()[i], entry.getValue().getRewardId()[i]);
- }
- break;
- }
- }
- }
}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java b/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java
index 23674a556..cfe7b8694 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/core/function/EndlessFunction.java
@@ -38,7 +38,6 @@ public class EndlessFunction implements FunctionManager {
int level = calWorldLevel();
MapLogic.getInstance().updateEndlessSeason(timeControllerOfFunction.getTimes());
serverConfigTmp.setWorldLevel(level);
- STableManager.getFigureConfig(MapStaticConfig.class).setDifficult();
MongoUtil.getLjsdMongoTemplate().save(serverConfigTmp);
MapLogic.getInstance().setEndlessMapId(GlobalDataManaager.getEndleeMapIdByLevel());
Map onlineUserMap = OnlineUserManager.sessionMap;
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java
index 392c040e4..566e54310 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java
@@ -188,6 +188,10 @@ public interface BIReason {
int CHAMPIION_BET_CONSUME = 1046; //巅峰赛竞猜消耗
+ int MISSING_ROOM_REFRESH_CONSUME = 1047;//迷宫寻宝刷新消耗
+
+ int MISSING_ROOM_SEND_CONSUME = 1048;//迷宫寻宝派遣消耗
+
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 62717c861..7ffb3f24c 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
@@ -6,6 +6,7 @@ import com.ljsd.jieling.config.clazzStaticCfg.MapStaticConfig;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.dataReport.reportBeans_37.ChatContentType;
+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.exception.ErrorCode;
@@ -55,6 +56,9 @@ public class MapLogic {
private Map baseBehaviorMap = new HashMap<>();
+ private Map difficultyMonster;
+ private Map difficultyReward;
+
private static int endlessSeason;
private static int endlessMapId;
@@ -62,11 +66,12 @@ public class MapLogic {
public static final int STAR_2 = 2; // 100% 探索度
public static final int STAR_3 = 3; // 复活次数少于N次
- public void init() {
+ public void init() throws Exception {
Map beansOfType = ConfigurableApplicationContextManager.getBeansOfType(BaseBehavior.class);
for (BaseBehavior baseBehavior : beansOfType.values()) {
baseBehaviorMap.put(baseBehavior.getBehaviorType(), baseBehavior);
}
+ setDifficult();
}
private MapLogic() {
@@ -1223,7 +1228,7 @@ public class MapLogic {
}
int groupId = option[0];
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4) {
- Integer newGroupId= STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().get(groupId);
+ Integer newGroupId= getDifficultyMonster().get(groupId);
if(newGroupId!=null){
groupId = newGroupId;
}
@@ -1402,8 +1407,8 @@ public class MapLogic {
String[] split = fightReady.split("#");
RedisUtil.getInstence().del(fightReadyKey);
groupId = Integer.parseInt(split[0]);
- if(STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().containsKey(groupId)){
- groupId = STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().get(groupId);
+ if(getDifficultyMonster().containsKey(groupId)){
+ groupId = getDifficultyMonster().get(groupId);
}
if (split.length > 1) {
pointId = split[1];
@@ -1416,8 +1421,8 @@ public class MapLogic {
}
groupId = option[0];
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4) {
- if(STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().containsKey(groupId)){
- groupId = STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().get(groupId);
+ if(getDifficultyMonster().containsKey(groupId)){
+ groupId = getDifficultyMonster().get(groupId);
}
}
}
@@ -3155,8 +3160,9 @@ public class MapLogic {
* 无尽副本设置当前mapId
* @param endlessMapId
*/
- public static void setEndlessMapId(int endlessMapId) {
+ public static void setEndlessMapId(int endlessMapId) throws Exception {
MapLogic.endlessMapId = endlessMapId;
+ getInstance().setDifficult();
}
public static int getEndlessMapId() {
@@ -3300,7 +3306,43 @@ public class MapLogic {
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
+ public void setDifficult() throws Exception {
+ SEndlessDifficulty baseDiff = STableManager.getConfig(SEndlessDifficulty.class).get(1);
+ difficultyMonster = new HashMap<>();
+ difficultyReward = new HashMap<>();
+ ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
+ if (serverConfigTmp.getWorldLevel() == 0) {
+ for (int i = 0; i < baseDiff.getMonsterId().length; i++) {
+ difficultyMonster.put(baseDiff.getMonsterId()[i], baseDiff.getMonsterId()[i]);
+ }
+ for (int i = 0; i < baseDiff.getRewardId().length; i++) {
+ difficultyReward.put(baseDiff.getRewardId()[i], baseDiff.getRewardId()[i]);
+ }
+ } else {
+ for (Map.Entry entry : STableManager.getConfig(SEndlessDifficulty.class).entrySet()) {
+ if (serverConfigTmp.getWorldLevel() <= entry.getValue().getWorldLevel()[0] || serverConfigTmp.getWorldLevel() > entry.getValue().getWorldLevel()[1]) {
+ continue;
+ }
+ for (int i = 0; i < baseDiff.getMonsterId().length; i++) {
+ difficultyMonster.put(baseDiff.getMonsterId()[i], entry.getValue().getMonsterId()[i]);
+ }
+ for (int i = 0; i < baseDiff.getRewardId().length; i++) {
+ difficultyReward.put(baseDiff.getRewardId()[i], entry.getValue().getRewardId()[i]);
+ }
+
+ break;
+ }
+ }
+ }
public static int getEndlessSeason() {
return endlessSeason;
}
+
+ public Map getDifficultyMonster() {
+ return difficultyMonster;
+ }
+
+ public Map getDifficultyReward() {
+ return difficultyReward;
+ }
}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomAccelerateHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomAccelerateHandler.java
new file mode 100644
index 000000000..0f1fd50fa
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomAccelerateHandler.java
@@ -0,0 +1,26 @@
+package com.ljsd.jieling.handler.missingRoom;
+
+import com.ljsd.jieling.handler.BaseHandler;
+import com.ljsd.jieling.logic.mission.MissionLoigc;
+import com.ljsd.jieling.network.session.ISession;
+import com.ljsd.jieling.protocols.MessageTypeProto;
+import com.ljsd.jieling.protocols.PlayerInfoProto;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lvxinran
+ * @date 2019/12/13
+ * @discribe
+ */
+@Component
+public class MissingRoomAccelerateHandler extends BaseHandler {
+ @Override
+ public MessageTypeProto.MessageType getMessageCode() {
+ return MessageTypeProto.MessageType.MISSING_ROOM_MISSION_ACCELERATE_REQUEST;
+ }
+
+ @Override
+ public void processWithProto(ISession iSession, PlayerInfoProto.MissingRoomAccelerateRequest proto) throws Exception {
+ MissionLoigc.missingRoomAccelerate(iSession,proto.getMissionId(),MessageTypeProto.MessageType.MISSING_ROOM_MISSION_ACCELERATE_RESPONSE);
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomRefreshHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomRefreshHandler.java
new file mode 100644
index 000000000..f618b8466
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomRefreshHandler.java
@@ -0,0 +1,41 @@
+package com.ljsd.jieling.handler.missingRoom;
+
+import com.ljsd.jieling.handler.BaseHandler;
+import com.ljsd.jieling.logic.dao.UserManager;
+import com.ljsd.jieling.logic.dao.root.User;
+import com.ljsd.jieling.logic.mission.GameEvent;
+import com.ljsd.jieling.logic.mission.MissionLoigc;
+import com.ljsd.jieling.netty.cocdex.PacketNetData;
+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.util.MessageUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author lvxinran
+ * @date 2019/12/12
+ * @discribe
+ */
+@Component
+public class MissingRoomRefreshHandler extends BaseHandler {
+
+ @Override
+ public MessageTypeProto.MessageType getMessageCode() {
+ return MessageTypeProto.MessageType.MISSING_ROOM_MISSION_REFRESH_REQUEST;
+ }
+
+ @Override
+ public void process(ISession iSession, PacketNetData netData) throws Exception {
+ User user = UserManager.getUser(iSession.getUid());
+ user.getUserMissionManager().onGameEvent(user, GameEvent.MISSING_ROOM_REFRESH,1);
+ List userMissionInfos = new ArrayList<>();
+ MissionLoigc.getMissingRoomMission(user,userMissionInfos);
+ PlayerInfoProto.MissingRoomRefreshResponse response = PlayerInfoProto.MissingRoomRefreshResponse.newBuilder().addAllInfos(userMissionInfos).build();
+ MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.MISSING_ROOM_MISSION_REFRESH_RESPONSE_VALUE,response,true);
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomSendHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomSendHandler.java
new file mode 100644
index 000000000..078117d15
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/missingRoom/MissingRoomSendHandler.java
@@ -0,0 +1,26 @@
+package com.ljsd.jieling.handler.missingRoom;
+
+import com.ljsd.jieling.handler.BaseHandler;
+import com.ljsd.jieling.logic.mission.MissionLoigc;
+import com.ljsd.jieling.network.session.ISession;
+import com.ljsd.jieling.protocols.MessageTypeProto;
+import com.ljsd.jieling.protocols.PlayerInfoProto;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lvxinran
+ * @date 2019/12/12
+ * @discribe
+ */
+@Component
+public class MissingRoomSendHandler extends BaseHandler {
+ @Override
+ public MessageTypeProto.MessageType getMessageCode() {
+ return MessageTypeProto.MessageType.MISSING_ROOM_HERO_SEND_REQUEST;
+ }
+
+ @Override
+ public void processWithProto(ISession iSession, PlayerInfoProto.MissingRoomSendHeroRequest proto) throws Exception {
+ MissionLoigc.missingRoomSendHero(iSession,proto.getHeroIdsList(),proto.getMissionId(), MessageTypeProto.MessageType.MISSING_ROOM_HERO_SEND_RESPONSE);
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java
index c2e639b26..260cfe543 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java
@@ -34,7 +34,7 @@ public class VipTakeDailyHandler extends BaseHandler> missionTypeEnumListMap, Object... parm){
+ public void openMission(User user,GameEvent event,Map> missionTypeEnumListMap, Object... parm) throws Exception {
ISession session= OnlineUserManager.getSessionByUid(user.getId());
switch (event){
case VIP_LEVLUP:{
@@ -157,6 +157,38 @@ public class UserMissionManager extends MongoBase {
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
break;
+ case MISSING_ROOM_REFRESH:
+ if((int)parm[0]==1){
+ boolean result;
+ SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSettingMap.get(1);
+ result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
+ if(!result){
+ result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
+ if(!result){
+ int[][] cost = sMazeTreasureSetting.getCost();
+ int count = (int)MathUtils.calABX(missingRoomMissionType.getCoinRefreshCount(), cost[1]);
+ result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
+
+ }
+ }
+ if(!result){
+ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
+ }
+ missingRoomMissionType.getDoingMissionIds().clear();
+ }
+ int[][] missingRoomMission = new int[SMazeTreasure.sMazeTreasureMap.size()][];
+ for(Map.Entry entry:SMazeTreasure.sMazeTreasureMap.entrySet()){
+ int[] refreshWeight = new int[2];
+ refreshWeight[0] = entry.getKey();
+ refreshWeight[1] = entry.getValue().getTaskRefreshProbability();
+ missingRoomMission[entry.getKey()-1] =refreshWeight;
+ }
+ int[] missions = MathUtils.randomFromWeightWithTaking(missingRoomMission, 6);
+ for(int mission:missions){
+ missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
+ }
+ updateString("missingRoomMissionType",missingRoomMissionType);
+ break;
}
}
@@ -203,6 +235,13 @@ public class UserMissionManager extends MongoBase {
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
}
break;
+ case MISSING_ROOM_MISSION_REWARD:{
+ missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
+ updateString("missingRoomMissionType",missingRoomMissionType);
+ }
+ break;
+ default:
+ break;
}
}
@@ -413,4 +452,8 @@ public class UserMissionManager extends MongoBase {
public CumulationData getTreasureMonthCumulationData() {
return treasureMonthCumulationData;
}
+
+ public MissingRoomMissionType getMissingRoomMissionType() {
+ return missingRoomMissionType;
+ }
}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java
index c68e4a529..b5c6dfd04 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java
@@ -8,6 +8,7 @@ public enum GameEvent {
TREASH_WEEK_REFRESH,//孙龙的宝藏周任务
TREASH_MONTH_REFRESH,//孙龙的宝藏月任务
SERVENHAPPY_REFRESH,//七日狂欢
+ MISSING_ROOM_REFRESH,//迷宫寻宝刷新
BEGINNER,//新手
RANDOM_HERO,// 抽卡
@@ -31,6 +32,7 @@ public enum GameEvent {
BLOODY_MISSION_REWARD, //血战任务领取
TREASURE_MISSION_REWARD,// 领取孙龙的宝藏
SEVENHAPPY_MISSION_REWARD,// 领取孙龙的宝藏
+ MISSING_ROOM_MISSION_REWARD,//迷宫寻宝领奖
WORKSHOP_CREATE_EQUIP,//打造装备
ADVENTURE_TAKEREWARD, //收取秘境奖励
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameMisionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameMisionType.java
index a4f2288cd..2b26bc20d 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameMisionType.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameMisionType.java
@@ -8,6 +8,7 @@ public enum GameMisionType {
SEVENMISSION(5),
BEGINNERMISSION(6),
BLOODYMISSION(7),
+ MISSINGROOMMISSION(8),
;
private int type;
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java
index f8a9ff42d..6751d3d20 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java
@@ -43,6 +43,7 @@ public class MissionLoigc {
getTreasureMission(user,missionList,ActivityType.SERVERHAPPY);
getBeginnerMisssion(user,missionList);
getBloodyMisison(user,missionList);
+ getMissingRoomMission(user,missionList);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
}
@@ -285,6 +286,24 @@ public class MissionLoigc {
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(vipmissionType).setProgress(progrss).build());
}
}
+ public static void getMissingRoomMission(User user ,List missionList){
+ UserMissionManager userMissionManager = user.getUserMissionManager();
+ MissingRoomMissionType missingRoomMissionType = userMissionManager.getMissingRoomMissionType();
+ for(Integer missionId:missingRoomMissionType.getDoingMissionIds()){
+ CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
+ info.setMissionId(missionId).setState(0)
+ .setType(GameMisionType.MISSINGROOMMISSION.getType());
+ missionList.add(info.build());
+ }
+ for(Integer missionId:missingRoomMissionType.getFinishMissionIds()){
+ CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
+ int missingTime = missingRoomMissionType.getMissingTime(missionId);
+ info.setMissionId(missionId).setState(missingTime>0?0:missingTime==0?1:2)
+ .setType(GameMisionType.MISSINGROOMMISSION.getType())
+ .setProgress(missingTime).addAllHeroId(missingRoomMissionType.getHerosInfo(missionId));
+ missionList.add(info.build());
+ }
+ }
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
int uid = session.getUid();
@@ -366,6 +385,10 @@ public class MissionLoigc {
Map> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
}
+ if(type==GameMisionType.MISSINGROOMMISSION.getType()){
+ Map> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId);
+ missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
+ }
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
@@ -665,7 +688,26 @@ public class MissionLoigc {
}
return count;
}
-
+ public static void missingRoomSendHero(ISession session, List hero,int missionId, MessageTypeProto.MessageType messageType) throws Exception {
+ User user = UserManager.getUser(session.getUid());
+ MissingRoomMissionType missingRoomMissionType = user.getUserMissionManager().getMissingRoomMissionType();
+ missingRoomMissionType.heroSend(user,hero,missionId);
+ user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
+ MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
+ }
+ //迷宫寻宝加速
+ public static void missingRoomAccelerate(ISession session,int missionId, MessageTypeProto.MessageType messageType) throws Exception {
+ User user = UserManager.getUser(session.getUid());
+ MissingRoomMissionType missingRoomMissionType = user.getUserMissionManager().getMissingRoomMissionType();
+ Set finishMissionIds = missingRoomMissionType.getFinishMissionIds();
+ if(finishMissionIds.contains(missionId)){
+ missingRoomMissionType.setMissingTime(missionId,0);
+ }else {
+ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
+ }
+ user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
+ MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
+ }
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java
index 5c18a0ebd..24d4227a9 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java
@@ -37,6 +37,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new TreasureRefreshEventProcess());
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess());
eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor());
+ eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new DailyRefreshEventProcess());
List typeList = new ArrayList<>();
typeList.add(MissionType.RECRUITMENT_RANDOM_HEROES);
@@ -175,6 +176,8 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.SEVENHAPPY_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.BEGINNER_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.BLOODY_MISSION_REWARD,new RewardEventProcessor());
+ eventProcessor.put(GameEvent.MISSING_ROOM_MISSION_REWARD,new RewardEventProcessor());
+
typeList = new ArrayList<>();
typeList.add(MissionType.RING_FIREA_DVANCED);
@@ -306,6 +309,8 @@ public class MissionEventDistributor {
missionTypeEnumListMap.put(GameMisionType.SEVENMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.BEGINNERMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.BLOODYMISSION, new ArrayList<>());
+ missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>());
+
} else {
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).clear();
@@ -314,6 +319,8 @@ public class MissionEventDistributor {
missionTypeEnumListMap.get(GameMisionType.SEVENMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.BEGINNERMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.BLOODYMISSION).clear();
+ missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear();
+
}
threadMissionChangeList.set(missionTypeEnumListMap);
}
@@ -334,7 +341,6 @@ public class MissionEventDistributor {
if(builder.getUserMissionInfoCount()>0){
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.MISSION_UPDATE_INDICATION_VALUE,builder.build(),true);
}
-
}
}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java
new file mode 100644
index 000000000..bef24d9bb
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/MissingRoomMissionType.java
@@ -0,0 +1,135 @@
+package com.ljsd.jieling.logic.mission.main;
+
+import com.ljsd.jieling.exception.ErrorCode;
+import com.ljsd.jieling.exception.ErrorCodeException;
+import com.ljsd.jieling.globals.BIReason;
+import com.ljsd.jieling.logic.dao.CumulationData;
+import com.ljsd.jieling.logic.dao.Hero;
+import com.ljsd.jieling.logic.dao.root.User;
+import com.ljsd.jieling.logic.mission.MissionState;
+import com.ljsd.jieling.util.ItemUtil;
+import config.SCHero;
+import config.SMazeTreasure;
+import util.TimeUtils;
+
+import java.util.*;
+
+/**
+ * @author lvxinran
+ * @date 2019/12/14
+ * @discribe
+ */
+public class MissingRoomMissionType extends AbstractMissionType{
+ private Map missingTime = new HashMap<>();
+ private Map> heroesInfo = new HashMap<>();
+ private int missionIndex;
+ private int coinRefreshCount;
+
+ @Override
+ public void openMission(User user, int missionId, List missionTypeEnumList) {
+
+
+
+
+
+ }
+
+ @Override
+ public int[][] reward(int missionId) {
+ int realId = missionId % 10000;
+ return SMazeTreasure.sMazeTreasureMap.get(realId).getReward();
+ }
+
+ @Override
+ public void rewardMission(int missionId, List missionTypeEnumListMap) {
+
+ if(!missingTime.containsKey(missionId)||!getFinishMissionIds().contains(missionId)){
+ return;
+ }
+ if(missingTime.get(missionId)!=0&&missingTime.get(missionId)>TimeUtils.now()/1000){
+ return;
+ }
+ missingTime.put(missionId,-1);
+ MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD, reward(missionId));
+ missionTypeEnumListMap.add(stateChangeInfo);
+ }
+
+ @Override
+ public void calCumulationDataResult(User user, CumulationData.Result result, List missionStateChangeInfos, CumulationData cumulationData) {
+
+ }
+
+ public void heroSend(User user ,List heroes,int missionId) throws Exception {
+ if(!getDoingMissionIds().contains(missionId)){
+ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
+ }
+ Set sentHeroes = new HashSet<>();
+ for(List heroesList:heroesInfo.values()){
+ sentHeroes.addAll(heroesList);
+ }
+ for(String hero:heroes){
+ if(sentHeroes.contains(hero)){
+ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
+ }
+ }
+ int realId = missionId%10000;
+ SMazeTreasure sMazeTreasure = SMazeTreasure.sMazeTreasureMap.get(realId);
+ if(heroes.size()>sMazeTreasure.getNeedCard()){
+ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
+ }
+ int[][] condition = sMazeTreasure.getCondition();
+ int star = 0;
+ int type = 0;
+ for(int[] cond:condition) {
+ if(cond[0]==1){
+ star = cond[1];
+ }else if(cond[0]==2){
+ type = type | (1<=star){
+ star = 0;
+ }
+ int propertyName = SCHero.getsCHero().get(hero.getTemplateId()).getPropertyName();
+ int propValue = 1<<(propertyName-1);
+ type = (type |propValue) ^ propValue;
+ }
+ if(star!=0||type!=0){
+ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
+ }
+ boolean itemCost = ItemUtil.itemCost(user, new int[][]{sMazeTreasure.getTakeItem()}, BIReason.MISSING_ROOM_SEND_CONSUME, 1);
+ if(!itemCost){
+ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
+ }
+ getDoingMissionIds().remove(missionId);
+ getFinishMissionIds().add(missionId);
+ missingTime.put(missionId, (int)(TimeUtils.now()/1000)+sMazeTreasure.getWasteTime());
+ heroesInfo.put(missionId,heroes);
+ }
+
+ public int getMissingTime(int missionId) {
+ return missingTime.get(missionId);
+ }
+ public void setMissingTime(int missionId,int time){
+ missingTime.put(missionId,time);
+ }
+
+ public List getHerosInfo(int missionId) {
+ return heroesInfo.get(missionId);
+ }
+
+ public int getMissionIndex() {
+ missionIndex++;
+ return missionIndex;
+ }
+
+ public int getCoinRefreshCount() {
+ return coinRefreshCount;
+ }
+
+ public void setCoinRefreshCount(int coinRefreshCount) {
+ this.coinRefreshCount = coinRefreshCount;
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java
index b80a4592d..61eb72c88 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java
@@ -9,6 +9,7 @@ import com.ljsd.jieling.dataReport.reportBeans_37.Repot37EventUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.globals.GlobalItemType;
+import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TemporaryItems;
import com.ljsd.jieling.ktbeans.KtEventUtils;
@@ -160,8 +161,8 @@ public class ItemUtil {
private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap) {
for (int dropGroupId : dropGroupIds) {
- if(STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyReward().containsKey(dropGroupId)){
- dropGroupId =STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyReward().get(dropGroupId);
+ if(MapLogic.getInstance().getDifficultyReward().containsKey(dropGroupId)){
+ dropGroupId =MapLogic.getInstance().getDifficultyReward().get(dropGroupId);
}
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null) {
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java
index af0c628ea..906f58db8 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java
@@ -3,6 +3,7 @@ package com.ljsd.jieling.util;
import com.ljsd.jieling.config.clazzStaticCfg.MapStaticConfig;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
+import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.protocols.CommonProto;
import config.SMonsterConfig;
import config.SMonsterGroup;
@@ -89,8 +90,8 @@ public class MonsterUtil {
Map integerSMonsterConfigMap = STableManager.getConfig(SMonsterConfig.class);
int maxForce = 0;
for(int i = 0 ; i < groupIds.length;i++){
- if(STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().containsKey(groupIds[i])){
- groupIds[i]= STableManager.getFigureConfig(MapStaticConfig.class).getDifficultyMonster().get(groupIds[i]);
+ if(MapLogic.getInstance().getDifficultyMonster().containsKey(groupIds[i])){
+ groupIds[i]= MapLogic.getInstance().getDifficultyMonster().get(groupIds[i]);
}
SMonsterGroup sMonsterGroup = integerSMonsterGroupMap.get(groupIds[i]);
int[][] contents = sMonsterGroup.getContents();
diff --git a/tablemanager/src/main/java/config/SMazeTreasure.java b/tablemanager/src/main/java/config/SMazeTreasure.java
new file mode 100644
index 000000000..344fa3ab5
--- /dev/null
+++ b/tablemanager/src/main/java/config/SMazeTreasure.java
@@ -0,0 +1,75 @@
+package config;
+
+import manager.STableManager;
+import manager.Table;
+
+import java.util.Map;
+
+
+@Table(name ="MazeTreasure")
+public class SMazeTreasure implements BaseConfig {
+
+ private int id;
+
+ private int taskType;
+
+ private int taskRefreshProbability;
+
+ private int[] takeItem;
+
+ private int wasteTime;
+
+ private int[] speedUpTake;
+
+ private int[][] reward;
+
+ private int[][] condition;
+
+ private int needCard;
+
+ public static Map sMazeTreasureMap;
+
+ @Override
+ public void init() throws Exception {
+ sMazeTreasureMap = STableManager.getConfig(SMazeTreasure.class);
+ }
+
+
+ public int getId() {
+ return id;
+ }
+
+ public int getTaskType() {
+ return taskType;
+ }
+
+ public int getTaskRefreshProbability() {
+ return taskRefreshProbability;
+ }
+
+ public int[] getTakeItem() {
+ return takeItem;
+ }
+
+ public int getWasteTime() {
+ return wasteTime;
+ }
+
+ public int[] getSpeedUpTake() {
+ return speedUpTake;
+ }
+
+ public int[][] getReward() {
+ return reward;
+ }
+
+ public int[][] getCondition() {
+ return condition;
+ }
+
+ public int getNeedCard() {
+ return needCard;
+ }
+
+
+}
\ No newline at end of file
diff --git a/tablemanager/src/main/java/config/SMazeTreasureSetting.java b/tablemanager/src/main/java/config/SMazeTreasureSetting.java
new file mode 100644
index 000000000..3642843bb
--- /dev/null
+++ b/tablemanager/src/main/java/config/SMazeTreasureSetting.java
@@ -0,0 +1,68 @@
+package config;
+
+import manager.STableManager;
+import manager.Table;
+
+import java.util.Map;
+
+
+@Table(name ="MazeTreasureSetting")
+public class SMazeTreasureSetting implements BaseConfig {
+
+ private int refreshType;
+
+ private int needItem;
+
+ private int refreshNum;
+
+ private int[] takeOrder;
+
+ private int[] refreshItem;
+
+ private int[][] cost;
+
+ private int[][] refreshHighTypeNum;
+
+ private int[][] dailyPrivilege;
+
+ public static Map sMazeTreasureSettingMap;
+
+
+ @Override
+ public void init() throws Exception {
+ sMazeTreasureSettingMap = STableManager.getConfig(SMazeTreasureSetting.class);
+ }
+
+
+ public int getRefreshType() {
+ return refreshType;
+ }
+
+ public int getNeedItem() {
+ return needItem;
+ }
+
+ public int getRefreshNum() {
+ return refreshNum;
+ }
+
+ public int[] getRefreshItem() {
+ return refreshItem;
+ }
+
+ public int[][] getCost() {
+ return cost;
+ }
+
+ public int[][] getRefreshHighTypeNum() {
+ return refreshHighTypeNum;
+ }
+
+ public int[][] getDailyPrivilege() {
+ return dailyPrivilege;
+ }
+
+ public int[] getTakeOrder() {
+ return takeOrder;
+ }
+}
\ No newline at end of file