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