飘渺之旅
parent
7ed896b78c
commit
5fdbf0d978
|
@ -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){
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -125,4 +125,6 @@ public enum GameEvent {
|
|||
HARSTAGE_NODE,//山河社稷图通关章节
|
||||
|
||||
GUILD_BOSS_ROOM,//公会boos副本
|
||||
MISTY_TRIP_REFRESH,//缥缈之旅刷新
|
||||
MISTY_TRIP,//缥缈之旅
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue