1.6版本优化,初版,待测试
parent
b37c3146c9
commit
fc05c6a1cb
|
|
@ -145,13 +145,14 @@ public class RedisUtil {
|
||||||
String oldName = key[i];
|
String oldName = key[i];
|
||||||
// 新名字
|
// 新名字
|
||||||
String newName = oldName+"BACK:"+System.currentTimeMillis();
|
String newName = oldName+"BACK:"+System.currentTimeMillis();
|
||||||
// 重命名
|
// key是否存在
|
||||||
if(get(oldName)==null){
|
boolean aBoolean = hasKey(oldName);
|
||||||
continue;
|
if (aBoolean){
|
||||||
|
// 重命名
|
||||||
|
redisTemplate.rename(oldName,newName);
|
||||||
|
// 设置过期时间
|
||||||
|
expire(newName,60*60*24-60);
|
||||||
}
|
}
|
||||||
redisTemplate.rename(oldName,newName);
|
|
||||||
// 设置过期时间
|
|
||||||
expire(newName,60*60*24-60);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,8 @@ public enum ErrorCode implements IErrorCode {
|
||||||
|
|
||||||
BAG_FULL(135,"背包内存储空间不足,无法领取附件"),
|
BAG_FULL(135,"背包内存储空间不足,无法领取附件"),
|
||||||
|
|
||||||
|
LOCK_FILL(138,"锁定数量已满,无法刷新"),
|
||||||
|
|
||||||
;
|
;
|
||||||
private static final Set<Integer> CodeSet = new HashSet<>();
|
private static final Set<Integer> CodeSet = new HashSet<>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2810,6 +2810,28 @@ public class MapLogic {
|
||||||
this.endlessSeason = season;
|
this.endlessSeason = season;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理无尽副本道具
|
||||||
|
* @param session
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void clearEndLessDrop(int uid) throws Exception {
|
||||||
|
User user = UserManager.getUser(uid);
|
||||||
|
// 根据功能类型获取需要清理的道具列表
|
||||||
|
List<SItem> itemList = SItem.getItemMapByRecycle().get(FunctionIdEnum.Endless.getFunctionType());
|
||||||
|
if (!itemList.isEmpty()){
|
||||||
|
for (SItem item:itemList){
|
||||||
|
// 获取玩家背包道具并消耗
|
||||||
|
Item item1 = user.getItemManager().getItem(item.getId());
|
||||||
|
if(item1!=null){
|
||||||
|
int[][] cost= new int[1][];
|
||||||
|
cost[0] = new int[]{item1.getItemId(),item1.getItemNum()};
|
||||||
|
ItemUtil.itemCost(user,cost,BIReason.ENDLESS_REASON_CHANGE,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 无尽副本设置当前mapId
|
* 无尽副本设置当前mapId
|
||||||
* @param endlessMapId
|
* @param endlessMapId
|
||||||
|
|
@ -2908,6 +2930,8 @@ public class MapLogic {
|
||||||
|
|
||||||
for(Map.Entry<Integer, ISession> entry:onlineUserMap.entrySet()){
|
for(Map.Entry<Integer, ISession> entry:onlineUserMap.entrySet()){
|
||||||
endLessClear(entry.getValue());
|
endLessClear(entry.getValue());
|
||||||
|
// 清理无尽副本道具
|
||||||
|
clearEndLessDrop(entry.getValue().getUid());
|
||||||
}
|
}
|
||||||
updateEndlessSeason(0);
|
updateEndlessSeason(0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,8 @@ public class EndlessMap extends AbstractMap{
|
||||||
mapManager.endlessWalkCellSave(new HashSet<>());
|
mapManager.endlessWalkCellSave(new HashSet<>());
|
||||||
mapManager.endlessMapInfoSave(new HashMap<>());
|
mapManager.endlessMapInfoSave(new HashMap<>());
|
||||||
//清除当前副本信息
|
//清除当前副本信息
|
||||||
|
// 清理无尽副本道具
|
||||||
|
MapLogic.getInstance().clearEndLessDrop(uid);
|
||||||
//新创建地图
|
//新创建地图
|
||||||
mapManager.setCurMapType(type);
|
mapManager.setCurMapType(type);
|
||||||
// enterNewMap(user,4001,GlobalsDef.ENDLESS_TEAM,mapEnterResponse);
|
// enterNewMap(user,4001,GlobalsDef.ENDLESS_TEAM,mapEnterResponse);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
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 org.springframework.stereotype.Component;
|
||||||
|
import rpc.protocols.MessageTypeProto;
|
||||||
|
import rpc.protocols.PlayerInfoProto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 天宫探险上锁
|
||||||
|
* @author hj
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class MissingRoomLockHandler extends BaseHandler<PlayerInfoProto.MissingRoomLockRequest> {
|
||||||
|
@Override
|
||||||
|
public MessageTypeProto.MessageType getMessageCode() {
|
||||||
|
return MessageTypeProto.MessageType.MISSING_ROOM_LOCK_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processWithProto(ISession iSession, PlayerInfoProto.MissingRoomLockRequest proto) throws Exception {
|
||||||
|
MissionLoigc.missiongRoomLock(iSession,proto.getMissionId(),proto.getLock(),MessageTypeProto.MessageType.MISSING_ROOM_LOCK_RESPONSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 天宫寻宝刷新
|
||||||
* @author lvxinran
|
* @author lvxinran
|
||||||
* @date 2019/12/12
|
* @date 2019/12/12
|
||||||
* @discribe
|
* @discribe
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,9 @@ import rpc.protocols.PlayerInfoProto;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 天宫寻宝探险
|
||||||
* @author lvxinran
|
* @author lvxinran
|
||||||
* @date 2019/12/12
|
* @date 2019/12/12MISSING_ROOM_HERO_SEND_REQUEST
|
||||||
* @discribe
|
* @discribe
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
|
|
|
||||||
|
|
@ -196,16 +196,24 @@ public class UserMissionManager extends MongoBase {
|
||||||
updateString("achievementMap",achievementMap);
|
updateString("achievementMap",achievementMap);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case MISSING_ROOM_REFRESH:
|
case MISSING_ROOM_REFRESH://天宫寻宝
|
||||||
Map<Integer,Integer> mustAppear = new HashMap<>();
|
Map<Integer,Integer> mustAppear = new HashMap<>();
|
||||||
List<Integer> mustMissions = new ArrayList<>();
|
List<Integer> mustMissions = new ArrayList<>();
|
||||||
|
List<Integer> lockMissions = new ArrayList<>();
|
||||||
if((int)parm[0]==1){
|
if((int)parm[0]==1){
|
||||||
//删除已经领取奖励的
|
//删除已经领取奖励的
|
||||||
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1);
|
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1);
|
||||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1);
|
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1);
|
||||||
boolean result;
|
|
||||||
|
// 任务全部锁定
|
||||||
|
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||||
|
if (lockMissionIds.size() >= 6){
|
||||||
|
throw new ErrorCodeException(ErrorCode.LOCK_FILL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读表
|
||||||
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
|
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
|
||||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||||
if(!result){
|
if(!result){
|
||||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||||
if(!result){
|
if(!result){
|
||||||
|
|
@ -222,22 +230,45 @@ public class UserMissionManager extends MongoBase {
|
||||||
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getHighDailyPrivilege(),mustAppear);
|
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getHighDailyPrivilege(),mustAppear);
|
||||||
//豪华特权
|
//豪华特权
|
||||||
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getLuxuryDailyPrivilege(),mustAppear);
|
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getLuxuryDailyPrivilege(),mustAppear);
|
||||||
int[][] refreshHighTypeNum = sMazeTreasureSetting.getRefreshHighTypeNum();
|
//非免费抽取次数必出
|
||||||
for(int[] refresh:refreshHighTypeNum){
|
missingRoomMissionType.notFreeRefreshMust(user,sMazeTreasureSetting.getRefreshHighTypeNum(),mustAppear);
|
||||||
if(missingRoomMissionType.getRefreshTotalCount()==0||missingRoomMissionType.getRefreshTotalCount()%refresh[0]!=0){
|
// 刷新次数+1
|
||||||
continue;
|
|
||||||
}else{
|
|
||||||
mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1);
|
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
|
||||||
|
doingMissionIds.forEach((doing)->{
|
||||||
|
if (lockMissionIds.contains(doing)){
|
||||||
|
lockMissions.add(doing);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
missingRoomMissionType.getDoingMissionIds().clear();
|
missingRoomMissionType.getDoingMissionIds().clear();
|
||||||
}else{
|
}else{
|
||||||
for(int firstTask:SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()){
|
for(int firstTask:SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()){
|
||||||
mustMissions.add(firstTask);
|
mustMissions.add(firstTask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新最大长度限制6条
|
||||||
|
if (lockMissions.size() + mustAppear.size() > 6){
|
||||||
|
// 锁定的不能动,获取特权任务数量
|
||||||
|
int num = 6 - lockMissions.size();
|
||||||
|
// 特权的key
|
||||||
|
Set<Integer> keys = mustAppear.keySet();
|
||||||
|
// 正序的set
|
||||||
|
Set<Integer> sortSet = new TreeSet<Integer>(Comparator.naturalOrder());
|
||||||
|
// 赋值
|
||||||
|
sortSet.addAll(keys);
|
||||||
|
// 遍历,如果数量满足,停止,不满足则删除等级小的任务
|
||||||
|
for (Integer ints:sortSet){
|
||||||
|
if (mustAppear.size() == num){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mustAppear.remove(ints);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!mustAppear.isEmpty()){
|
if(!mustAppear.isEmpty()){
|
||||||
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){
|
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){
|
||||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||||
|
|
@ -265,7 +296,7 @@ public class UserMissionManager extends MongoBase {
|
||||||
// missingRoomMission.add(refreshWeight);
|
// missingRoomMission.add(refreshWeight);
|
||||||
// }
|
// }
|
||||||
//根据品质来随机
|
//根据品质来随机
|
||||||
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - mustMissions.size());
|
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size()));
|
||||||
Map<Integer,Integer> qualityNum = new HashMap<>();
|
Map<Integer,Integer> qualityNum = new HashMap<>();
|
||||||
for(int quality:qualityArray){
|
for(int quality:qualityArray){
|
||||||
qualityNum.put(quality,qualityNum.getOrDefault(quality,0)+1);
|
qualityNum.put(quality,qualityNum.getOrDefault(quality,0)+1);
|
||||||
|
|
@ -285,9 +316,14 @@ public class UserMissionManager extends MongoBase {
|
||||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+id);
|
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 必须任务
|
||||||
for(int mission:mustMissions){
|
for(int mission:mustMissions){
|
||||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
|
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
|
||||||
}
|
}
|
||||||
|
// 上锁任务
|
||||||
|
for(int mission:lockMissions){
|
||||||
|
missingRoomMissionType.addDoingMission(mission);
|
||||||
|
}
|
||||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||||
break;
|
break;
|
||||||
default:{
|
default:{
|
||||||
|
|
|
||||||
|
|
@ -333,15 +333,28 @@ public class MissionLoigc {
|
||||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(vipmissionType).setProgress(progrss).build());
|
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(vipmissionType).setProgress(progrss).build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取天宫寻宝任务列表
|
||||||
|
* @param user
|
||||||
|
* @param missionList
|
||||||
|
*/
|
||||||
public static void getMissingRoomMission(User user ,List<CommonProto.UserMissionInfo> missionList){
|
public static void getMissingRoomMission(User user ,List<CommonProto.UserMissionInfo> missionList){
|
||||||
UserMissionManager userMissionManager = user.getUserMissionManager();
|
UserMissionManager userMissionManager = user.getUserMissionManager();
|
||||||
MissingRoomMissionType missingRoomMissionType = userMissionManager.getMissingRoomMissionType();
|
MissingRoomMissionType missingRoomMissionType = userMissionManager.getMissingRoomMissionType();
|
||||||
|
// 正在做任务
|
||||||
for(Integer missionId:missingRoomMissionType.getDoingMissionIds()){
|
for(Integer missionId:missingRoomMissionType.getDoingMissionIds()){
|
||||||
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
||||||
info.setMissionId(missionId).setState(0)
|
|
||||||
.setType(GameMisionType.MISSINGROOMMISSION.getType());
|
info.setMissionId(missionId).setState(0).setType(GameMisionType.MISSINGROOMMISSION.getType());
|
||||||
|
// 是否上锁
|
||||||
|
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||||
|
if (lockMissionIds.contains(missionId)){
|
||||||
|
info.setLock(1);
|
||||||
|
}
|
||||||
missionList.add(info.build());
|
missionList.add(info.build());
|
||||||
}
|
}
|
||||||
|
// 完成的任务
|
||||||
for(Integer missionId:missingRoomMissionType.getFinishMissionIds()){
|
for(Integer missionId:missingRoomMissionType.getFinishMissionIds()){
|
||||||
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
||||||
int missingTime = missingRoomMissionType.getMissingTime(missionId);
|
int missingTime = missingRoomMissionType.getMissingTime(missionId);
|
||||||
|
|
@ -886,6 +899,44 @@ public class MissionLoigc {
|
||||||
user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
|
user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
|
||||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 天宫探险加锁
|
||||||
|
* @param session
|
||||||
|
* @param missionId
|
||||||
|
* @param operation
|
||||||
|
* @param messageType
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static void missiongRoomLock(ISession session,int missionId,int operation, MessageTypeProto.MessageType messageType) throws Exception{
|
||||||
|
User user = UserManager.getUser(session.getUid());
|
||||||
|
// 获取天宫探险任务
|
||||||
|
MissingRoomMissionType missingRoomMissionType = user.getUserMissionManager().getMissingRoomMissionType();
|
||||||
|
// 不是待做任务,不能操作
|
||||||
|
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
|
||||||
|
if(!doingMissionIds.contains(missionId)){
|
||||||
|
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||||
|
// 上锁
|
||||||
|
if (operation == 1){
|
||||||
|
if (lockMissionIds.contains(missionId)) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||||
|
}
|
||||||
|
missingRoomMissionType.addLockMissionId(missionId);
|
||||||
|
// 解锁
|
||||||
|
}else {
|
||||||
|
if (!lockMissionIds.contains(missionId)) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||||
|
}
|
||||||
|
missingRoomMissionType.getLockMissionIds().removeIf(value->value==missionId);
|
||||||
|
}
|
||||||
|
// 更新数据库
|
||||||
|
user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
|
||||||
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean checkMainLevel(User user,int levelId){
|
public static boolean checkMainLevel(User user,int levelId){
|
||||||
if(!SMainLevelConfig.config.containsKey(levelId)){
|
if(!SMainLevelConfig.config.containsKey(levelId)){
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@ public abstract class AbstractMissionType {
|
||||||
//可领取的任务,在可控范围内,使用map存储,利于查找
|
//可领取的任务,在可控范围内,使用map存储,利于查找
|
||||||
private Set<Integer> finishMissionIds = Sets.newConcurrentHashSet();
|
private Set<Integer> finishMissionIds = Sets.newConcurrentHashSet();
|
||||||
|
|
||||||
|
// 上锁的任务,不可刷新
|
||||||
|
private Set<Integer> lockMissionIds = Sets.newConcurrentHashSet();
|
||||||
|
|
||||||
//已领取的任务,在可控范围内,使用map存储,利于查找
|
//已领取的任务,在可控范围内,使用map存储,利于查找
|
||||||
private BitSet rewardedMissionIds = new BitSet(1024);
|
private BitSet rewardedMissionIds = new BitSet(1024);
|
||||||
|
|
||||||
|
|
@ -64,4 +67,16 @@ public abstract class AbstractMissionType {
|
||||||
public BitSet getRewardedMissionIds() {
|
public BitSet getRewardedMissionIds() {
|
||||||
return rewardedMissionIds;
|
return rewardedMissionIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<Integer> getLockMissionIds() {
|
||||||
|
return lockMissionIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLockMissionIds(Set<Integer> lockMissionIds) {
|
||||||
|
this.lockMissionIds = lockMissionIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addLockMissionId(int missionId) {
|
||||||
|
lockMissionIds.add(missionId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,14 +152,22 @@ public class MissingRoomMissionType extends AbstractMissionType{
|
||||||
if(!itemCost){
|
if(!itemCost){
|
||||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getLockMissionIds().removeIf(value->value==missionId);
|
||||||
getDoingMissionIds().remove(missionId);
|
getDoingMissionIds().remove(missionId);
|
||||||
getFinishMissionIds().add(missionId);
|
getFinishMissionIds().add(missionId);
|
||||||
missingTime.put(missionId, (int)(TimeUtils.now()/1000)+sMazeTreasure.getWasteTime());
|
missingTime.put(missionId, (int)(TimeUtils.now()/1000)+sMazeTreasure.getWasteTime());
|
||||||
heroesInfo.put(missionId,heroes);
|
heroesInfo.put(missionId,heroes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 特权刷新
|
||||||
|
* @param user 用户信息
|
||||||
|
* @param privilege 特权类型
|
||||||
|
* @param mustAppear 必出
|
||||||
|
*/
|
||||||
public void privilegeRefresh(User user,int[][] privilege,Map<Integer,Integer> mustAppear){
|
public void privilegeRefresh(User user,int[][] privilege,Map<Integer,Integer> mustAppear){
|
||||||
|
// 是否包含特权,包含奖励【1】
|
||||||
if(user.getPlayerInfoManager().checkFunctionIsAllowed(privilege[0][0])&&privilege.length>1){
|
if(user.getPlayerInfoManager().checkFunctionIsAllowed(privilege[0][0])&&privilege.length>1){
|
||||||
int especialCount = user.getPlayerInfoManager().getVipPrivilageValue(privilege[0][0]);
|
int especialCount = user.getPlayerInfoManager().getVipPrivilageValue(privilege[0][0]);
|
||||||
for(int i = 1; i< privilege.length; i++){
|
for(int i = 1; i< privilege.length; i++){
|
||||||
|
|
@ -169,8 +177,25 @@ public class MissingRoomMissionType extends AbstractMissionType{
|
||||||
}
|
}
|
||||||
user.getPlayerInfoManager().updateVipPrivilage(privilege[0][0],1);
|
user.getPlayerInfoManager().updateVipPrivilage(privilege[0][0],1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 非免费刷新必出
|
||||||
|
* @param user
|
||||||
|
* @param refreshHighTypeNum
|
||||||
|
* @param mustAppear
|
||||||
|
*/
|
||||||
|
public void notFreeRefreshMust(User user, int[][] refreshHighTypeNum,Map<Integer,Integer> mustAppear){
|
||||||
|
int refreshTotalCount = user.getUserMissionManager().getMissingRoomMissionType().getRefreshTotalCount();
|
||||||
|
for(int[] refresh:refreshHighTypeNum){
|
||||||
|
if(refreshTotalCount==0||refreshTotalCount%refresh[0]!=0){
|
||||||
|
continue;
|
||||||
|
}else{
|
||||||
|
mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Map<Integer,Integer> getAllMissingTime(){
|
public Map<Integer,Integer> getAllMissingTime(){
|
||||||
return missingTime;
|
return missingTime;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,15 @@ package config;
|
||||||
import manager.STableManager;
|
import manager.STableManager;
|
||||||
import manager.Table;
|
import manager.Table;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Table(name = "ItemConfig")
|
@Table(name = "ItemConfig")
|
||||||
public class SItem implements BaseConfig {
|
public class SItem implements BaseConfig {
|
||||||
public static Map<Integer, SItem> sItemMap;
|
public static Map<Integer, SItem> sItemMap;
|
||||||
|
public static Map<Integer, List<SItem>> itemMapByRecycle;
|
||||||
private int id;
|
private int id;
|
||||||
private boolean backpackOrNot; //是否进背包
|
private boolean backpackOrNot; //是否进背包
|
||||||
private int itemType;
|
private int itemType;
|
||||||
|
|
@ -25,12 +29,18 @@ public class SItem implements BaseConfig {
|
||||||
private String resolveReward;
|
private String resolveReward;
|
||||||
private int itemNumlimit;
|
private int itemNumlimit;
|
||||||
private int[][] extraReward;
|
private int[][] extraReward;
|
||||||
|
private int recycle;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
sItemMap = STableManager.getConfig(SItem.class);
|
sItemMap = STableManager.getConfig(SItem.class);
|
||||||
|
Map<Integer, List<SItem>> map = new HashMap<>();
|
||||||
|
sItemMap.forEach((k,v)->{
|
||||||
|
map.computeIfAbsent(v.getRecycle(),n->new ArrayList<>()).add(v);
|
||||||
|
});
|
||||||
|
itemMapByRecycle = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getId() {
|
public int getId() {
|
||||||
|
|
@ -41,6 +51,10 @@ public class SItem implements BaseConfig {
|
||||||
return sItemMap;
|
return sItemMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Map<Integer, List<SItem>> getItemMapByRecycle() {
|
||||||
|
return itemMapByRecycle;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isBackpackOrNot() {
|
public boolean isBackpackOrNot() {
|
||||||
return backpackOrNot;
|
return backpackOrNot;
|
||||||
}
|
}
|
||||||
|
|
@ -104,4 +118,8 @@ public class SItem implements BaseConfig {
|
||||||
public int[][] getExtraReward() {
|
public int[][] getExtraReward() {
|
||||||
return extraReward;
|
return extraReward;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getRecycle() {
|
||||||
|
return recycle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue