fix remove hero

back_recharge
wangyuan 2019-11-28 14:55:47 +08:00
parent 99dc03a323
commit 14678739f8
3 changed files with 17 additions and 2 deletions

View File

@ -4,8 +4,11 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;
public class Cmd_fixEquip extends GmAbstract{
@Override
@ -16,7 +19,14 @@ public class Cmd_fixEquip extends GmAbstract{
Map<String, Equip> equipMap = user.getEquipManager().getEquipMap();
user.getHeroManager().getHeroMap().values().forEach(hero -> {
Map<Integer, String> equipByPositionMap = hero.getEquipByPositionMap();
equipByPositionMap.values().forEach(equipId -> equipMap.get(equipId).setHeroId(hero.getId()));
Set<Integer> removeHeroEquip = new HashSet<>();
for(Map.Entry<Integer,String> item : equipByPositionMap.entrySet()){
if(!equipMap.containsKey(item.getValue())){
removeHeroEquip.add(item.getKey());
}
}
removeHeroEquip.forEach(hero::removeEquip);
hero.getEquipByPositionMap().values().forEach(equipId -> equipMap.get(equipId).setHeroId(hero.getId()));
});
});
MongoUtil.getLjsdMongoTemplate().lastUpdate();

View File

@ -3,6 +3,8 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
@ -23,6 +25,9 @@ public class RemoveEventHeroHandler implements IEventHandler{
if(userInMem == null){
return;
}
Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId);
Map<String, Equip> equipMap = userInMem.getEquipManager().getEquipMap();
hero.getEquipByPositionMap().values().forEach(equip->equipMap.get(equip).setHeroId(""));
Map<String, Integer> endlessHeroInfo = userInMem.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){
endlessHeroInfo.remove(heroId);

View File

@ -63,8 +63,8 @@ public class HeroManager extends MongoBase {
public void removeHero(int uid,String heroId) {
if (heroMap.containsKey(heroId)){
removeString(getMongoKey()+".heroMap." + heroId);
heroMap.remove(heroId);
Poster.getPoster().dispatchEvent(new RemoveHeroEvent(uid,heroId));
heroMap.remove(heroId);
}
}