Merge branch 'master_test_hw' of http://60.1.1.230/backend/jieling_server into master_test_hw

duhui 2021-01-08 10:15:04 +08:00
commit a1e4ca3f4c
6 changed files with 66 additions and 26 deletions

View File

@ -22,6 +22,6 @@ public class GuildSkillLevelUpHandler extends BaseHandler<Family.GuildSkillLevel
@Override
public void processWithProto(ISession iSession, Family.GuildSkillLevelUpRequest proto) throws Exception {
GuildLogic.guildSkillLevelUp(iSession,proto.getType(), MessageTypeProto.MessageType.GUILD_SKILL_LEVEL_UP_RESPONSE);
GuildLogic.guildSkillLevelUp(iSession,proto.getType(),proto.getBeforeLevel(),proto.getAfterLevel(), MessageTypeProto.MessageType.GUILD_SKILL_LEVEL_UP_RESPONSE);
}
}

View File

@ -190,9 +190,9 @@ public class GuildMyInfo extends MongoBase {
return guildSkill;
}
public void addGuildSkillByType(int type){
guildSkill.putIfAbsent(type, 0);
guildSkill.put(type,guildSkill.get(type)+1);
public void setGuildSkillByType(int type,int level){
guildSkill.put(type,level);
updateString("guildSkill",guildSkill);
}

View File

@ -1328,30 +1328,63 @@ public class GuildLogic {
* @param type
* @param messageType
*/
public static void guildSkillLevelUp(ISession session, int type,MessageTypeProto.MessageType messageType) throws Exception {
public static void guildSkillLevelUp(ISession session, int type,int beforeLevel,int afterLevel,MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
//todo 消耗校验
Map<Integer, Integer> skillInfo= user.getGuildMyInfo().getGuildSkill();
Map<Integer, Map<Integer, SGuildTechnology>> typeMap = SGuildTechnology.technologyMap.get(type);
if(skillInfo.getOrDefault(type, 0)!=beforeLevel||afterLevel>600)
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
int size = typeMap.size();
int[][] consume;
if(!skillInfo.containsKey(type)){
consume = typeMap.get(1).get(0).getConsume();
}else{
int level = skillInfo.get(type);
consume = typeMap.get(level%size+1).get(level/size).getConsume();
if(typeMap.get(level%size+1).get(level/size+1)==null){
throw new ErrorCodeException(ErrorCode.HERO_LEVE_MAX);
Map<Integer,Integer> consumeMap = new HashMap<>(2);
int baseLevel = beforeLevel / size;//100->16
int nextIndex = beforeLevel % size;//100->4
int afterBaseLevel =afterLevel / size;
int afterNextIndex = afterLevel % size;
// if(){
// }else{
// int level = skillInfo.get(type);
// consume = typeMap.get(level%size+1).get(level/size).getConsume();
// if(typeMap.get(level%size+1).get(level/size+1)==null){
// throw new ErrorCodeException(ErrorCode.HERO_LEVE_MAX);
// }
// }
while(baseLevel<afterBaseLevel || nextIndex<afterNextIndex){
int[][] consume = typeMap.get(nextIndex+1).get(baseLevel).getConsume();
for(int[] consumeOnce:consume) {
consumeMap.put(consumeOnce[0],consumeMap.getOrDefault(consumeOnce[0],0)+consumeOnce[1]);
}
if(!ItemUtil.checkCost(user, consumeMap)){
//把这一次的减回去
for(int[] consumeOnce:consume) {
consumeMap.put(consumeOnce[0],consumeMap.getOrDefault(consumeOnce[0],0)-consumeOnce[1]);
}
break;
}
if(nextIndex+1==size){
nextIndex=0;
baseLevel++;
}else{
nextIndex++;
}
}
boolean itemCost = ItemUtil.itemCost(user, consume, BIReason.GUILD_SKILL_LEVEL_UP_CONSUME, 1);
boolean itemCost = ItemUtil.itemCost(user, ItemUtil.mapToArray(consumeMap), BIReason.GUILD_SKILL_LEVEL_UP_CONSUME, 1);
if(!itemCost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
user.getGuildMyInfo().addGuildSkillByType(type);
Family.GuildSkillLevelUpResponse response = Family.GuildSkillLevelUpResponse.newBuilder().setType(type).setCurlevel(baseLevel*size+nextIndex).build();
user.getGuildMyInfo().setGuildSkillByType(type,baseLevel*size+nextIndex);
// user.getGuildMyInfo().setGuildSkillByType(type,590);
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid()));
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}

View File

@ -335,6 +335,7 @@ public class FightDataUtil {
unitData.set("passivity", getPassivity(skillIds));
unitData.set("property", getProperty(property));
unitData.set("skinId",data.getSkinId());
unitData.set("job",hero.getJob());
return unitData;
}

View File

@ -69,6 +69,8 @@ public class SCHero implements BaseConfig{
private static Map<Integer,SCHero> piecesMap;
private int job;
public static class ConsumeMaterialInfo{
private int groupID;
@ -169,7 +171,7 @@ public class SCHero implements BaseConfig{
// 大于10星为 觉醒技能
int[][] awakens = scHero.getAwaken();
Map<Integer, TreeMap<Integer, List<Integer>>> awakSkillMapTmp = new HashMap<>();
if (awakens != null && awakens.length > 0) {
if (awakens != null && awakens.length > 0&&awakens[0].length>0) {
awakSkillMapTmp.put(1, new TreeMap<>());
awakSkillMapTmp.put(2, new TreeMap<>());
for (int[] openSkillRule : awakens) {
@ -337,4 +339,8 @@ public class SCHero implements BaseConfig{
public int[][] getAwaken() {
return awaken;
}
public int getJob() {
return job;
}
}

View File

@ -19,14 +19,14 @@ public class WorldMongoConfig {
// 注入配置实体
private MongoSettingsProperties mongoSettingsProperties;
@Bean
@ConfigurationProperties(
prefix = "mongodb.options")
MongoSettingsProperties mongoSettingsProperties() {
mongoSettingsProperties =new MongoSettingsProperties();
return mongoSettingsProperties;
}
// private MongoSettingsProperties mongoSettingsProperties;
// @Bean
// @ConfigurationProperties(
// prefix = "mongodb.options")
// MongoSettingsProperties mongoSettingsProperties() {
// mongoSettingsProperties =new MongoSettingsProperties();
// return mongoSettingsProperties;
// }
@Value("${spring.data.mongodbcore.uri}")
private String MONGO_CORE_URI;