back_recharge
jiahuiwen 2021-10-20 13:17:31 +08:00
parent 11fb5eb275
commit d7586ee251
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
package com.ljsd.jieling.handler.hero;
import com.googlecode.protobuf.format.JsonFormat;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.HeroManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
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.MessageUtil;
import config.SSpecialConfig;
import config.SXiuXian;
import manager.STableManager;
import org.springframework.stereotype.Component;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
@Component
public class XiuxianLevelUpRequestHandler extends BaseHandler<HeroInfoProto.SixiangUpRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.XIUXIAN_XIUWEI_UP_REQUEST;
}
@Override
public void processWithProto(ISession session, HeroInfoProto.SixiangUpRequest proto) throws Exception {
// 用户信息
User user = UserManager.getUser(session.getUid());
if (user == null) {
throw new ErrorCodeException(ErrorCode.UNKNOWN);
}
// 获取当前等级和之后的等级
HeroManager heroManager = user.getHeroManager();
int level = heroManager.getPracticeLevel();
if (level <= 0) {
level = 1;
}
SXiuXian xiuXian = STableManager.getConfig(SXiuXian.class).get(level);
if (xiuXian == null) {
throw new ErrorCodeException("已修行至世间巅峰");
}
PlayerManager playerInfoManager = user.getPlayerInfoManager();
int xiuweiLevel = heroManager.getXiuweiLevel();
int maxLevel = SSpecialConfig.getIntegerValue(SSpecialConfig.FightForPerXiuweiLevel);
if (xiuweiLevel >= maxLevel) {
throw new ErrorCodeException("已修行至最大等级");
}
int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.FightForPerXiuweiLevel);
int maxForce = playerInfoManager.getMaxForce();
int curMaxLevel = maxForce / integerValue;
if (xiuweiLevel >= curMaxLevel) {
throw new ErrorCodeException("已修行至当前战力最大等级");
}
// heroManager.setXiuweiLevel(curMaxLevel);
heroManager.setXiuweiLevel(curMaxLevel);
HeroInfoProto.XiuxianLevelUpResponse xiuxianLevelUpResponse = HeroInfoProto.XiuxianLevelUpResponse.newBuilder()
.setXiuxianLevel(heroManager.getXiuweiLevel())
.build();
LOGGER.info("================> {}", JsonFormat.printToString(xiuxianLevelUpResponse));
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.XIUXIAN_XIUWEI_UP_RESPONSE_VALUE, xiuxianLevelUpResponse, true);
}
}