back_recharge
gaojie 2019-04-15 19:18:59 +08:00
commit ac7ffe50ec
5 changed files with 152 additions and 56 deletions

View File

@ -72,6 +72,12 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return; return;
} }
if (mapManager.getCurMapId() > 0) {
int leftTime = getLeftTime(user);
if (leftTime == 0) {
resetMapInfo(user, true);
}
}
// 初始序章地图 // 初始序章地图
if (user.getPlayerInfoManager().getMapId() == 0) { if (user.getPlayerInfoManager().getMapId() == 0) {
String error = initTeamInfo(teamId, uid, user, mapManager); String error = initTeamInfo(teamId, uid, user, mapManager);
@ -105,28 +111,24 @@ public class MapLogic {
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "该地图不存在"); MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "该地图不存在");
return; return;
} }
// if (scMapConfig == null || scMapConfig.getOpenRule() == null || scMapConfig.getOpenRule().length == 0) { // TODO 可进入地图条件判断
// LOGGER.info("enterMap() uid=>{} mapId=>{}, scMapConfig.getOpenRule()=>{}", uid, mapId, scMapConfig == null ? "" : scMapConfig.getOpenRule()); // int[][] openRule = sChallengeConfig.getOpenRule();
// MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), ""); // if (openRule != null && openRule.length > 0) {
// return; // if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) {
// } // MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要等级:" + openRule[0][1]);
// int missionId = scMapConfig.getOpenRule()[0];
// if (!user.getMissionManager().getTakeRewardMissions().contains(missionId)) {
// Mission mission = user.getMissionManager().getDoingMissions().get(missionId);
// if (mission == null || mission.getMissionStep() < scMapConfig.getOpenRule()[1]) {
// LOGGER.info("enterMap() uid=>{} map not open == missionId =>{} step=>{}", uid, missionId, mission == null ? 0 : mission.getMissionStep());
// MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要完成任务:" + (scMapConfig == null ? "" : scMapConfig.getOpenRule()[0] + "#" + scMapConfig.getOpenRule()[1]));
// return; // return;
// } // }
// LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(openRule[0][0]);
// if (levelDifficulty == null && levelDifficulty.getState() != 4) {
// if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) {
// MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要通关:" + openRule[0][0]);
// return;
// }
// }
// } // }
if (user.getPlayerInfoManager().getMapId() < mapId) { if (user.getPlayerInfoManager().getMapId() < mapId) {
user.getPlayerInfoManager().setMapId(mapId); user.getPlayerInfoManager().setMapId(mapId);
} }
if (mapId > user.getPlayerInfoManager().getMapId()) {
LOGGER.info("enterMap() uid=>{} mapManager.getMaxMapId()=>{} mapId =>{} ", uid, user.getPlayerInfoManager().getMapId(), mapId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
return;
}
String error = initTeamInfo(teamId, uid, user, mapManager); String error = initTeamInfo(teamId, uid, user, mapManager);
if (!error.isEmpty()){ if (!error.isEmpty()){
LOGGER.info("enterMap() uid=>{} error =>{} ", uid, error); LOGGER.info("enterMap() uid=>{} error =>{} ", uid, error);
@ -162,6 +164,7 @@ public class MapLogic {
if (mapManager.getTemporaryItems() != null) { if (mapManager.getTemporaryItems() != null) {
mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems())); mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems()));
} }
LOGGER.info("enterMap() uid=>{} mapId =>{} ", uid, mapManager.getCurMapId());
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true); MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
} }
@ -251,6 +254,7 @@ public class MapLogic {
Mission mission = new Mission(); Mission mission = new Mission();
mission.setMissionId(challengeMapConfig.getMissionId()); mission.setMissionId(challengeMapConfig.getMissionId());
mission.setMissionStep(0); mission.setMissionStep(0);
mission.setTime(0);
mapManager.setMission(mission); mapManager.setMission(mission);
mapManager.setMapInfo(newMap); mapManager.setMapInfo(newMap);
mapManager.setTypeEight(spicelMap); mapManager.setTypeEight(spicelMap);
@ -295,6 +299,13 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return; return;
} }
if (mapManager.getCanMoveTime() > 0) {
long leftTime = mapManager.getCanMoveTime() - TimeUtils.now();
if (leftTime > 0) {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "英雄 " + (leftTime / 1000) + " 秒后复活");
return;
}
}
if (mapManager.getStartExporeTime() == 0) { if (mapManager.getStartExporeTime() == 0) {
LOGGER.info("mapManager.getStartExporeTime() == 0"); LOGGER.info("mapManager.getStartExporeTime() == 0");
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "未开始探索"); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "未开始探索");
@ -350,6 +361,13 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "未开始探索"); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "未开始探索");
return; return;
} }
if (mapManager.getCanMoveTime() > 0) {
long leftTime = mapManager.getCanMoveTime() - TimeUtils.now();
if (leftTime > 0) {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "英雄 " + (leftTime / 1000) + " 秒后复活");
return;
}
}
Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY());
if (cell == null) { if (cell == null) {
LOGGER.info("cell == null xy is wrong =>{} triggerXY=>{}", mapManager.getCurXY(), mapManager.getTriggerXY()); LOGGER.info("cell == null xy is wrong =>{} triggerXY=>{}", mapManager.getCurXY(), mapManager.getTriggerXY());
@ -508,7 +526,7 @@ public class MapLogic {
} }
// LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextEventId=>{}, eventBehaviorCommon=>{} {} sOptionConfig.getReward()=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(), // LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextEventId=>{}, eventBehaviorCommon=>{} {} sOptionConfig.getReward()=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(),
// cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextEventId, eventBehaviorCommon,eventUpdateResponse.getDrop(), sOptionConfig.getReward()); // cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextEventId, eventBehaviorCommon,eventUpdateResponse.getDrop(), sOptionConfig.getReward());
LOGGER.info("updatEvent() uid=>{},nextEventId={},eventId={},mission=>{}", uid, nextEventId, cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMission()); // LOGGER.info("updatEvent() uid=>{},nextEventId={},eventId={},mission=>{}", uid, nextEventId, cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMission());
MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true); MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true);
} }
@ -649,6 +667,7 @@ public class MapLogic {
.setItemId(mission.getMissionId()) .setItemId(mission.getMissionId())
.setMissionStep(mission.getMissionStep()) .setMissionStep(mission.getMissionStep())
.setState("") .setState("")
.setTime(mission.getTime())
.build(); .build();
return openMission; return openMission;
} }
@ -687,6 +706,8 @@ public class MapLogic {
mapManager.setCurMapId(0); mapManager.setCurMapId(0);
mapManager.setStartExporeTime(0); mapManager.setStartExporeTime(0);
mapManager.setTriggerXY(0); mapManager.setTriggerXY(0);
mapManager.setDieCount(0);
mapManager.setCanMoveTime(0);
mapManager.setFoodBufferMap(new HashMap<>()); mapManager.setFoodBufferMap(new HashMap<>());
TemporaryItems temporaryItems = mapManager.getTemporaryItems(); TemporaryItems temporaryItems = mapManager.getTemporaryItems();
mapManager.setMission(null); mapManager.setMission(null);
@ -710,6 +731,13 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return; return;
} }
if (mapManager.getCanMoveTime() > 0) {
long leftTime = mapManager.getCanMoveTime() - TimeUtils.now();
if (leftTime > 0) {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "英雄 " + (leftTime / 1000) + " 秒后复活");
return;
}
}
Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY());
if (cell == null) { if (cell == null) {
cell = mapManager.getMapInfo().get(mapManager.getCurXY()); cell = mapManager.getMapInfo().get(mapManager.getCurXY());
@ -775,6 +803,14 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "此战斗已结算过!"); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "此战斗已结算过!");
return; return;
} }
MapManager mapManager = user.getMapManager();
if (mapManager.getCanMoveTime() > 0) {
long leftTime = mapManager.getCanMoveTime() - TimeUtils.now();
if (leftTime > 0) {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "英雄 " + (leftTime / 1000) + " 秒后复活");
return;
}
}
int seed = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_SEED)); int seed = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_SEED));
int monsterGroupId = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_GROUPID)); int monsterGroupId = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_GROUPID));
CommonProto.FightTeamInfo.Builder builder = CommonProto.FightTeamInfo.newBuilder(); CommonProto.FightTeamInfo.Builder builder = CommonProto.FightTeamInfo.newBuilder();
@ -807,12 +843,34 @@ public class MapLogic {
} }
//校验结果码 1胜利 //校验结果码 1胜利
int resultCode = checkResult[0]; int resultCode = checkResult[0];
if (resultCode == -1){ if (resultCode == -1) {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "战斗异常!"); resetMapInfo(user, false);
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "战斗异常!");
return; return;
}else if(resultCode == 0){ } else if (resultCode == 0) {
// 失败处理 // 失败需要等待n秒后复活所有英雄
// resetMapInfo(user,true); int dieCount = mapManager.getDieCount();
dieCount++;
mapManager.setDieCount(dieCount);
SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId());
int[] reviveTime = sChallengeConfig.getReviveTime();
long time = (long) (MathUtils.calABX(dieCount, reviveTime) * 1000);
mapManager.setCanMoveTime(TimeUtils.now() + time);
int leftTime = getLeftTime(user);
if (leftTime <= (int) (time / 1000)) {
resetMapInfo(user, false);
} else {
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(mapManager.getTeamId());
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
if (hero == null) {
continue;
}
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroFinalAttribute(user, hero);
hero.setCurHp(heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId()));
hero.setSpeed(heroAttributeMap.get(HeroAttributeEnum.Speed.getPropertyId()));
}
}
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder(); CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse
.newBuilder() .newBuilder()
@ -823,14 +881,12 @@ public class MapLogic {
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse, true); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse, true);
return; return;
} }
int teamId = mapManager.getTeamId();
int teamId = user.getMapManager().getTeamId();
List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().get(teamId); List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (TeamPosHeroInfo teamPosHeroInfo : team){ for (TeamPosHeroInfo teamPosHeroInfo : team){
Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
hero.setCurHp(checkResult[teamPosHeroInfo.getPosition()]); hero.setCurHp(checkResult[teamPosHeroInfo.getPosition()]);
} }
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder(); FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder();
fightEndResponse.setDrop(drop); fightEndResponse.setDrop(drop);
@ -847,23 +903,23 @@ public class MapLogic {
fightEndResponse.setMission(eventUpdateResponse.getMission()); fightEndResponse.setMission(eventUpdateResponse.getMission());
} }
if (destoryId != 0) { if (destoryId != 0) {
BehaviorUtil.destoryPoint(user, user.getMapManager().getCurMapId(), destoryId); BehaviorUtil.destoryPoint(user, mapManager.getCurMapId(), destoryId);
} }
if (destoryXY != 0) { if (destoryXY != 0) {
BehaviorUtil.destoryApointXY(user, destoryXY); BehaviorUtil.destoryApointXY(user, destoryXY);
} }
if (nextEventId != 0) { if (nextEventId != 0) {
int triggerXY = user.getMapManager().getTriggerXY(); int triggerXY = mapManager.getTriggerXY();
Cell cell = user.getMapManager().getMapInfo().get(triggerXY); Cell cell = mapManager.getMapInfo().get(triggerXY);
if (cell != null) { if (cell != null) {
cell.setEventId(nextEventId); cell.setEventId(nextEventId);
user.getMapManager().addOrUpdateCell(triggerXY, cell); mapManager.addOrUpdateCell(triggerXY, cell);
updateMapMission(user.getMapManager(),EventType.updateEvent,cell.getEventId(),0); updateMapMission(mapManager,EventType.updateEvent,cell.getEventId(),0);
} }
} }
LOGGER.info("endFight() uid=>{},nextEventId=>{}", uid, nextEventId); // LOGGER.info("endFight() uid=>{},nextEventId=>{}", uid, nextEventId);
updateMapMission(user.getMapManager(),EventType.fightEvent,0,monsterGroupId); updateMapMission(mapManager,EventType.fightEvent,0,monsterGroupId);
// LOGGER.info("endFight() uid=>{} sMonsterGroup.getRewardgroup()=>{} drop=>{}", uid, sMonsterGroup.getRewardgroup(), fightEndResponse.getDrop()); // LOGGER.info("endFight() uid=>{} sMonsterGroup.getRewardgroup()=>{} drop=>{} mission=>{}", uid, sMonsterGroup.getRewardgroup(), fightEndResponse.getDrop(), fightEndResponse.getMission());
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
} }
@ -1062,17 +1118,28 @@ public class MapLogic {
} }
int useTime = (int) ((TimeUtils.now() - startExporeTime) / 1000); int useTime = (int) ((TimeUtils.now() - startExporeTime) / 1000);
if (useTime >= sChallengeConfig.getMapTime()) { if (useTime >= sChallengeConfig.getMapTime()) {
resetMapInfo(user, false);
return 0; return 0;
} else { } else {
return sChallengeConfig.getMapTime() - useTime; return sChallengeConfig.getMapTime() - useTime;
} }
} }
public int getUseTime(User user) throws Exception {
long startExporeTime = user.getMapManager().getStartExporeTime();
if (startExporeTime == 0) {
return -1;
}
int useTime = (int) ((TimeUtils.now() - startExporeTime) / 1000);
return useTime;
}
public CheckMissionReturn checkMission(Mission mission, User user) throws Exception { public CheckMissionReturn checkMission(Mission mission, User user) throws Exception {
if (mission.getTime() > 0) {
return null;
}
CheckMissionReturn checkMissionReturn = new CheckMissionReturn();
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(mission.getMissionId()); SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(mission.getMissionId());
mission.setMissionStep(mission.getMissionStep() + 1); mission.setMissionStep(mission.getMissionStep() + 1);
CheckMissionReturn checkMissionReturn = new CheckMissionReturn();
if (mission.getMissionStep() >= sMissionEventsConfig.getMissionNum()) { if (mission.getMissionStep() >= sMissionEventsConfig.getMissionNum()) {
if (mission.getMissionInfo() != null) { if (mission.getMissionInfo() != null) {
checkMissionReturn.newEventId = mission.getMissionInfo(); checkMissionReturn.newEventId = mission.getMissionInfo();
@ -1080,9 +1147,9 @@ public class MapLogic {
int[] reward = {sMissionEventsConfig.getReward()}; int[] reward = {sMissionEventsConfig.getReward()};
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1, 0); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1, 0);
checkMissionReturn.drop = drop; checkMissionReturn.drop = drop;
} else { mission.setTime(getUseTime(user));
user.getMapManager().setMission(mission);
} }
user.getMapManager().setMission(mission);
checkMissionReturn.mission = mission; checkMissionReturn.mission = mission;
return checkMissionReturn; return checkMissionReturn;
} }

View File

@ -44,10 +44,12 @@ public class MapManager extends MongoBase {
private long startExporeTime; private long startExporeTime;
private int userTime; private long canMoveTime;
private Mission mission; private Mission mission;
private int dieCount;
public MapManager() { public MapManager() {
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
@ -249,15 +251,6 @@ public class MapManager extends MongoBase {
this.startExporeTime = startExporeTime; this.startExporeTime = startExporeTime;
} }
public int getUserTime() {
return userTime;
}
public void setUserTime(int userTime) {
updateString("userTime", userTime);
this.userTime = userTime;
}
public Mission getMission() { public Mission getMission() {
return mission; return mission;
} }
@ -266,4 +259,22 @@ public class MapManager extends MongoBase {
updateString("mission", mission); updateString("mission", mission);
this.mission = mission; this.mission = mission;
} }
public void setDieCount(int dieCount) {
updateString("dieCount", dieCount);
this.dieCount = dieCount;
}
public int getDieCount() {
return dieCount;
}
public long getCanMoveTime() {
return canMoveTime;
}
public void setCanMoveTime(long canMoveTime) {
updateString("canMoveTime", canMoveTime);
this.canMoveTime = canMoveTime;
}
} }

View File

@ -167,8 +167,13 @@ public class BehaviorUtil {
return false; return false;
} }
CheckMissionReturn checkMissionReturn = MapLogic.getInstance().checkMission(mission, user); CheckMissionReturn checkMissionReturn = MapLogic.getInstance().checkMission(mission, user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(checkMissionReturn.mission); if (checkMissionReturn != null) {
eventUpdateResponse.setMission(missionProto); CommonProto.Mission missionProto = MapLogic.getInstance().getMission(checkMissionReturn.mission);
eventUpdateResponse.setMission(missionProto);
if (checkMissionReturn.drop != null) {
eventUpdateResponse.setDrop(checkMissionReturn.drop);
}
}
return true; return true;
} }

View File

@ -22,10 +22,15 @@ public class DestroyMissionBehavior extends BaseBehavior {
if (mission == null) { if (mission == null) {
return false; return false;
} }
CheckMissionReturn checkMissionReturn = MapLogic.getInstance().checkMission(mission, user);
BehaviorUtil.destoryCurPoint(user); BehaviorUtil.destoryCurPoint(user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(checkMissionReturn.mission); CheckMissionReturn checkMissionReturn = MapLogic.getInstance().checkMission(mission, user);
eventUpdateResponse.setMission(missionProto); if (checkMissionReturn != null) {
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(checkMissionReturn.mission);
eventUpdateResponse.setMission(missionProto);
if (checkMissionReturn.drop != null) {
eventUpdateResponse.setDrop(checkMissionReturn.drop);
}
}
return true; return true;
} }
} }

View File

@ -1,8 +1,7 @@
package com.ljsd.jieling.handler.mission; package com.ljsd.jieling.handler.mission;
import com.ljsd.common.mogodb.MongoBase;
public class Mission extends MongoBase { public class Mission {
private int missionId; private int missionId;
@ -10,6 +9,8 @@ public class Mission extends MongoBase {
private String missionInfo; private String missionInfo;
private int time;
public int getMissionId() { public int getMissionId() {
return missionId; return missionId;
} }
@ -30,8 +31,15 @@ public class Mission extends MongoBase {
return missionInfo; return missionInfo;
} }
public void setMissionInfo(String missionInfo) throws Exception { public int getTime() {
updateString("missionInfo", missionInfo); return time;
}
public void setTime(int time) {
this.time = time;
}
public void setMissionInfo(String missionInfo) {
this.missionInfo = missionInfo; this.missionInfo = missionInfo;
} }