diff --git a/conf/server/AdventureConfig.txt b/conf/server/AdventureConfig.txt index 2dc1aa02f..229c53359 100644 --- a/conf/server/AdventureConfig.txt +++ b/conf/server/AdventureConfig.txt @@ -1,5 +1,5 @@ -Id OpenLevel RecommendForce RecommendHeroIds MinNum BaseReward RandomRewardGroup RecommendRewardGroup -int int int mut,int#int,1 int mut,int#int,2 mut,int#int,1 mut,int#int,1 -1 10 1000 10001#10002 2 1#100|2#100 1001#1002 2001#2002#2003 -2 11 2000 10001 2 1#100|2#100 1001#1002 2001#2002#2003 -3 12 3000 10001 2 1#100|2#100 1001#1002 2001#2002#2003 +Id OpenLevel RecommendForce RecommendHeroIds MinNum BaseRewardGroup RandomRewardGroup RecommendRewardGroup +int int int mut,int#int,1 int mut,int#int,1 mut,int#int,1 mut,int#int,1 +1 10 1000 10001#10002 2 1001#1002 1001#1002 2001#2002#2003 +2 11 2000 10001 2 1001#1002 1001#1002 2001#2002#2003 +3 12 3000 10001 2 1001#1002 1001#1002 2001#2002#2003 diff --git a/conf/server/VipLevelConfig.txt b/conf/server/VipLevelConfig.txt new file mode 100644 index 000000000..9143ca630 --- /dev/null +++ b/conf/server/VipLevelConfig.txt @@ -0,0 +1,18 @@ +VipLevel NeedRMB Privileges VipBoxReward VipBoxCost +int int mut,int#int,2 mut,int#int,2 mut,int#int,1 +0 0 1#12 null null +1 6 1#13 null null +2 12 1#14 null null +3 18 1#15 null null +4 24 1#16 null null +5 30 1#17 null null +6 36 1#18 null null +7 42 1#19 null null +8 48 1#20 null null +9 54 1#21 null null +10 60 1#22 null null +11 66 1#23 null null +12 72 1#24 null null +13 78 1#25 null null +14 84 1#26 null null +15 90 1#27 null null diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureConfig.java index 2b2a3c11c..c50a17a20 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureConfig.java @@ -8,6 +8,7 @@ import java.util.Map; @Table(name ="AdventureConfig") public class SAdventureConfig implements BaseConfig { + private static Map sAdventureConfigMap; private int id; private int openLevel; @@ -18,7 +19,7 @@ public class SAdventureConfig implements BaseConfig { private int minNum; - private int[][] baseReward; + private int[] baseRewardGroup; private int[] randomRewardGroup; @@ -27,11 +28,14 @@ public class SAdventureConfig implements BaseConfig { @Override public void init() throws Exception { - + sAdventureConfigMap = STableManager.getConfig(SAdventureConfig.class); } + public static SAdventureConfig getsAdventureConfigByPosition(int position) { + return sAdventureConfigMap.get(position); + } - public int getId() { + public int getId() { return id; } @@ -51,8 +55,8 @@ public class SAdventureConfig implements BaseConfig { return minNum; } - public int[][] getBaseReward() { - return baseReward; + public int[] getBaseRewardGroup() { + return baseRewardGroup; } public int[] getRandomRewardGroup() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureSetting.java index ff21bcb1b..965c6ac88 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SAdventureSetting.java @@ -8,6 +8,8 @@ import java.util.Map; @Table(name ="AdventureSetting") public class SAdventureSetting implements BaseConfig { + private static Map sAdventureSettingMap; + private int id; private int limitHour; @@ -25,11 +27,14 @@ public class SAdventureSetting implements BaseConfig { @Override public void init() throws Exception { - + sAdventureSettingMap = STableManager.getConfig(SAdventureSetting.class); } + public static Map getsAdventureSettingMap() { + return sAdventureSettingMap; + } - public int getId() { + public int getId() { return id; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SVipLevelConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SVipLevelConfig.java new file mode 100644 index 000000000..d75f036a5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SVipLevelConfig.java @@ -0,0 +1,53 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name ="VipLevelConfig") +public class SVipLevelConfig implements BaseConfig { + + private static Map sVipLevelConfigMap; + private int vipLevel; + + private int needRMB; + + private int[][] privileges; + + private int[][] vipBoxReward; + + private int[] vipBoxCost; + + + @Override + public void init() throws Exception { + sVipLevelConfigMap = STableManager.getConfig(SVipLevelConfig.class); + } + + public static Map getsVipLevelConfigMap() { + return sVipLevelConfigMap; + } + + public int getVipLevel() { + return vipLevel; + } + + public int getNeedRMB() { + return needRMB; + } + + public int[][] getPrivileges() { + return privileges; + } + + public int[][] getVipBoxReward() { + return vipBoxReward; + } + + public int[] getVipBoxCost() { + return vipBoxCost; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java new file mode 100644 index 000000000..0a99f47b1 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.logic.dao; + +import com.ljsd.common.mogodb.MongoBase; + + +import java.util.HashMap; +import java.util.Map; + +public class AdventureManager extends MongoBase { + + private Map adventureStateInfoMap; + + public AdventureManager(){ + adventureStateInfoMap = new HashMap<>(); + } + + public void station(AdventureStateInfo adventureStateInfo) throws Exception { + int position = adventureStateInfo.getPosition(); + updateString("adventureStateInfoMap." + position,adventureStateInfo); + adventureStateInfoMap.put(position,adventureStateInfo); + } + + public void clearStation(int position){ + removeString("adventureStateInfoMap." + position); + adventureStateInfoMap.remove(position); + } + + public Map getAdventureStateInfoMap() { + return adventureStateInfoMap; + } + + public void setAdventureStateInfoMap(Map adventureStateInfoMap) { + this.adventureStateInfoMap = adventureStateInfoMap; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureStateInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureStateInfo.java new file mode 100644 index 000000000..0055157ad --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureStateInfo.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.logic.dao; + +import java.util.List; + +public class AdventureStateInfo { + private int position; + private List heroIds; + private int startTime; + private int hourDuration; + + public AdventureStateInfo(){} + + public AdventureStateInfo(int position,List heroIds, int startTime, int hourDuration) { + this.heroIds = heroIds; + this.startTime = startTime; + this.hourDuration = hourDuration; + this.position = position; + } + + public List getHeroIds() { + return heroIds; + } + + public int getStartTime() { + return startTime; + } + + public int getHourDuration() { + return hourDuration; + } + + public int getPosition() { + return position; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/User.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/User.java index 595dfc76e..9351ce3c9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/User.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/User.java @@ -21,6 +21,8 @@ public class User extends MongoRoot { private EquipManager equipManager; + private AdventureManager adventureManager; + public User(int uid, PlayerManager playerManager, ItemManager itemManager, @@ -34,6 +36,7 @@ public class User extends MongoRoot { this.teamPosManager = new TeamPosManager(); this.mailManager = new MailManager(); this.equipManager = new EquipManager(); + this.adventureManager = new AdventureManager(); //綁定关系 this.playerManager.init(this, "playerManager", false); @@ -43,6 +46,7 @@ public class User extends MongoRoot { this.teamPosManager.init(this,"teamPosManager",false); this.mailManager.init(this,"mailManager",false); this.equipManager.init(this,"equipManager",false); + this.adventureManager.init(this,"adventureManager",false); } public User(){ @@ -52,12 +56,14 @@ public class User extends MongoRoot { this.heroManager = new HeroManager(); this.mapManager = new MapManager(); this.equipManager = new EquipManager(); + this.adventureManager = new AdventureManager(); //綁定关系 playerManager.init(this, "playerManager", false); itemManager.init(this, "itemManager", false); heroManager.init(this, "heroManager", false); mapManager.init(this, "mapManager", false); equipManager.init(this,"equipManager",false); + adventureManager.init(this,"adventureManager",false); } public static void init(LjsdMongoTemplate ljsdMongoTemplate) { @@ -120,4 +126,12 @@ public class User extends MongoRoot { public void setMailManager(MailManager mailManager) { this.mailManager = mailManager; } + + public EquipManager getEquipManager() { + return equipManager; + } + + public AdventureManager getAdventureManager() { + return adventureManager; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java new file mode 100644 index 000000000..f2f94dd4d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -0,0 +1,126 @@ +package com.ljsd.jieling.logic.fight; + + +import com.ljsd.jieling.config.SAdventureConfig; +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.dao.AdventureManager; +import com.ljsd.jieling.logic.dao.AdventureStateInfo; +import com.ljsd.jieling.logic.dao.User; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.FightInfoProto; +import com.ljsd.jieling.util.CBean2Proto; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class CombatLogic { + private static final Logger LOGGER = LoggerFactory.getLogger(CombatLogic.class); + + private CombatLogic(){} + + public static class Instance { + public final static CombatLogic instance = new CombatLogic(); + } + + public static CombatLogic getInstance() { + return CombatLogic.Instance.instance; + } + + //冒险模式 + + public void getAdventureStateInfo(ISession session) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + AdventureManager adventureManager = user.getAdventureManager(); + Map adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); + List result = new ArrayList<>(); + for(AdventureStateInfo adventureStateInfo : adventureStateInfoMap.values()){ + result.add(CBean2Proto.getAdventureStateInfo(adventureStateInfo)); + } + + FightInfoProto.GetAdventureStateInfoResponse response = FightInfoProto.GetAdventureStateInfoResponse.newBuilder().addAllAdventureStateInfoList(result).build(); + + + } + + public void adventureStation(ISession session,int position,List heroIds,int hourDuration) throws Exception { + if(heroIds == null || heroIds.isEmpty()){ + return; + } + int uid = session.getUid(); + + User user = UserManager.getUser(uid); + SAdventureConfig sAdventureConfig = SAdventureConfig.getsAdventureConfigByPosition(position); + if(sAdventureConfig.getOpenLevel() > user.getPlayerInfoManager().getLevel()){ + return; + } + if(sAdventureConfig.getMinNum() > heroIds.size()){ + return; + } + + + AdventureManager adventureManager = user.getAdventureManager(); + //检验 + Map adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); + AdventureStateInfo adventureStateInfo = adventureManager.getAdventureStateInfoMap().get(position); + if(adventureStateInfo!=null){ + return; + + } + for(AdventureStateInfo adventureStateInfoTmp:adventureStateInfoMap.values()){ + List heroIds1 = adventureStateInfoTmp.getHeroIds(); + for(String useHeroId : heroIds1){ + if(heroIds.contains(useHeroId)){ + return; + } + } + } + + + + + + + adventureManager.station(new AdventureStateInfo(position,heroIds,(int)(System.currentTimeMillis()),hourDuration)); + + //发送成功 + } + + + public void clearStation(ISession session,int position) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + AdventureManager adventureManager = user.getAdventureManager(); + AdventureStateInfo adventureStateInfo = adventureManager.getAdventureStateInfoMap().get(position); + if( null == adventureStateInfo ){ + return; + } + int startTime = adventureStateInfo.getStartTime(); + int hourDuration = adventureStateInfo.getHourDuration(); + int now = (int)(System.currentTimeMillis()/1000); + if( (now - startTime ) /3600 < hourDuration ){ + return; + } + //计算奖励 + SAdventureConfig sAdventureConfig = SAdventureConfig.getsAdventureConfigByPosition(position); + int recommendForce = sAdventureConfig.getRecommendForce(); + + int[] baseRewardGroup = sAdventureConfig.getBaseRewardGroup(); + int[] recommendHeroIds = sAdventureConfig.getRecommendHeroIds(); + int[] recommendRewardGroup = sAdventureConfig.getRecommendRewardGroup(); + + //清除占领 + adventureManager.clearStation(position); + + + //发送成功 + } + + + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index dfe36e9b6..2c2b5ab44 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -356,7 +356,7 @@ public class HeroLogic { return SGameSetting.getGameSetting().calSpeed(baseValue,heroLevel); } - return baseValue * ( 1 + rankupPara/10000.f) * characterLevelPara * breakPara; + return baseValue * ( 1 + rankupPara/10000.f) + characterLevelPara * breakPara; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 317510f7f..350aacb09 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -61,6 +61,15 @@ public class CBean2Proto { return mailProto; } + public static CommonProto.AdventureStateInfo getAdventureStateInfo(AdventureStateInfo adventureStateInfo){ + return CommonProto.AdventureStateInfo.newBuilder() + .addAllHeroIdList(adventureStateInfo.getHeroIds()) + .setStartTime(adventureStateInfo.getStartTime()) + .setHourDuration(adventureStateInfo.getHourDuration()) + .setPositionId(adventureStateInfo.getPosition()) + .build(); + } + private static List getHeroEquip(List equipList) { List equips = new ArrayList<>();