山河社稷

xuexinpeng 2021-05-31 02:17:18 +08:00
parent 4e969510f5
commit 1f7ba67aa4
5 changed files with 61 additions and 34 deletions

View File

@ -64,7 +64,8 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
&& chapterMap.get(preNodeConfig.getChapter()).getNodeList().get(i).isHasPass()){ && chapterMap.get(preNodeConfig.getChapter()).getNodeList().get(i).isHasPass()){
//开启新章节 新节点 //开启新章节 新节点
if (user.getPlayerInfoManager().getLevel() >= nodeConfig.getLevelLimit()) { if (user.getPlayerInfoManager().getLevel() >= nodeConfig.getLevelLimit()) {
user.getHardStageManager().openNewNode(user, nodeConfig); int level = user.getPlayerInfoManager().getLevel();
user.getHardStageManager().openNewNode(level, nodeConfig);
} }
} }
} }
@ -80,9 +81,6 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
} }
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
PlayerInfoProto.HardStageFightResponse.Builder fightStartResponse = PlayerInfoProto.HardStageFightResponse.newBuilder(); PlayerInfoProto.HardStageFightResponse.Builder fightStartResponse = PlayerInfoProto.HardStageFightResponse.newBuilder();
if (teamPosHeroInfos == null || teamPosHeroInfos.size() == 0) {
throw new ErrorCodeException(ErrorCode.newDefineCode("阵容有误!!"));
}
CommonProto.FightTeamInfo fightTeamInfo = HardStageLogic.getFightTeamInfo(user, teamId, nodeConfig); CommonProto.FightTeamInfo fightTeamInfo = HardStageLogic.getFightTeamInfo(user, teamId, nodeConfig);
//直接发奖励 //直接发奖励
if (nodeConfig.getStageType() == 2) { if (nodeConfig.getStageType() == 2) {
@ -94,6 +92,9 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
dropList.addAll(HardStageLogic.getFirstRewards(user, nodeConfig)); dropList.addAll(HardStageLogic.getFirstRewards(user, nodeConfig));
} }
} else if (nodeConfig.getStageType() == 1 || nodeConfig.getStageType() == 3) { } else if (nodeConfig.getStageType() == 1 || nodeConfig.getStageType() == 3) {
if (teamPosHeroInfos == null || teamPosHeroInfos.size() == 0) {
throw new ErrorCodeException(ErrorCode.newDefineCode("阵容有误!!"));
}
if(nodeConfig.getStageType() == 1){ if(nodeConfig.getStageType() == 1){
if(teamId != GlobalsDef.HARD_STAGE_TEAM){ if(teamId != GlobalsDef.HARD_STAGE_TEAM){
return; return;

View File

@ -53,7 +53,7 @@ public class UserLevelEventHandler implements IEventHandler,IPrivilegeChange{
} }
ExpeditionLogic.openTreasure(user,2,level); ExpeditionLogic.openTreasure(user,2,level);
HardStageLogic.refreshInfoByLevel(user); HardStageLogic.refreshInfoByLevel(user,userLevelEvent.getLevel());
List<SGlobalActivity> sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(2,new ArrayList<>(0)); List<SGlobalActivity> sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(2,new ArrayList<>(0));
for(SGlobalActivity sGlobalActivity : sGlobalActivities){ for(SGlobalActivity sGlobalActivity : sGlobalActivities){
int[] openRules = sGlobalActivity.getOpenRules(); int[] openRules = sGlobalActivity.getOpenRules();

View File

@ -6,6 +6,7 @@ import com.ljsd.jieling.logic.hardStage.HardStageChapter;
import com.ljsd.jieling.logic.hardStage.HardStageNode; import com.ljsd.jieling.logic.hardStage.HardStageNode;
import config.SHardStage; import config.SHardStage;
import config.SHardStageReward; import config.SHardStageReward;
import org.assertj.core.util.Lists;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -17,6 +18,8 @@ public class HardStageManager extends MongoBase {
private Map<Integer, HardStageChapter> chapterMap;//山河玩家信息 private Map<Integer, HardStageChapter> chapterMap;//山河玩家信息
private List<Integer> noOpenId = Lists.newArrayList();//因等级限制未开的关卡
public HardStageManager() { public HardStageManager() {
} }
@ -33,6 +36,10 @@ public class HardStageManager extends MongoBase {
Map<Integer, HardStageChapter> map = new HashMap<>(); Map<Integer, HardStageChapter> map = new HashMap<>();
SHardStage nodeOne = SHardStage.getConfigMap().get(1);//第一个节点 SHardStage nodeOne = SHardStage.getConfigMap().get(1);//第一个节点
if (user.getPlayerInfoManager().getLevel() < nodeOne.getLevelLimit()) { if (user.getPlayerInfoManager().getLevel() < nodeOne.getLevelLimit()) {
if (!noOpenId.contains(nodeOne.getId())) {
noOpenId.add(nodeOne.getId());
}
setNoOpenId(noOpenId);
return map; return map;
} }
//初始化第一章第一节 //初始化第一章第一节
@ -56,7 +63,6 @@ public class HardStageManager extends MongoBase {
node.getRewardMap().put(config.getReward1()[1], Boolean.FALSE); node.getRewardMap().put(config.getReward1()[1], Boolean.FALSE);
node.getRewardMap().put(config.getReward1()[2], Boolean.FALSE); node.getRewardMap().put(config.getReward1()[2], Boolean.FALSE);
} }
//setCurNode(config.getSection());
return node; return node;
} }
@ -65,8 +71,8 @@ public class HardStageManager extends MongoBase {
chapter.setChapterId(chapterId); chapter.setChapterId(chapterId);
chapter.init(this.getRootId(), getMongoKey() + ".chapterMap." + chapter.getChapterId()); chapter.init(this.getRootId(), getMongoKey() + ".chapterMap." + chapter.getChapterId());
List<SHardStageReward> reward = SHardStageReward.getChapterConfigMap().get(chapterId); List<SHardStageReward> reward = SHardStageReward.getChapterConfigMap().get(chapterId);
if(reward != null){ if (reward != null) {
reward.stream().forEach(n->{ reward.stream().forEach(n -> {
chapter.getRewardMap().put(n.getId(), Boolean.FALSE); chapter.getRewardMap().put(n.getId(), Boolean.FALSE);
chapter.updateRewardMap(); chapter.updateRewardMap();
}); });
@ -80,34 +86,21 @@ public class HardStageManager extends MongoBase {
* *
* @param config * @param config
*/ */
public void openNewNode(User user, SHardStage config) { public void openNewNode(int level, SHardStage config) {
if (user.getPlayerInfoManager().getLevel() < config.getLevelLimit()) { if (level < config.getLevelLimit()) {
if (!noOpenId.contains(config.getId())) {
noOpenId.add(config.getId());
}
setNoOpenId(noOpenId);
return; return;
} }
HardStageChapter chapter; HardStageChapter chapter;
chapter = chapterMap.computeIfAbsent(config.getChapter(), k -> initChapter(config.getChapter())); chapter = chapterMap.computeIfAbsent(config.getChapter(), k -> initChapter(config.getChapter()));
if (chapter.getNodeList().stream().anyMatch(n -> n.getId() == config.getId())) {
if(chapter.getNodeList().stream().anyMatch(n->n.getId() == config.getId())){
return; return;
} }
HardStageNode node = initNode(config); HardStageNode node = initNode(config);
chapter.addNodeList(node); chapter.addNodeList(node);
/*if(chapterMap.containsKey(config.getChapter())){
chapter = chapterMap.get(config.getChapter());
HardStageNode node = initNode(config);
chapter.addNodeList(node);
setCurNode(node.getId());
}else{
chapter = initChapter(config.getChapter());
chapter.init(this.getRootId(), getMongoKey() + ".chapterMap." + chapter.getChapterId());
updateString("chapterMap." + chapter.getChapterId(), chapterMap);
HardStageNode node = initNode(config);
chapter.addNodeList(node);
setCurNode(node.getId());
chapterMap.put(config.getChapter(),chapter);
setCurChapter(chapter.getChapterId());
}*/
//updateString("chapterMap." + chapter.getChapterId(), chapterMap.get(chapter.getChapterId()));
} }
public int getCurChapter() { public int getCurChapter() {
@ -127,4 +120,13 @@ public class HardStageManager extends MongoBase {
this.curNode = curNode; this.curNode = curNode;
updateString("curNode", curNode); updateString("curNode", curNode);
} }
public List<Integer> getNoOpenId() {
return noOpenId;
}
public void setNoOpenId(List<Integer> noOpenId) {
this.noOpenId = noOpenId;
updateString("noOpenId", noOpenId);
}
} }

View File

@ -29,10 +29,11 @@ public class HardStageChapter extends MongoBase {
return nodeList; return nodeList;
} }
public void addNodeList(HardStageNode node) { public boolean addNodeList(HardStageNode node) {
this.nodeList.add(node); this.nodeList.add(node);
//node.init(this.getRootId(), getMongoKey() + ".nodeList." + node.getId()); //node.init(this.getRootId(), getMongoKey() + ".nodeList." + node.getId());
updateString("nodeList", nodeList); updateString("nodeList", nodeList);
return true;
} }
public int getStars() { public int getStars() {

View File

@ -14,6 +14,7 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import com.sun.codemodel.internal.JForEach; import com.sun.codemodel.internal.JForEach;
import config.*; import config.*;
import org.assertj.core.util.Lists;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
@ -240,7 +241,8 @@ public class HardStageLogic {
if (SHardStage.getPreList(nodeConfig.getId()) != null) { if (SHardStage.getPreList(nodeConfig.getId()) != null) {
SHardStage.getPreList(nodeConfig.getId()).stream().forEach(n -> { SHardStage.getPreList(nodeConfig.getId()).stream().forEach(n -> {
if (n != null) { if (n != null) {
user.getHardStageManager().openNewNode(user, n); int level = user.getPlayerInfoManager().getLevel();
user.getHardStageManager().openNewNode(level, n);
} }
}); });
} }
@ -297,12 +299,32 @@ public class HardStageLogic {
/** /**
* *
*/ */
public static void refreshInfoByLevel(User user) throws Exception { public static void refreshInfoByLevel(User user,int level) throws Exception {
int curNodeId = user.getHardStageManager().getCurNode(); int curNodeId = user.getHardStageManager().getCurNode();
int chapterId = user.getHardStageManager().getCurChapter(); int chapterId = user.getHardStageManager().getCurChapter();
List<Integer> noOpenId = user.getHardStageManager().getNoOpenId();
List<Integer> needDel = Lists.newArrayList();
for (int id:noOpenId) {
if (curNodeId == 0 && chapterId == 0) { if (curNodeId == 0 && chapterId == 0) {
user.getHardStageManager().getChapterMap(user); user.getHardStageManager().getChapterMap(user);
} }
SHardStage nodeConfig = SHardStage.getConfigMap().get(id);
if(nodeConfig != null){
user.getHardStageManager().openNewNode(level,nodeConfig);
if(user.getHardStageManager().getChapterMap(user).containsKey(nodeConfig.getChapter())){
if(user.getHardStageManager().getChapterMap(user).get(nodeConfig.getChapter()).getNodeList().stream().anyMatch(n->n.getId() == nodeConfig.getId())){
needDel.add(nodeConfig.getId());
}
}
}
}
for (int del:needDel) {
noOpenId.remove(noOpenId.indexOf(del));
}
if(needDel.size()>0){
user.getHardStageManager().setNoOpenId(noOpenId);
needDel.clear();
}
sendHardStageIndication(user); sendHardStageIndication(user);
} }
@ -345,7 +367,8 @@ public class HardStageLogic {
for(int i=1;i<=id;i++){ for(int i=1;i<=id;i++){
SHardStage config = SHardStage.getConfigMap().get(i); SHardStage config = SHardStage.getConfigMap().get(i);
if(config != null){ if(config != null){
user.getHardStageManager().openNewNode(user,config); int level = user.getPlayerInfoManager().getLevel();
user.getHardStageManager().openNewNode(level,config);
if(i == id){ if(i == id){
user.getHardStageManager().setCurChapter(config.getChapter()); user.getHardStageManager().setCurChapter(config.getChapter());
user.getHardStageManager().setCurNode(config.getSection()); user.getHardStageManager().setCurNode(config.getSection());