新将招募 任务限制

back_recharge
xuexinpeng 2021-07-30 18:47:44 +08:00
parent d39777c4dc
commit 77f5f9150b
11 changed files with 139 additions and 14 deletions

View File

@ -972,6 +972,24 @@ public class TimeUtils {
return (y1 == y2) && (m1 == m2) && (d1 == d2);
}
/**
*
*
* @param r1
* @param r2
* @return
*/
public static boolean isSameMonth2(long r1, long r2) {
Calendar c1 = Calendar.getInstance();
c1.setTimeInMillis(r1);
int y1 = c1.get(Calendar.YEAR);
int m1 = c1.get(Calendar.MONTH) + 1;
Calendar c2 = Calendar.getInstance();
c2.setTimeInMillis(r2);
int y2 = c2.get(Calendar.YEAR);
int m2 = c2.get(Calendar.MONTH) + 1;
return (y1 == y2) && (m1 == m2);
}
public static boolean isSameDayWithNow(long r1) {
long r2 = now();

View File

@ -336,7 +336,28 @@ public class GlobalDataManaager implements IManager {
if( limitDay[0] == 2 ){
//此时是开服第几天
long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1;
if(day < limitDay[1]){
if(day < limitDay[1]){
long mod = passTims % (diffTime + seasonInterval);
long turns = passTims / ((diffTime + seasonInterval));
if(mod > diffTime ){
turns++;
}
long addTim = turns * (diffTime + seasonInterval);
timeOpenOfThis =seasonOpenLong+addTim+(limitDay[1]-day);
timeCloseOfThis =seasonEndLong+addTim;
CommonProto.FunctionOfTime timeInfo = CommonProto.FunctionOfTime.newBuilder()
.setFunctionId(id)
.setStartTime((int) (timeOpenOfThis / 1000))
.setEndTime((int) (timeCloseOfThis / 1000))
.setInterval(seasonInterval).setSwitch(1)
.build();
int isIDdSame = sGlobalSystemConfig.getIsIDdSame();
List<CommonProto.FunctionOfTime> timeList = sameActivity.get(isIDdSame);
if(timeList==null){
timeList = new ArrayList<>();
}
timeList.add(timeInfo);
sameActivity.put(isIDdSame,timeList);
continue;
}
}
@ -359,7 +380,7 @@ public class GlobalDataManaager implements IManager {
.setFunctionId(id)
.setStartTime((int) (timeOpenOfThis / 1000))
.setEndTime((int) (timeCloseOfThis / 1000))
.setInterval(seasonInterval)
.setInterval(seasonInterval).setSwitch(0)
.build();
int isIDdSame = sGlobalSystemConfig.getIsIDdSame();
List<CommonProto.FunctionOfTime> timeList = sameActivity.get(isIDdSame);
@ -407,9 +428,19 @@ public class GlobalDataManaager implements IManager {
Map<Integer, SDailyTasksConfig> config = SDailyTasksConfig.config;
int dailymissionType = GameMisionType.DAILYMISSION.getType();
int day = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
boolean refreshStype = false;
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
refreshStype = true;
}
for(SDailyTasksConfig sDailyTasksConfig:config.values()){
if(day >= sDailyTasksConfig.getViewDateUp()&& day <=sDailyTasksConfig.getViewDataDown()){
fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0));
if(refreshStype){
if(day >= sDailyTasksConfig.getViewDateUp()&& day <=sDailyTasksConfig.getViewDataDown()){
fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0));
}
}else{
if(sDailyTasksConfig.getViewDateUp() == 1){
fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0));
}
}
}
fBuilder.setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve());
@ -502,7 +533,7 @@ public class GlobalDataManaager implements IManager {
}
/**
*
*
* @return
*/
public boolean getServerOpenTimeCompareSpecialTimeResult(){

View File

@ -218,6 +218,9 @@ public class CumulationData {
//活动期间内日常副本挑战总次数
public int daily_challenge_count;
//新将招募次数
public int new_hero_zhaomu;

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.dao;
import ch.qos.logback.core.util.TimeUtil;
import com.ljsd.GameApplication;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
@ -103,9 +104,15 @@ public class UserMissionManager extends MongoBase {
break;
}
case DAILY_REFRESH:
int day = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
Set<Integer> missionIds = SDailyTasksConfig.config.values().stream().filter(n->day >=n.
getViewDateUp()&& day <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet());
Set<Integer> missionIds;
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->days >=n.
getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet());
}else{
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->n.getViewDateUp() == 1).
map(n ->n.getId()).collect(Collectors.toSet());
}
int type = (int) parm[0];
if (type == 0) {
dailyMissionIdsType.getDoingMissionIds().clear();
@ -232,9 +239,16 @@ public class UserMissionManager extends MongoBase {
updateString("cowFlySkyMissionType", cowFlySkyMissionType);
break;
case ENDLESS_MISSION_REFRESH:
int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
Set<Integer> endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->days >=n.
getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet());
Set<Integer> endlessTask;
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
int days = new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->days >=n.
getViewDateUp()&& days <=n.getViewDataDown()).map(n ->n.getId()).collect(Collectors.toSet());
}else{
endlessTask = STableManager.getConfig(SEndlessTask.class).values().stream().filter(n->n.getViewDateUp() == 1).
map(n ->n.getId()).collect(Collectors.toSet());
}
endlessMissionType.getDoingMissionIds().clear();
endlessMissionType.getFinishMissionIds().clear();
endlessMissionType.getRewardedMissionIds().clear();

View File

@ -361,6 +361,7 @@ public class HeroLogic{
}
}
user.getUserMissionManager().onGameEvent(user,GameEvent.RANDOM_HERO,sLotterySetting.getLotteryType(),perCount);
user.getUserMissionManager().onGameEvent(user, GameEvent.NEW_HERO_ZHAOMU,sLotterySetting.getPerCount());
heroManager.updateRandCount(type,perCount);
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, resultRandom,BIReason.HERO_RANDOM);
fiveStarPushByRandom(user,resultRandom);

View File

@ -136,5 +136,6 @@ public enum GameEvent {
TAKE_ADVENTURE_REWARD_COUNT,//急速探索次数
DAILY_CHALLENGE_COUNT,//日常副本挑战次数
HARSTAGE_PARTICIPATION_REWARD,//山河社稷图参与奖励
NEW_HERO_ZHAOMU,//新将招募次数
}

View File

@ -254,9 +254,19 @@ public class MissionLoigc {
Map<Integer, SDailyTasksConfig> config = SDailyTasksConfig.config;
int dailymissionType = GameMisionType.DAILYMISSION.getType();
int day =new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
boolean refreshStype = false;
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
refreshStype = true;
}
for(SDailyTasksConfig sDailyTasksConfig:config.values()){
if(!(day>=sDailyTasksConfig.getViewDateUp()&& day <= sDailyTasksConfig.getViewDataDown())){
continue;
if(refreshStype){
if(!(day >= sDailyTasksConfig.getViewDateUp()&& day <= sDailyTasksConfig.getViewDataDown())){
continue;
}
}else{
if(sDailyTasksConfig.getViewDateUp() != 1){
continue;
}
}
int state = 2;
int missionId = sDailyTasksConfig.getId();
@ -400,7 +410,17 @@ public class MissionLoigc {
int id = v.getId();
SEndlessTask config = STableManager.getConfig(SEndlessTask.class).get(id);
int day =new Date(GameApplication.serverConfig.getCacheOpenTime()).getDate();//当月第几天
if(day >= config.getViewDateUp() && day <= config.getViewDataDown()){
boolean isAdd = false;
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
if(day >= config.getViewDateUp() && day <= config.getViewDataDown()){
isAdd = true;
}
}else{
if(1 == config.getViewDateUp()){
isAdd = true;
}
}
if(isAdd){
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
info.setMissionId(id);
info.setType(GameMisionType.ENDLESS_MISSION.getType());
@ -1044,6 +1064,10 @@ public class MissionLoigc {
//急速探索次数
count = cumulationData.take_adventure_reward_count;
break;
case NEW_HERO_ZHAOMU:
//新将招募次数
count = cumulationData.daily_challenge_count;
break;
case DAILY_CHALLENGE_COUNT:
//副本挑战次数
count = cumulationData.daily_challenge_count;

View File

@ -147,6 +147,7 @@ public enum MissionType {
TAKE_ADVENTURE_REWARD_COUNT(137),//急速探索次数
DAILY_CHALLENGE_COUNT(138),//日常副本挑战次
HARSTAGE_PARTICIPATION_REWARD(139),//山河社稷图参与奖励
NEW_HERO_ZHAOMU(140),//新将招募次数
;

View File

@ -170,6 +170,7 @@ public class DataManagerDistributor {
judges.put(MissionType.SUB_ACTIVITY,new SubActivityManager());//社稷大典捐献次数
judges.put(MissionType.TAKE_ADVENTURE_REWARD_COUNT,new TakeAdventureRewardManager());//急速探索次数
judges.put(MissionType.DAILY_CHALLENGE_COUNT,new DailyChallengeManager());//副本挑战次数
judges.put(MissionType.NEW_HERO_ZHAOMU,new NewHeroZhaomuManager());//新将招募次数
}

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionType;
public class NewHeroZhaomuManager extends AbstractDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.new_hero_zhaomu += num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.new_hero_zhaomu >= value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.new_hero_zhaomu;
}
}

View File

@ -535,6 +535,11 @@ public class MissionEventDistributor {
typeList.add(MissionType.TAKE_ADVENTURE_REWARD_COUNT);
eventEnumListMap.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, typeList);
eventProcessor.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, new CumulationDataEventProcessor());
//新将招募次数
typeList = new ArrayList<>();
typeList.add(MissionType.NEW_HERO_ZHAOMU);
eventEnumListMap.put(GameEvent.NEW_HERO_ZHAOMU, typeList);
eventProcessor.put(GameEvent.NEW_HERO_ZHAOMU, new CumulationDataEventProcessor());
//日常副本挑战次数
typeList = new ArrayList<>();
typeList.add(MissionType.DAILY_CHALLENGE_COUNT);