成就任务优化,兼容开服时间条件

back_recharge
duhui 2021-10-14 15:36:48 +08:00
parent aa21c96a4f
commit 7ab321cc75
6 changed files with 66 additions and 15 deletions

View File

@ -110,7 +110,7 @@ public class TimeUtils {
/**
* , : 20110111011059
*/
private static final String ymdhmsFormat_new = "yyyyMMddHHmmss";
public static final String ymdhmsFormat_new = "yyyyMMddHHmmss";
/**
* , : 2011-01-11 01:10
*/
@ -123,7 +123,7 @@ public class TimeUtils {
/**
* 19700710
*/
private static final String ymdFormat = "yyyyMMdd";
public static final String ymdFormat = "yyyyMMdd";
/**
* 19700710
*/

View File

@ -169,28 +169,42 @@ public class ActivityLogic implements IEventHandler{
}
if(time == ActivityType.OPEN_TYPE_MONTHS){
//now = 当前是开服第几个月
//开服日期
String openTime = GameApplication.serverConfig.getOpenTime().split(" ")[0];
String nowTime = TimeUtils.getTimeStampYMDnew(TimeUtils.now());
//now = TimeUtils.getGapMonthsByTwoTime(openTime, nowTime)+1;
}
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
long gapEndTime = endTime+sGlobalActivity.getGapTime()*TimeUtils.DAY;
if (now < startTime) {
//如果没到活动开启时间但是openActivityIds里有了这个活动证明是热更延迟开启的活动需要清除掉
if (openActivityIds.contains(sGlobalActivity.getId())) {
openActivityIds.remove(sGlobalActivity.getId());
}
openActivityIds.remove(sGlobalActivity.getId());
continue;
}
int[] ifOpen = sGlobalActivity.getIfOpen();
// 开服条件判断
if(ifOpen!=null && ifOpen.length>0){
if(ifOpen[0]==2){ //开服
//开服多少天不会出现
if(ifOpen[0]==2){
if(GameApplication.serverConfig.getCacheOpenTime() + ifOpen[1]*TimeUtils.ONE_DAY >TimeUtils.now()){
continue;
}
}
// 在某某时间之前开服不会出现
if (ifOpen[0] == 3){
long toMiles = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat);
long openTime = GameApplication.serverConfig.getCacheOpenTime();
if (toMiles < openTime){
openActivityIds.remove(sGlobalActivity.getId());
continue;
}
}
// 在某某时间之后开服不会出现
if (ifOpen[0] == 4){
long toMiles = TimeUtils.stringToTimeLong(String.valueOf(ifOpen[1]), TimeUtils.ymdFormat);
long openTime = GameApplication.serverConfig.getCacheOpenTime();
if (toMiles > openTime){
openActivityIds.remove(sGlobalActivity.getId());
continue;
}
}
}
if (endTime != 0 && now > endTime) {
if (!openActivityIds.contains(sGlobalActivity.getId())) {

View File

@ -12,20 +12,20 @@ import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.main.CowFlySkyMissionType;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SArroGantFly;
import config.SErrorCodeEerverConfig;
import config.SGlobalActivity;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
public class CowFlySkyActivity extends AbstractActivity {

View File

@ -2262,7 +2262,7 @@ public class HeroLogic{
if (!bookEnabled.isEmpty()){
Map<Integer, SSpiritAnimalBook> config = STableManager.getConfig(SSpiritAnimalBook.class);
for(int bootId:bookEnabled){
int[][] activePara = config.get(bootId).getActivePara();
int[][] activePara = Optional.ofNullable(config.get(bootId)).map(SSpiritAnimalBook::getActivePara).orElse(new int[0][]);
combinedAttribute(activePara,heroAllAttribute);
}
}

View File

@ -26,6 +26,7 @@ import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import com.ljsd.jieling.logic.mission.main.*;
import com.ljsd.jieling.network.session.ISession;
import org.luaj.vm2.ast.Str;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
@ -60,10 +61,40 @@ public class MissionLoigc {
getCowFlySkyMission(user,missionList);
getEndlessMission(user,missionList);
getMistyTripMission(user,missionList);
// 此方法必须放在最后,对所有获取到的任务进行处理
checkMissionTime(missionList);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
}
/**
*
* @param missionList
*/
private static void checkMissionTime(List<CommonProto.UserMissionInfo> missionList){
// 配置表
Map<Integer, SAchievementConfig> config = STableManager.getConfig(SAchievementConfig.class);
// 玩家当前任务
Iterator<CommonProto.UserMissionInfo> iterator = missionList.iterator();
// 开服时间
long cacheOpenTime = GameApplication.serverConfig.getCacheOpenTime();
// 遍历
while (iterator.hasNext()){
CommonProto.UserMissionInfo next = iterator.next();
SAchievementConfig achievementConfig = config.get(next.getMissionId());
// 配置表不存在的成就,可能删除了,代码去除
if (achievementConfig == null){
iterator.remove();
continue;
}
long time = TimeUtils.stringToTimeLong(String.valueOf(achievementConfig.getEffectData()), TimeUtils.ymdFormat);
// 表中配置的time之前开服的不显示改任务
if (cacheOpenTime < time){
iterator.remove();
}
}
}
private static void getBloodyMisison(User user, List<CommonProto.UserMissionInfo> missionList){
UserMissionManager userMissionManager = user.getUserMissionManager();
BloodyMissionIdsType bloodyMissionIdsType = userMissionManager.getBloodyMissionIdsType();

View File

@ -16,6 +16,8 @@ public class SAchievementConfig implements BaseConfig {
private int[][] reward;
private int effectData;
public static Map<Integer, Set<Integer>> setTMap;
public static Map<Integer, List<SAchievementConfig>> sTaskConfigByTypeMap;
@Override
@ -49,6 +51,10 @@ public class SAchievementConfig implements BaseConfig {
return reward;
}
public int getEffectData() {
return effectData;
}
public static Map<Integer, List<SAchievementConfig>> getsTaskConfigByTypeMap() {
return sTaskConfigByTypeMap;
}