无尽修改血量

back_recharge
lvxinran 2019-09-04 20:50:06 +08:00
parent 489f906a00
commit a960ad504c
4 changed files with 67 additions and 88 deletions

View File

@ -10,7 +10,7 @@ public class EndlessMapInfo {
private int curCell;
private Map<String,EndlessHero> endlessHeroInfo;
private Map<String,Integer> endlessHeroInfo;
private Map<Integer,Map<Integer,String>> mapSign;
@ -46,11 +46,11 @@ public class EndlessMapInfo {
this.curMapId = curMapId;
}
public Map<String, EndlessHero> getEndlessHeroInfo() {
public Map<String, Integer> getEndlessHeroInfo() {
return endlessHeroInfo;
}
public void setEndlessHeroInfo(Map<String, EndlessHero> endlessHeroInfo) {
public void setEndlessHeroInfo(Map<String, Integer> endlessHeroInfo) {
this.endlessHeroInfo = endlessHeroInfo;
}

View File

@ -338,18 +338,39 @@ public class MapLogic {
}
Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,teamId);
if(teamId==401){
Map<String, EndlessHero> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
Map<String, Integer> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null&&endlessHeroInfo.size()>0){
if(initType!=2){
if(endlessHeroInfo.get(hero.getId())!=null){
double curHp = endlessHeroInfo.get(hero.getId()).getCurHp() / endlessHeroInfo.get(hero.getId()).getMaxHp() * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)curHp);
Integer heroPercent = endlessHeroInfo.get(heroInfo.getHeroId());
if(heroPercent!=null){
int curHp = (int)((float)heroPercent/10000 * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()));
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),curHp);
}
}else{
mapManager.updateEndlessHeroHp(hero.getId(),endlessHeroInfo.get(hero.getId()).getMaxHp());
mapManager.updateEndlessHeroHp(hero.getId(),10000);
}
}
}
// if(teamId == 401){
// List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
// List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
// Map<String, Map<Integer, Integer>> heroAllAttributeMap = new HashMap<>(teamPosHeroInfos.size());
// for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
// Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
// if (hero == null) {
// break;
// }
// Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,teamId);
// Map<String, Integer> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
// if(endlessHeroInfo!=null&& endlessHeroInfo.size()>0){
// int curHp = endlessHeroInfo.get(heroInfo.getHeroId()) /10000 * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
// heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), curHp);
// }
// heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
// heroes.add(heroInfo.getHeroId());
// }
// user.getMapManager().setHeroAllAttributeMap(heroAllAttributeMap);
// }
heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
heroes.add(heroInfo.getHeroId());
}
@ -1259,9 +1280,8 @@ public class MapLogic {
for (int i = 0 ; i <team.size();i++) {
Hero hero = user.getHeroManager().getHero(team.get(i).getHeroId());
Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,teamId);
double per = checkResult[i+2] / (double) heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
EndlessHero endlessHero = mapManager.getEndlessMapInfo().getEndlessHeroInfo().get(team.get(i).getHeroId());
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),endlessHero.getCurHp()*per);
int per = (int)(checkResult[i+2] / (double) heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId())*10000);
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),per);
mapManager.updateHeroOneAttribute(team.get(i).getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[i+2]);
}
}
@ -1504,9 +1524,8 @@ public class MapLogic {
for (int i = 0 ; i <team.size();i++) {
Hero hero = user.getHeroManager().getHero(team.get(i).getHeroId());
Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,teamId);
double per = checkResult[i+2] / (double) heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
EndlessHero endlessHero = mapManager.getEndlessMapInfo().getEndlessHeroInfo().get(team.get(i).getHeroId());
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),endlessHero.getCurHp()*per);
int per =(int) (checkResult[i+2] / (double) heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId())*10000);
mapManager.updateEndlessHeroHp(team.get(i).getHeroId(),per);
mapManager.updateHeroOneAttribute(team.get(i).getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[i+2]);
}
}
@ -3048,7 +3067,7 @@ public class MapLogic {
mapManager.setEndlessMapInfo(new EndlessMapInfo());
endlessMapInfo = mapManager.getEndlessMapInfo();
}
Map<String, EndlessHero> endlessHeroInfo = endlessMapInfo.getEndlessHeroInfo();
Map<String, Integer> endlessHeroInfo = endlessMapInfo.getEndlessHeroInfo();
MapInfoProto.GetEndlessHeroResponse.Builder response = MapInfoProto.GetEndlessHeroResponse.newBuilder();
//已开启地图处理
Map<Integer, SEndlessMapConfig> sEndlessMapConfigMap = SEndlessMapConfig.sEndlessMapConfigMap;
@ -3067,50 +3086,36 @@ public class MapLogic {
if(heroEntry.getValue().getLevel()<20){
continue;
}
int calHp = HeroLogic.getInstance().calHeroNotBufferAttribute(user, heroEntry.getValue(), true,401).get(1);
if(!endlessHeroInfo.containsKey(heroEntry.getKey())){
mapManager.addEndlessHero(heroEntry.getKey(),calHp);
if(endlessHeroInfo.get(heroEntry.getKey())==null){
mapManager.addEndlessHero(heroEntry.getKey(),10000);
}
for (Map.Entry<String,EndlessHero> entry :endlessHeroInfo.entrySet()) {
if (!entry.getKey().equals(heroEntry.getKey())) {
continue;
}
if(calHp!=entry.getValue().getMaxHp()){
int tempHp = (int)(entry.getValue().getCurHp()/entry.getValue().getMaxHp()*1.0F*calHp);
endlessHeroInfo.put(entry.getKey(),new EndlessHero(calHp,tempHp));
calHp = tempHp;
}else{
calHp = (int)entry.getValue().getCurHp();
}
break;
}
LOGGER.info("英雄ID{},血量{}",heroEntry.getKey(),calHp);
CommonProto.endlessHero endlessHero = CommonProto.endlessHero.newBuilder().setHeroId(heroEntry.getKey()).setHp(calHp).build();
LOGGER.info("英雄ID{},血量{}",heroEntry.getKey(),endlessHeroInfo.get(heroEntry.getKey()).intValue());
CommonProto.endlessHero endlessHero = CommonProto.endlessHero.newBuilder().setHeroId(heroEntry.getKey()).setHp(endlessHeroInfo.get(heroEntry.getKey()).intValue()).build();
response.addHeroInfo(endlessHero);
}
endlessMapInfo.setEndlessHeroInfo(endlessHeroInfo);
mapManager.setEndlessMapInfo(endlessMapInfo);
List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().get(401);
if(team!=null&&team.size()>0){
Iterator<TeamPosHeroInfo> iterator = team.iterator();
while(iterator.hasNext()){
TeamPosHeroInfo teamInfo = iterator.next();
EndlessHero endlessHero = endlessMapInfo.getEndlessHeroInfo().get(teamInfo.getHeroId());
if(endlessHero==null){
continue;
}
if(endlessHero.getCurHp()==0){
Map<String, Map<Integer, Integer>> heroAllAttributeMap = mapManager.getHeroAllAttributeMap();
if(heroAllAttributeMap.containsKey(teamInfo.getHeroId())){
heroAllAttributeMap.remove(teamInfo.getHeroId());
}
mapManager.setHeroAllAttributeMap(heroAllAttributeMap);
iterator.remove();
}
}
user.getTeamPosManager().updateTeamPosByTeamId(401,team);
}
// List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().get(401);
// if(team!=null&&team.size()>0){
// Iterator<TeamPosHeroInfo> iterator = team.iterator();
// while(iterator.hasNext()){
// TeamPosHeroInfo teamInfo = iterator.next();
// EndlessHero endlessHero = endlessMapInfo.getEndlessHeroInfo().get(teamInfo.getHeroId());
// if(endlessHero==null){
// continue;
// }
// if(endlessHero.getCurHp()==0){
// Map<String, Map<Integer, Integer>> heroAllAttributeMap = mapManager.getHeroAllAttributeMap();
// if(heroAllAttributeMap.containsKey(teamInfo.getHeroId())){
// heroAllAttributeMap.remove(teamInfo.getHeroId());
// }
// mapManager.setHeroAllAttributeMap(heroAllAttributeMap);
// iterator.remove();
// }
// }
//
// user.getTeamPosManager().updateTeamPosByTeamId(401,team);
// }
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
@ -3126,8 +3131,8 @@ public class MapLogic {
EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo();
// SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(endlessMapInfo.getCurMapId());
// mapManager.updateEndlessLocation(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]));
for(Map.Entry<String,EndlessHero> entry:endlessMapInfo.getEndlessHeroInfo().entrySet()){
mapManager.updateEndlessHeroHp(entry.getKey(),entry.getValue().getMaxHp());
for(Map.Entry<String,Integer> entry:endlessMapInfo.getEndlessHeroInfo().entrySet()){
mapManager.updateEndlessHeroHp(entry.getKey(),10000);
}
for (Map.Entry<String, Map<Integer, Integer>> entry:mapManager.getHeroAllAttributeMap().entrySet()){
mapManager.updateHeroOneAttribute(entry.getKey(),HeroAttributeEnum.CurHP.getPropertyId(),entry.getValue().get(HeroAttributeEnum.Hp.getPropertyId()));

View File

@ -695,24 +695,19 @@ public class MapManager extends MongoBase {
updateString("endlessMapInfo",endlessMapInfo);
this.endlessMapInfo = endlessMapInfo;
}
public void addEndlessHero(String heroId,int maxHp){
public void addEndlessHero(String heroId,int percent){
if(endlessMapInfo==null){
setEndlessMapInfo(new EndlessMapInfo());
}
if(endlessMapInfo.getEndlessHeroInfo().containsKey(heroId)){
return;
}
EndlessHero endlessHero = new EndlessHero(maxHp, maxHp);
updateString("endlessMapInfo."+heroId,endlessHero);
endlessMapInfo.getEndlessHeroInfo().put(heroId,endlessHero);
updateString("endlessMapInfo."+heroId,percent);
endlessMapInfo.getEndlessHeroInfo().put(heroId,percent);
}
public void updateEndlessHeroHp(String heroId,double hp){
updateString("endlessMapInfo.endlessHeroInfo."+heroId+".curHp",hp);
EndlessHero endlessHero = endlessMapInfo.getEndlessHeroInfo().get(heroId);
if(endlessHero!=null){
endlessHero.setCurHp(hp);
endlessMapInfo.getEndlessHeroInfo().put(heroId,endlessHero);
}
public void updateEndlessHeroHp(String heroId,int hp){
updateString("endlessMapInfo."+heroId,hp);
endlessMapInfo.getEndlessHeroInfo().put(heroId,hp);
}
public void updateEndlessLocation(int cellId){
endlessMapInfo.setCurCell(cellId);

View File

@ -406,27 +406,6 @@ public class HeroLogic {
return;
}
user.getTeamPosManager().changeTeamInfo(teamId,heroIds,pokemonoIds);
if(teamId == 401){
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
Map<String, Map<Integer, Integer>> heroAllAttributeMap = new HashMap<>(teamPosHeroInfos.size());
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
if (hero == null) {
break;
}
Map<Integer, Integer> heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,teamId);
Map<String, EndlessHero> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null&& endlessHeroInfo.size()>0){
double res = endlessHeroInfo.get(hero.getId()).getCurHp() / endlessHeroInfo.get(hero.getId()).getMaxHp();
int curHp = (int)(res * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()));
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), curHp);
}
heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
heroes.add(heroInfo.getHeroId());
}
user.getMapManager().setHeroAllAttributeMap(heroAllAttributeMap);
}
user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_IN_TEAM,heroIds.size());
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true);
}