【成就优化】根据开服时间决定服务器内的成就

back_recharge
jiahuiwen 2021-10-15 18:20:59 +08:00
parent b4ad96bba7
commit 7c0c66be39
3 changed files with 30 additions and 7 deletions

View File

@ -514,7 +514,12 @@ public class MissionLoigc {
Set<Integer> doingMissionIds = achievementMissionTypMap.getDoingMissionIds(); Set<Integer> doingMissionIds = achievementMissionTypMap.getDoingMissionIds();
Set<Integer> finishMissionIds = achievementMissionTypMap.getFinishMissionIds(); Set<Integer> finishMissionIds = achievementMissionTypMap.getFinishMissionIds();
BitSet rewardedMissionIds = achievementMissionTypMap.getRewardedMissionIds(); BitSet rewardedMissionIds = achievementMissionTypMap.getRewardedMissionIds();
// 过滤出 配置日期(不含)前开服的可见
long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime());
for (SAchievementConfig sAchievementConfig : STableManager.getConfig(SAchievementConfig.class).values()) { for (SAchievementConfig sAchievementConfig : STableManager.getConfig(SAchievementConfig.class).values()) {
if (sAchievementConfig.getEffectTime() != 0 && openTime >= sAchievementConfig.getEffectTime()) {
continue;
}
int state = 2; int state = 2;
int missionId = sAchievementConfig.getId(); int missionId = sAchievementConfig.getId();
int progrss = sAchievementConfig.getValues()[1][0]; int progrss = sAchievementConfig.getValues()[1][0];

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.mission.event; package com.ljsd.jieling.logic.mission.event;
import com.ljsd.GameApplication;
import config.*; import config.*;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
@ -13,6 +14,7 @@ import com.ljsd.jieling.util.MessageUtil;
import manager.STableManager; import manager.STableManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import util.TimeUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -622,6 +624,7 @@ public class MissionEventDistributor {
if(missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos.isEmpty()){
return; return;
} }
long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime());
for(MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos){ for(MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos){
MissionState missionState = missionStateChangeInfo.getMissionState(); MissionState missionState = missionStateChangeInfo.getMissionState();
int state = missionState.getState(); int state = missionState.getState();
@ -665,8 +668,11 @@ public class MissionEventDistributor {
} }
if(gameMisionType == GameMisionType.ACHIEVEMISSION){ if(gameMisionType == GameMisionType.ACHIEVEMISSION){
SAchievementConfig achievementConfig = STableManager.getConfig(SAchievementConfig.class).get(missionStateChangeInfo.getMissionId()); SAchievementConfig sAchievementConfig = STableManager.getConfig(SAchievementConfig.class).get(missionStateChangeInfo.getMissionId());
progress= achievementConfig.getValues()[1][0]; if (sAchievementConfig.getEffectTime() != 0 && openTime >= sAchievementConfig.getEffectTime()) {
continue;
}
progress= sAchievementConfig.getValues()[1][0];
} }
if(gameMisionType == GameMisionType.SEVENMISSION){ if(gameMisionType == GameMisionType.SEVENMISSION){

View File

@ -2,6 +2,7 @@ package config;
import manager.STableManager; import manager.STableManager;
import manager.Table; import manager.Table;
import util.TimeUtils;
import java.util.*; import java.util.*;
@ -16,7 +17,10 @@ public class SAchievementConfig implements BaseConfig {
private int[][] reward; private int[][] reward;
public static Map<Integer, Set<Integer>> setTMap; private String effectData;
private long effectTime;
public static Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap; public static Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
@ -24,6 +28,10 @@ public class SAchievementConfig implements BaseConfig {
Map<Integer, List<SAchievementConfig>> configListTmp = new HashMap<>(); Map<Integer, List<SAchievementConfig>> configListTmp = new HashMap<>();
for(SAchievementConfig sAchievementConfig : configTmp.values()){ for(SAchievementConfig sAchievementConfig : configTmp.values()){
int taskType = sAchievementConfig.getType(); int taskType = sAchievementConfig.getType();
String effectData = sAchievementConfig.getEffectData();
if (effectData != null && !effectData.isEmpty()) {
sAchievementConfig.setEffectTime(TimeUtils.parseTimeToMiles(effectData,TimeUtils.Stand_CeHua_Data_format));
}
if(!configListTmp.containsKey(taskType)){ if(!configListTmp.containsKey(taskType)){
configListTmp.put(taskType,new ArrayList<>()); configListTmp.put(taskType,new ArrayList<>());
} }
@ -49,11 +57,15 @@ public class SAchievementConfig implements BaseConfig {
return reward; return reward;
} }
public static Map<Integer, List<SAchievementConfig>> getsTaskConfigByTypeMap() { public long getEffectTime() {
return sTaskConfigByTypeMap; return effectTime;
} }
public static void setsTaskConfigByTypeMap(Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap) { public void setEffectTime(long effectTime) {
SAchievementConfig.sTaskConfigByTypeMap = sTaskConfigByTypeMap; this.effectTime = effectTime;
}
public String getEffectData() {
return effectData;
} }
} }