主线任务

back_recharge
jiahuiwen 2019-03-07 14:01:53 +08:00
parent e17873e789
commit 099b7c7488
17 changed files with 81 additions and 54 deletions

View File

@ -1,11 +0,0 @@
package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.Table;
@Table(name = "MissionEventsItemConfig")
public class SCMissionEventsItemConfig implements BaseConfig {
@Override
public void init() throws Exception {
}
}

View File

@ -20,6 +20,8 @@ public class SMissionEventsConfig implements BaseConfig {
private int[] openRules;
private int next;
@Override
public void init() throws Exception {
@ -47,5 +49,7 @@ public class SMissionEventsConfig implements BaseConfig {
return openRules;
}
public int getNext() {
return next;
}
}

View File

@ -360,10 +360,12 @@ public class MapLogic {
cell.setEventId(nextPoint);
mapManager.addOrUpdateCell(mapManager.getCurXY(), cell);
}
if (behaviorType == EventType.dun && eventUpdateResponse.getMission() != null) {
Mission mission = user.getMissionManager().getDoingMissions().get(eventUpdateResponse.getMission().getItemId());
if (mission != null && cell != null) {
mission.updateMapPoints(cell.getPointId(), cell.getEventId());
if (behaviorType == EventType.dun && eventUpdateResponse.getMissionCount() > 0) {
for (CommonProto.Mission missionProto : eventUpdateResponse.getMissionList()) {
Mission mission = user.getMissionManager().getDoingMissions().get(missionProto.getItemId());
if (mission != null && cell != null) {
mission.updateMapPoints(cell.getPointId(), cell.getEventId());
}
}
}
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1);
@ -387,7 +389,7 @@ public class MapLogic {
eventUpdateResponse.setDrop(dropBuilder);
}
LOGGER.info("updateEvent =====>success<====== xy=>{}, getPointId=>{} eventId={}, mission=>{}, nextPoint=>{}", mapManager.getCurXY(), cell == null ? 0 : cell.getPointId(),
cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMission(), nextPoint);
cell == null ? 0 : cell.getEventId(), eventUpdateResponse.getMissionList(), nextPoint);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true);
}

View File

@ -18,10 +18,7 @@ import com.ljsd.jieling.util.MonsterUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
public class BehaviorUtil {
@ -31,9 +28,17 @@ public class BehaviorUtil {
* @param user
* @throws Exception
*/
public static void distoryPoint(User user) throws Exception {
public static void distoryPoint(User user, int[][] behaviorTypeValues) throws Exception {
Map<Integer, Cell> mapInfo = user.getMapManager().getMapInfo();
mapInfo.remove(user.getMapManager().getCurXY());
Set<Integer> needDelete = new HashSet<>();
for (Map.Entry<Integer, Cell> entry : mapInfo.entrySet()) {
if (entry.getValue().getPointId() == behaviorTypeValues[0][0]) {
needDelete.add(entry.getKey());
}
}
for (Integer xy : needDelete) {
mapInfo.remove(xy);
}
user.getMapManager().setMapInfo(mapInfo);
LOGGER.info("distoryPoint=========>{}", user.getMapManager().getCurXY());
}
@ -89,7 +94,7 @@ public class BehaviorUtil {
}
MissionLogic.getInstance().checkMission(mission, user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
eventUpdateResponse.addMission(missionProto);
return true;
}
}

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.handler.map.behavior;
import com.ljsd.jieling.handler.map.Cell;
import com.ljsd.jieling.handler.map.EventType;
import com.ljsd.jieling.handler.map.MapLogic;
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.dao.root.User;
@ -26,19 +27,21 @@ public class DestroyMissionBehavior extends BaseBehavior {
if (mission == null) {
return false;
}
String newEventId = MissionLogic.getInstance().checkMission(mission, user);
CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user);
Map<Integer, Cell> mapInfo = user.getMapManager().getMapInfo();
mapInfo.remove(user.getMapManager().getCurXY());
if (newEventId != null && !newEventId.isEmpty()) {
String[] split = newEventId.split("#");
if (checkMissionReturn.newEventId != null && !checkMissionReturn.newEventId.isEmpty()) {
String[] split = checkMissionReturn.newEventId .split("#");
Cell cellUpdate = mapInfo.get(Integer.parseInt(split[0]));
if (cellUpdate != null) {
cellUpdate.setEventId(Integer.parseInt(split[1]));
}
}
user.getMapManager().setMapInfo(mapInfo);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
for (Mission cmission : checkMissionReturn.missions){
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(cmission);
eventUpdateResponse.addMission(missionProto);
}
return true;
}
}

View File

@ -14,7 +14,7 @@ public class DestroyPointAndBehavior extends BaseBehavior {
@Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.distoryPoint(user);
BehaviorUtil.distoryPoint(user, behaviorTypeValues);
// TODO 监视地图
return true;

View File

@ -17,7 +17,7 @@ public class DestroyPointBehavior extends BaseBehavior {
@Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.distoryPoint(user);
BehaviorUtil.distoryPoint(user, behaviorTypeValues);
return true;
}
}

View File

@ -69,12 +69,12 @@ public class DunBehavior extends BaseBehavior {
mission.setMissionId(behaviorTypeValues[0][0]);
mission.setMissionStep(0);
mission.getMissionInfos().putAll(newDunEvents);
mission.setMissionInfo(mapManager.getCurXY() + "#" + behaviorTypeValues[0][2] + "#" + behaviorTypeValues[0][1]);
mission.setMissionInfo(mapManager.getCurXY() + "#" + behaviorTypeValues[0][2]);
Map<Integer, Mission> doingMissions = user.getMissionManager().getDoingMissions();
doingMissions.put(behaviorTypeValues[0][0], mission);
user.getMissionManager().updateDoingMissions(doingMissions);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
eventUpdateResponse.addMission(missionProto);
CrossMapCell crossMapInfo = mapManager.getCrossMapInfos().get(mapManager.getCurMapId());
if (crossMapInfo == null) {
crossMapInfo = new CrossMapCell();

View File

@ -15,7 +15,7 @@ public class FightAndDestroyPointBehavior extends BaseBehavior {
@Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse);
BehaviorUtil.distoryPoint(user);
BehaviorUtil.distoryPoint(user, behaviorTypeValues);
return false;
}
}

View File

@ -19,7 +19,7 @@ public class MonitorMissionAndDestroyPointBehavior extends BaseBehavior {
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.updateMission(user, behaviorTypeValues, eventUpdateResponse);
// 销毁事件点
BehaviorUtil.distoryPoint(user);
BehaviorUtil.distoryPoint(user, behaviorTypeValues);
// 开新事件
if (user.getMapManager().getCurMapId() == behaviorTypeValues[0][1]) {
int x = behaviorTypeValues[1][0];

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.map.behavior;
import com.ljsd.jieling.handler.map.EventType;
import com.ljsd.jieling.handler.map.MapLogic;
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.dao.root.User;
@ -25,9 +26,11 @@ public class MonitorMissionBehavior extends BaseBehavior {
if (mission == null) {
return false;
}
MissionLogic.getInstance().checkMission(mission, user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user);
for (Mission cmission : checkMissionReturn.missions){
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(cmission);
eventUpdateResponse.addMission(missionProto);
}
return true;
}
}

View File

@ -4,6 +4,7 @@ import com.ljsd.jieling.config.MapPointConfig;
import com.ljsd.jieling.handler.map.Cell;
import com.ljsd.jieling.handler.map.EventType;
import com.ljsd.jieling.handler.map.MapLogic;
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.dao.root.User;
@ -28,9 +29,11 @@ public class OpenMissionBehavior extends BaseBehavior {
if (mission == null) {
return false;
}
MissionLogic.getInstance().checkMission(mission, user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user);
for (Mission cmission : checkMissionReturn.missions){
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(cmission);
eventUpdateResponse.addMission(missionProto);
}
// 开新事件
if (user.getMapManager().getCurMapId() == behaviorTypeValues[1][0]) {
int x = behaviorTypeValues[1][1];

View File

@ -22,7 +22,7 @@ public class UseItemAndDestroyBehavior extends BaseBehavior {
if (!isEnough) {
return isEnough;
}
BehaviorUtil.distoryPoint(user);
BehaviorUtil.distoryPoint(user, behaviorTypeValues);
return true;
}
}

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.map.behavior;
import com.ljsd.jieling.handler.map.EventType;
import com.ljsd.jieling.handler.map.MapLogic;
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.dao.root.User;
@ -30,9 +31,11 @@ public class UseItemMissionBehavior extends BaseBehavior {
if (!checkCost) {
return false;
}
MissionLogic.getInstance().checkMission(mission, user);
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(mission);
eventUpdateResponse.setMission(missionProto);
CheckMissionReturn checkMissionReturn = MissionLogic.getInstance().checkMission(mission, user);
for (Mission cmission : checkMissionReturn.missions){
CommonProto.Mission missionProto = MapLogic.getInstance().getMission(cmission);
eventUpdateResponse.addMission(missionProto);
}
return true;
}
}

View File

@ -0,0 +1,9 @@
package com.ljsd.jieling.handler.mission;
import java.util.ArrayList;
import java.util.List;
public class CheckMissionReturn {
public String newEventId;
public List<Mission> missions = new ArrayList<>();
}

View File

@ -90,9 +90,8 @@ public class MissionLogic {
return false;
}
public String checkMission(Mission mission, User user) throws Exception {
String[] split1 = mission.getMissionInfo().split("#");
int needCount = Integer.parseInt(split1[2]);
public CheckMissionReturn checkMission(Mission mission, User user) throws Exception {
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(mission.getMissionId());
mission.setMissionStep(mission.getMissionStep() + 1);
Map<Integer, Cell> missionInfos = mission.getMissionInfos();
int curXY = user.getMapManager().getCurXY();
@ -101,10 +100,10 @@ public class MissionLogic {
cell.setEventId(-1);
mission.updateMissionInfos(curXY, cell);
}
String newEventId = null;
if (mission.getMissionStep() >= needCount) {
CheckMissionReturn checkMissionReturn = new CheckMissionReturn();
if (mission.getMissionStep() >= sMissionEventsConfig.getMissionNum()) {
if (mission.getMissionInfo() != null) {
newEventId = mission.getMissionInfo();
checkMissionReturn.newEventId = mission.getMissionInfo();
}
Map<Integer, Mission> doingMissions = user.getMissionManager().getDoingMissions();
doingMissions.remove(mission.getMissionId());
@ -112,10 +111,19 @@ public class MissionLogic {
Set<Integer> finishMissions = user.getMissionManager().getFinishMissions();
finishMissions.add(mission.getMissionId());
user.getMissionManager().updateFinishMissions(finishMissions);
// 开新任务
if (sMissionEventsConfig.getNext() != 0) {
Mission missionNew = new Mission();
missionNew.setMissionId(sMissionEventsConfig.getNext());
missionNew.setMissionStep(0);
user.getMissionManager().getDoingMissions().put(sMissionEventsConfig.getNext(), missionNew);
checkMissionReturn.missions.add(missionNew);
}
} else {
user.getMissionManager().updateOneDoingMissions(mission.getMissionId(), mission);
}
return newEventId;
checkMissionReturn.missions.add(mission);
return checkMissionReturn;
}

View File

@ -80,11 +80,9 @@ public class UserManager {
SGameSetting gameSetting = SGameSetting.getGameSetting();
ItemUtil.drop(user,gameSetting.getBornItem());
MissionManager missionManager = user.getMissionManager();
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(1);
Mission mission = new Mission();
mission.setMissionId(1);
mission.setMissionStep(0);
mission.setMissionInfo("0#0#" + sMissionEventsConfig.getMissionNum());
missionManager.getDoingMissions().put(mission.getMissionId(), mission);
MapManager mapManager = user.getMapManager();
//TODO