任务刷新逻辑修改

master_ob2
PC-202302260912\Administrator 2023-07-20 18:51:45 +08:00
parent 90c4c479f4
commit eff7205fb8
32 changed files with 965 additions and 609 deletions

View File

@ -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();

View File

@ -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());

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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,//探索

View File

@ -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;
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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());

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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

View File

@ -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 ;
}

View File

@ -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);

View File

@ -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() {

View File

@ -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);

View File

@ -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);
}
/**