飘渺之旅

xuexinpeng 2021-08-02 00:06:50 +08:00
parent 7ed896b78c
commit 5fdbf0d978
20 changed files with 499 additions and 6 deletions

View File

@ -184,6 +184,7 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
Poster.getPoster().dispatchEvent(new ShanHeSheJiTuStarEvent(iSession.getUid(), 2, starSum));
//成就任务
user.getUserMissionManager().onGameEvent(user, GameEvent.HARSTAGE_STARS,starSum);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP);
}
//大关卡通过成就+1
if(nodeConfig.getStageType() == 1){

View File

@ -1229,9 +1229,10 @@ public class MapLogic {
mapManager.updateCrossInfoMap(mapManager.getCurMapId(), crossInfo);
if(crossInfo.getStars().contains(STAR_1)){
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, mapManager.getCurMapId(), 1,1);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP, mapManager.getCurMapId(), 1,1);
}
}
}
resetMapInfo(user, needTemporaryItem);
return true;
@ -2004,6 +2005,7 @@ public class MapLogic {
Poster.getPoster().dispatchEvent(new StoryEvent(user.getId(),count));
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, mapId,1,count);
user.getUserMissionManager().onGameEvent(user, GameEvent.PlAY_STORY, type,count);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP, mapId,1,count);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapSweepResponse.build(), true);
}
@ -2206,6 +2208,7 @@ public class MapLogic {
}
}
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, fightId,0,1);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP, fightId,0,1);
// user.getUserMissionManager().gameEvent(user, new LevelEvent(), fightId);
}
@ -2308,6 +2311,7 @@ public class MapLogic {
fightEndResponse.build();
user.getMapManager().setLastMonsterAttack(checkFightId + 1);
user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_LEVEL);
user.getUserMissionManager().onGameEvent(user,GameEvent.MISTY_TRIP);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
String stringValue = SSpecialConfig.getStringValue(SSpecialConfig.DISCOUNT_MONSTER_LEVEL);
@ -2363,6 +2367,7 @@ public class MapLogic {
crossInfoMap.put(i, crossInfo);
mapManager.updateCrossInfoMap(i, crossInfo);
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, i, 1,1);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP, i, 1,1);
}
}

View File

@ -115,6 +115,7 @@ public class QuickStartMonsterFighter extends BaseHandler<FightInfoProto.QuickSt
user.getMapManager().setLastMonsterAttack(fightId + 1);
user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_LEVEL);
user.getUserMissionManager().onGameEvent(user,GameEvent.MISTY_TRIP);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.QUICK_START_MONSTERFIGHTER_REPONSE_VALUE, builder, true);
}
}

View File

@ -63,6 +63,7 @@ public class Cmd_addholy extends GmRoleAbstract{
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_HOLY_BAG_INDICATION_VALUE, indication.build(), true);
getUser().getUserMissionManager().onGameEvent(getUser(), GameEvent.EXPEDITION_TIMES);
getUser().getUserMissionManager().onGameEvent(getUser(), GameEvent.MISTY_TRIP);
return true;
}
}

View File

@ -96,6 +96,7 @@ public interface ActivityType {
int NEW_GENERAL_ATTACK = 200;//新将来袭
int SUPER_BOX = 69;//惊喜礼盒
int MISTY_TRIP = 72;//缥缈之旅
int SUPER_DISCOUNT_SKIN = 73;//特惠神装
int HERO_STAR = 500;

View File

@ -76,6 +76,8 @@ public enum ActivityTypeEnum {
SUPER_BOX(ActivityType.SUPER_BOX,SuperBoxActivity::new),
HERO_STAR(ActivityType.HERO_STAR,HeroStarActivity::new),
SUPER_DISCOUNT_SKIN(ActivityType.SUPER_DISCOUNT_SKIN,SuperBoxActivity::new),
MISTYTRIP(ActivityType.MISTY_TRIP,MistyTripActivity::new),
;
private int type;
private Function<Integer, AbstractActivity> toActivityFunction;

View File

@ -0,0 +1,119 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.AbstractActivity;
import com.ljsd.jieling.logic.activity.event.GoldEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.MistyTripEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.MainLevelManager;
import com.ljsd.jieling.logic.dao.UserManager;
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.main.BeginerTaskIdsType;
import com.ljsd.jieling.logic.mission.main.MistyTripMissionType;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SGlobalActivity;
import config.SJourneyWithWind;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class MistyTripActivity extends AbstractActivity {
public MistyTripActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, MistyTripEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof MistyTripEvent))
return;
//update(UserManager.getUser(((MistyTripEvent) event).getUserId()),((MistyTripEvent) event).getNum());
updataRefeshByMissionId(UserManager.getUser(((MistyTripEvent) event).getUserId()), ((MistyTripEvent) event).getRewardId(), ((MistyTripEvent) event).getNum());
}
public void updataRefeshByMissionId (User user, int rewardId,int num){
if(user == null){
return;
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if( null == activityMission){
return;
}
//相同类型的更新
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
if(!activityProgressInfoMap.containsKey(rewardId)){
return;
}
activityProgressInfoMap.get(rewardId).setProgrss( activityProgressInfoMap.get(rewardId).getProgrss() + num);
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
public void initActivity(User user) throws Exception {
//初始化所有事件 主线关卡 心魔试炼 山河社稷 大闹天宫 最高战力
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP_REFRESH);
}
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
int days = TimeUtils.getSoFarWentDays(userCreateTime, TimeUtils.now())+1;
SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
if(config == null){
return false;
}
if(days >= config.getValues()[0][1]){
return super.takeReward(session,missionId);
}
/* if (missionId != -1) {
return super.takeReward(session, missionId);
}
User user = UserManager.getUser(session.getUid());
SActivityRewardConfig cfg = SActivityRewardConfig.getsActivityRewardConfigByMissionId(id);
int day = cfg.getValues()[0][1];
List<Integer> listId = SJourneyWithWind.getsTaskConfigByDay(day);
UserMissionManager userMissionManager = user.getUserMissionManager();
MistyTripMissionType mistyTripMissionType = userMissionManager.getMistyTripMissionType();
for(int id:listId){
if(!mistyTripMissionType.getFinishMissionIds().contains(id)){
return false;
}
}
for(int id:listId){
mistyTripMissionType.getRewardedMissionIds().set(id);
}
mistyTripMissionType.getFinishMissionIds().removeAll(listId);
//up miss
int[][] reward = cfg.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
return true;*/
return false;
}
}

View File

@ -0,0 +1,41 @@
package com.ljsd.jieling.logic.activity.event;
/**
*
*/
public class MistyTripEvent implements IEvent {
private int userId;
private int rewardId;
private int num;
public MistyTripEvent(int userId, int missionId, int num) {
this.userId = userId;
this.rewardId = missionId;
this.num = num;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getRewardId() {
return rewardId;
}
public void setRewardId(int rewardId) {
this.rewardId = rewardId;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}

View File

@ -60,6 +60,8 @@ public class UserMissionManager extends MongoBase {
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();
private EndlessMissionType endlessMissionType = new EndlessMissionType();
//缥缈之旅
private MistyTripMissionType mistyTripMissionType = new MistyTripMissionType();
//数据累加项
private CumulationData cumulationData = new CumulationData();
@ -74,6 +76,7 @@ public class UserMissionManager extends MongoBase {
private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据
private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据
private CumulationData endlessTask = new CumulationData();//无尽副本任务数据
private CumulationData mistyTripCumulationData = new CumulationData();//缥缈之旅数据
/**
*
@ -233,6 +236,19 @@ public class UserMissionManager extends MongoBase {
updateString("endlessMissionType", endlessMissionType);
updateString("endlessTask", this.endlessTask);
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:
//天宫寻宝
@ -566,6 +582,23 @@ public class UserMissionManager extends MongoBase {
}
//缥缈之旅
if(!mistyTripMissionType.getDoingMissionIds().isEmpty() ){
Map<Integer, SEndlessTask> endlessConfig = STableManager.getConfig(SEndlessTask.class);
if(endlessConfig!=null&&endlessConfig.size()!=0){
CumulationData.Result result= mistyTripCumulationData.updateData(missionType, parm);
if(result!=null){
mistyTripMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.MISTY_TRIP_MISSION),mistyTripCumulationData);
updateString("mistyTripMissionType",mistyTripMissionType);
updateString("mistyTripCumulationData",mistyTripCumulationData);
}
}
}
// 公用任务类型,累计次数形式
CumulationData.Result result = cumulationData.updateData(missionType, parm);
if(result!=null){
@ -808,4 +841,12 @@ public class UserMissionManager extends MongoBase {
public CumulationData getEndlessTask() {
return endlessTask;
}
public MistyTripMissionType getMistyTripMissionType() {
return mistyTripMissionType;
}
public CumulationData getMistyTripCumulationData() {
return mistyTripCumulationData;
}
}

View File

@ -216,6 +216,7 @@ public class ExpeditionLogic {
//updata lay
user.getExpeditionManager().setLay(newlay);
user.getUserMissionManager().onGameEvent(user, GameEvent.EXPEDITION_TIMES);
user.getUserMissionManager().onGameEvent(user, GameEvent.MISTY_TRIP);
return nodeInfos;
}

View File

@ -125,4 +125,6 @@ public enum GameEvent {
HARSTAGE_NODE,//山河社稷图通关章节
GUILD_BOSS_ROOM,//公会boos副本
MISTY_TRIP_REFRESH,//缥缈之旅刷新
MISTY_TRIP,//缥缈之旅
}

View File

@ -12,7 +12,8 @@ public enum GameMisionType {
ACHIEVEMISSION(9),
JADE_DYNASTY_MISSION(10),//破阵诛仙任务
COWFLYSKYMISSION(11),//牛气冲天
ENDLESS_MISSION(12)
ENDLESS_MISSION(12),
MISTY_TRIP_MISSION(13),//缥缈之旅
;
private int type;

View File

@ -57,6 +57,7 @@ public class MissionLoigc {
getJadeDynastyMission(user, missionList);
getCowFlySkyMission(user,missionList);
getEndlessMission(user,missionList);
getMistyTripMission(user,missionList);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
}
@ -406,6 +407,31 @@ public class MissionLoigc {
});
}
public static void getMistyTripMission(User user,List<CommonProto.UserMissionInfo> missionList){
UserMissionManager userMissionManager = user.getUserMissionManager();
MistyTripMissionType dailyMissionIdsType = userMissionManager.getMistyTripMissionType();
CumulationData dailyCumulationData = userMissionManager.getMistyTripCumulationData();
Set<Integer> doingMissionIds = dailyMissionIdsType.getDoingMissionIds();
Set<Integer> finishMissionIds = dailyMissionIdsType.getFinishMissionIds();
//Map<Integer, SDailyTasksConfig> config = SDailyTasksConfig.config;
Map<Integer, SJourneyWithWind> config = STableManager.getConfig(SJourneyWithWind.class);
//sJourneyWithWind
int dailymissionType = GameMisionType.MISTY_TRIP_MISSION.getType();
for(SJourneyWithWind journeyWithWind:config.values()){
int state = 2;
int missionId = journeyWithWind.getId();
int progrss = journeyWithWind.getTaskValue()[1][0];
if(doingMissionIds.contains(missionId)){
state = 0;
progrss = getDoingProgress(user,dailyCumulationData,journeyWithWind.getTaskType(),journeyWithWind.getTaskValue()[0]);
}else if(finishMissionIds.contains(missionId)){
state = 1;
}
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(dailymissionType).setProgress(progrss).build());
}
}
/**
*
* @param user

View File

@ -9,8 +9,10 @@ import com.ljsd.jieling.logic.mission.MissionType;
public class HardStageStarsDataManager implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int nums = (int)parm[0];
data.setHardstage_stars(nums);
if(parm.length !=0){
int nums = (int)parm[0];
data.setHardstage_stars(nums);
}
return new CumulationData.Result(missionType);
}
}

View File

@ -43,6 +43,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new JadeDynastyRefreshEventProcess());
eventProcessor.put(GameEvent.COW_FLY_SKY_REFRESH,new CowFlySkyEventProcess());
eventProcessor.put(GameEvent.ENDLESS_MISSION_REFRESH,new EndlessMissionRefreshProcess());
eventProcessor.put(GameEvent.MISTY_TRIP_REFRESH,new MistyTripMissionRefreshProcess());//缥缈之旅刷新开始
List<MissionType> typeList = new ArrayList<>();
typeList.add(MissionType.REFRESH_MISSING_ROOM);
@ -185,6 +186,16 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.ADVENTURE_TAKEREWARD,typeList);
eventProcessor.put(GameEvent.ADVENTURE_TAKEREWARD,new CumulationDataEventProcessor());
//缥缈之旅
typeList = new ArrayList<>();
typeList.add(MissionType.LEVEL_STORY_PASS);//通关奖励
typeList.add(MissionType.HARSTAGE_STARS);//山河社稷累积星数
typeList.add(MissionType.MONSTER_ATTACK_LEVEL);//心魔试炼通关层数
typeList.add(MissionType.USER_FORCE);//战力
typeList.add(MissionType.FINISH_EXPEDITION_HERO_TIMES);//大闹天宫完成次数
eventEnumListMap.put(GameEvent.MISTY_TRIP,typeList);
eventProcessor.put(GameEvent.MISTY_TRIP,new MistyTripEventProcessor());
// 领取奖励
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor());
@ -519,6 +530,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.put(GameMisionType.JADE_DYNASTY_MISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.COWFLYSKYMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.ENDLESS_MISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.MISTY_TRIP_MISSION, new ArrayList<>());
} else {
@ -534,7 +546,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION).clear();
missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.ENDLESS_MISSION).clear();
missionTypeEnumListMap.get(GameMisionType.MISTY_TRIP_MISSION).clear();
}
threadMissionChangeList.set(missionTypeEnumListMap);
@ -573,7 +585,7 @@ public class MissionEventDistributor {
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION
|| gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION
|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION
|| gameMisionType == GameMisionType.COWFLYSKYMISSION||gameMisionType==GameMisionType.ENDLESS_MISSION){
|| gameMisionType == GameMisionType.COWFLYSKYMISSION||gameMisionType==GameMisionType.ENDLESS_MISSION||gameMisionType==GameMisionType.MISTY_TRIP_MISSION){
progress = missionStateChangeInfo.getProgress();
}
if(missionState == MissionState.DOING){

View File

@ -0,0 +1,31 @@
package com.ljsd.jieling.logic.mission.event;
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 java.util.List;
import java.util.Map;
public class MistyTripEventProcessor implements BaseGameEventProcessor{
@Override
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
List<MissionType> typeList = MissionEventDistributor.eventEnumListMap.get(event);
if(parm.length >0){
user.getUserMissionManager().calCumulationDataResult(user, MissionType.LEVEL_STORY_PASS ,misionTypeListMap,parm);
}else{
for (MissionType type : typeList) {
//大闹天宫 不计数
if(type == MissionType.FINISH_EXPEDITION_HERO_TIMES){
continue;
}
if(type!= MissionType.LEVEL_STORY_PASS ){
user.getUserMissionManager().calCumulationDataResult(user,type,misionTypeListMap,parm);
}
}
}
}
}

View File

@ -0,0 +1,17 @@
package com.ljsd.jieling.logic.mission.event;
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 java.util.List;
import java.util.Map;
public class MistyTripMissionRefreshProcess 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);
}
}

View File

@ -0,0 +1,98 @@
package com.ljsd.jieling.logic.mission.main;
import com.ljsd.jieling.logic.activity.event.MistyTripEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionLoigc;
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 config.SJourneyWithWind;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class MistyTripMissionType extends AbstractMissionType{
@Override
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
}
@Override
public int[][] reward(int missionId) {
return new int[0][];
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
List<SJourneyWithWind> sTaskConfigs = SJourneyWithWind.getsTaskConfigByTypeMap(result.subType.getMissionTypeValue());
if (sTaskConfigs == null) {
return;
}
Set<Integer> doingMissionIds = getDoingMissionIds();
for (SJourneyWithWind sTaskConfig : sTaskConfigs) {
int missionId = sTaskConfig.getId();
if (!doingMissionIds.contains(missionId)) {
continue;
}
boolean isFinish;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType);
if(missTypeData instanceof AbstractDataManager){
isFinish=((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getTaskValue());
}else {
//完成
isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]) >= sTaskConfig.getTaskValue()[1][0];
}
if (!isFinish) {
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, null);
boolean flag = false;
if(missionStateChangeInfos!=null){
for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) {
if (missionStateChangeInfo.getMissionId() == missionId) {
flag = true;
}
}
if (!flag) {
missionStateChangeInfos.add(doingInfo);
}
}
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();
}
}
if(doingMissionIds.contains(missionId) && !getFinishMissionIds().contains(missionId)){
//更新活动完成进度
// 事件分发
int rewardId = SJourneyWithWind.config.get(missionId).getRewardId();
if(rewardId != 0){
Poster.getPoster().dispatchEvent(new MistyTripEvent(user.getId(),rewardId,1));
}
}
missionStateChangeInfos.add(finishInfo);
doingMissionIds.remove(missionId);
getFinishMissionIds().add(missionId);
}
}
@Override
public void rewardMission(int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap) {
super.rewardMission(missionId, missionTypeEnumListMap);
}
}

View File

@ -323,6 +323,7 @@ public class PlayerLogic {
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
Poster.getPoster().dispatchEvent(new UserForceChangeEvent(uid,teamForce));
user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE);
user.getUserMissionManager().onGameEvent(user,GameEvent.MISTY_TRIP);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCERANK,teamForce);
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCESTANDARD,teamForce);
}

View File

@ -0,0 +1,90 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Table(name ="JourneyWithWind")
public class SJourneyWithWind implements BaseConfig {
private int id;
private int activityId;
private int taskType;
private int[][] taskValue;
private int dayNum;
private int rewardId;
public static Map<Integer, SJourneyWithWind> config;
public static Map<Integer, List<SJourneyWithWind>> sTaskConfigByTypeMap;//<任务类型data>
public static Map<Integer, List<Integer>> sTaskConfigByDay;//<天数data>
@Override
public void init() throws Exception {
Map<Integer, SJourneyWithWind> configTmp = STableManager.getConfig( SJourneyWithWind.class);
Map<Integer, List<SJourneyWithWind>> configListTmp = new HashMap<>();
Map<Integer, List<Integer>> configListbyDay = new HashMap<>();
for(SJourneyWithWind sJourneyWithWind : configTmp.values()){
int taskType = sJourneyWithWind.getTaskType();
int day = sJourneyWithWind.getDayNum();
if(!configListTmp.containsKey(taskType)){
configListTmp.put(taskType,new ArrayList<>());
}
configListTmp.get(taskType).add(sJourneyWithWind);
if(!configListbyDay.containsKey(day)){
configListbyDay.put(day,new ArrayList<>());
}
configListbyDay.get(day).add(sJourneyWithWind.getId());
}
config = configTmp;
sTaskConfigByTypeMap = configListTmp;
sTaskConfigByDay = configListbyDay;
}
public static SJourneyWithWind getSDailyTasksConfigById(int missionId) {
return config.get(missionId);
}
public static List<SJourneyWithWind> getsTaskConfigByTypeMap(int missionType) {
return sTaskConfigByTypeMap.get(missionType);
}
public static List<Integer> getsTaskConfigByDay(int day) {
return sTaskConfigByDay.get(day);
}
public int getId() {
return id;
}
public int getActivityId() {
return activityId;
}
public int getTaskType() {
return taskType;
}
public int[][] getTaskValue() {
return taskValue;
}
public int getDayNum() {
return dayNum;
}
public int getRewardId() {
return rewardId;
}
}