无尽等级修改,迷宫寻宝派遣加速

back_recharge
lvxinran 2019-12-13 18:02:56 +08:00
parent 8e38757d85
commit 19944b9009
10 changed files with 126 additions and 68 deletions

View File

@ -23,8 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
public class MapStaticConfig extends AbstractClassStaticConfig {
private Map<Integer, Integer> difficultyMonster;
private Map<Integer, Integer> difficultyReward;
private Map<Integer, CommonProto.FightUnitInfo> 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<Integer, CommonProto.FightUnitInfo> monsterMapVo = new ConcurrentHashMap<>();
for (Map.Entry<Integer,SMonsterConfig> entry : STableManager.getConfig(SMonsterConfig.class).entrySet()){
@ -64,44 +57,10 @@ public class MapStaticConfig extends AbstractClassStaticConfig {
}
public Map<Integer, Integer> getDifficultyMonster() {
return difficultyMonster;
}
public Map<Integer, Integer> getDifficultyReward() {
return difficultyReward;
}
public Map<Integer, CommonProto.FightUnitInfo> 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<Integer, SEndlessDifficulty> 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;
}
}
}
}

View File

@ -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<Integer, ISession> onlineUserMap = OnlineUserManager.sessionMap;

View File

@ -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<Integer, BaseBehavior> baseBehaviorMap = new HashMap<>();
private Map<Integer, Integer> difficultyMonster;
private Map<Integer, Integer> 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<String, BaseBehavior> 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<Integer, SEndlessDifficulty> 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<Integer, Integer> getDifficultyMonster() {
return difficultyMonster;
}
public Map<Integer, Integer> getDifficultyReward() {
return difficultyReward;
}
}

View File

@ -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<PlayerInfoProto.MissingRoomAccelerateRequest> {
@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);
}
}

View File

@ -237,6 +237,7 @@ public class UserMissionManager extends MongoBase {
break;
case MISSING_ROOM_MISSION_REWARD:{
missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
updateString("missingRoomMissionType",missingRoomMissionType);
}
break;
default:

View File

@ -298,9 +298,9 @@ public class MissionLoigc {
for(Integer missionId:missingRoomMissionType.getFinishMissionIds()){
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
int missingTime = missingRoomMissionType.getMissingTime(missionId);
info.setMissionId(missionId).setState(missingTime>0?1:2)
info.setMissionId(missionId).setState(missingTime>0?0:missingTime==0?1:2)
.setType(GameMisionType.MISSINGROOMMISSION.getType())
.setProgress(missingTime).addAllHeroId(missingRoomMissionType.getHerosInfo());
.setProgress(missingTime).addAllHeroId(missingRoomMissionType.getHerosInfo(missionId));
missionList.add(info.build());
}
}
@ -386,7 +386,8 @@ public class MissionLoigc {
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
}
if(type==GameMisionType.MISSINGROOMMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
}
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
@ -691,6 +692,20 @@ public class MissionLoigc {
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<Integer> 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);
}

View File

@ -176,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);

View File

@ -12,10 +12,7 @@ import config.SCHero;
import config.SMazeTreasure;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author lvxinran
@ -24,7 +21,7 @@ import java.util.Map;
*/
public class MissingRoomMissionType extends AbstractMissionType{
private Map<Integer,Integer> missingTime = new HashMap<>();
private List<String> herosInfo = new ArrayList<>();
private Map<Integer,List<String>> heroesInfo = new HashMap<>();
private int missionIndex;
private int coinRefreshCount;
@ -39,11 +36,20 @@ public class MissingRoomMissionType extends AbstractMissionType{
@Override
public int[][] reward(int missionId) {
return new int[0][];
int realId = missionId % 10000;
return SMazeTreasure.sMazeTreasureMap.get(realId).getReward();
}
@Override
public void rewardMission(int missionId, List<MissionStateChangeInfo> 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);
}
@ -57,8 +63,12 @@ public class MissingRoomMissionType extends AbstractMissionType{
if(!getDoingMissionIds().contains(missionId)){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
Set<String> sentHeroes = new HashSet<>();
for(List<String> heroesList:heroesInfo.values()){
sentHeroes.addAll(heroesList);
}
for(String hero:heroes){
if(herosInfo.contains(hero)){
if(sentHeroes.contains(hero)){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
@ -96,16 +106,18 @@ public class MissingRoomMissionType extends AbstractMissionType{
getDoingMissionIds().remove(missionId);
getFinishMissionIds().add(missionId);
missingTime.put(missionId, (int)(TimeUtils.now()/1000)+sMazeTreasure.getWasteTime());
herosInfo.addAll(heroes);
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<String> getHerosInfo() {
return herosInfo;
public List<String> getHerosInfo(int missionId) {
return heroesInfo.get(missionId);
}
public int getMissionIndex() {

View File

@ -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<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> 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) {

View File

@ -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<Integer, SMonsterConfig> 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();