无尽修改血量
parent
489f906a00
commit
a960ad504c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue