Merge branch 'master_test_gn_practiceSkill' into master_test_gn

# Conflicts:
#	serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java
#	serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java
#	serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java
#	serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java
back_recharge
yuanshuai 2021-10-20 18:38:33 +08:00
commit db2b1d7283
14 changed files with 280 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.core;
public interface GlobalsDef {
String DEFAULT_NAME = "无名妖灵师";
int VERSION_CODE=1;//后端兼容版本号
int MAP_MISSION_RETURN = -9999;
int MAP_MISSION_FAILURE = -10000;

View File

@ -175,6 +175,7 @@ public enum ErrorCode implements IErrorCode {
SIXIANG_UP_LIMIT(144,"强化已达上限"),
CROSS_YXLD_OVER(145,"赛季结算中"),
RIDING_SWARD_BET_TWO(146,"一轮比赛最多押注两次!"),
PRACTICE_LEVE_DOWN(147,"修行等级不足"),
;
private static final Set<Integer> CodeSet = new HashSet<>();

View File

@ -365,4 +365,5 @@ public interface BIReason {
int RIDING_SWARD_BET = 1216;//御剑行押注消耗
int LEVEL_UP_REWARD = 1220;// 玩家升级赠与的道具
int PRACTICE_SKILL_UP_COST=1221;//修行技能升级消耗
}

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.clazzStaticCfg.HeroStaticConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.Global;
@ -158,6 +159,10 @@ public class GetPlayerInfoHandler extends BaseHandler{
});
}
if (playerInfoManager.getVersionCode()!= GlobalsDef.VERSION_CODE) {
calPractiveSkillData(user);
playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE);
}
// 处理玩家旧头像框,兼容,一个玩家只执行一次
PlayerLogic.getInstance().checkOldHeadFrame(user);
// 魂印图鉴,旧数据容错
@ -181,6 +186,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
List<CommonProto.SixiangxinfaInfo> sixiangxinfaInfos = getSixiangxinfaInfos(heroManager);
int randomCount =SLotterySpecialConfig.getLotteryListByDifferentType(7).iterator().next().getCount()- user.getHeroManager().getRandomPoolByType().getOrDefault(11,new HashMap<>()).getOrDefault(7,0);
StoreLogic.reloadStoreInfo(user,7);//重载功能商店
List<CommonProto.PracticeSkillInfo>practiceSkillInfos=getPracticeSkillInfos(heroManager);
// 开服时间戳
long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime());
PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse
@ -229,6 +235,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
.addAllSixiangInfos(sixiangxinfaInfos)
.setServerOpenTime((int) (openTime / 1000))
.setXiuweiLevel(heroManager.getXiuweiLevel())
.addAllPracticeSkillInfos(practiceSkillInfos)
.build();
ReportUtil.onReportEvent(user, ReportEventEnum.APP_LOGIN.getType());
try {
@ -252,6 +259,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
}
}
///登录获取四象心法数据
private List<CommonProto.SixiangxinfaInfo> getSixiangxinfaInfos(HeroManager heroManager) {
Map<Integer,SixiangProfessionInfo> sixiangDataMap = heroManager.getSixiangDataMap();
List<CommonProto.SixiangxinfaInfo> sixiangxinfaInfos = new ArrayList<>(sixiangDataMap.size());
@ -277,6 +285,18 @@ public class GetPlayerInfoHandler extends BaseHandler{
return sixiangxinfaInfos;
}
private List<CommonProto.PracticeSkillInfo> getPracticeSkillInfos(HeroManager heroManager) {
List<CommonProto.PracticeSkillInfo>practiceSkillInfos=new ArrayList<>(heroManager.getPracticeSkillMap().size());
for (Map.Entry<Integer, Integer> entry : heroManager.getPracticeSkillMap().entrySet()) {
CommonProto.PracticeSkillInfo skillInfo=CommonProto.PracticeSkillInfo.newBuilder()
.setSkillId(entry.getKey())
.setSkillLv(entry.getValue())
.build();
practiceSkillInfos.add(skillInfo);
}
return practiceSkillInfos;
}
/**
* map()
* @param user
@ -311,5 +331,16 @@ public class GetPlayerInfoHandler extends BaseHandler{
}
}
}
//修行技能数据兼容
private void calPractiveSkillData(User user) {
Map<Integer, SXiuXian> xiuxianConfigMap = STableManager.getConfig(SXiuXian.class);
for (int i = 1; i <= user.getHeroManager().getPracticeLevel(); i++) {
SXiuXian xiuxianConfig = xiuxianConfigMap.get(i);
if (xiuxianConfig.getPlayerSkill() == null) continue;
for (int skillId : xiuxianConfig.getPlayerSkill()) {
user.getHeroManager().setPracticeSkillMap(skillId, 1);
}
}
}
}

View File

@ -159,9 +159,10 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
int defendForce = 0;
if (proto.getChallengeUid()>1000) {
ArenaOfUser arenaOfUser = CrossServiceLogic.getInstance().query(proto.getChallengeUid());
teamInfo = FightUtil.makeCrossPersonData(arenaOfUser,proto.getTeamId());
arenaEnemys =ArenaLogic.getInstance().getUserCrossArenaEnemy(crossGroup,arenaOfUser,proto.getChallengeRank(),false).build();
defendForce = arenaOfUser.getHeroManager().getTotalForceByTeam().get(proto.getTeamId());
teamInfo = FightUtil.makeCrossPersonData(arenaOfUser,proto.getTeamId(),defendForce);
arenaEnemys =ArenaLogic.getInstance().getUserCrossArenaEnemy(crossGroup,arenaOfUser,proto.getChallengeRank(),false).build();
} else {
//机器人

View File

@ -0,0 +1,58 @@
package com.ljsd.jieling.handler.hero;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.HeroManager;
import com.ljsd.jieling.logic.dao.SixiangProfessionInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SFourQuadrantConfig;
import config.SPlayerSkill;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
import java.util.*;
@Component
public class PracticeSkillUpRequestHandler extends BaseHandler<HeroInfoProto.PracticeSkillUpRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.PRACTICE_SKILL_UP_REQUEST;
}
//修行技能升级协议
@Override
public void processWithProto(ISession session, HeroInfoProto.PracticeSkillUpRequest proto) throws Exception {
int skillId=proto.getSkillId();//修行技能id
int uid = session.getUid();
User user = UserManager.getUser(uid);
HeroManager heroManager=user.getHeroManager();
int practiceLv=heroManager.getPracticeLevel();
int skillLv=0;
if (heroManager.getPracticeSkillMap().containsKey(skillId)){
skillLv=heroManager.getPracticeSkillMap().get(skillId);
}
int nextSkillLv=skillLv+1;
SPlayerSkill nextPlayerSkill=SPlayerSkill.GetSPlayerSkill(skillId,nextSkillLv);
if (nextPlayerSkill==null||practiceLv<nextPlayerSkill.getXiuxianId()){
LOGGER.error("修行等级不足");
throw new ErrorCodeException(ErrorCode.PRACTICE_LEVE_DOWN);
}
SPlayerSkill curPlayerSkill=SPlayerSkill.GetSPlayerSkill(skillId,skillLv);
int[][]costArr=curPlayerSkill.getLvupCost();
boolean costResult = ItemUtil.itemCost(user,costArr, BIReason.PRACTICE_SKILL_UP_COST,skillId);
if (!costResult){
LOGGER.error("修行技能升级材料不足");
throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT);
}
heroManager.setPracticeSkillMap(skillId,nextSkillLv);
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.PRACTICE_SKILL_UP_RESPONSE_VALUE,null,true);
}
}

View File

@ -15,6 +15,7 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SPlayerSkill;
import config.SXiuXian;
import config.SXiuXianSkill;
import manager.STableManager;
@ -24,6 +25,7 @@ import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
import java.util.List;
import java.util.Map;
/**
* @Author hj
@ -90,6 +92,12 @@ public class UpPracticeLevelHandler extends BaseHandler<HeroInfoProto.UpPractice
// 推送神印信息
HeroLogic.sendMessageBySeal(user.getId());
}
///判断修行技能解锁
if (xiuXian2.getPlayerSkill()!=null){
for (int practiceSkillId : xiuXian2.getPlayerSkill()) {
user.getHeroManager().setPracticeSkillMap(practiceSkillId,1);
}
}
// 升级返回
HeroInfoProto.UpPracticeLevelResponse build = HeroInfoProto.UpPracticeLevelResponse.newBuilder().setPracticeLevel(xiuXian2.getId()).build();

View File

@ -277,6 +277,7 @@ public class BehaviorUtil {
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}

View File

@ -670,7 +670,7 @@ public class ArenaLogic {
//跨服切磋
ArenaOfUser user = CrossServiceLogic.getInstance().query(challengeUid);
deforce = user.getHeroManager().getTotalForceByTeam().get(myteamId);
deffightTeamInfo = FightUtil.makeCrossPersonData(user,myteamId);
deffightTeamInfo = FightUtil.makeCrossPersonData(user,myteamId,deforce);
}
if(myforce<deforce){
deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build();

View File

@ -71,6 +71,11 @@ public class HeroManager extends MongoBase {
* ()
*/
private int xiuweiLevel;
/**
*
* key: id value:
*/
private Map<Integer,Integer> practiceSkillMap = new HashMap<>();
/**
*
*/
@ -453,6 +458,15 @@ public class HeroManager extends MongoBase {
return practiceLevel;
}
public Map<Integer, Integer> getPracticeSkillMap() {
return practiceSkillMap;
}
public void setPracticeSkillMap(int skillId,int skillLv) {
this.practiceSkillMap.put(skillId,skillLv);
updateString("practiceSkillMap."+skillId, skillLv);
}
public void setPracticeLevel(int practiceLevel) {
this.practiceLevel = practiceLevel;
updateString("practiceLevel", practiceLevel);

View File

@ -72,6 +72,8 @@ public class PlayerManager extends MongoBase {
private int maxForce; //玩家历史最高战力
private int versionCode;//兼容版本号
private Map<Integer,Integer> guidePoints = new HashMap<>();
private Map<Integer,VipInfo> vipInfo = new HashMap<>();
@ -1283,13 +1285,21 @@ public class PlayerManager extends MongoBase {
this.sevenWorldRelic.put(id,status);
updateString("sevenWorldRelic",sevenWorldRelic);
}
public int getRidingSwardNum() {
return ridingSwardNum;
}
public void setRidingSwardNum(int ridingSwardNum) {
this.ridingSwardNum = ridingSwardNum;
updateString("ridingSwardNum",ridingSwardNum);
updateString("ridingSwardNum", ridingSwardNum);
}
public int getVersionCode() {
return versionCode;
}
public void setVersionCode(int versionCode) {
this.versionCode = versionCode;
updateString("versionCode",versionCode);
}
}

View File

@ -293,6 +293,7 @@ public class FightUtil {
newBuilder()
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}
@ -339,6 +340,7 @@ public class FightUtil {
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId))
.setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId, user))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}
@ -405,6 +407,7 @@ public class FightUtil {
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId))
.setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId, user))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}
@ -444,6 +447,7 @@ public class FightUtil {
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId))
.setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId, user))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}
@ -486,6 +490,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId))
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
}
@ -533,6 +538,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
// .addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getRobotPokenmonPassiveSkills(sArenaRobotConfig))
.setForceScore(sArenaRobotConfig.getTotalForce())
.build();
}
@ -588,6 +594,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
// .addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user))
.setTeamPassiveList(HeroLogic.getInstance().getRobotPokenmonPassiveSkills(sArenaRobotConfig))
.setForceScore(sArenaRobotConfig.getTotalForce())
.build();
}
@ -633,7 +640,7 @@ public class FightUtil {
return robotInfo;
}
public static CommonProto.FightTeamInfo makeCrossPersonData(ArenaOfUser arenaOfUser, int teamId) {
public static CommonProto.FightTeamInfo makeCrossPersonData(ArenaOfUser arenaOfUser, int teamId,long deforce) {
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
ArenaOfHeroManager heroManager = arenaOfUser.getHeroManager();
List<TeamPosHeroInfo> teamPosHeroInfos = heroManager.getTeams().get(teamId);
@ -662,6 +669,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getCrossPokemonSkills(arenaOfUser))
.setTeamPassiveList("")
.setForceScore(deforce)
.build();
}
@ -704,6 +712,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getCrossPokemonSkills(user))
.setTeamPassiveList("")
.setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId))
.build();
} else {
//其他服玩家
@ -741,6 +750,7 @@ public class FightUtil {
.addAllFightUnitList(heroFightInfos)
.addAllPokemonUnitList(HeroLogic.getInstance().getCrossPokemon(crossArenaManager))
.setTeamPassiveList("")
.setForceScore(addforcerpc)
.build();
}
}

View File

@ -55,6 +55,7 @@ import config.*;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.aggregation.ArithmeticOperators;
import rpc.protocols.*;
import sun.security.ssl.Debug;
import util.MathUtils;
@ -2380,9 +2381,29 @@ public class HeroLogic{
.setPosition(entry.getKey())
.setStar(pokemon.getStar())
.setProperty(propertyBuilder.toString())
.setUnitId(String.valueOf(pokemon.getTmpId())).setUnitSkillIds(String.valueOf(sSpiritAnimalSkill.getId())).build();
.setUnitId(String.valueOf(pokemon.getTmpId()))
.setUnitSkillIds(String.valueOf(sSpiritAnimalSkill.getId()))
.build();
pokemonInfos.add(info);
}
String skillStr="";
for (Map.Entry<Integer, Integer> entry : user.getHeroManager().getPracticeSkillMap().entrySet()) {
int skillId=SPlayerSkill.GetSPlayerSkill(entry.getKey(),entry.getValue()).getId();
if (skillStr.isEmpty()){
skillStr+= skillId;
}else{
skillStr+= "#"+skillId;
}
}
CommonProto.FightUnitInfo skillInfo = CommonProto.FightUnitInfo
.newBuilder()
.setUnitId("0")
.setUnitSkillIds(skillStr)
.setProperty("0")
.setPosition(100)
.setSkinId(0)
.build();
pokemonInfos.add(skillInfo);
return pokemonInfos;
}
@ -3123,6 +3144,24 @@ public class HeroLogic{
return l;
}
///获取最高战斗力
public long calTeamForce(User user,int teamId){
return user.getPlayerInfoManager().getMaxForce();
//之前是当前编队战斗力
/*long teamForce = 0;
List<TeamPosHeroInfo> teamHeros = user.getTeamPosManager().getTeamPosForHero().get(teamId);
if (teamHeros==null||teamHeros.isEmpty()) {
return teamForce;
}
for (TeamPosHeroInfo teamHero : teamHeros) {
Hero _hero = user.getHeroManager().getHero(teamHero.getHeroId());
long heroForce = calHeoForce(user, _hero, teamId);
teamForce += heroForce;
}
LOGGER.info("编队id{} 战斗力:{}",teamId,teamForce);
return teamForce;*/
}
public int calForce( Map<Integer, Long> heroAllAttribute ){
double result = 0;

View File

@ -0,0 +1,98 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.HashMap;
import java.util.Map;
@Table(name ="PlayerSkill")
public class SPlayerSkill implements BaseConfig {
private int id;
private int skillID;
private int xiuxianId;
private int[]skillIDList;
private int[]releasePoint;
private int[][]releaseLimit;
private int cDCount;
private int level;
private int[][] lvupCost;
private int sort;
private static Map<Integer, Map<Integer,SPlayerSkill>>mapData;
public static Map<Integer,SPlayerSkill> sPrivilegeTypeConfigMap;
@Override
public void init() throws Exception {
mapData=new HashMap<>();
sPrivilegeTypeConfigMap= STableManager.getConfig(SPlayerSkill.class);
for (Map.Entry<Integer, SPlayerSkill> integer : sPrivilegeTypeConfigMap.entrySet()) {
SPlayerSkill skill=integer.getValue();
if (!mapData.containsKey(skill.getSkillID())){
Map<Integer,SPlayerSkill>skillMap=new HashMap<>();
mapData.put(skill.getSkillID(),skillMap);
}
mapData.get(skill.getSkillID()).put(skill.getLevel(),skill);
}
}
public int getId() {
return id;
}
public int getSkillID() {
return skillID;
}
public int getXiuxianId() {
return xiuxianId;
}
public int[] getSkillIDList() {
return skillIDList;
}
public int[] getReleasePoint() {
return releasePoint;
}
public int[][] getReleaseLimit() {
return releaseLimit;
}
public int getcDCount() {
return cDCount;
}
public int getLevel() {
return level;
}
public int[][] getLvupCost() {
return lvupCost;
}
public int getSort() {
return sort;
}
public static SPlayerSkill GetSPlayerSkill(int skillId,int skillLv){
if (!mapData.containsKey(skillId)||!mapData.get(skillId).containsKey(skillLv))return null;
return mapData.get(skillId).get(skillLv);
}
public static Map<Integer, Map<Integer, SPlayerSkill>> getMapData() {
return mapData;
}
}