Task 【ID1005460】 【玩法需求】猎妖之路
parent
38e9e4d5f9
commit
da2943dd9a
|
@ -5,26 +5,24 @@ import com.ljsd.jieling.db.redis.RedisUtil;
|
|||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo;
|
||||
import com.ljsd.jieling.logic.dao.SnapFightInfo;
|
||||
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
|
||||
import com.ljsd.jieling.logic.fight.DefFightSnapData;
|
||||
import com.ljsd.jieling.logic.fight.FightUtil;
|
||||
import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
import com.ljsd.jieling.protocols.Expedition;
|
||||
import com.ljsd.jieling.protocols.FightInfoProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SExpeditionHolyConfig;
|
||||
import config.SExpeditionSetting;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Description: 开始节点战斗
|
||||
|
@ -91,7 +89,7 @@ public class StartExpeditionBattleRequest extends BaseHandler<Expedition.StartEx
|
|||
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_NOINFO_INDICATION_VALUE, builder.build(), true);
|
||||
|
||||
//notify client
|
||||
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightDataWithDouble(inMem,teamId,user.getExpeditionManager().getHeroHP());
|
||||
CommonProto.FightTeamInfo fightTeamInfo = getFightTeamInfoWithDouble(inMem,teamId,user.getExpeditionManager().getHeroHP());
|
||||
SnapFightInfo deffightInfo = nodeInfo.getSnapFightInfo();
|
||||
CommonProto.FightTeamInfo deffightTeamInfo = FightUtil.makeFightBySnapDataWithDouble(new DefFightSnapData(deffightInfo.getHeroAttribute(),deffightInfo.getHeroSkills(),deffightInfo.getPokenmonSkills(),deffightInfo.getPassiveSkills()),nodeInfo.getBossHP());
|
||||
|
||||
|
@ -100,6 +98,9 @@ public class StartExpeditionBattleRequest extends BaseHandler<Expedition.StartEx
|
|||
String key = RedisKey.getKey(RedisKey.CHALLENGE_EXPEDITION_INFO, String.valueOf(iSession.getUid()), false);
|
||||
RedisUtil.getInstence().set(key, fightInfo, -1);
|
||||
|
||||
|
||||
|
||||
|
||||
FightInfoProto.FightStartResponse.Builder fightStartResponse = FightInfoProto.FightStartResponse.newBuilder();
|
||||
fightStartResponse.setFightData(CommonProto.FightData.newBuilder()
|
||||
.setFightMaxTime(maxTime)
|
||||
|
@ -109,4 +110,52 @@ public class StartExpeditionBattleRequest extends BaseHandler<Expedition.StartEx
|
|||
.build());
|
||||
MessageUtil.sendMessage(iSession, 1,MessageTypeProto.MessageType.EXPEDITION_START_BATTLE_RESONSE_VALUE, fightStartResponse.build(), true);
|
||||
}
|
||||
|
||||
public CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map<String, Double> attackBloodMap) {
|
||||
user.getTeamPosManager().setCurTeamPosId(teamId);
|
||||
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
|
||||
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
|
||||
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) {
|
||||
Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
|
||||
if (hero == null) {
|
||||
continue;
|
||||
}
|
||||
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId);
|
||||
if(null!=attackBloodMap&&attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){
|
||||
heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(attackBloodMap.getOrDefault(teamPosHeroInfo.getHeroId(),1d)*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId())));
|
||||
}
|
||||
StringBuilder skillSb = new StringBuilder();
|
||||
StringBuilder propertySb = new StringBuilder();
|
||||
String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString();
|
||||
String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero, heroAttributeMap).toString();
|
||||
CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo
|
||||
.newBuilder()
|
||||
.setUnitId(Integer.toString(hero.getTemplateId()))
|
||||
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
|
||||
.setProperty(property.substring(0, property.length()-1))
|
||||
.build();
|
||||
heroFightInfos.add(heroFightInfo);
|
||||
}
|
||||
|
||||
//TOO 添加被动技能
|
||||
String pokenmonPassiveSkills = HeroLogic.getInstance().getPokenmonPassiveSkills(user, teamId);
|
||||
|
||||
ExpeditionManager expeditionManager = user.getExpeditionManager();
|
||||
Set<SExpeditionHolyConfig> expeditionHolyConfigs = ExpeditionLogic.getFirstRankHoly(expeditionManager);
|
||||
StringBuilder passiveSkillResult = new StringBuilder();
|
||||
if(pokenmonPassiveSkills.length()!=0){
|
||||
passiveSkillResult.append("|");
|
||||
}
|
||||
for (SExpeditionHolyConfig config:expeditionHolyConfigs) {
|
||||
passiveSkillResult.append(String.valueOf(config.getPassiveSkillId())).append("|");
|
||||
}
|
||||
|
||||
String holySkill = passiveSkillResult.length()!=0?passiveSkillResult.substring(0,passiveSkillResult.length()-1):"";
|
||||
return CommonProto.FightTeamInfo.
|
||||
newBuilder()
|
||||
.addAllFightUnitList(heroFightInfos)
|
||||
.setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId))
|
||||
.setTeamPassiveList(pokenmonPassiveSkills+holySkill)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ public class User {
|
|||
private BloodyInfo bloodyInfo;
|
||||
private MainLevelManager mainLevelManager;
|
||||
private ExpeditionManager expeditionManager;
|
||||
//TODO 新增manager 需要兼容旧的数据 提前判null
|
||||
|
||||
//构造函数必须要声明,否则从mongodb读出来反编译成类不通过
|
||||
public User(){
|
||||
|
@ -200,6 +201,10 @@ public class User {
|
|||
}
|
||||
|
||||
public ExpeditionManager getExpeditionManager() {
|
||||
if(null ==expeditionManager){
|
||||
this.expeditionManager = new ExpeditionManager();
|
||||
this.expeditionManager.init(id,MongoKey.expeditionManager);
|
||||
}
|
||||
return expeditionManager;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue