离开地图,再进入地图恢复之前状态
parent
0790917a68
commit
c8cc57b871
|
@ -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 {
|
||||
|
|
|
@ -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<>();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue