保存事件进度

back_recharge
jiahuiwen 2019-03-26 13:56:52 +08:00
parent ba834ed742
commit 8918c88a1b
3 changed files with 49 additions and 18 deletions

View File

@ -10,19 +10,19 @@ public class CrossMapCell {
// missionId 存在某个地图的任务
private Set<Integer> missionIds = new HashSet<>();
// 每日刷新
private Set<Integer> dayRefreshs = new HashSet<>();
private Map<Integer, Integer> dayRefreshs = new ConcurrentHashMap<>();
// 一次性事件
private Set<Integer> permanents = new HashSet<>();
private Map<Integer, Integer> permanents = new ConcurrentHashMap<>();
public Set<Integer> getMissionIds() {
return missionIds;
}
public Set<Integer> getDayRefreshs() {
public Map<Integer, Integer> getDayRefreshs() {
return dayRefreshs;
}
public Set<Integer> getPermanents() {
public Map<Integer, Integer> getPermanents() {
return permanents;
}
}

View File

@ -190,11 +190,22 @@ public class MapLogic {
LOGGER.info("====initMap()====mapPointConfig == null======>{}", scMap1.getEvent());
continue;
}
if (crossMapCell != null && crossMapCell.getDayRefreshs().contains(mapPointConfig.getId())) {
continue;
int initialEventId = mapPointConfig.getInitialEventId();
if (crossMapCell != null && crossMapCell.getDayRefreshs().containsKey(mapPointConfig.getId())) {
int eventId = crossMapCell.getDayRefreshs().get(mapPointConfig.getId());
if (eventId == -1) {
continue;
} else {
initialEventId = eventId;
}
}
if (crossMapCell != null && crossMapCell.getPermanents().contains(mapPointConfig.getId())) {
continue;
if (crossMapCell != null && crossMapCell.getPermanents().containsKey(mapPointConfig.getId())) {
int eventId = crossMapCell.getPermanents().get(mapPointConfig.getId());
if (eventId == -1) {
continue;
} else {
initialEventId = eventId;
}
}
for (Mission mission : missions) {
if (mission.getMapPoints().containsKey(mapPointConfig.getId())) {
@ -206,7 +217,7 @@ public class MapLogic {
break;
}
}
Cell cellValue = new Cell(xy, mapPointConfig.getInitialEventId(), mapPointConfig.getId());
Cell cellValue = new Cell(xy, initialEventId, mapPointConfig.getId());
if (mapPointConfig.getStyle() == EventType.enter) {
mapManager.setCurXY(xy);
}
@ -461,9 +472,36 @@ public class MapLogic {
}
// LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextEventId=>{}, eventBehaviorCommon=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(),
// cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextEventId, eventBehaviorCommon);
saveRefreshInfo(optionId, mapManager, mapPointConfig, nextEventId);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true);
}
public void saveRefreshInfo(int optionId, MapManager mapManager, MapPointConfig mapPointConfig, int nextEventId) throws Exception {
CrossMapCell crossMapCell = mapManager.getCrossMapInfos().get(mapManager.getCurMapId());
if (crossMapCell == null) {
crossMapCell = new CrossMapCell();
}
if (mapPointConfig.getRefresh() == 1) {
if (crossMapCell.getDayRefreshs().containsKey(optionId)) {
int saveEventId = crossMapCell.getDayRefreshs().get(optionId);
if (saveEventId == -1) {
return;
}
}
crossMapCell.getDayRefreshs().put(optionId, nextEventId);
}
if (mapPointConfig.getRefresh() == 3) {
if (crossMapCell.getPermanents().containsKey(optionId)) {
int saveEventId = crossMapCell.getPermanents().get(optionId);
if (saveEventId == -1) {
return;
}
}
crossMapCell.getPermanents().put(optionId, nextEventId);
}
mapManager.updateCrossMapInfos(mapManager.getCurMapId(), crossMapCell);
}
private int getNextPoint(User user, MapManager mapManager, int[][] jumpTypeValues, SOptionAddCondition sOptionAddConditions) {
int nextEventId = 0;
switch (sOptionAddConditions.getType()) {

View File

@ -1,9 +1,7 @@
package com.ljsd.jieling.handler.map.behavior;
import com.google.gson.Gson;
import com.googlecode.protobuf.format.JsonFormat;
import com.ljsd.jieling.config.MapPointConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.handler.map.Cell;
@ -13,19 +11,14 @@ import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.mission.CheckMissionReturn;
import com.ljsd.jieling.handler.mission.Mission;
import com.ljsd.jieling.handler.mission.MissionLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MapInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.MonsterUtil;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -66,10 +59,10 @@ public class BehaviorUtil {
crossMapCell = new CrossMapCell();
}
if (mapPointConfig.getRefresh() == 1) {
crossMapCell.getDayRefreshs().add(needDistoryPointId);
crossMapCell.getDayRefreshs().put(needDistoryPointId, -1);
}
if (mapPointConfig.getRefresh() == 3) {
crossMapCell.getPermanents().add(needDistoryPointId);
crossMapCell.getPermanents().put(needDistoryPointId, -1);
}
mapManager.updateCrossMapInfos(mapManager.getCurMapId(), crossMapCell);
}