山河社稷

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()){
//开启新章节 新节点
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);
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);
//直接发奖励
if (nodeConfig.getStageType() == 2) {
@ -94,6 +92,9 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
dropList.addAll(HardStageLogic.getFirstRewards(user, nodeConfig));
}
} else if (nodeConfig.getStageType() == 1 || nodeConfig.getStageType() == 3) {
if (teamPosHeroInfos == null || teamPosHeroInfos.size() == 0) {
throw new ErrorCodeException(ErrorCode.newDefineCode("阵容有误!!"));
}
if(nodeConfig.getStageType() == 1){
if(teamId != GlobalsDef.HARD_STAGE_TEAM){
return;

View File

@ -53,7 +53,7 @@ public class UserLevelEventHandler implements IEventHandler,IPrivilegeChange{
}
ExpeditionLogic.openTreasure(user,2,level);
HardStageLogic.refreshInfoByLevel(user);
HardStageLogic.refreshInfoByLevel(user,userLevelEvent.getLevel());
List<SGlobalActivity> sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(2,new ArrayList<>(0));
for(SGlobalActivity sGlobalActivity : sGlobalActivities){
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 config.SHardStage;
import config.SHardStageReward;
import org.assertj.core.util.Lists;
import java.util.HashMap;
import java.util.List;
@ -17,6 +18,8 @@ public class HardStageManager extends MongoBase {
private Map<Integer, HardStageChapter> chapterMap;//山河玩家信息
private List<Integer> noOpenId = Lists.newArrayList();//因等级限制未开的关卡
public HardStageManager() {
}
@ -33,6 +36,10 @@ public class HardStageManager extends MongoBase {
Map<Integer, HardStageChapter> map = new HashMap<>();
SHardStage nodeOne = SHardStage.getConfigMap().get(1);//第一个节点
if (user.getPlayerInfoManager().getLevel() < nodeOne.getLevelLimit()) {
if (!noOpenId.contains(nodeOne.getId())) {
noOpenId.add(nodeOne.getId());
}
setNoOpenId(noOpenId);
return map;
}
//初始化第一章第一节
@ -56,7 +63,6 @@ public class HardStageManager extends MongoBase {
node.getRewardMap().put(config.getReward1()[1], Boolean.FALSE);
node.getRewardMap().put(config.getReward1()[2], Boolean.FALSE);
}
//setCurNode(config.getSection());
return node;
}
@ -80,34 +86,21 @@ public class HardStageManager extends MongoBase {
*
* @param config
*/
public void openNewNode(User user, SHardStage config) {
if (user.getPlayerInfoManager().getLevel() < config.getLevelLimit()) {
public void openNewNode(int level, SHardStage config) {
if (level < config.getLevelLimit()) {
if (!noOpenId.contains(config.getId())) {
noOpenId.add(config.getId());
}
setNoOpenId(noOpenId);
return;
}
HardStageChapter chapter;
chapter = chapterMap.computeIfAbsent(config.getChapter(), k -> initChapter(config.getChapter()));
if (chapter.getNodeList().stream().anyMatch(n -> n.getId() == config.getId())) {
return;
}
HardStageNode node = initNode(config);
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() {
@ -127,4 +120,13 @@ public class HardStageManager extends MongoBase {
this.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;
}
public void addNodeList(HardStageNode node) {
public boolean addNodeList(HardStageNode node) {
this.nodeList.add(node);
//node.init(this.getRootId(), getMongoKey() + ".nodeList." + node.getId());
updateString("nodeList", nodeList);
return true;
}
public int getStars() {

View File

@ -14,6 +14,7 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.sun.codemodel.internal.JForEach;
import config.*;
import org.assertj.core.util.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
@ -240,7 +241,8 @@ public class HardStageLogic {
if (SHardStage.getPreList(nodeConfig.getId()) != null) {
SHardStage.getPreList(nodeConfig.getId()).stream().forEach(n -> {
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 chapterId = user.getHardStageManager().getCurChapter();
List<Integer> noOpenId = user.getHardStageManager().getNoOpenId();
List<Integer> needDel = Lists.newArrayList();
for (int id:noOpenId) {
if (curNodeId == 0 && chapterId == 0) {
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);
}
@ -345,7 +367,8 @@ public class HardStageLogic {
for(int i=1;i<=id;i++){
SHardStage config = SHardStage.getConfigMap().get(i);
if(config != null){
user.getHardStageManager().openNewNode(user,config);
int level = user.getPlayerInfoManager().getLevel();
user.getHardStageManager().openNewNode(level,config);
if(i == id){
user.getHardStageManager().setCurChapter(config.getChapter());
user.getHardStageManager().setCurNode(config.getSection());