山河社稷
parent
4e969510f5
commit
1f7ba67aa4
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue