修行3.0

神印展示增加,替换神印逻辑完善
back_recharge
duhui 2021-05-19 09:35:00 +08:00
parent b74e3525a7
commit 222c10252b
11 changed files with 86 additions and 54 deletions

View File

@ -287,7 +287,7 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
throw new ErrorCodeException("试炼节点英雄掉落失败"); throw new ErrorCodeException("试炼节点英雄掉落失败");
} }
Hero hero1 = ExpeditionLogic.createRandomHero(user,hero,heroTid,level,-1,2); Hero hero1 = ExpeditionLogic.createRandomHero(user,hero,heroTid,level,-1,2);
drop.addHero(CBean2Proto.getHero(user,hero1)); drop.addHero(CBean2Proto.getHero(hero1));
for(Integer equipId : hero1.getEquipByPositionMap().values()){ for(Integer equipId : hero1.getEquipByPositionMap().values()){
drop.addEquipId(CBean2Proto.getEquipProto(equipId)); drop.addEquipId(CBean2Proto.getEquipProto(equipId));
} }

View File

@ -76,7 +76,7 @@ public class GetExpeditionRequestHandler extends BaseHandler<Expedition.GetExped
List<CommonProto.Hero> heroList = new ArrayList<>(); List<CommonProto.Hero> heroList = new ArrayList<>();
Map<String, Hero> heroMap = user.getExpeditionManager().getHeroMap(); Map<String, Hero> heroMap = user.getExpeditionManager().getHeroMap();
for(Hero hero : heroMap.values()){ for(Hero hero : heroMap.values()){
heroList.add(CBean2Proto.getHero(user,hero)); heroList.add(CBean2Proto.getHero(hero));
} }
builder.addAllHeroList(heroList); builder.addAllHeroList(heroList);
Map<String, PropertyItem> equipMap = user.getExpeditionManager().getEquipMap(); Map<String, PropertyItem> equipMap = user.getExpeditionManager().getEquipMap();

View File

@ -110,7 +110,7 @@ public class HeroNodeGetInfoRequestHandler extends BaseHandler<Expedition.HeroNo
// 英雄战力 // 英雄战力
inner.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute)); inner.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute));
// 英雄 // 英雄
inner.setHero(CBean2Proto.getHero(user,hero)); inner.setHero(CBean2Proto.getHero(hero));
builder.addViewHeroInfo(inner); builder.addViewHeroInfo(inner);
user.getExpeditionManager().getGHeroSet().add(hero.getTemplateId()); user.getExpeditionManager().getGHeroSet().add(hero.getTemplateId());
}); });

View File

@ -100,7 +100,7 @@ public class HeroNodeRequestHandler extends BaseHandler<Expedition.HeroNodeReque
} }
drop.addHero(CBean2Proto.getHero(user,hero)); drop.addHero(CBean2Proto.getHero(hero));
//clear temp //clear temp
// user.getExpeditionManager().clearEquipToTemp(); // user.getExpeditionManager().clearEquipToTemp();

View File

@ -164,7 +164,7 @@ public class GMRequestHandler extends BaseHandler{
} }
hero.setBreakId(breakId); hero.setBreakId(breakId);
} }
CommonProto.Hero finalHeroProto = CBean2Proto.getHero(cUser,hero); CommonProto.Hero finalHeroProto = CBean2Proto.getHero(hero);
gmBuilder.setDrop(CommonProto.Drop.newBuilder().addHero(finalHeroProto).build()); gmBuilder.setDrop(CommonProto.Drop.newBuilder().addHero(finalHeroProto).build());
break; break;
@ -366,7 +366,7 @@ public class GMRequestHandler extends BaseHandler{
heroTmp.setBreakId(scHeroRankUpConfigBreak.getId()); heroTmp.setBreakId(scHeroRankUpConfigBreak.getId());
} }
} }
gmBuilder.setDrop(CommonProto.Drop.newBuilder().addHero(CBean2Proto.getHero(cUser,heroTmp)).build()); gmBuilder.setDrop(CommonProto.Drop.newBuilder().addHero(CBean2Proto.getHero(heroTmp)).build());
} }

View File

@ -58,7 +58,7 @@ public class GetAllHerosHandler extends BaseHandler{
} }
} }
} }
heroList.add(CBean2Proto.getHero(user,hero)); heroList.add(CBean2Proto.getHero(hero));
} }
boolean isSendFinish = false; boolean isSendFinish = false;
int endIndex = startIndex + Global.SEND_CARD_COUNT; int endIndex = startIndex + Global.SEND_CARD_COUNT;

View File

@ -70,7 +70,7 @@ public class DoHeroChangeRequestHandler extends BaseHandler<HeroInfoProto.DoHer
newHero.setEquipByPositionMap(hero.getEquipByPositionMap()); newHero.setEquipByPositionMap(hero.getEquipByPositionMap());
newHero.setJewelInfo(hero.getJewelInfo()); newHero.setJewelInfo(hero.getJewelInfo());
user.getHeroManager().addHero(newHero); user.getHeroManager().addHero(newHero);
drop.addHero(CBean2Proto.getHero(user,newHero)); drop.addHero(CBean2Proto.getHero(newHero));
//新头像 //新头像
SItem sItem = SItem.getsItemMap().get(hero.getChangeId()); SItem sItem = SItem.getsItemMap().get(hero.getChangeId());
if(sItem != null){ if(sItem != null){

View File

@ -4,6 +4,7 @@ import com.google.protobuf.GeneratedMessage;
import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.PurpleMansionSeal; import com.ljsd.jieling.logic.dao.PurpleMansionSeal;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
@ -17,6 +18,8 @@ import rpc.protocols.MessageTypeProto;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* @Author hj * @Author hj
* @Description * @Description
@ -45,52 +48,55 @@ public class ReplacePurpleMansionSealHandler extends BaseHandler<HeroInfoProto.R
} }
// 获取参数 // 获取参数
int oldSealId = proto.getOldSealId(); int oneSeal = proto.getOldSealId();
int newSealId = proto.getNewSealId(); // two 必须是存在的值
String subId = proto.getSubId(); int twoSeal = proto.getNewSealId();
String heroId = proto.getSubId();
// subId 不能为null
heroId = heroId == null?"":heroId;
// 神印列表 // 神印列表
Map<Integer, PurpleMansionSeal> sealMap = user.getHeroManager().getPurpleMansionSeal(); Map<Integer, PurpleMansionSeal> sealMap = user.getHeroManager().getPurpleMansionSeal();
// 替换神印 PurpleMansionSeal seal = sealMap.get(twoSeal);
if (oldSealId != newSealId){ if (seal == null){
PurpleMansionSeal newSeal = sealMap.get(newSealId); throw new ErrorCodeException("神印不存在!");
if (newSeal == null){ }
throw new ErrorCodeException("神印不存在!"); if (seal.getType() == 1 && "".equals(heroId)){
} throw new ErrorCodeException("英雄id不能为空!");
if (newSeal.getType() == 1 && (subId == null || "".equals(subId))){ }
throw new ErrorCodeException("英雄id不能为空!");
} // 使用神印
if (oneSeal != twoSeal){
// 旧神印状态修改 // 旧神印状态修改
PurpleMansionSeal oldSeal = sealMap.get(oldSealId); PurpleMansionSeal oldSeal = sealMap.get(oneSeal);
if (oldSeal != null){ if (oldSeal != null){
oldSeal.setState(0); oldSeal.setState(0);
user.getHeroManager().putPurpleMansionSeal(oldSeal);
} }
// 新神印状态修改 // 新神印状态修改
newSeal.setState(1); seal.setState(1);
// 附属英雄id修改,类型之后需要读表
if (!newSeal.getSubId().equals(subId) && newSeal.getType() == 1){
newSeal.setSubId(subId);
}
user.getHeroManager().putPurpleMansionSeal(newSeal);
} }
// 相同神印
else { // 卸载神印
PurpleMansionSeal seal = sealMap.get(newSealId); if (oneSeal == twoSeal && seal.getSubId().equals(heroId)){
// 卸载神印 seal.setState(0);
if (seal.getSubId().equals(subId)){ }
seal.setState(0);
// 附身神印,替换英雄id
if (oneSeal == twoSeal && !seal.getSubId().equals(heroId)){
if (seal.getType() != 1){
throw new ErrorCodeException("神印类型错误!");
} }
// 替换英雄id // seal update
else { for (PurpleMansionSeal value : sealMap.values()) {
if (seal.getType() != 1){ if (value.getSubId().equals(heroId)){
throw new ErrorCodeException("神印类型错误!"); value.setSubId("");
value.setState(0);
break;
} }
seal.setSubId(subId);
} }
user.getHeroManager().putPurpleMansionSeal(seal); seal.setSubId(heroId);
} }
// 返回最新神印列表 // 返回最新神印列表

View File

@ -500,12 +500,19 @@ public class PlayerLogic {
CommonProto.TeamOneInfo.Builder oneInfo = CBean2Proto.getTeamOneInfo(user); CommonProto.TeamOneInfo.Builder oneInfo = CBean2Proto.getTeamOneInfo(user);
TeamPosManager teamPosManager = user.getTeamPosManager(); TeamPosManager teamPosManager = user.getTeamPosManager();
CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
// 总战力
teamInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,teamId,false)); teamInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,teamId,false));
if(teamPosManager.getTeamPosForHero().containsKey(teamId)){ if(teamPosManager.getTeamPosForHero().containsKey(teamId)){
for (TeamPosHeroInfo heroInfo:teamPosManager.getTeamPosForHero().get(teamId)) { // 添加队伍信息
List<TeamPosHeroInfo> heroInfos = teamPosManager.getTeamPosForHero().get(teamId);
for (TeamPosHeroInfo heroInfo:heroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId()); Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
teamInfo.addTeam(CBean2Proto.getSimpleTeamInfoByHero(user, hero,heroInfo.getPosition())); teamInfo.addTeam(CBean2Proto.getSimpleTeamInfoByHero(user, hero,heroInfo.getPosition()));
} }
// 紫府神印
List<String> collect = heroInfos.stream().map(TeamPosHeroInfo::getHeroId).collect(Collectors.toList());
teamInfo.addAllSealShow(CBean2Proto.getPurpleSealShow(user,collect));
} }
//加入灵兽信息 //加入灵兽信息
PokemonManager pokemonManager = user.getPokemonManager(); PokemonManager pokemonManager = user.getPokemonManager();
@ -619,7 +626,7 @@ public class PlayerLogic {
builder.addEquip(CBean2Proto.getEquipProto(equipId)); builder.addEquip(CBean2Proto.getEquipProto(equipId));
} }
builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute)); builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute));
builder.setHero(CBean2Proto.getHero(userInMem,hero)); builder.setHero(CBean2Proto.getHero(hero));
Map<Integer, Integer> guildSkill = userInMem.getGuildMyInfo().getGuildSkill(); Map<Integer, Integer> guildSkill = userInMem.getGuildMyInfo().getGuildSkill();
int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession(); int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession();
Integer skill = guildSkill.getOrDefault(profession, 0); Integer skill = guildSkill.getOrDefault(profession, 0);

View File

@ -206,7 +206,7 @@ public class CBean2Proto {
return userMountLists; return userMountLists;
} }
public static CommonProto.Hero getHero(User user, Hero hero){ public static CommonProto.Hero getHero(Hero hero){
List<CommonProto.SoulPos> soulPoss = new ArrayList<>(); List<CommonProto.SoulPos> soulPoss = new ArrayList<>();
Map<Integer, Integer> soulEquipMap = hero.getSoulEquipByPositionMap(); Map<Integer, Integer> soulEquipMap = hero.getSoulEquipByPositionMap();
if(soulEquipMap!=null&&!soulEquipMap.isEmpty()){ if(soulEquipMap!=null&&!soulEquipMap.isEmpty()){
@ -235,7 +235,6 @@ public class CBean2Proto {
.setCreatetype(hero.getCreateType()) .setCreatetype(hero.getCreateType())
.setChangeId(hero.getChangeId()) .setChangeId(hero.getChangeId())
.setSkinId(hero.getSkin()) .setSkinId(hero.getSkin())
.addAllSealIdList(getSealIdListByHero(user,hero))
.build(); .build();
} }
@ -744,20 +743,40 @@ public class CBean2Proto {
/** /**
* id * id
* @param user * @param user
* @param hero * @param heroIds
* @return * @return
*/ */
private static List<Integer> getSealIdListByHero(User user, Hero hero){ public static List<CommonProto.PurpleSealShowInfo> getPurpleSealShow(User user, List<String> heroIds){
ArrayList<Integer> list = new ArrayList<>(); List<CommonProto.PurpleSealShowInfo> list = new ArrayList<>();
// 已解锁的神印列表
Collection<PurpleMansionSeal> values = user.getHeroManager().getPurpleMansionSeal().values(); Collection<PurpleMansionSeal> values = user.getHeroManager().getPurpleMansionSeal().values();
for (PurpleMansionSeal v : values) { values.forEach(v->{
// 使用中的神印
if (v.getState() == 1){ if (v.getState() == 1){
if (v.getType() == 1 && !v.getSubId().equals(hero.getId())){ CommonProto.PurpleSealShowInfo builder;
continue; // 通用神印
if (v.getType() == 0){
builder = CommonProto.PurpleSealShowInfo.newBuilder()
.setId(v.getSealId())
.setType(v.getType())
.setHeroTId(0)
.build();
list.add(builder);
}
// 附身神印需要
else if (v.getType() == 1) {
if (heroIds.contains(v.getSubId()) && !"".equals(v.getSubId()) && v.getSubId() != null){
Hero hero = user.getHeroManager().getHero(v.getSubId());
builder = CommonProto.PurpleSealShowInfo.newBuilder()
.setId(v.getSealId())
.setType(v.getType())
.setHeroTId(hero.getTemplateId())
.build();
list.add(builder);
}
} }
list.add(v.getSealId());
} }
} });
return list; return list;
} }
} }

View File

@ -1276,7 +1276,7 @@ public class ItemUtil {
heroManager.addHero(hero); heroManager.addHero(hero);
// 鸿蒙阵推送 // 鸿蒙阵推送
HeroLogic.getInstance().addOrUpdateHongmeng(OnlineUserManager.getSessionByUid(user.getId())); HeroLogic.getInstance().addOrUpdateHongmeng(OnlineUserManager.getSessionByUid(user.getId()));
heroList.add(CBean2Proto.getHero(user,hero)); heroList.add(CBean2Proto.getHero(hero));
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
if (scHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_content_parm)) { //策划资质改成星级 if (scHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_content_parm)) { //策划资质改成星级
String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_lottery_content", new Object[]{playerInfoManager.getNickName(), scHero.getStar(), scHero.getReadingName()},new int[]{0,0,1}); String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_lottery_content", new Object[]{playerInfoManager.getNickName(), scHero.getStar(), scHero.getReadingName()},new int[]{0,0,1});