diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java index 9fa7962f8..bf9952ba8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java @@ -21,6 +21,7 @@ import com.ljsd.jieling.logic.fight.FightUtil; import com.ljsd.jieling.logic.hardStage.HardStageChapter; import com.ljsd.jieling.logic.hardStage.HardStageLogic; import com.ljsd.jieling.logic.hardStage.HardStageNode; +import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.FightDataUtil; import com.ljsd.jieling.util.MessageUtil; @@ -183,6 +184,9 @@ public class StartHardStageRequestHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.SWEEP_DEMON_REQUEST; + } + + + @Override + public void processWithProto(ISession iSession, FightInfoProto.SweepDemonRequest proto) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + int id =proto.getId(); + SFloodConfig sFloodConfig = STableManager.getConfig(SFloodConfig.class).get(id); + if(sFloodConfig == null){ + return; + } + List dropList = Lists.newArrayList(); + boolean isOnekey= proto.getOnkeySweep(); + boolean isSuccess = false; + CommonProto.Drop.Builder drop = null; + //判断是否挑战过 + if(user.getMapManager().getLastMonsterAttack()0){ + int[][] reward = new int[times*sFloodConfig.getReward().length][2]; + for(int i =0;i vipRewardMap = user.getUserMissionManager().getVipMissionIdsType().getVipRewardMap(); + //针对已有特权等级玩家的兼容 for(int i = user.getPlayerInfoManager().getVipLevel();i>=1;i--){ if(!vipRewardMap.containsKey(i) && i!=0){ - vipRewardMap.put(i,0); + vipRewardMap.put(i,1); } } user.getUserMissionManager().setVipMissionIdsType(user.getUserMissionManager().getVipMissionIdsType()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index c2f962904..e4eff7e1b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -173,6 +173,11 @@ public class CumulationData { // 鸿蒙碑等级 public int hongmeng_tablet_level; + //山河社稷星星数 + public int hardstage_stars; + //山河社稷章节数 + public int hardstage_node; + public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); } @@ -399,4 +404,20 @@ public class CumulationData { public void setHongmeng_tablet_level(int hongmeng_tablet_level) { this.hongmeng_tablet_level = hongmeng_tablet_level; } + + public int getHardstage_stars() { + return hardstage_stars; + } + + public void setHardstage_stars(int hardstage_stars) { + this.hardstage_stars = hardstage_stars; + } + + public int getHardstage_node() { + return hardstage_node; + } + + public void setHardstage_node(int hardstage_node) { + this.hardstage_node = hardstage_node; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java index 4d878ad5f..ac7e6e3b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java @@ -111,4 +111,7 @@ public enum GameEvent { COW_FLY_SKY_REFRESH,//牛气冲天刷新 COW_FLY_SKY_REWEARD,//牛气冲天奖励 + + HARSTAGE_STARS,//山河社稷图星数 + HARSTAGE_NODE,//山河社稷图通关章节 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index d385e2260..eb59b9841 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -926,6 +926,12 @@ public class MissionLoigc { case EXPEDITION_FLOOR_TIMES: count = cumulationData.expedition_floor_times.get(missionSubType[0]); break; + case HARSTAGE_STARS: + count = cumulationData.hardstage_stars; + break; + case HARSTAGE_NODE: + count = cumulationData.hardstage_node; + break; //100以后类型继承 AbstractDataManager default: count = 0; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index 220a34548..587185c01 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -126,6 +126,9 @@ public enum MissionType { HONGMENG_RESONANCE_LATTICE(119),//鸿蒙阵共鸣格子 HONGMENG_TABLET_LEVEL(120),// 鸿蒙碑等级 + + HARSTAGE_STARS(121),//山河社稷图获得总星星数 + HARSTAGE_NODE(122),//山河社稷图通关章节 ; private int missionType; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index d210db01f..11280f05b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -145,6 +145,12 @@ public class DataManagerDistributor { // 鸿蒙阵 judges.put(MissionType.HONGMENG_RESONANCE_LATTICE, new HongMengResonanceDataManager()); judges.put(MissionType.HONGMENG_TABLET_LEVEL, new HongMengLevelDataManager()); + + //山河社稷图 + judges.put(MissionType.HARSTAGE_STARS, new HardStageStarsDataManager()); + judges.put(MissionType.HARSTAGE_NODE, new HardStageNodeDataManager()); + + } public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageNodeDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageNodeDataManager.java new file mode 100644 index 000000000..6bed97fb3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageNodeDataManager.java @@ -0,0 +1,16 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * 山河社稷章节数 + */ +public class HardStageNodeDataManager implements BaseDataManager { + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int nums = (int)parm[0]; + data.setHardstage_node(nums); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageStarsDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageStarsDataManager.java new file mode 100644 index 000000000..4494c2ec9 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HardStageStarsDataManager.java @@ -0,0 +1,16 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * 山河社稷星数 + */ +public class HardStageStarsDataManager implements BaseDataManager { + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int nums = (int)parm[0]; + data.setHardstage_stars(nums); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 1c6016810..879792840 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -428,6 +428,18 @@ public class MissionEventDistributor { eventEnumListMap.put(GameEvent.HONGMENG_TABLET_LEVEL, typeList); eventProcessor.put(GameEvent.HONGMENG_TABLET_LEVEL, new CumulationDataEventProcessor()); + //山河社稷图 + typeList = new ArrayList<>(); + typeList.add(MissionType.HARSTAGE_STARS); + eventEnumListMap.put(GameEvent.HARSTAGE_STARS, typeList); + eventProcessor.put(GameEvent.HARSTAGE_STARS, new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.HARSTAGE_NODE); + eventEnumListMap.put(GameEvent.HARSTAGE_NODE, typeList); + eventProcessor.put(GameEvent.HARSTAGE_NODE, new CumulationDataEventProcessor()); + + } public static final ThreadLocal>> threadMissionChangeList = diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index e8382c74e..02e0ab4b2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -266,12 +266,20 @@ public class PlayerLogic { playerInfoManager.setVipLevel(vipLevel+1); //特权等级奖励 MaprewardMap = user.getUserMissionManager().getVipMissionIdsType().getVipRewardMap(); - if(!rewardMap.containsKey(playerInfoManager.getVipLevel())){ + + for(int i = user.getPlayerInfoManager().getVipLevel();i>=1;i--){ + if(!rewardMap.containsKey(i) && i!=0){ + rewardMap.put(i,1); + } + } + + + /*if(!rewardMap.containsKey(playerInfoManager.getVipLevel())){ rewardMap.put(playerInfoManager.getVipLevel(),0); } if(rewardMap.get(playerInfoManager.getVipLevel())==0){ rewardMap.put(playerInfoManager.getVipLevel(),1); - } + }*/ user.getUserMissionManager().setVipMissionIdsType(user.getUserMissionManager().getVipMissionIdsType()); PlayerInfoProto.VipLevelStateResponse.Builder vipLevelStateResponse = PlayerInfoProto.VipLevelStateResponse.newBuilder(); @@ -838,6 +846,44 @@ public class PlayerLogic { } return false; } + //消耗完所有特权次数 + public int checkAndConsumeAllPrivilegeTimes(User user, int privilageTypeId){ + Map vipInfo = user.getPlayerInfoManager().getVipInfo(); + if(privilageTypeId == 0){ + return 0; + } + List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilageTypeId); + List typePrivileges = new ArrayList<>(); + for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ + if(!vipInfo.containsKey(config.getId())){ + continue; + } + typePrivileges.add(config.getId()); + } + if(typePrivileges.isEmpty()){ + return 0; + } + int levelUpdateCount = 0; + for(Integer privilageId:typePrivileges){ + VipInfo info = vipInfo.get(privilageId); + if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + continue; + } + int mCount = getMaxCountByPrivilege(user,privilageId); + if(mCount==-1){ + return 0; + } + if(info.getCount()>= mCount){ + continue; + } + if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + continue; + } + levelUpdateCount+=mCount-info.getCount(); + user.getPlayerInfoManager().updateVipPrivilage(privilageId, mCount-info.getCount()); + } + return levelUpdateCount; + } // private boolean priviliageCheck(User user, int privilageTypeId, int checkNum,boolean isUpdate){ // Map vipInfo = user.getPlayerInfoManager().getVipInfo(); // if(privilageTypeId == 0){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index ec4962334..c19e611d5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -514,7 +514,9 @@ public class StoreLogic implements IEventHandler { if(sStoreConfig.getOpenPrivilege()!=null){ PlayerInfoProto.PrivilegeIndication.Builder indication = PlayerInfoProto.PrivilegeIndication.newBuilder(); int[] openPrivilege = sStoreConfig.getOpenPrivilege(); - for(int privilege:openPrivilege){ + + for(int i=0;i