任务刷新逻辑修改
parent
90c4c479f4
commit
eff7205fb8
|
@ -34,7 +34,7 @@ public class MissingRoomRefreshHandler extends BaseHandler {
|
|||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
User user = UserManager.getUser(iSession.getUid());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.REFRESH_MISSING_ROOM,1);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.MISSING_ROOM_REFRESH, MissionType.REFRESH_MISSING_ROOM,1);
|
||||
List<CommonProto.UserMissionInfo> userMissionInfos = new ArrayList<>();
|
||||
MissionLoigc.getMissingRoomMission(user,userMissionInfos);
|
||||
PlayerInfoProto.MissingRoomRefreshResponse response = PlayerInfoProto.MissingRoomRefreshResponse.newBuilder().addAllInfos(userMissionInfos).build();
|
||||
|
|
|
@ -15,13 +15,6 @@ public class TakeMissionRewardHandler extends BaseHandler<PlayerInfoProto.TakeMi
|
|||
return MessageTypeProto.MessageType.TAKE_MISSION_REWARD_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
// byte[] bytes = netData.parseClientProtoNetData();
|
||||
// PlayerInfoProto.TakeMissionRewardRequest takeMissionRewardRequest = PlayerInfoProto.TakeMissionRewardRequest.parseFrom(bytes);
|
||||
// MissionLoigc.takeMissionReward(iSession,takeMissionRewardRequest.getType(),takeMissionRewardRequest.getMissionId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, PlayerInfoProto.TakeMissionRewardRequest proto) throws Exception {
|
||||
MissionLoigc.takeMissionReward(iSession,proto.getType(),proto.getMissionId());
|
||||
|
|
|
@ -188,13 +188,13 @@ public class UserManager {
|
|||
PlayerLogic.getInstance().vipflushEveryDay(user,null);
|
||||
ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
|
||||
user.getMainLevelManager().init();
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.USER_LEVEL,0,1);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP, MissionType.USER_LEVEL,0,1);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.REFRESH_MISSING_ROOM,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.MISSING_ROOM_REFRESH,MissionType.REFRESH_MISSING_ROOM,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ACHIEVE_REFRESH, 0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.VIP_LEVLUP,0);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.VIP_LEVLUP, MissionType.VIP_LEVEL,0);
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1));
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.CREATE_ROLE.getType());//先发送注册事件
|
||||
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
|
||||
|
|
|
@ -1,38 +1,22 @@
|
|||
package com.ljsd.jieling.logic.dao;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.common.mogodb.MongoBase;
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
|
||||
import com.ljsd.jieling.core.VipPrivilegeType;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hardStage.HardStageLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionState;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
||||
import com.ljsd.jieling.logic.mission.main.*;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.*;
|
||||
import manager.STableManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.MathUtils;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -56,26 +40,33 @@ public class UserMissionManager extends MongoBase {
|
|||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(UserMissionManager.class);
|
||||
|
||||
// 任务信息初始化
|
||||
//******************************************* 任务信息初始化 ******************************************* //
|
||||
|
||||
|
||||
private DailyMissionIdsType dailyMissionIdsType = new DailyMissionIdsType();// 每日任务
|
||||
private CumulationData dailyCumulationData = new CumulationData();// 每日任务数据
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();// 迷宫寻宝
|
||||
private DonghaiXunxianMissionType donghaiXunxianMission = new DonghaiXunxianMissionType();//东海寻仙
|
||||
private CumulationData donghaiXunxianData = new CumulationData();//东海寻仙数据
|
||||
|
||||
private VipMissionIdsType vipMissionIdsType=new VipMissionIdsType();
|
||||
private DailyMissionIdsType dailyMissionIdsType=new DailyMissionIdsType();
|
||||
private BeginerTaskIdsType beginerTaskIdsType=new BeginerTaskIdsType();
|
||||
private TreasureMissionType treasureMissionIdsType=new TreasureMissionType();
|
||||
private ServenMissionIdsType sevenHappyMissionType =new ServenMissionIdsType();
|
||||
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
|
||||
|
||||
private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType();
|
||||
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();//破阵诛仙任务
|
||||
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();// 牛气冲天活动任务
|
||||
private EndlessMissionType endlessMissionType = new EndlessMissionType();//无尽副本
|
||||
private MistyTripMissionType mistyTripMissionType = new MistyTripMissionType();//缥缈之旅
|
||||
private HomeMissionType homeMissionType = new HomeMissionType();//家园任务
|
||||
private DonghaiXunxianMissionType donghaiXunxianMission = new DonghaiXunxianMissionType();//东海寻仙
|
||||
|
||||
private ExploreMissionType exploreMissionType = new ExploreMissionType();//探索
|
||||
|
||||
//数据累加项
|
||||
private CumulationData cumulationData = new CumulationData();
|
||||
private CumulationData dailyCumulationData = new CumulationData();
|
||||
|
||||
private CumulationData beginCumulationData = new CumulationData();
|
||||
private CumulationData treasureCumulationData = new CumulationData();
|
||||
private CumulationData treasureWeekCumulationData = new CumulationData();
|
||||
|
@ -85,312 +76,6 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据
|
||||
private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据
|
||||
private CumulationData mistyTripCumulationData = new CumulationData();//缥缈之旅数据
|
||||
private CumulationData donghaiXunxianData = new CumulationData();//东海寻仙数据
|
||||
|
||||
/**
|
||||
* 触发任务上身
|
||||
* @param user
|
||||
* @param event
|
||||
* @param missionTypeEnumListMap
|
||||
* @param parm
|
||||
* @throws Exception
|
||||
*/
|
||||
public void openMission(User user, GameEvent event, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception {
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
switch (event) {
|
||||
case VIP_LEVLUP: {
|
||||
int vipLevle = (int) parm[0];
|
||||
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle);
|
||||
int[] openRules = sVipLevelConfig.getOpenRules();
|
||||
for (int missionId : openRules) {
|
||||
vipMissionIdsType.openMission(user, missionId, missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
|
||||
}
|
||||
updateString("vipMissionIdsType", vipMissionIdsType);
|
||||
break;
|
||||
}
|
||||
case DONGHAIXUNXIAN_INIT:
|
||||
// 东海寻仙活动初始化
|
||||
resetDonghaiXunxianTaskInfo((int)parm[0]);
|
||||
break;
|
||||
case HOME_TASK_INIT:
|
||||
homeMissionType.openMission(user,0,null);
|
||||
updateString("homeMissionType", homeMissionType);
|
||||
break;
|
||||
case DAILY_REFRESH:
|
||||
Set<Integer> missionIds;
|
||||
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
|
||||
int days = TimeUtils.getDayOfMonth(GameApplication.serverConfig.getCacheOpenTime());//当月第几天
|
||||
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->days >=n.
|
||||
getViewDateUp()&& days <=n.getViewDataDown()).map(SDailyTasksConfig::getId).collect(Collectors.toSet());
|
||||
}else{
|
||||
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values().stream().filter(n->n.getViewDateUp() == 1).
|
||||
map(SDailyTasksConfig::getId).collect(Collectors.toSet());
|
||||
}
|
||||
int type = (int) parm[0];
|
||||
if (type == 0) {
|
||||
dailyMissionIdsType.getDoingMissionIds().clear();
|
||||
dailyMissionIdsType.getFinishMissionIds().clear();
|
||||
dailyMissionIdsType.getRewardedMissionIds().clear();
|
||||
dailyCumulationData = new CumulationData();
|
||||
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
|
||||
updateString("dailyCumulationData", dailyCumulationData);
|
||||
}
|
||||
updateString("dailyMissionIdsType", dailyMissionIdsType);
|
||||
break;
|
||||
case TREASH_REFRESH:
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int activityId = (int) parm[0];
|
||||
|
||||
int[] refreshIds = resetTreasureTaskInfo(1, activityId, missionTypeEnumListMap, treasureCumulationData);
|
||||
treasureCumulationData = new CumulationData();
|
||||
int dayRefreshTime = (int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0, false) / 1000);
|
||||
CommonProto.RefreshTask.Builder task = treasureIndicationBuild(1, refreshIds).setRefreshTime(dayRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication1, true);
|
||||
break;
|
||||
case TREASH_WEEK_REFRESH:
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aId = (int) parm[0];
|
||||
int[] weekRefreshIds = resetTreasureTaskInfo(2, aId, missionTypeEnumListMap, treasureWeekCumulationData);
|
||||
if (weekRefreshIds != null) {
|
||||
treasureWeekCumulationData = new CumulationData();
|
||||
int weekRefreshTime = (int) (TimeUtils.getNextWeekendStartTime(1, 0) / 1000);
|
||||
user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY);
|
||||
CommonProto.RefreshTask.Builder task2 = treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication2, true);
|
||||
}
|
||||
break;
|
||||
case TREASH_MONTH_REFRESH:
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aid = (int) parm[0];
|
||||
user.getPlayerInfoManager().setTreasureLevel(0);
|
||||
Item item = user.getItemManager().getItem(Global.TREASURE_SCORE);
|
||||
if (item != null) {
|
||||
if (item.getItemNum() != 0) {
|
||||
Map<Integer, Integer> treasureScore = new HashMap<>();
|
||||
treasureScore.put(Global.TREASURE_SCORE, (int) item.getItemNum());
|
||||
try {
|
||||
ItemUtil.itemCost(user, treasureScore, BIReason.TREASURE_RESET_CONSUME, 1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
treasureMonthCumulationData = new CumulationData();
|
||||
int[] monthRefreshIds1 = resetTreasureTaskInfo(3, aid, missionTypeEnumListMap, treasureMonthCumulationData);
|
||||
|
||||
CommonProto.RefreshTask.Builder task5 = treasureIndicationBuild(3, monthRefreshIds1);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task5.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication3, true);
|
||||
break;
|
||||
case JADE_DYNASTY_REFRESH:
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAId = (int) parm[0];
|
||||
resetJadeDynastyTaskInfo(1, jadeAId, missionTypeEnumListMap, jadeDynastyCumulationData);
|
||||
jadeDynastyCumulationData = new CumulationData();
|
||||
break;
|
||||
case JADE_DYNASTY_WEEK_REFRESH:
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAid = (int) parm[0];
|
||||
int[] weekMIds = resetJadeDynastyTaskInfo(2, jadeAid, missionTypeEnumListMap, jadeDynastyWeekCumulationData);
|
||||
if (weekMIds != null) {
|
||||
jadeDynastyWeekCumulationData = new CumulationData();
|
||||
}
|
||||
break;
|
||||
case SERVENHAPPY_REFRESH:
|
||||
List<STreasureTaskConfig> sTreasureTaskConfigs = null;
|
||||
sTreasureTaskConfigs = STableManager.getFigureConfig(TaskStaticConfig.class).getsTreasureTaskConfigListByActivityMap().get(parm[0]);
|
||||
sevenHappyMissionType.getDoingMissionIds().clear();
|
||||
sevenHappyMissionType.getFinishMissionIds().clear();
|
||||
sevenHappyMissionType.getRewardedMissionIds().clear();
|
||||
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
|
||||
for (STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs) {
|
||||
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
|
||||
}
|
||||
sevenHappyCumulationData = new CumulationData();
|
||||
sevenHappyMissionType.checkAndUpdateMision(user, sTreasureTaskConfigs, servenMissionmStateChangeInfos, sevenHappyCumulationData);
|
||||
updateString("sevenHappyMissionType", sevenHappyMissionType);
|
||||
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
|
||||
break;
|
||||
case BEGINNER:
|
||||
for (Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()) {
|
||||
beginerTaskIdsType.addDoingMission(id);
|
||||
}
|
||||
beginCumulationData = new CumulationData();
|
||||
updateString("beginerTaskIdsType", beginerTaskIdsType);
|
||||
updateString("beginCumulationData", beginCumulationData);
|
||||
break;
|
||||
|
||||
case BLOODY_REFRESH:
|
||||
Set<Integer> bloodyMissionIds = STableManager.getConfig(SBloodyBattleTask.class).keySet();
|
||||
bloodyMissionIdsType.getDoingMissionIds().clear();
|
||||
bloodyMissionIdsType.getFinishMissionIds().clear();
|
||||
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 COW_FLY_SKY_REFRESH:
|
||||
int activityCowId = (int) parm[0];
|
||||
// 牛气冲天
|
||||
Set<Integer> arro = SArroGantFly.getActivityMap().getOrDefault(activityCowId, new HashMap<>()).keySet();
|
||||
cowFlySkyMissionType.getDoingMissionIds().clear();
|
||||
cowFlySkyMissionType.getFinishMissionIds().clear();
|
||||
cowFlySkyMissionType.getRewardedMissionIds().clear();
|
||||
cowFlySkyMissionType.getDoingMissionIds().addAll(arro);
|
||||
updateString("cowFlySkyMissionType", cowFlySkyMissionType);
|
||||
break;
|
||||
case MISTY_TRIP_REFRESH:
|
||||
//任务开始
|
||||
Set<Integer> journeyWithWind = STableManager.getConfig(SJourneyWithWind.class).keySet();
|
||||
if( mistyTripMissionType.getDoingMissionIds().size()==0 && mistyTripMissionType.getFinishMissionIds().size() == 0){
|
||||
mistyTripMissionType.getDoingMissionIds().clear();
|
||||
mistyTripMissionType.getFinishMissionIds().clear();
|
||||
mistyTripMissionType.getRewardedMissionIds().clear();
|
||||
mistyTripMissionType.getDoingMissionIds().addAll(journeyWithWind);
|
||||
this.mistyTripCumulationData= new CumulationData();
|
||||
updateString("mistyTripMissionType", mistyTripMissionType);
|
||||
updateString("mistyTripCumulationData", this.mistyTripCumulationData);
|
||||
}
|
||||
break;
|
||||
case MISSING_ROOM_REFRESH:
|
||||
//天宫寻宝
|
||||
Map<Integer, Integer> mustAppear = new HashMap<>();
|
||||
List<Integer> mustMissions = new ArrayList<>();
|
||||
List<Integer> lockMissions = new ArrayList<>();
|
||||
if ((int) parm[0] == 1) {
|
||||
//删除已经领取奖励的
|
||||
missingRoomMissionType.getFinishMissionIds().removeIf(value -> missingRoomMissionType.getAllMissingTime().get(value) == -1);
|
||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value -> value == -1);
|
||||
// 任务全部锁定
|
||||
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||
if (lockMissionIds.size() >= 6) {
|
||||
throw new ErrorCodeException(ErrorCode.LOCK_FILL);
|
||||
}
|
||||
// 读表
|
||||
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
|
||||
boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP());
|
||||
int[][] cost = sMazeTreasureSetting.getCost();
|
||||
int count = (int) MathUtils.calABX(coinRefreshCount, cost[1]);
|
||||
result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(), 1);
|
||||
}
|
||||
//高级特权
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getHighDailyPrivilege(), mustAppear);
|
||||
//豪华特权
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getLuxuryDailyPrivilege(), mustAppear);
|
||||
//非免费抽取次数必出
|
||||
missingRoomMissionType.notFreeRefreshMust(user, sMazeTreasureSetting.getRefreshHighTypeNum(), mustAppear);
|
||||
// 刷新次数+1
|
||||
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount() + 1);
|
||||
}
|
||||
|
||||
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
|
||||
doingMissionIds.forEach((doing) -> {
|
||||
if (lockMissionIds.contains(doing)) {
|
||||
lockMissions.add(doing);
|
||||
}
|
||||
});
|
||||
|
||||
missingRoomMissionType.getDoingMissionIds().clear();
|
||||
} else {
|
||||
for (int firstTask : SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()) {
|
||||
mustMissions.add(firstTask);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新最大长度限制6条
|
||||
if (lockMissions.size() + mustAppear.size() > 6) {
|
||||
// 锁定的不能动,获取特权任务数量
|
||||
int num = 6 - lockMissions.size();
|
||||
// 特权的key
|
||||
Set<Integer> keys = mustAppear.keySet();
|
||||
// 正序的set
|
||||
Set<Integer> sortSet = new TreeSet<Integer>(Comparator.naturalOrder());
|
||||
// 赋值
|
||||
sortSet.addAll(keys);
|
||||
// 遍历,如果数量满足,停止,不满足则删除等级小的任务
|
||||
for (Integer ints : sortSet) {
|
||||
if (mustAppear.size() == num) {
|
||||
break;
|
||||
}
|
||||
mustAppear.remove(ints);
|
||||
}
|
||||
}
|
||||
|
||||
if (!mustAppear.isEmpty()) {
|
||||
for (Map.Entry<Integer, Integer> entry : mustAppear.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
List<int[]> mustList = new ArrayList<>();
|
||||
for (SMazeTreasure maze : sMazeTreasures) {
|
||||
if (mustMissions.contains(maze.getId())) {
|
||||
continue;
|
||||
}
|
||||
int[] refreshWeight = new int[2];
|
||||
refreshWeight[0] = maze.getId();
|
||||
refreshWeight[1] = 1;
|
||||
mustList.add(refreshWeight);
|
||||
}
|
||||
int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
|
||||
Arrays.stream(missions).forEach(mustMissions::add);
|
||||
}
|
||||
}
|
||||
int[][] qualityRate = SMazeTreasureSetting.sMazeTreasureSetting.getQualityRate();
|
||||
|
||||
//根据品质来随机
|
||||
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size()));
|
||||
Map<Integer, Integer> qualityNum = new HashMap<>();
|
||||
for (int quality : qualityArray) {
|
||||
qualityNum.put(quality, qualityNum.getOrDefault(quality, 0) + 1);
|
||||
}
|
||||
for (Map.Entry<Integer, Integer> entry : qualityNum.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
int[][] treasures = new int[sMazeTreasures.size()][];
|
||||
for (int i = 0; i < sMazeTreasures.size(); i++) {
|
||||
|
||||
treasures[i] = new int[2];
|
||||
treasures[i][0] = sMazeTreasures.get(i).getId();
|
||||
treasures[i][1] = 1;
|
||||
}
|
||||
int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue());
|
||||
for (int id : ids) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + id);
|
||||
}
|
||||
}
|
||||
// 必须任务
|
||||
for (int mission : mustMissions) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + mission);
|
||||
}
|
||||
// 上锁任务
|
||||
for (int mission : lockMissions) {
|
||||
missingRoomMissionType.addDoingMission(mission);
|
||||
}
|
||||
updateString("missingRoomMissionType", missingRoomMissionType);
|
||||
break;
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖励处理任务
|
||||
|
@ -490,7 +175,7 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* 记录任务进度
|
||||
* TODO: 2023/7/20 记录任务进度 这个方法需要修改
|
||||
* @param user
|
||||
* @param missionType
|
||||
* @param missionTypeEnumListMap
|
||||
|
@ -652,166 +337,17 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
|
||||
|
||||
private int[] resetTreasureTaskInfo(int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap,CumulationData treasureCumulationData){
|
||||
//周刷新检测
|
||||
if (type == 2) {
|
||||
if(activityId!=801){
|
||||
if(treasureMissionIdsType.getWeekRefresh()!=0&&TimeUtils.now()<treasureMissionIdsType.getWeekRefresh()){
|
||||
return null;
|
||||
}
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
if(TimeUtils.now()>endTime){
|
||||
return null;
|
||||
}
|
||||
do{
|
||||
startTime += TimeUtils.WEEK;
|
||||
}while(startTime<TimeUtils.now()&&startTime<endTime);
|
||||
//如果小于两周 直接到结束
|
||||
if(endTime-startTime<TimeUtils.WEEK){
|
||||
startTime = endTime;
|
||||
}
|
||||
treasureMissionIdsType.setWeekRefresh(startTime);
|
||||
}else{
|
||||
if (treasureMissionIdsType.getWeekRefresh() != 0 && !TimeUtils.isSpanTime(treasureMissionIdsType.getWeekRefresh(), TimeUtils.now(), 1, 0)) {
|
||||
return null;
|
||||
}
|
||||
treasureMissionIdsType.setWeekRefresh(TimeUtils.now());
|
||||
}
|
||||
|
||||
}
|
||||
//int[] typeMissionNum = SSpecialConfig.getOnceArrayValue(SSpecialConfig.SUNLONG_DAILYTASKS);
|
||||
List<Integer> taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type);
|
||||
List<Integer> newTasks = new ArrayList<>();
|
||||
for (Integer treasure : taskTypeMap) {
|
||||
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(treasure);
|
||||
//需要判断这个任务是不是当前轮次的
|
||||
if (config.getActivityId() == activityId) {
|
||||
newTasks.add(treasure);
|
||||
}
|
||||
if (treasureMissionIdsType.getDoingMissionIds().contains(treasure)) {
|
||||
treasureMissionIdsType.getDoingMissionIds().remove(treasure);
|
||||
}
|
||||
if (treasureMissionIdsType.getFinishMissionIds().contains(treasure)) {
|
||||
treasureMissionIdsType.getFinishMissionIds().remove(treasure);
|
||||
}
|
||||
if (treasureMissionIdsType.getRewardedMissionIds().get(treasure)) {
|
||||
treasureMissionIdsType.getRewardedMissionIds().clear(treasure);
|
||||
}
|
||||
}
|
||||
/*
|
||||
戒灵秘宝之前的任务刷新逻辑是,不关联活动ID
|
||||
每次刷新任务从表里配的里边随机出SpecialConfig中配置的活动数量
|
||||
现在更改为,不随机,关联活动ID 2020.08.20
|
||||
*/
|
||||
/*int[][] randomTask = new int[taskTypeMap.size()][];
|
||||
for(int i = 0 ; i<randomTask.length;i++){
|
||||
int [] temp=new int[2];
|
||||
temp[0] = taskTypeMap.get(i);
|
||||
temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getWeight();
|
||||
randomTask[i] = temp;
|
||||
}
|
||||
int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask,Math.max(typeMissionNum[type-1],randomTask.length));*/// typeMissionNum[type-1]
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
|
||||
int[] tasks = new int[newTasks.size()];
|
||||
for(Integer task:newTasks){
|
||||
missionStateChangeInfos.add(new MissionStateChangeInfo(task, MissionState.DOING,0));
|
||||
treasureMissionIdsType.getDoingMissionIds().add(task);
|
||||
}
|
||||
treasureCumulationData = new CumulationData();
|
||||
updateString("treasureMissionIdsType",treasureMissionIdsType);
|
||||
if(type==1){
|
||||
updateString("treasureCumulationData",treasureCumulationData);
|
||||
}else if(type==2){
|
||||
updateString("treasureWeekCumulationData",treasureCumulationData);
|
||||
}else if(type==3){
|
||||
updateString("treasureMonthCumulationData",treasureCumulationData);
|
||||
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
|
||||
private int[] resetJadeDynastyTaskInfo(int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap,CumulationData jadeDynastyCumulationData){
|
||||
//周刷新检测
|
||||
if (type == 2) {
|
||||
if (jadeDynastyMissionType.getWeekRefresh() != 0 && TimeUtils.now()<jadeDynastyMissionType.getWeekRefresh() ) {
|
||||
return null;
|
||||
}
|
||||
jadeDynastyMissionType.setWeekRefresh(TimeUtils.now());
|
||||
}
|
||||
List<Integer> taskTypeMap = SThemeActivityTaskConfig.taskTypeMap.get(type);
|
||||
List<Integer> newTasks = new ArrayList<>();
|
||||
for (Integer treasure : taskTypeMap) {
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(treasure);
|
||||
//需要判断这个任务是不是当前轮次的
|
||||
if (config.getActivityId() == activityId) {
|
||||
newTasks.add(treasure);
|
||||
}
|
||||
jadeDynastyMissionType.getDoingMissionIds().remove(treasure);
|
||||
jadeDynastyMissionType.getFinishMissionIds().remove(treasure);
|
||||
if (jadeDynastyMissionType.getRewardedMissionIds().get(treasure)) {
|
||||
jadeDynastyMissionType.getRewardedMissionIds().clear(treasure);
|
||||
}
|
||||
}
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION);
|
||||
int[] tasks = new int[newTasks.size()];
|
||||
for (int i = 0; i < newTasks.size(); i++) {
|
||||
missionStateChangeInfos.add(new MissionStateChangeInfo(newTasks.get(i), MissionState.DOING,0));
|
||||
jadeDynastyMissionType.getDoingMissionIds().add(newTasks.get(i));
|
||||
tasks[i] = newTasks.get(i);
|
||||
}
|
||||
jadeDynastyCumulationData = new CumulationData();
|
||||
updateString("jadeDynastyMissionType",jadeDynastyMissionType);
|
||||
if(type==1){
|
||||
updateString("jadeDynastyCumulationData",jadeDynastyCumulationData);
|
||||
}
|
||||
if(type==2){
|
||||
updateString("jadeDynastyWeekCumulationData",jadeDynastyCumulationData);
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
* 东海寻仙活动初始化
|
||||
* @param activityId
|
||||
*/
|
||||
private void resetDonghaiXunxianTaskInfo(int activityId){
|
||||
donghaiXunxianMission.getDoingMissionIds().clear();
|
||||
donghaiXunxianMission.getFinishMissionIds().clear();
|
||||
donghaiXunxianMission.getRewardedMissionIds().clear();
|
||||
|
||||
List<SThemeActivityTaskConfig> taskConfigs = SThemeActivityTaskConfig.themeTaskByActivity.get(activityId);
|
||||
if (taskConfigs == null || taskConfigs.isEmpty()){
|
||||
LOGGER.error("东海寻仙任务初始化,ThemeActivityTaskConfig查询活动信息为空:{}",activityId);
|
||||
return;
|
||||
}
|
||||
for (SThemeActivityTaskConfig config : taskConfigs) {
|
||||
donghaiXunxianMission.getDoingMissionIds().add(config.getId());
|
||||
}
|
||||
donghaiXunxianData = new CumulationData();
|
||||
updateString("donghaiXunxianData",donghaiXunxianData);
|
||||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
}
|
||||
|
||||
private CommonProto.RefreshTask.Builder treasureIndicationBuild(int type,int[] refreshIds){
|
||||
CommonProto.RefreshTask.Builder task = CommonProto.RefreshTask.newBuilder().setType(type);
|
||||
for(int i = 0;i<refreshIds.length;i++){
|
||||
CommonProto.UserMissionInfo tempTask = CommonProto.UserMissionInfo.newBuilder().setMissionId(refreshIds[i]).build();
|
||||
task.addTasks(tempTask).build();
|
||||
}
|
||||
return task;
|
||||
}
|
||||
public void setVipMissionIdsType(VipMissionIdsType vipMissionIdsType) {
|
||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
this.vipMissionIdsType = vipMissionIdsType;
|
||||
}
|
||||
|
||||
public void setSevenHappyMissionType(ServenMissionIdsType sevenHappyMissionType) {
|
||||
updateString("sevenHappyMissionType",sevenHappyMissionType);
|
||||
this.sevenHappyMissionType = sevenHappyMissionType;
|
||||
}
|
||||
|
||||
|
||||
public void setVipMissionIdsType(VipMissionIdsType vipMissionIdsType) {
|
||||
this.vipMissionIdsType = vipMissionIdsType;
|
||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
}
|
||||
|
||||
public VipMissionIdsType getVipMissionIdsType() {
|
||||
return vipMissionIdsType;
|
||||
}
|
||||
|
@ -820,6 +356,16 @@ public class UserMissionManager extends MongoBase {
|
|||
return cumulationData;
|
||||
}
|
||||
|
||||
public void setDailyMissionIdsType(DailyMissionIdsType dailyMissionIdsType) {
|
||||
this.dailyMissionIdsType = dailyMissionIdsType;
|
||||
updateString("dailyMissionIdsType", dailyMissionIdsType);
|
||||
}
|
||||
|
||||
public void setDailyCumulationData(CumulationData dailyCumulationData) {
|
||||
this.dailyCumulationData = dailyCumulationData;
|
||||
updateString("dailyCumulationData", dailyCumulationData);
|
||||
}
|
||||
|
||||
public DailyMissionIdsType getDailyMissionIdsType() {
|
||||
return dailyMissionIdsType;
|
||||
}
|
||||
|
@ -828,17 +374,98 @@ public class UserMissionManager extends MongoBase {
|
|||
return dailyCumulationData;
|
||||
}
|
||||
|
||||
public void setBeginerTaskIdsType(BeginerTaskIdsType beginerTaskIdsType) {
|
||||
this.beginerTaskIdsType = beginerTaskIdsType;
|
||||
updateString("beginerTaskIdsType", beginerTaskIdsType);
|
||||
}
|
||||
|
||||
public void setJadeDynastyMissionType(JadeDynastyMissionType jadeDynastyMissionType) {
|
||||
this.jadeDynastyMissionType = jadeDynastyMissionType;
|
||||
updateString("jadeDynastyMissionType", jadeDynastyMissionType);
|
||||
}
|
||||
|
||||
public void setCowFlySkyMissionType(CowFlySkyMissionType cowFlySkyMissionType) {
|
||||
this.cowFlySkyMissionType = cowFlySkyMissionType;
|
||||
updateString("cowFlySkyMissionType", cowFlySkyMissionType);
|
||||
}
|
||||
|
||||
public void setEndlessMissionType(EndlessMissionType endlessMissionType) {
|
||||
this.endlessMissionType = endlessMissionType;
|
||||
updateString("endlessMissionType", endlessMissionType);
|
||||
}
|
||||
|
||||
public void setMistyTripMissionType(MistyTripMissionType mistyTripMissionType) {
|
||||
this.mistyTripMissionType = mistyTripMissionType;
|
||||
updateString("mistyTripMissionType", mistyTripMissionType);
|
||||
}
|
||||
|
||||
public void setHomeMissionType(HomeMissionType homeMissionType) {
|
||||
this.homeMissionType = homeMissionType;
|
||||
updateString("homeMissionType", homeMissionType);
|
||||
}
|
||||
|
||||
public void setExploreMissionType(ExploreMissionType exploreMissionType) {
|
||||
this.exploreMissionType = exploreMissionType;
|
||||
updateString("exploreMissionType", exploreMissionType);
|
||||
}
|
||||
|
||||
public void setCumulationData(CumulationData cumulationData) {
|
||||
this.cumulationData = cumulationData;
|
||||
updateString("cumulationData", cumulationData);
|
||||
}
|
||||
|
||||
public void setBeginCumulationData(CumulationData beginCumulationData) {
|
||||
this.beginCumulationData = beginCumulationData;
|
||||
updateString("beginCumulationData", beginCumulationData);
|
||||
}
|
||||
|
||||
public void setTreasureWeekCumulationData(CumulationData treasureWeekCumulationData) {
|
||||
this.treasureWeekCumulationData = treasureWeekCumulationData;
|
||||
updateString("treasureWeekCumulationData", treasureWeekCumulationData);
|
||||
}
|
||||
|
||||
public void setTreasureMonthCumulationData(CumulationData treasureMonthCumulationData) {
|
||||
this.treasureMonthCumulationData = treasureMonthCumulationData;
|
||||
updateString("treasureMonthCumulationData", treasureMonthCumulationData);
|
||||
}
|
||||
|
||||
public void setSevenHappyCumulationData(CumulationData sevenHappyCumulationData) {
|
||||
this.sevenHappyCumulationData = sevenHappyCumulationData;
|
||||
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
|
||||
}
|
||||
|
||||
public void setJadeDynastyCumulationData(CumulationData jadeDynastyCumulationData) {
|
||||
this.jadeDynastyCumulationData = jadeDynastyCumulationData;
|
||||
updateString("jadeDynastyCumulationData", jadeDynastyCumulationData);
|
||||
}
|
||||
|
||||
public void setJadeDynastyWeekCumulationData(CumulationData jadeDynastyWeekCumulationData) {
|
||||
this.jadeDynastyWeekCumulationData = jadeDynastyWeekCumulationData;
|
||||
updateString("jadeDynastyWeekCumulationData", jadeDynastyWeekCumulationData);
|
||||
}
|
||||
|
||||
public void setMistyTripCumulationData(CumulationData mistyTripCumulationData) {
|
||||
this.mistyTripCumulationData = mistyTripCumulationData;
|
||||
updateString("mistyTripCumulationData", mistyTripCumulationData);
|
||||
}
|
||||
|
||||
public void setTreasureCumulationData(CumulationData treasureCumulationData) {
|
||||
this.treasureCumulationData = treasureCumulationData;
|
||||
updateString("treasureCumulationData", treasureCumulationData);
|
||||
}
|
||||
|
||||
public void setTreasureMissionIdsType(TreasureMissionType treasureMissionIdsType) {
|
||||
this.treasureMissionIdsType = treasureMissionIdsType;
|
||||
updateString("treasureMissionIdsType", treasureMissionIdsType);
|
||||
}
|
||||
|
||||
public TreasureMissionType getTreasureMissionIdsType() {
|
||||
return treasureMissionIdsType;
|
||||
}
|
||||
|
||||
public CumulationData getTreasureCumulationData() {
|
||||
return treasureCumulationData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public ServenMissionIdsType getSevenHappyMissionType() {
|
||||
return sevenHappyMissionType;
|
||||
}
|
||||
|
@ -856,6 +483,11 @@ public class UserMissionManager extends MongoBase {
|
|||
return beginCumulationData;
|
||||
}
|
||||
|
||||
public void setBloodyMissionIdsType(BloodyMissionIdsType bloodyMissionIdsType) {
|
||||
this.bloodyMissionIdsType = bloodyMissionIdsType;
|
||||
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
|
||||
}
|
||||
|
||||
public BloodyMissionIdsType getBloodyMissionIdsType() {
|
||||
return bloodyMissionIdsType;
|
||||
}
|
||||
|
@ -868,14 +500,29 @@ public class UserMissionManager extends MongoBase {
|
|||
return treasureMonthCumulationData;
|
||||
}
|
||||
|
||||
public void setMissingRoomMissionType(MissingRoomMissionType missingRoomMissionType) {
|
||||
this.missingRoomMissionType = missingRoomMissionType;
|
||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||
}
|
||||
|
||||
public MissingRoomMissionType getMissingRoomMissionType() {
|
||||
return missingRoomMissionType;
|
||||
}
|
||||
|
||||
public void setAchievementMissionTypMap(AchieveMissionIdsType achievementMissionTypMap) {
|
||||
this.achievementMissionTypMap = achievementMissionTypMap;
|
||||
updateString("achievementMissionTypMap",achievementMissionTypMap);
|
||||
}
|
||||
|
||||
public AchieveMissionIdsType getAchievementMissionTypMap() {
|
||||
return achievementMissionTypMap;
|
||||
}
|
||||
|
||||
public void setAchievementMap(CumulationData achievementMap) {
|
||||
this.achievementMap = achievementMap;
|
||||
updateString("achievementMap",achievementMap);
|
||||
}
|
||||
|
||||
public CumulationData getAchievementMap() {
|
||||
return achievementMap;
|
||||
}
|
||||
|
@ -912,6 +559,16 @@ public class UserMissionManager extends MongoBase {
|
|||
return homeMissionType;
|
||||
}
|
||||
|
||||
public void setDonghaiXunxianMission(DonghaiXunxianMissionType donghaiXunxianMission) {
|
||||
this.donghaiXunxianMission = donghaiXunxianMission;
|
||||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
}
|
||||
|
||||
public void setDonghaiXunxianData(CumulationData donghaiXunxianData) {
|
||||
this.donghaiXunxianData = donghaiXunxianData;
|
||||
updateString("donghaiXunxianData",donghaiXunxianData);
|
||||
}
|
||||
|
||||
public DonghaiXunxianMissionType getDonghaiXunxianMission() {
|
||||
return donghaiXunxianMission;
|
||||
}
|
||||
|
|
|
@ -437,11 +437,11 @@ public class HeroLogic {
|
|||
}
|
||||
if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE, MissionType.TIANDIHONGLU_NUM,1);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.TIANDIHONGLU_NUM,1);
|
||||
}
|
||||
if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRANSFORMATION_DRAW_CARD)){
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE, MissionType.FANGCUNXUNBAO_NUM,1);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.FANGCUNXUNBAO_NUM,1);
|
||||
}
|
||||
|
||||
//记录卡池抽奖次数
|
||||
|
@ -5126,7 +5126,7 @@ public class HeroLogic {
|
|||
pokemonManager.updatePokemonLevel(pokemonId, finalLevel);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
if (pokemonManager.getPokemonTeamMap().containsValue(pokemonId)) {
|
||||
// 更新战力
|
||||
|
@ -5213,7 +5213,7 @@ public class HeroLogic {
|
|||
pokemonManager.updatePokemonStar(pokemonId, pokemon.getStar() + 1);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
if (pokemonManager.getPokemonTeamMap().containsValue(pokemonId)) {
|
||||
// 更新战力
|
||||
|
@ -5282,7 +5282,7 @@ public class HeroLogic {
|
|||
pokemonManager.updatePokemonStar(pokemonId, 0);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.mission;
|
|||
|
||||
public enum GameEvent {
|
||||
VIP_LEVLUP, //vip等级提升
|
||||
TASL_REFRESH,//任务刷新
|
||||
DAILY_REFRESH,//日常任务刷新
|
||||
BLOODY_REFRESH,//血战任务刷新
|
||||
TREASH_REFRESH,//孙龙的宝藏
|
||||
|
@ -11,6 +12,7 @@ public enum GameEvent {
|
|||
ACHIEVE_REFRESH,//成就刷新
|
||||
MISSING_ROOM_REFRESH,//迷宫寻宝刷新
|
||||
BEGINNER,//新手
|
||||
USER_LEVELUP,//用户等级提升
|
||||
|
||||
RANDOM_HERO,// 抽卡
|
||||
GET_HERO,//获取新英雄
|
||||
|
@ -61,7 +63,6 @@ public enum GameEvent {
|
|||
HOME_TASK_REWARD,// 家园任务奖励
|
||||
|
||||
DONGHAIXUNXIAN_INIT,//东海寻仙,任务初始化
|
||||
DONGHAIXUNXIAN_UPDATE,//东海寻仙,任务进度更新
|
||||
DONGHAIXUNXIAN_REWARD,//东海寻仙,任务奖励
|
||||
|
||||
EXPLORE,//探索
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
package com.ljsd.jieling.logic.mission;
|
||||
|
||||
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.main.JadeDynastyMissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.logic.mission.main.TreasureMissionType;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SGlobalActivity;
|
||||
import config.SThemeActivityTaskConfig;
|
||||
import config.STreasureSunlongTaskConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import rpc.protocols.CommonProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MissionLogic {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(PlayerLogic.class);
|
||||
static class InnerClass{
|
||||
public final static MissionLogic instance = new MissionLogic();
|
||||
}
|
||||
public static MissionLogic getInstance(){
|
||||
return MissionLogic.InnerClass.instance;
|
||||
}
|
||||
|
||||
public int[] resetTreasureTaskInfo(User user, int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap){
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
TreasureMissionType treasureMissionIdsType = missionManager.getTreasureMissionIdsType();
|
||||
//周刷新检测
|
||||
if (type == 2) {
|
||||
if(activityId!=801){
|
||||
if(treasureMissionIdsType.getWeekRefresh()!=0 && TimeUtils.now()<treasureMissionIdsType.getWeekRefresh()){
|
||||
return null;
|
||||
}
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
if(TimeUtils.now()>endTime){
|
||||
return null;
|
||||
}
|
||||
do{
|
||||
startTime += TimeUtils.WEEK;
|
||||
}while(startTime<TimeUtils.now()&&startTime<endTime);
|
||||
//如果小于两周 直接到结束
|
||||
if(endTime-startTime<TimeUtils.WEEK){
|
||||
startTime = endTime;
|
||||
}
|
||||
treasureMissionIdsType.setWeekRefresh(startTime);
|
||||
}else{
|
||||
if (treasureMissionIdsType.getWeekRefresh() != 0 && !TimeUtils.isSpanTime(treasureMissionIdsType.getWeekRefresh(), TimeUtils.now(), 1, 0)) {
|
||||
return null;
|
||||
}
|
||||
treasureMissionIdsType.setWeekRefresh(TimeUtils.now());
|
||||
}
|
||||
|
||||
}
|
||||
List<Integer> taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type);
|
||||
List<Integer> newTasks = new ArrayList<>();
|
||||
for (Integer treasure : taskTypeMap) {
|
||||
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(treasure);
|
||||
//需要判断这个任务是不是当前轮次的
|
||||
if (config.getActivityId() == activityId) {
|
||||
newTasks.add(treasure);
|
||||
}
|
||||
treasureMissionIdsType.getDoingMissionIds().remove(treasure);
|
||||
treasureMissionIdsType.getFinishMissionIds().remove(treasure);
|
||||
if (treasureMissionIdsType.getRewardedMissionIds().get(treasure)) {
|
||||
treasureMissionIdsType.getRewardedMissionIds().clear(treasure);
|
||||
}
|
||||
}
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
|
||||
int[] tasks = new int[newTasks.size()];
|
||||
for(Integer task:newTasks){
|
||||
missionStateChangeInfos.add(new MissionStateChangeInfo(task, MissionState.DOING,0));
|
||||
treasureMissionIdsType.getDoingMissionIds().add(task);
|
||||
}
|
||||
missionManager.setTreasureMissionIdsType(treasureMissionIdsType);
|
||||
CumulationData treasureCumulationData = new CumulationData();
|
||||
if(type==1){
|
||||
missionManager.setTreasureCumulationData(treasureCumulationData);
|
||||
}
|
||||
if(type==2){
|
||||
missionManager.setTreasureWeekCumulationData(treasureCumulationData);
|
||||
}
|
||||
if(type==3){
|
||||
missionManager.setTreasureMonthCumulationData(treasureCumulationData);
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public CommonProto.RefreshTask.Builder treasureIndicationBuild(int type, int[] refreshIds){
|
||||
CommonProto.RefreshTask.Builder task = CommonProto.RefreshTask.newBuilder().setType(type);
|
||||
for (int refreshId : refreshIds) {
|
||||
CommonProto.UserMissionInfo tempTask = CommonProto.UserMissionInfo.newBuilder().setMissionId(refreshId).build();
|
||||
task.addTasks(tempTask).build();
|
||||
}
|
||||
return task;
|
||||
}
|
||||
|
||||
public int[] 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;
|
||||
}
|
||||
jadeDynastyMissionType.setWeekRefresh(TimeUtils.now());
|
||||
}
|
||||
List<Integer> taskTypeMap = SThemeActivityTaskConfig.taskTypeMap.get(type);
|
||||
List<Integer> newTasks = new ArrayList<>();
|
||||
for (Integer treasure : taskTypeMap) {
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(treasure);
|
||||
//需要判断这个任务是不是当前轮次的
|
||||
if (config.getActivityId() == activityId) {
|
||||
newTasks.add(treasure);
|
||||
}
|
||||
jadeDynastyMissionType.getDoingMissionIds().remove(treasure);
|
||||
jadeDynastyMissionType.getFinishMissionIds().remove(treasure);
|
||||
if (jadeDynastyMissionType.getRewardedMissionIds().get(treasure)) {
|
||||
jadeDynastyMissionType.getRewardedMissionIds().clear(treasure);
|
||||
}
|
||||
}
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION);
|
||||
int[] tasks = new int[newTasks.size()];
|
||||
for (int i = 0; i < newTasks.size(); i++) {
|
||||
missionStateChangeInfos.add(new MissionStateChangeInfo(newTasks.get(i), MissionState.DOING,0));
|
||||
jadeDynastyMissionType.getDoingMissionIds().add(newTasks.get(i));
|
||||
tasks[i] = newTasks.get(i);
|
||||
}
|
||||
CumulationData jadeDynastyCumulationData = new CumulationData();
|
||||
missionManager.setJadeDynastyMissionType(jadeDynastyMissionType);
|
||||
if(type==1){
|
||||
missionManager.setJadeDynastyCumulationData(jadeDynastyCumulationData);
|
||||
}
|
||||
if(type==2){
|
||||
missionManager.setJadeDynastyWeekCumulationData(jadeDynastyCumulationData);
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.main.AchieveMissionIdsType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class AchieveRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> missonTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
AchieveMissionIdsType achievementMissionTypMap = missionManager.getAchievementMissionTypMap();
|
||||
achievementMissionTypMap.openMission(user,0, null);
|
||||
missionManager.setAchievementMissionTypMap(achievementMissionTypMap);
|
||||
missionManager.setAchievementMap(new CumulationData());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.main.BeginerTaskIdsType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import config.SBeginnerTask;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class BeginnerRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
BeginerTaskIdsType beginerTaskIdsType = missionManager.getBeginerTaskIdsType();
|
||||
for (Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()) {
|
||||
beginerTaskIdsType.addDoingMission(id);
|
||||
}
|
||||
missionManager.setBeginerTaskIdsType(beginerTaskIdsType);
|
||||
missionManager.setBeginCumulationData(new CumulationData());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.main.BloodyMissionIdsType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import config.SBloodyBattleTask;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class BloodyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
BloodyMissionIdsType bloodyMissionIdsType = missionManager.getBloodyMissionIdsType();
|
||||
Set<Integer> bloodyMissionIds = STableManager.getConfig(SBloodyBattleTask.class).keySet();
|
||||
bloodyMissionIdsType.getDoingMissionIds().clear();
|
||||
bloodyMissionIdsType.getFinishMissionIds().clear();
|
||||
bloodyMissionIdsType.getRewardedMissionIds().clear();
|
||||
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
|
||||
missionManager.setBloodyMissionIdsType(bloodyMissionIdsType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
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;
|
||||
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;
|
||||
|
||||
public class CowFlySkyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
CowFlySkyMissionType cowFlySkyMissionType = missionManager.getCowFlySkyMissionType();
|
||||
int activityCowId = (int) parm[0];
|
||||
// 牛气冲天
|
||||
Set<Integer> arro = SArroGantFly.getActivityMap().getOrDefault(activityCowId, new HashMap<>()).keySet();
|
||||
cowFlySkyMissionType.getDoingMissionIds().clear();
|
||||
cowFlySkyMissionType.getFinishMissionIds().clear();
|
||||
cowFlySkyMissionType.getRewardedMissionIds().clear();
|
||||
cowFlySkyMissionType.getDoingMissionIds().addAll(arro);
|
||||
missionManager.setCowFlySkyMissionType(cowFlySkyMissionType);
|
||||
}
|
||||
}
|
|
@ -1,24 +1,52 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.DailyMissionIdsType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import config.SDailyTasksConfig;
|
||||
import manager.STableManager;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class DailyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
user.getUserMissionManager().openMission(user,event,misionTypeListMap, parm);
|
||||
List<MissionType> typeList = MissionEventDistributor.eventEnumListMap.get(event);
|
||||
if(event != GameEvent.MISSING_ROOM_REFRESH || typeList == null){
|
||||
return;
|
||||
// 初始化任务
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
DailyMissionIdsType dailyMissionIdsType = missionManager.getDailyMissionIdsType();
|
||||
Set<Integer> missionIds;
|
||||
if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){
|
||||
//当月第几天
|
||||
int days = TimeUtils.getDayOfMonth(GameApplication.serverConfig.getCacheOpenTime());
|
||||
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values()
|
||||
.stream()
|
||||
.filter(n->days >=n.getViewDateUp()&& days <=n.getViewDataDown())
|
||||
.map(SDailyTasksConfig::getId).collect(Collectors.toSet());
|
||||
}else{
|
||||
missionIds = STableManager.getConfig(SDailyTasksConfig.class).values()
|
||||
.stream()
|
||||
.filter(n->n.getViewDateUp() == 1)
|
||||
.map(SDailyTasksConfig::getId).collect(Collectors.toSet());
|
||||
}
|
||||
for (MissionType type : typeList) {
|
||||
user.getUserMissionManager().calCumulationDataResult(user,type,misionTypeListMap,parm);
|
||||
int type = (int) parm[0];
|
||||
if (type == 0) {
|
||||
// 数据重置
|
||||
missionManager.setDailyCumulationData(new CumulationData());
|
||||
// 活动重置
|
||||
dailyMissionIdsType.getDoingMissionIds().clear();
|
||||
dailyMissionIdsType.getFinishMissionIds().clear();
|
||||
dailyMissionIdsType.getRewardedMissionIds().clear();
|
||||
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
|
||||
}
|
||||
missionManager.setDailyMissionIdsType(dailyMissionIdsType);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.main.DonghaiXunxianMissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import config.SThemeActivityTaskConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DonghaiRefreshEventProcess implements BaseGameEventProcessor {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DonghaiRefreshEventProcess.class);
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
DonghaiXunxianMissionType donghaiXunxianMission = missionManager.getDonghaiXunxianMission();
|
||||
int activityId = (int) parm[0];
|
||||
donghaiXunxianMission.getDoingMissionIds().clear();
|
||||
donghaiXunxianMission.getFinishMissionIds().clear();
|
||||
donghaiXunxianMission.getRewardedMissionIds().clear();
|
||||
|
||||
List<SThemeActivityTaskConfig> taskConfigs = SThemeActivityTaskConfig.themeTaskByActivity.get(activityId);
|
||||
if (taskConfigs == null || taskConfigs.isEmpty()){
|
||||
LOGGER.error("东海寻仙任务初始化,ThemeActivityTaskConfig查询活动信息为空:{}",activityId);
|
||||
return;
|
||||
}
|
||||
for (SThemeActivityTaskConfig config : taskConfigs) {
|
||||
donghaiXunxianMission.getDoingMissionIds().add(config.getId());
|
||||
}
|
||||
missionManager.setDonghaiXunxianMission(donghaiXunxianMission);
|
||||
missionManager.setDonghaiXunxianData(new CumulationData());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.main.HomeMissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class HomeRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
HomeMissionType homeMissionType = missionManager.getHomeMissionType();
|
||||
homeMissionType.openMission(user,0,null);
|
||||
missionManager.setHomeMissionType(homeMissionType);
|
||||
}
|
||||
}
|
|
@ -1,16 +1,21 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.MissionLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DefaultRefreshEventProcess implements BaseGameEventProcessor {
|
||||
public class JadeDynastyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
user.getUserMissionManager().openMission(user,event,misionTypeListMap,parm);
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAid = (int) parm[0];
|
||||
MissionLogic.getInstance().resetJadeDynastyTaskInfo(user,1, jadeAid, misionTypeListMap);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.MissionLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class JadeDynastyWeekRefreshEventProcess 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,2, jadeAid, misionTypeListMap);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,149 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
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;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissingRoomMissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import config.SMazeTreasure;
|
||||
import config.SMazeTreasureSetting;
|
||||
import util.MathUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class MissingRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
// 初始化任务
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
MissingRoomMissionType missingRoomMissionType = missionManager.getMissingRoomMissionType();
|
||||
//天宫寻宝
|
||||
Map<Integer, Integer> mustAppear = new HashMap<>();
|
||||
List<Integer> mustMissions = new ArrayList<>();
|
||||
List<Integer> lockMissions = new ArrayList<>();
|
||||
if ((int) parm[0] == 1) {
|
||||
//删除已经领取奖励的
|
||||
missingRoomMissionType.getFinishMissionIds().removeIf(value -> missingRoomMissionType.getAllMissingTime().get(value) == -1);
|
||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value -> value == -1);
|
||||
// 任务全部锁定
|
||||
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||
if (lockMissionIds.size() >= 6) {
|
||||
throw new ErrorCodeException(ErrorCode.LOCK_FILL);
|
||||
}
|
||||
// 读表
|
||||
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
|
||||
boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP());
|
||||
int[][] cost = sMazeTreasureSetting.getCost();
|
||||
int count = (int) MathUtils.calABX(coinRefreshCount, cost[1]);
|
||||
result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if (!result) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(), 1);
|
||||
}
|
||||
//高级特权
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getHighDailyPrivilege(), mustAppear);
|
||||
//豪华特权
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getLuxuryDailyPrivilege(), mustAppear);
|
||||
//非免费抽取次数必出
|
||||
missingRoomMissionType.notFreeRefreshMust(user, sMazeTreasureSetting.getRefreshHighTypeNum(), mustAppear);
|
||||
// 刷新次数+1
|
||||
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount() + 1);
|
||||
}
|
||||
|
||||
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
|
||||
doingMissionIds.forEach((doing) -> {
|
||||
if (lockMissionIds.contains(doing)) {
|
||||
lockMissions.add(doing);
|
||||
}
|
||||
});
|
||||
|
||||
missingRoomMissionType.getDoingMissionIds().clear();
|
||||
} else {
|
||||
for (int firstTask : SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()) {
|
||||
mustMissions.add(firstTask);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新最大长度限制6条
|
||||
if (lockMissions.size() + mustAppear.size() > 6) {
|
||||
// 锁定的不能动,获取特权任务数量
|
||||
int num = 6 - lockMissions.size();
|
||||
// 特权的key
|
||||
Set<Integer> keys = mustAppear.keySet();
|
||||
// 正序的set
|
||||
Set<Integer> sortSet = new TreeSet<Integer>(Comparator.naturalOrder());
|
||||
// 赋值
|
||||
sortSet.addAll(keys);
|
||||
// 遍历,如果数量满足,停止,不满足则删除等级小的任务
|
||||
for (Integer ints : sortSet) {
|
||||
if (mustAppear.size() == num) {
|
||||
break;
|
||||
}
|
||||
mustAppear.remove(ints);
|
||||
}
|
||||
}
|
||||
|
||||
if (!mustAppear.isEmpty()) {
|
||||
for (Map.Entry<Integer, Integer> entry : mustAppear.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
List<int[]> mustList = new ArrayList<>();
|
||||
for (SMazeTreasure maze : sMazeTreasures) {
|
||||
if (mustMissions.contains(maze.getId())) {
|
||||
continue;
|
||||
}
|
||||
int[] refreshWeight = new int[2];
|
||||
refreshWeight[0] = maze.getId();
|
||||
refreshWeight[1] = 1;
|
||||
mustList.add(refreshWeight);
|
||||
}
|
||||
int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
|
||||
Arrays.stream(missions).forEach(mustMissions::add);
|
||||
}
|
||||
}
|
||||
int[][] qualityRate = SMazeTreasureSetting.sMazeTreasureSetting.getQualityRate();
|
||||
|
||||
//根据品质来随机
|
||||
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size()));
|
||||
Map<Integer, Integer> qualityNum = new HashMap<>();
|
||||
for (int quality : qualityArray) {
|
||||
qualityNum.put(quality, qualityNum.getOrDefault(quality, 0) + 1);
|
||||
}
|
||||
for (Map.Entry<Integer, Integer> entry : qualityNum.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
int[][] treasures = new int[sMazeTreasures.size()][];
|
||||
for (int i = 0; i < sMazeTreasures.size(); i++) {
|
||||
|
||||
treasures[i] = new int[2];
|
||||
treasures[i][0] = sMazeTreasures.get(i).getId();
|
||||
treasures[i][1] = 1;
|
||||
}
|
||||
int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue());
|
||||
for (int id : ids) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + id);
|
||||
}
|
||||
}
|
||||
// 必须任务
|
||||
for (int mission : mustMissions) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + mission);
|
||||
}
|
||||
// 上锁任务
|
||||
for (int mission : lockMissions) {
|
||||
missingRoomMissionType.addDoingMission(mission);
|
||||
}
|
||||
missionManager.setMissingRoomMissionType(missingRoomMissionType);
|
||||
// 计算数值
|
||||
user.getUserMissionManager().calCumulationDataResult(user, (MissionType) parm[0],misionTypeListMap,parm);
|
||||
}
|
||||
}
|
|
@ -41,37 +41,53 @@ public class MissionEventDistributor {
|
|||
*/
|
||||
List<MissionType> typeList = new ArrayList<>();
|
||||
/*************************************整合模板********************************************/
|
||||
// 任务初始化
|
||||
eventProcessor.put(GameEvent.HOME_TASK_INIT,new DefaultRefreshEventProcess());
|
||||
// 初始化/刷新 任务
|
||||
eventProcessor.put(GameEvent.HOME_TASK_INIT,new HomeRefreshEventProcess());// 家园任务,任务模板
|
||||
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());//每日任务
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_INIT, new DonghaiRefreshEventProcess()); //东海寻仙刷新
|
||||
eventProcessor.put(GameEvent.BLOODY_REFRESH,new BloodyRefreshEventProcess());//血战任务刷新
|
||||
eventProcessor.put(GameEvent.ACHIEVE_REFRESH,new AchieveRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_REFRESH,new TreashRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_WEEK_REFRESH,new TreashWeekRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new TreashMonthRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new SevenHappyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.BEGINNER,new BeginnerRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_REFRESH,new JadeDynastyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new JadeDynastyWeekRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REFRESH,new CowFlySkyRefreshEventProcess());
|
||||
// eventProcessor.put(GameEvent.ENDLESS_MISSION_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.MISTY_TRIP_REFRESH,new MistyTripRefreshEventProcess());//缥缈之旅刷新开始
|
||||
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new MissingRefreshEventProcess());// 迷宫寻宝任务刷新
|
||||
eventProcessor.put(GameEvent.VIP_LEVLUP,new VipRefreshEventProcess());//vip刷新
|
||||
|
||||
|
||||
// 领取奖励
|
||||
eventProcessor.put(GameEvent.HOME_TASK_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_REWARD, new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.TREASURE_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.SEVENHAPPY_MISSION_REWARD,new RewardEventProcessor());
|
||||
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());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REWEARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.ENDLESS_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.EXPLORE_REWARD,new RewardEventProcessor());
|
||||
|
||||
|
||||
// 任务进度修改
|
||||
typeList.add(MissionType.HOME_ARCHITECTURE_ONE_LV);
|
||||
typeList.add(MissionType.HOME_ARCHITECTURE_TOTAL_LV);
|
||||
eventEnumListMap.put(GameEvent.HOME_TASK_UPDATE,typeList);
|
||||
eventProcessor.put(GameEvent.HOME_TASK_UPDATE,new CumulationDataEventProcessor());
|
||||
// 任务奖励
|
||||
eventProcessor.put(GameEvent.HOME_TASK_REWARD,new RewardEventProcessor());
|
||||
|
||||
// 东海寻仙
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_INIT, new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_REWARD, new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_UPDATE, new OneMissionTypeUpdateProcessor());
|
||||
|
||||
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
|
||||
// 刷新任务
|
||||
eventProcessor.put(GameEvent.DAILY_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.BLOODY_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.ACHIEVE_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_WEEK_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.BEGINNER,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.ENDLESS_MISSION_REFRESH,new DefaultRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.MISTY_TRIP_REFRESH,new DefaultRefreshEventProcess());//缥缈之旅刷新开始
|
||||
// 用户升级
|
||||
eventProcessor.put(GameEvent.USER_LEVELUP,new UserLevelEventProcessor());
|
||||
|
||||
// 抽卡任务
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.RECRUITMENT_RANDOM_HEROES);
|
||||
typeList.add(MissionType.FABAO_DRAW_NUM);
|
||||
|
@ -81,12 +97,6 @@ public class MissionEventDistributor {
|
|||
eventEnumListMap.put(GameEvent.RANDOM_HERO,typeList);
|
||||
eventProcessor.put(GameEvent.RANDOM_HERO,new CumulationDataEventProcessor());
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.VIP_LEVEL);
|
||||
typeList.add(MissionType.VIP_LEVEL);
|
||||
eventEnumListMap.put(GameEvent.VIP_LEVLUP,typeList);
|
||||
eventProcessor.put(GameEvent.VIP_LEVLUP,new CumulationDataEventProcessor());
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.COLLECT_QUALITY_HERO);
|
||||
typeList.add(MissionType.COLLECT_DIFFERENT_HEROS);
|
||||
|
@ -173,20 +183,6 @@ public class MissionEventDistributor {
|
|||
eventEnumListMap.put(GameEvent.EXPLORE,typeList);
|
||||
eventProcessor.put(GameEvent.EXPLORE,new CumulationDataEventProcessor());
|
||||
|
||||
// 领取奖励
|
||||
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.TREASURE_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.SEVENHAPPY_MISSION_REWARD,new RewardEventProcessor());
|
||||
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());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REWEARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.ENDLESS_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.EXPLORE_REWARD,new RewardEventProcessor());
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.HERO_BREAK_TIMES);
|
||||
typeList.add(MissionType.HERO_UP_STAR_TIMES);
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.logic.mission.main.MistyTripMissionType;
|
||||
import config.SJourneyWithWind;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class MistyTripRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
MistyTripMissionType mistyTripMissionType = missionManager.getMistyTripMissionType();
|
||||
//任务开始
|
||||
if(mistyTripMissionType.getDoingMissionIds().size() != 0 || mistyTripMissionType.getFinishMissionIds().size() != 0){
|
||||
return;
|
||||
}
|
||||
Set<Integer> journeyWithWind = STableManager.getConfig(SJourneyWithWind.class).keySet();
|
||||
mistyTripMissionType.getDoingMissionIds().clear();
|
||||
mistyTripMissionType.getFinishMissionIds().clear();
|
||||
mistyTripMissionType.getRewardedMissionIds().clear();
|
||||
mistyTripMissionType.getDoingMissionIds().addAll(journeyWithWind);
|
||||
missionManager.setMistyTripMissionType(mistyTripMissionType);
|
||||
missionManager.setMistyTripCumulationData(new CumulationData());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
|
||||
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;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType;
|
||||
import config.STreasureTaskConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class SevenHappyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
ServenMissionIdsType sevenHappyMissionType = missionManager.getSevenHappyMissionType();
|
||||
List<STreasureTaskConfig> sTreasureTaskConfigs;
|
||||
int id = (int) parm[0];
|
||||
sTreasureTaskConfigs = STableManager.getFigureConfig(TaskStaticConfig.class).getsTreasureTaskConfigListByActivityMap().get(id);
|
||||
sevenHappyMissionType.getDoingMissionIds().clear();
|
||||
sevenHappyMissionType.getFinishMissionIds().clear();
|
||||
sevenHappyMissionType.getRewardedMissionIds().clear();
|
||||
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = misionTypeListMap.get(GameMisionType.SEVENMISSION);
|
||||
for (STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs) {
|
||||
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
|
||||
}
|
||||
CumulationData sevenHappyCumulationData = new CumulationData();
|
||||
sevenHappyMissionType.checkAndUpdateMision(user, sTreasureTaskConfigs, servenMissionmStateChangeInfos, sevenHappyCumulationData);
|
||||
missionManager.setSevenHappyMissionType(sevenHappyMissionType);
|
||||
missionManager.setSevenHappyCumulationData(sevenHappyCumulationData);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TreashMonthRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aid = (int) parm[0];
|
||||
user.getPlayerInfoManager().setTreasureLevel(0);
|
||||
Item item = user.getItemManager().getItem(Global.TREASURE_SCORE);
|
||||
if (item != null) {
|
||||
if (item.getItemNum() != 0) {
|
||||
Map<Integer, Integer> treasureScore = new HashMap<>();
|
||||
treasureScore.put(Global.TREASURE_SCORE, (int) item.getItemNum());
|
||||
try {
|
||||
ItemUtil.itemCost(user, treasureScore, BIReason.TREASURE_RESET_CONSUME, 1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
int[] monthRefreshIds1 = MissionLogic.getInstance().resetTreasureTaskInfo(user,3, aid, misionTypeListMap);
|
||||
CommonProto.RefreshTask.Builder task5 = MissionLogic.getInstance().treasureIndicationBuild(3, monthRefreshIds1);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task5.build()).build();
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication3, true);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TreashRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int activityId = (int) parm[0];
|
||||
int[] refreshIds = MissionLogic.getInstance().resetTreasureTaskInfo(user,1, activityId, misionTypeListMap);
|
||||
int dayRefreshTime = (int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0, false) / 1000);
|
||||
CommonProto.RefreshTask.Builder task = MissionLogic.getInstance().treasureIndicationBuild(1, refreshIds).setRefreshTime(dayRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build();
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication1, true);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.core.VipPrivilegeType;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
import com.ljsd.jieling.logic.mission.MissionLogic;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TreashWeekRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aId = (int) parm[0];
|
||||
int[] weekRefreshIds = MissionLogic.getInstance().resetTreasureTaskInfo(user,2, aId, misionTypeListMap);
|
||||
if (weekRefreshIds == null){
|
||||
return;
|
||||
}
|
||||
int weekRefreshTime = (int) (TimeUtils.getNextWeekendStartTime(1, 0) / 1000);
|
||||
user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY);
|
||||
CommonProto.RefreshTask.Builder task2 = MissionLogic.getInstance().treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build();
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication2, true);
|
||||
}
|
||||
}
|
|
@ -24,7 +24,6 @@ public class UserLevelEventProcessor implements BaseGameEventProcessor{
|
|||
user.getUserMissionManager().calCumulationDataResult(user,type,misionTypeListMap,parm);
|
||||
}
|
||||
int upLevel = (int)parm[1];
|
||||
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
BuyGoodsNewLogic.openPush(session,user, PushRechargeType.user_level.getType(),upLevel);
|
||||
BuyGoodsNewLogic.sendGiftGooodsIndication(user.getId());
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
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;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.logic.mission.main.VipMissionIdsType;
|
||||
import config.SVipLevelConfig;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VipRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
VipMissionIdsType vipMissionIdsType = missionManager.getVipMissionIdsType();
|
||||
// 初始化任务
|
||||
int vipLevel = (int) parm[1];
|
||||
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel);
|
||||
int[] openRules = sVipLevelConfig.getOpenRules();
|
||||
for (int missionId : openRules) {
|
||||
vipMissionIdsType.openMission(user, missionId, misionTypeListMap.get(GameMisionType.VIPMISSION));
|
||||
}
|
||||
missionManager.setVipMissionIdsType(vipMissionIdsType);
|
||||
|
||||
//记录任务进度
|
||||
missionManager.calCumulationDataResult(user, (MissionType) parm[0],misionTypeListMap,parm);
|
||||
}
|
||||
}
|
|
@ -2,12 +2,13 @@ package com.ljsd.jieling.logic.mission.main;
|
|||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionState;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.BitSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class AbstractMissionType {
|
||||
//开启的任务,在可控范围内,使用map存储,利于查找
|
||||
|
@ -38,7 +39,6 @@ public abstract class AbstractMissionType {
|
|||
|
||||
public abstract void calCumulationDataResult(User user,CumulationData.Result result,List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception;
|
||||
|
||||
void getAllRewards(List<int[][]> itemAttrs){}
|
||||
/**
|
||||
* 获取全部奖励
|
||||
* @param missionType
|
||||
|
@ -99,10 +99,6 @@ public abstract class AbstractMissionType {
|
|||
return lockMissionIds;
|
||||
}
|
||||
|
||||
public void setLockMissionIds(Set<Integer> lockMissionIds) {
|
||||
this.lockMissionIds = lockMissionIds;
|
||||
}
|
||||
|
||||
public void addLockMissionId(int missionId) {
|
||||
lockMissionIds.add(missionId);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,11 @@ import java.util.Set;
|
|||
public class AchieveMissionIdsType extends AbstractMissionType{
|
||||
@Override
|
||||
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
|
||||
this.getDoingMissionIds().clear();
|
||||
this.getFinishMissionIds().clear();
|
||||
this.getRewardedMissionIds().clear();
|
||||
Set<Integer> ds = STableManager.getConfig(SAchievementConfig.class).keySet();
|
||||
this.getDoingMissionIds().addAll(ds);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,10 +9,8 @@ import com.ljsd.jieling.logic.mission.MissionState;
|
|||
import com.ljsd.jieling.logic.mission.data.AbstractDataManager;
|
||||
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
|
||||
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import config.SDailyTasksConfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -32,7 +30,7 @@ public class DailyMissionIdsType extends AbstractMissionType{
|
|||
return sDailyTasksConfigById.getReward();
|
||||
}
|
||||
|
||||
public void rewardMission( User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap){
|
||||
public void rewardMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap){
|
||||
if (!getFinishMissionIds().contains(missionId)) {
|
||||
return ;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@ import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
|||
import config.STreasureTaskConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -43,7 +42,7 @@ public class ServenMissionIdsType extends AbstractMissionType{
|
|||
checkAndUpdateMision(user,sTaskConfigs,missionStateChangeInfos,cumulationData);
|
||||
}
|
||||
|
||||
public void checkAndUpdateMision(User user,List<STreasureTaskConfig> sTaskConfigs, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
|
||||
public void checkAndUpdateMision(User user, List<STreasureTaskConfig> sTaskConfigs, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
|
||||
Set<Integer> doingMissionIds = getDoingMissionIds();
|
||||
for (STreasureTaskConfig sTaskConfig : sTaskConfigs) {
|
||||
int missionId = sTaskConfig.getId();
|
||||
|
@ -67,7 +66,6 @@ public class ServenMissionIdsType extends AbstractMissionType{
|
|||
isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0];
|
||||
}
|
||||
|
||||
|
||||
if((doingProgress!=0 && finishParm<0 && ( doingProgress)>=finishParm)){
|
||||
doingMissionIds.remove(sTaskConfig.getId());
|
||||
getFinishMissionIds().add(sTaskConfig.getId());
|
||||
|
@ -75,17 +73,18 @@ public class ServenMissionIdsType extends AbstractMissionType{
|
|||
missionStateChangeInfos.add(missionStateChangeInfo);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(finishParm<0){
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isFinish) {
|
||||
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
|
||||
MissionState.DOING, doingProgress);
|
||||
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, MissionState.DOING, doingProgress);
|
||||
boolean flag = false;
|
||||
for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) {
|
||||
if (missionStateChangeInfo.getMissionId() == missionId) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
|
@ -94,15 +93,8 @@ public class ServenMissionIdsType extends AbstractMissionType{
|
|||
continue;
|
||||
}
|
||||
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId,
|
||||
MissionState.FINISH, finishParm);
|
||||
Iterator<MissionStateChangeInfo> iterator = missionStateChangeInfos.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
MissionStateChangeInfo next = iterator.next();
|
||||
if (next.getMissionId() == missionId) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId, MissionState.FINISH, finishParm);
|
||||
missionStateChangeInfos.removeIf(next -> next.getMissionId() == missionId);
|
||||
missionStateChangeInfos.add(finishInfo);
|
||||
doingMissionIds.remove(missionId);
|
||||
getFinishMissionIds().add(missionId);
|
||||
|
|
|
@ -11,15 +11,15 @@ import com.ljsd.jieling.logic.mission.data.BaseDataManager;
|
|||
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
|
||||
import config.STaskConfig;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class VipMissionIdsType extends AbstractMissionType{
|
||||
|
||||
private Map<Integer,Integer> vipRewardMap = Maps.newHashMap();//vip等级奖励领取情况<key:等级,val:领取情况(0,未领取,1,领取)>
|
||||
private final Map<Integer,Integer> vipRewardMap = Maps.newHashMap();//vip等级奖励领取情况<key:等级,val:领取情况(0,未领取,1,领取)>
|
||||
public VipMissionIdsType(){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -31,17 +31,9 @@ public class VipMissionIdsType extends AbstractMissionType{
|
|||
boolean isFinish = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1][0];
|
||||
if(!isFinish){
|
||||
addDoingMission(missionId);
|
||||
/* MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
|
||||
MissionState.DOING, null);
|
||||
missionTypeEnumList.add(doingInfo);*/
|
||||
}else{
|
||||
addFinishMissionId(missionId);
|
||||
/* MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId,
|
||||
MissionState.FINISH, null);
|
||||
missionTypeEnumList.add(finishInfo);*/
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -79,6 +71,7 @@ public class VipMissionIdsType extends AbstractMissionType{
|
|||
for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) {
|
||||
if (missionStateChangeInfo.getMissionId() == missionId) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
|
@ -86,20 +79,12 @@ public class VipMissionIdsType extends AbstractMissionType{
|
|||
}
|
||||
continue;
|
||||
}
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId,
|
||||
MissionState.FINISH, null);
|
||||
Iterator<MissionStateChangeInfo> iterator = missionStateChangeInfos.iterator();
|
||||
while (iterator.hasNext()){
|
||||
MissionStateChangeInfo next = iterator.next();
|
||||
if(next.getMissionId() == missionId){
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId, MissionState.FINISH, null);
|
||||
missionStateChangeInfos.removeIf(next -> next.getMissionId() == missionId);
|
||||
missionStateChangeInfos.add(finishInfo);
|
||||
doingMissionIds.remove(missionId);
|
||||
getFinishMissionIds().add(missionId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getVipRewardMap() {
|
||||
|
|
|
@ -309,7 +309,7 @@ public class PlayerLogic {
|
|||
vipLevelStateResponse.addVipState(keyVal);
|
||||
});
|
||||
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.VIP_LEVLUP,playerInfoManager.getVipLevel());
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.VIP_LEVLUP,MissionType.VIP_LEVEL,playerInfoManager.getVipLevel());
|
||||
CombatLogic.getInstance().getNewAdventureReward(user, true,TimeUtils.nowInt());
|
||||
List<CommonProto.UserMissionInfo> missionList = new ArrayList<>();
|
||||
MissionLoigc.getVipMission(user,missionList);
|
||||
|
|
|
@ -818,10 +818,10 @@ public class ItemUtil {
|
|||
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
|
||||
long count = itemNum;
|
||||
while (count >= Integer.MAX_VALUE){
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE);
|
||||
count-=Integer.MAX_VALUE;
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count);
|
||||
}
|
||||
|
||||
int eventType = ParamEventBean.UserItemEvent;
|
||||
|
@ -986,7 +986,7 @@ public class ItemUtil {
|
|||
if (playerInfoManager.getLevel() > oldLevel) {
|
||||
// ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),oldLevel,playerInfoManager.getLevel()-oldLevel,playerInfoManager.getLevel());
|
||||
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.USER_LEVEL,oldLevel+1,playerInfoManager.getLevel());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,MissionType.USER_LEVEL,oldLevel+1,playerInfoManager.getLevel());
|
||||
}
|
||||
|
||||
// 家园建筑解锁
|
||||
|
@ -2072,7 +2072,7 @@ public class ItemUtil {
|
|||
}
|
||||
}
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue