离开地图,再进入地图恢复之前状态

back_recharge
jiahuiwen 2019-02-25 15:55:27 +08:00
parent 0790917a68
commit c8cc57b871
3 changed files with 36 additions and 12 deletions

View File

@ -1,7 +1,6 @@
package com.ljsd.jieling.handler.map;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class CrossMapCell {

View File

@ -109,13 +109,13 @@ public class MapLogic {
Map<Integer, Cell> spicelMap = new HashMap<>();
Random random = new Random();
CrossMapCell crossMapCell1 = mapManager.getCrossMapInfos().get(mapManager.getCurMapId());
Map<Integer, Cell> missionInfos = new HashMap<>(3);
Set<Mission> missions = new HashSet<>();
if (crossMapCell1 != null) {
Map<Integer, Mission> doingMissions = user.getMissionManager().getDoingMissions();
for (Integer doingMissionId : crossMapCell1.getMissionIds()) {
if (doingMissions.containsKey(doingMissionId)) {
Mission mission = doingMissions.get(doingMissionId);
missionInfos.putAll(mission.getMissionInfos());
missions.add(mission);
}
}
}
@ -125,15 +125,21 @@ public class MapLogic {
int x = scMap1.getGroups()[randomIndex][0];
int y = scMap1.getGroups()[randomIndex][1];
int xy = CellUtil.xy2Pos(x, y);
if (missionInfos.containsKey(xy)) {
newMap.put(xy, missionInfos.get(xy));
continue;
}
MapPointConfig mapPointConfig = MapPointConfig.scMapEventMap.get(scMap1.getEvent());
if (mapPointConfig == null) {
LOGGER.info("====initMap()====mapPointConfig == null======>{}", scMap1.getEvent());
continue;
}
for (Mission mission : missions) {
if (mission.getMapPoints().containsKey(mapPointConfig.getId())) {
for (Map.Entry<Integer, Cell> missionEntry : mission.getMissionInfos().entrySet()) {
newMap.put(missionEntry.getKey(), missionEntry.getValue());
}
Cell cellValue = new Cell(xy, mission.getMapPoints().get(mapPointConfig.getId()), mapPointConfig.getId());
newMap.put(xy, cellValue);
break;
}
}
Cell cellValue = new Cell(xy, mapPointConfig.getInitialEventId(), mapPointConfig.getId());
if (mapPointConfig.getStyle() == EventType.enter) {
mapManager.setCurXY(xy);
@ -410,7 +416,7 @@ public class MapLogic {
}
}
mapManager.setMapInfo(mapInfo);
openMission = getMission(null, mission);
openMission = getMission(mission.getMissionInfos(), mission);
break;
}
case EventType.monitorMission: {
@ -421,7 +427,7 @@ public class MapLogic {
break;
}
MissionLogic.getInstance().checkMission(mission, user);
openMission = getMission(null, mission);
openMission = getMission(mission.getMissionInfos(), mission);
break;
}
case EventType.openMission: {
@ -432,7 +438,7 @@ public class MapLogic {
break;
}
MissionLogic.getInstance().checkMission(mission, user);
openMission = getMission(null, mission);
openMission = getMission(mission.getMissionInfos(), mission);
// TODO 还要开新事件
@ -446,7 +452,7 @@ public class MapLogic {
break;
}
MissionLogic.getInstance().checkMission(mission, user);
openMission = getMission(null, mission);
openMission = getMission(mission.getMissionInfos(), mission);
break;
}
case EventType.useItemMission: {
@ -461,7 +467,7 @@ public class MapLogic {
break;
}
MissionLogic.getInstance().checkMission(mission, user);
openMission = getMission(null, mission);
openMission = getMission(mission.getMissionInfos(), mission);
break;
}
default: {
@ -554,6 +560,12 @@ public class MapLogic {
cell.setEventId(nextPoint);
mapManager.addOrUpdateCell(mapManager.getCurXY(), cell);
}
if (behaviorType == EventType.dun && openMission != null) {
Mission mission = user.getMissionManager().getDoingMissions().get(openMission.getItemId());
if (mission != null) {
mission.updateMapPoints(cell.getPointId(), cell.getEventId());
}
}
int[] reward = {sOptionConfig.getReward()};
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, reward, 1);
List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>();

View File

@ -14,6 +14,10 @@ public class Mission extends MongoBase {
private String missionInfo;
// pointId, eventId
private Map<Integer, Integer> mapPoints = new ConcurrentHashMap<>();
// 地图坐标,事件点
private Map<Integer, Cell> missionInfos = new ConcurrentHashMap<>();
public int getMissionId() {
@ -49,4 +53,13 @@ public class Mission extends MongoBase {
updateString("missionInfo", missionInfo);
this.missionInfo = missionInfo;
}
public Map<Integer, Integer> getMapPoints() {
return mapPoints;
}
public void updateMapPoints(int pointId, int eventId) throws Exception {
updateString("mapPoints." + pointId, eventId);
this.mapPoints.put(pointId, eventId);
}
}