成就系统
parent
ef3bc85d6e
commit
20a2a3c495
|
@ -62,6 +62,7 @@ public enum FunctionIdEnum {
|
|||
WorkShopCreateProtectEquip(103,null),
|
||||
WorkShopRebuildEquip(104,null,MessageTypeProto.MessageType.WORKSHOP_REBUILD_REQUEST_VALUE),
|
||||
Expedition(64,null),
|
||||
Achieve(65,null),
|
||||
;
|
||||
|
||||
private int functionType;
|
||||
|
|
|
@ -99,6 +99,7 @@ public class UserManager {
|
|||
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.ACHIEVE_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);
|
||||
|
|
|
@ -36,6 +36,8 @@ public class UserMissionManager extends MongoBase {
|
|||
private ServenMissionIdsType sevenHappyMissionType =new ServenMissionIdsType();
|
||||
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
|
||||
private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType();
|
||||
|
||||
//数据累加项
|
||||
private CumulationData cumulationData = new CumulationData();
|
||||
private CumulationData dailyCumulationData = new CumulationData();
|
||||
|
@ -45,6 +47,7 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData treasureWeekCumulationData = new CumulationData();
|
||||
private CumulationData treasureMonthCumulationData = new CumulationData();
|
||||
private CumulationData sevenHappyCumulationData = new CumulationData();
|
||||
private CumulationData achievementMap = new CumulationData();
|
||||
|
||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception {
|
||||
ISession session= OnlineUserManager.getSessionByUid(user.getId());
|
||||
|
@ -145,6 +148,17 @@ public class UserMissionManager extends MongoBase {
|
|||
bloodyMissionIdsType.getRewardedMissionIds().clear();
|
||||
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
|
||||
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
|
||||
break;
|
||||
case ACHIEVE_REFRESH:
|
||||
Set<Integer> ds =STableManager.getConfig(SAchievementConfig.class).keySet();
|
||||
achievementMissionTypMap.getDoingMissionIds().clear();
|
||||
achievementMissionTypMap.getFinishMissionIds().clear();
|
||||
achievementMissionTypMap.getRewardedMissionIds().clear();
|
||||
achievementMissionTypMap.getDoingMissionIds().addAll(ds);
|
||||
achievementMap =new CumulationData();
|
||||
updateString("achievementMissionTypMap",achievementMissionTypMap);
|
||||
updateString("achievementMap",achievementMap);
|
||||
|
||||
break;
|
||||
case MISSING_ROOM_REFRESH:
|
||||
Map<Integer,Integer> mustAppear = new HashMap<>();
|
||||
|
@ -245,6 +259,13 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("treasureMissionIdsType",treasureMissionIdsType);
|
||||
}
|
||||
break;
|
||||
case ACHIEVE_REWARD:{
|
||||
int missId = (int)parm[0];
|
||||
achievementMissionTypMap.rewardMission(missId, missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION));
|
||||
updateString("achievementMissionTypMap",achievementMissionTypMap);
|
||||
|
||||
}
|
||||
break;
|
||||
case SEVENHAPPY_MISSION_REWARD:{
|
||||
int missionId = (int) parm[0];
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
|
||||
|
@ -270,6 +291,8 @@ public class UserMissionManager extends MongoBase {
|
|||
missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
|
||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -357,6 +380,20 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
}
|
||||
|
||||
if(!achievementMissionTypMap.getDoingMissionIds().isEmpty() ){
|
||||
|
||||
List<SAchievementConfig> sAchievementConfigs = SAchievementConfig.sTaskConfigByTypeMap.get(missionType.getMissionTypeValue());
|
||||
if(sAchievementConfigs!=null&&sAchievementConfigs.size()!=0){
|
||||
CumulationData.Result result= achievementMap.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
achievementMissionTypMap.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION),achievementMap);
|
||||
updateString("achievementMap",achievementMap);
|
||||
updateString("achievementMissionTypMap",achievementMissionTypMap);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
CumulationData.Result result = cumulationData.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
|
||||
|
@ -487,4 +524,12 @@ public class UserMissionManager extends MongoBase {
|
|||
public MissingRoomMissionType getMissingRoomMissionType() {
|
||||
return missingRoomMissionType;
|
||||
}
|
||||
|
||||
public AchieveMissionIdsType getAchievementMissionTypMap() {
|
||||
return achievementMissionTypMap;
|
||||
}
|
||||
|
||||
public CumulationData getAchievementMap() {
|
||||
return achievementMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ public enum GameEvent {
|
|||
TREASH_WEEK_REFRESH,//孙龙的宝藏周任务
|
||||
TREASH_MONTH_REFRESH,//孙龙的宝藏月任务
|
||||
SERVENHAPPY_REFRESH,//七日狂欢
|
||||
ACHIEVE_REFRESH,//成就刷新
|
||||
MISSING_ROOM_REFRESH,//迷宫寻宝刷新
|
||||
BEGINNER,//新手
|
||||
|
||||
|
@ -35,6 +36,7 @@ public enum GameEvent {
|
|||
MISSING_ROOM_MISSION_REWARD,//迷宫寻宝领奖
|
||||
WORKSHOP_CREATE_EQUIP,//打造装备
|
||||
ADVENTURE_TAKEREWARD, //收取秘境奖励
|
||||
ACHIEVE_REWARD,// 领取成就的宝藏
|
||||
|
||||
BUY_MATERIAL,//购买道具
|
||||
RINGFIRE_ADVANCE,//天赋进阶
|
||||
|
@ -72,5 +74,5 @@ public enum GameEvent {
|
|||
JOIN_FAMILY,//加入公会次数
|
||||
FRIEND_APPLY,//提出好友申请次数
|
||||
|
||||
|
||||
COPY_COHERO_TIMES//通关剧情副本和精英本
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ public enum GameMisionType {
|
|||
BEGINNERMISSION(6),
|
||||
BLOODYMISSION(7),
|
||||
MISSINGROOMMISSION(8),
|
||||
ACHIEVEMISSION(9),
|
||||
|
||||
;
|
||||
private int type;
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.mission;
|
|||
|
||||
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
|
||||
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||
import com.ljsd.jieling.core.HandlerLogicThread;
|
||||
import com.ljsd.jieling.dataReport.reportBeans_37.Repot37EventUtil;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
|
@ -17,6 +19,7 @@ import com.ljsd.jieling.logic.activity.event.MissingRoomBestEvent;
|
|||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.*;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
@ -47,6 +50,7 @@ public class MissionLoigc {
|
|||
getBeginnerMisssion(user,missionList);
|
||||
getBloodyMisison(user,missionList);
|
||||
getMissingRoomMission(user,missionList);
|
||||
getAchieveMission(user,missionList);
|
||||
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
|
||||
}
|
||||
|
@ -312,6 +316,32 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
|
||||
public static void getAchieveMission(User user ,List<CommonProto.UserMissionInfo> missionList){
|
||||
SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.Achieve.getFunctionType());
|
||||
if (sGlobalSystemConfig!=null&&!HandlerLogicThread.checkOpen(user,sGlobalSystemConfig)) {
|
||||
return;
|
||||
}
|
||||
UserMissionManager userMissionManager = user.getUserMissionManager();
|
||||
AchieveMissionIdsType achievementMissionTypMap = userMissionManager.getAchievementMissionTypMap();
|
||||
|
||||
CumulationData achievementdata = userMissionManager.getAchievementMap();
|
||||
Set<Integer> doingMissionIds = achievementMissionTypMap.getDoingMissionIds();
|
||||
Set<Integer> finishMissionIds = achievementMissionTypMap.getFinishMissionIds();
|
||||
for (SAchievementConfig sAchievementConfig : STableManager.getConfig(SAchievementConfig.class).values()) {
|
||||
int state = 2;
|
||||
int missionId = sAchievementConfig.getId();
|
||||
int progrss = sAchievementConfig.getValues()[1][0];
|
||||
if (doingMissionIds.contains(missionId)) {
|
||||
progrss = getDoingProgress(user, achievementdata, sAchievementConfig.getType(), sAchievementConfig.getValues()[0]);
|
||||
state = 0;
|
||||
} else if (finishMissionIds.contains(missionId)) {
|
||||
state = 1;
|
||||
}
|
||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(GameMisionType.ACHIEVEMISSION.getType()).setProgress(progrss).build());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
|
@ -397,6 +427,12 @@ public class MissionLoigc {
|
|||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
|
||||
}
|
||||
|
||||
if(type==GameMisionType.ACHIEVEMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.ACHIEVE_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.ACHIEVEMISSION);
|
||||
}
|
||||
|
||||
|
||||
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
|
||||
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
|
||||
|
@ -502,6 +538,20 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case COMHERO_STORY_PASS:
|
||||
Map<Integer, CrossInfo> crossMap = user.getMapManager().getCrossInfoMap();
|
||||
for(Map.Entry<Integer,CrossInfo> item : crossMap.entrySet()){
|
||||
CrossInfo value = item.getValue();
|
||||
if(value.getStars().contains(MapLogic.STAR_1)){
|
||||
Integer fightId = item.getKey();
|
||||
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(fightId);
|
||||
if(sChallengeConfig.getType() == 1 && sChallengeConfig.getType() == 3){
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KILL_INVASIONBOSS:
|
||||
count = cumulationData.getKillInvasionbossCount();
|
||||
break;
|
||||
|
|
|
@ -85,6 +85,7 @@ public enum MissionType {
|
|||
TAKE_FRIEND_GIFT(66),//领取好友友情点
|
||||
JOIN_FAMILY(69),
|
||||
FRIEND_APPLY(71),//提出%s次好友申请
|
||||
COMHERO_STORY_PASS(72), //通关剧情副本或精英副本%s次
|
||||
;
|
||||
|
||||
private int missionType;
|
||||
|
@ -231,6 +232,8 @@ public enum MissionType {
|
|||
return JOIN_FAMILY;
|
||||
case 71:
|
||||
return FRIEND_APPLY;
|
||||
case 72:
|
||||
return COMHERO_STORY_PASS;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,8 @@ public class DataManagerDistributor {
|
|||
judges.put(MissionType.LEVEL_STORY_PASS,new FightDataManager());
|
||||
judges.put(MissionType.GENERAL_STORY_PASS,new FightDataManager());
|
||||
judges.put(MissionType.HERO_STORY_PASS,new FightDataManager());
|
||||
judges.put(MissionType.COMHERO_STORY_PASS,new FightDataManager());
|
||||
|
||||
|
||||
judges.put(MissionType.KILL_INVASIONBOSS,new KillInvasionBossDataManager());
|
||||
judges.put(MissionType.SECRETBOX_TIMES,new SecretboxRandomManager());
|
||||
|
|
|
@ -36,8 +36,12 @@ public class FightDataManager implements BaseDataManager{
|
|||
if(sChallengeConfig.getType() == 3){
|
||||
result = new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
||||
|
||||
}else if(missionType ==MissionType.COMHERO_STORY_PASS){
|
||||
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(fightId);
|
||||
if(sChallengeConfig.getType() == 3||sChallengeConfig.getType() == 1){
|
||||
result = new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -10,6 +10,7 @@ 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 manager.STableManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -33,7 +34,7 @@ public class MissionEventDistributor {
|
|||
eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_REFRESH,new TreasureRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_WEEK_REFRESH,new TreasureRefreshEventProcess());
|
||||
|
||||
eventProcessor.put(GameEvent.ACHIEVE_REFRESH,new DailyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new TreasureRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor());
|
||||
|
@ -177,6 +178,7 @@ public class MissionEventDistributor {
|
|||
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());
|
||||
eventProcessor.put(GameEvent.ACHIEVE_REWARD,new RewardEventProcessor());
|
||||
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
|
@ -289,6 +291,12 @@ public class MissionEventDistributor {
|
|||
eventEnumListMap.put(GameEvent.FRIEND_APPLY,typeList);
|
||||
eventProcessor.put(GameEvent.FRIEND_APPLY,new CumulationDataEventProcessor());
|
||||
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.COMHERO_STORY_PASS);
|
||||
eventEnumListMap.put(GameEvent.COPY_COHERO_TIMES,typeList);
|
||||
eventProcessor.put(GameEvent.COPY_COHERO_TIMES,new CumulationDataEventProcessor());
|
||||
|
||||
}
|
||||
|
||||
private static final ThreadLocal<Map<GameMisionType, List<MissionStateChangeInfo>>> threadMissionChangeList =
|
||||
|
@ -315,6 +323,8 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.put(GameMisionType.BEGINNERMISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.BLOODYMISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.ACHIEVEMISSION, new ArrayList<>());
|
||||
|
||||
|
||||
} else {
|
||||
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
|
||||
|
@ -325,6 +335,8 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.get(GameMisionType.BEGINNERMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.BLOODYMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION).clear();
|
||||
|
||||
|
||||
}
|
||||
threadMissionChangeList.set(missionTypeEnumListMap);
|
||||
|
@ -360,7 +372,7 @@ public class MissionEventDistributor {
|
|||
if(gameMisionType==GameMisionType.MISSINGROOMMISSION){
|
||||
continue;
|
||||
}
|
||||
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION || gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION){
|
||||
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION || gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION|| gameMisionType == GameMisionType.ACHIEVEMISSION){
|
||||
progress = missionStateChangeInfo.getProgress();
|
||||
}
|
||||
if(missionState == MissionState.DOING){
|
||||
|
@ -391,6 +403,12 @@ public class MissionEventDistributor {
|
|||
STreasureSunlongTaskConfig sunlongTaskConfig = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionStateChangeInfo.getMissionId());
|
||||
progress= sunlongTaskConfig.getTaskValue()[1][0];
|
||||
}
|
||||
|
||||
if(gameMisionType == GameMisionType.ACHIEVEMISSION){
|
||||
SAchievementConfig achievementConfig = STableManager.getConfig(SAchievementConfig.class).get(missionStateChangeInfo.getMissionId());
|
||||
progress= achievementConfig.getValues()[1][0];
|
||||
}
|
||||
|
||||
if(gameMisionType == GameMisionType.SEVENMISSION){
|
||||
STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionStateChangeInfo.getMissionId());
|
||||
if(sTreasureTaskConfig.getTaskType() != MissionType.SENVER_HAPPY.getMissionTypeValue()){
|
||||
|
@ -424,4 +442,5 @@ public class MissionEventDistributor {
|
|||
processor.onGameEvent(user, missionTypeEnumListMap,event,parm );
|
||||
return missionTypeEnumListMap;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package com.ljsd.jieling.logic.mission.main;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionLoigc;
|
||||
import com.ljsd.jieling.logic.mission.MissionState;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import config.SAchievementConfig;
|
||||
import config.SBloodyBattleTask;
|
||||
import config.STreasureSunlongTaskConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
public class AchieveMissionIdsType extends AbstractMissionType{
|
||||
@Override
|
||||
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] reward(int missionId) {
|
||||
SAchievementConfig sDailyTasksConfigById = STableManager.getConfig(SAchievementConfig.class).get(missionId);
|
||||
return sDailyTasksConfigById.getReward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) {
|
||||
|
||||
Set<Integer> doingMissionIds = getDoingMissionIds();
|
||||
|
||||
List<SAchievementConfig> sAchievementConfigs = SAchievementConfig.sTaskConfigByTypeMap.get(result.subType.getMissionTypeValue());
|
||||
if(sAchievementConfigs == null){
|
||||
return;
|
||||
}
|
||||
|
||||
for(SAchievementConfig sAchievementConfig : sAchievementConfigs){
|
||||
int id = sAchievementConfig.getId();
|
||||
if(!doingMissionIds.contains(sAchievementConfig.getId())){
|
||||
continue;
|
||||
}
|
||||
|
||||
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sAchievementConfig.getType(), sAchievementConfig.getValues()[0]);
|
||||
//完成
|
||||
int finishParm = sAchievementConfig.getValues()[1][0];
|
||||
|
||||
if (doingProgress<finishParm) {
|
||||
boolean flag = false;
|
||||
for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) {
|
||||
if (missionStateChangeInfo.getMissionId() == id) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(id, MissionState.DOING, doingProgress);
|
||||
missionStateChangeInfos.add(doingInfo);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(id,
|
||||
MissionState.FINISH, null);
|
||||
missionStateChangeInfos.removeIf(next -> next.getMissionId() == id);
|
||||
missionStateChangeInfos.add(finishInfo);
|
||||
doingMissionIds.remove(id);
|
||||
getFinishMissionIds().add(id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package config;
|
||||
|
||||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Table(name ="AchievementConfig")
|
||||
public class SAchievementConfig implements BaseConfig {
|
||||
|
||||
private int id;
|
||||
|
||||
private int type;
|
||||
|
||||
private int[][] values;
|
||||
|
||||
private int[][] reward;
|
||||
|
||||
public static Map<Integer, Set<Integer>> setTMap;
|
||||
public static Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap;
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
Map<Integer, SAchievementConfig> configTmp = STableManager.getConfig(SAchievementConfig.class);
|
||||
Map<Integer, List<SAchievementConfig>> configListTmp = new HashMap<>();
|
||||
for(SAchievementConfig sAchievementConfig : configTmp.values()){
|
||||
int taskType = sAchievementConfig.getType();
|
||||
if(!configListTmp.containsKey(taskType)){
|
||||
configListTmp.put(taskType,new ArrayList<>());
|
||||
}
|
||||
configListTmp.get(taskType).add(sAchievementConfig);
|
||||
}
|
||||
sTaskConfigByTypeMap = configListTmp;
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int[][] getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public int[][] getReward() {
|
||||
return reward;
|
||||
}
|
||||
|
||||
public static Map<Integer, List<SAchievementConfig>> getsTaskConfigByTypeMap() {
|
||||
return sTaskConfigByTypeMap;
|
||||
}
|
||||
|
||||
public static void setsTaskConfigByTypeMap(Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap) {
|
||||
SAchievementConfig.sTaskConfigByTypeMap = sTaskConfigByTypeMap;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue