循环活动二版

grimm 2024-02-03 18:45:49 +08:00
parent 065d492cde
commit 5b82fa8fb6
9 changed files with 60 additions and 26 deletions

View File

@ -458,8 +458,8 @@ public class ActivityLogic implements IEventHandler{
long latelyEndTime = latelyStartTime + (endTime - startTime);
ActivityMission mission = activityMissionMap.get(activityId);
// 活动存在,当前时间大于最近的结束时间,表示当期活动结束
if (mission != null && now > latelyEndTime){
// 活动存在,(当前时间大于最近的结束时间 或 活动创建时间大于最近得开启时间),表示当期活动结束
if (mission != null && (now > latelyEndTime || mission.getCreatTime() < latelyStartTime)){
goRewardActivity(user,activityId,builder, isRemove);
continue;
}

View File

@ -206,9 +206,6 @@ public class SuperFundNewActivity extends AbstractActivity {
/**
*
* @param user
* @return
* @throws Exception
*/
private ReceiveWelfareBag getBagInfo(User user){
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);

View File

@ -11,6 +11,8 @@ import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
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.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.*;
@ -38,6 +40,8 @@ public class WeekCardActivity extends AbstractActivity {
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
// 刷新礼包信息
refreshGood(user);
// 初始化礼包信息
user.getPlayerInfoManager().setWeekCard(new HashMap<>());
LOGGER.info("月卡初始化...uid={} activityId={}",user.getId(), id);
@ -67,6 +71,30 @@ public class WeekCardActivity extends AbstractActivity {
}
}
/**
*
*/
private void refreshGood(User user){
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (activity == null){
return;
}
int[] canBuyRechargeId = activity.getCanBuyRechargeId();
if (canBuyRechargeId == null || canBuyRechargeId.length <= 0){
return;
}
Map<Integer, AbstractWelfareBag> receiveMap = user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap();
for (int goodId : canBuyRechargeId) {
AbstractWelfareBag bag = receiveMap.get(goodId);
if (bag == null){
LOGGER.error("礼包刷新结束礼包不存在活动id{}礼包id{}",id, canBuyRechargeId[0]);
continue;
}
PerpetualWelfareBag welfareBag = (PerpetualWelfareBag) bag;
welfareBag.refresh();
}
}
/**
*
*/

View File

@ -269,7 +269,6 @@ public class UserMissionManager extends MongoBase {
}
if(!achievementMissionTypMap.getDoingMissionIds().isEmpty() ){
List<SAchievementConfig> sAchievementConfigs = SAchievementConfig.sTaskConfigByTypeMap.get(missionType.getMissionTypeValue());
if(sAchievementConfigs!=null&& !sAchievementConfigs.isEmpty()){
CumulationData.Result result= achievementMap.updateData(missionType, parm);
@ -314,7 +313,7 @@ public class UserMissionManager extends MongoBase {
}
// 公用任务类型,累计次数形式
CumulationData.Result result = cumulationData.updateData(missionType, parm);
if(result!=null){
if(result != null){
updateString("cumulationData",cumulationData);
// vip任务
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);

View File

@ -103,13 +103,13 @@ public class MissionLogic {
return task;
}
public int[] resetJadeDynastyTaskInfo(User user, int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap){
public void resetJadeDynastyTaskInfo(User user, int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap){
UserMissionManager missionManager = user.getUserMissionManager();
JadeDynastyMissionType jadeDynastyMissionType = missionManager.getJadeDynastyMissionType();
//周刷新检测
if (type == 2) {
if (jadeDynastyMissionType.getWeekRefresh() != 0 && TimeUtils.now()<jadeDynastyMissionType.getWeekRefresh() ) {
return null;
return;
}
jadeDynastyMissionType.setWeekRefresh(TimeUtils.now());
}
@ -142,6 +142,5 @@ public class MissionLogic {
if(type==2){
missionManager.setJadeDynastyWeekCumulationData(jadeDynastyCumulationData);
}
return tasks;
}
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.mission.event;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.UserMissionManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
@ -8,10 +9,7 @@ import com.ljsd.jieling.logic.mission.main.CowFlySkyMissionType;
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
import config.SArroGantFly;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
public class CowFlySkyRefreshEventProcess implements BaseGameEventProcessor {
@Override
@ -26,5 +24,10 @@ public class CowFlySkyRefreshEventProcess implements BaseGameEventProcessor {
cowFlySkyMissionType.getRewardedMissionIds().clear();
cowFlySkyMissionType.getDoingMissionIds().addAll(arro);
missionManager.setCowFlySkyMissionType(cowFlySkyMissionType);
// 刷新数据
CumulationData cumulationData = user.getUserMissionManager().getCumulationData();
List<MissionStateChangeInfo> infos = misionTypeListMap.getOrDefault(GameMisionType.COWFLYSKYMISSION, new ArrayList<>());
cowFlySkyMissionType.initRefreshCumulationData(user,infos,cumulationData,activityCowId);
}
}

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.mission.event;
import com.ljsd.jieling.logic.dao.UserMissionManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.GameMisionType;
@ -13,7 +12,6 @@ import java.util.Map;
public class JadeDynastyRefreshEventProcess implements BaseGameEventProcessor {
@Override
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
UserMissionManager missionManager = user.getUserMissionManager();
//当前轮次破阵诛仙的活动ID
int jadeAid = (int) parm[0];
MissionLogic.getInstance().resetJadeDynastyTaskInfo(user,1, jadeAid, misionTypeListMap);

View File

@ -20,7 +20,7 @@ public class MistyTripRefreshEventProcess implements BaseGameEventProcessor {
UserMissionManager missionManager = user.getUserMissionManager();
MistyTripMissionType mistyTripMissionType = missionManager.getMistyTripMissionType();
//任务开始
if(mistyTripMissionType.getDoingMissionIds().size() != 0 || mistyTripMissionType.getFinishMissionIds().size() != 0){
if(!mistyTripMissionType.getDoingMissionIds().isEmpty() || !mistyTripMissionType.getFinishMissionIds().isEmpty()){
return;
}
Set<Integer> journeyWithWind = STableManager.getConfig(SJourneyWithWind.class).keySet();

View File

@ -51,15 +51,9 @@ public class CowFlySkyMissionType extends AbstractMissionType {
}
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
// 进行中得任务
public void missionRefresh(User user, List<SArroGantFly> flyList, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData){
Set<Integer> doingMissionIds = getDoingMissionIds();
Map<Integer, SArroGantFly> flyMap = SArroGantFly.getTaskTypeMap().get(result.subType.getMissionTypeValue());
if (flyMap == null || flyMap.isEmpty()){
return;
}
for (SArroGantFly fly : flyMap.values()) {
for (SArroGantFly fly : flyList) {
// 任务子id
int id = fly.getId();
// 不在执行中
@ -84,7 +78,23 @@ public class CowFlySkyMissionType extends AbstractMissionType {
// 任务列表更新
doingMissionIds.remove(id);
getFinishMissionIds().add(id);
}
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
Map<Integer, SArroGantFly> flyMap = SArroGantFly.getTaskTypeMap().get(result.subType.getMissionTypeValue());
if (flyMap == null || flyMap.isEmpty()){
return;
}
missionRefresh(user, new ArrayList<>(flyMap.values()), missionStateChangeInfos, cumulationData);
}
public void initRefreshCumulationData(User user, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData, int activityId){
Map<Integer, SArroGantFly> flyMap = SArroGantFly.getActivityMap().get(activityId);
if (flyMap == null || flyMap.isEmpty()){
return;
}
missionRefresh(user, new ArrayList<>(flyMap.values()), missionStateChangeInfos, cumulationData);
}
}