Merge branch 'master' of 60.1.1.230:backend/jieling_server
commit
456d88c346
|
|
@ -29,6 +29,8 @@ import java.util.concurrent.TimeUnit;
|
|||
* <p>
|
||||
* <p>
|
||||
* 1 netty 回调channel回来加连接限制
|
||||
*
|
||||
* 外观模式 控制类
|
||||
*/
|
||||
public class NettyGameServer extends AbstractServer {
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -188,6 +188,10 @@ public interface BIReason {
|
|||
|
||||
int CHAMPIION_BET_CONSUME = 1046; //巅峰赛竞猜消耗
|
||||
|
||||
int MISSING_ROOM_REFRESH_CONSUME = 1047;//迷宫寻宝刷新消耗
|
||||
|
||||
int MISSING_ROOM_SEND_CONSUME = 1048;//迷宫寻宝派遣消耗
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<CommonProto.UserMissionInfo> 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<PlayerInfoProto.MissingRoomSendHeroRequest> {
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
|
@ -34,7 +34,7 @@ public class VipTakeDailyHandler extends BaseHandler<PlayerInfoProto.VipTakeDily
|
|||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||
}
|
||||
|
||||
if(playerInfoManager.getRechargeInfo().getBuyGoodsTimes().containsKey(GiftGoodsType.LUXURYMONTHCARD)){
|
||||
if(!playerInfoManager.getRechargeInfo().getBuyGoodsTimes().containsKey(GiftGoodsType.LUXURYMONTHCARD)){
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("未激活豪华月卡"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ public class UserManager {
|
|||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,0,1);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.MISSING_ROOM_REFRESH,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER);
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1));
|
||||
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.dao;
|
|||
|
||||
import com.ljsd.common.mogodb.MongoBase;
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
|
|
@ -20,10 +22,7 @@ import config.*;
|
|||
import manager.STableManager;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class UserMissionManager extends MongoBase {
|
||||
|
|
@ -34,6 +33,7 @@ public class UserMissionManager extends MongoBase {
|
|||
private TreasureMissionType treasureMissionIdsType=new TreasureMissionType();
|
||||
private ServenMissionIdsType sevenHappyMissionType =new ServenMissionIdsType();
|
||||
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
|
||||
//数据累加项
|
||||
private CumulationData cumulationData = new CumulationData();
|
||||
private CumulationData dailyCumulationData = new CumulationData();
|
||||
|
|
@ -44,7 +44,7 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData treasureMonthCumulationData = new CumulationData();
|
||||
private CumulationData sevenHappyCumulationData = new CumulationData();
|
||||
|
||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
|
||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> 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<Integer,SMazeTreasure> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, //收取秘境奖励
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ public enum GameMisionType {
|
|||
SEVENMISSION(5),
|
||||
BEGINNERMISSION(6),
|
||||
BLOODYMISSION(7),
|
||||
MISSINGROOMMISSION(8),
|
||||
;
|
||||
private int type;
|
||||
|
||||
|
|
|
|||
|
|
@ -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<CommonProto.UserMissionInfo> 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<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
|
||||
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()){
|
||||
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<String> 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<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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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<MissionType> 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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Integer,Integer> missingTime = new HashMap<>();
|
||||
private Map<Integer,List<String>> heroesInfo = new HashMap<>();
|
||||
private int missionIndex;
|
||||
private int coinRefreshCount;
|
||||
|
||||
@Override
|
||||
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] reward(int missionId) {
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) {
|
||||
|
||||
}
|
||||
|
||||
public void heroSend(User user ,List<String> heroes,int missionId) throws Exception {
|
||||
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(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<<cond[1]-1);
|
||||
}
|
||||
}
|
||||
for(String heroId:heroes){
|
||||
Hero hero = user.getHeroManager().getHero(heroId);
|
||||
if(star!=0&&hero.getStar()>=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<String> 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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<Integer,SMazeTreasure> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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<Integer,SMazeTreasureSetting> 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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue