Merge branch 'master' of http://60.1.1.230/backend/jieling_server
commit
319a31df60
|
@ -17,7 +17,7 @@ public class EquipWearHandler extends BaseHandler{
|
|||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
HeroInfoProto.EquipWearRequest equipWearRequest = HeroInfoProto.EquipWearRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
HeroLogic.getInstance().wearEquipOpt(iSession,equipWearRequest.getHeroId(),equipWearRequest.getEquipId());
|
||||
HeroLogic.getInstance().wearEquipOpt(iSession,equipWearRequest.getHeroId(),equipWearRequest.getEquipIdList());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,6 +160,11 @@ public class Hero extends MongoBase {
|
|||
this.equipByPositionMap.put(position,equipId);
|
||||
}
|
||||
|
||||
public void updateMutliEquipPositionMap(Map<Integer,String> equipByPositionMapTmp) throws Exception {
|
||||
this.equipByPositionMap.putAll(equipByPositionMapTmp);
|
||||
updateString("equipByPositionMap" ,equipByPositionMap);
|
||||
}
|
||||
|
||||
public void removeEquip(int position){
|
||||
String value = this.equipByPositionMap.get(position);
|
||||
if (value!=null){
|
||||
|
|
|
@ -792,33 +792,50 @@ public class HeroLogic {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean checkEquipForWear(Hero hero,EquipManager equipManager,List<String> equipIds, Map<Integer,String> equipInfos ){
|
||||
if(equipIds == null || equipIds.isEmpty()){
|
||||
return false;
|
||||
}
|
||||
Map<String, Equip> equipMap = equipManager.getEquipMap();
|
||||
for(String equipId : equipIds){
|
||||
Equip equip =equipMap.get(equipId);
|
||||
if( null == equip || null == hero ){
|
||||
return false;
|
||||
}
|
||||
if(!StringUtil.isEmpty(equip.getHeroId())){
|
||||
return false;
|
||||
}
|
||||
int equipIdTid = equip.getEquipId();
|
||||
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid);
|
||||
int position = sEquipConfig.getPosition();
|
||||
int professionLimit = sEquipConfig.getProfessionLimit();
|
||||
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
if(professionLimit!=0 && scHero.getProfession()!= professionLimit){
|
||||
return false;
|
||||
}
|
||||
equipInfos.put(position,equipId);
|
||||
}
|
||||
if(equipInfos.size()!=equipIds.size()){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// equip TODO 装备会导致英雄属性发生变化
|
||||
public void wearEquipOpt(ISession session,String heroId,String equipId) throws Exception {
|
||||
public void wearEquipOpt(ISession session,String heroId,List<String> equipIds) throws Exception {
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
Hero hero = user.getHeroManager().getHero(heroId);
|
||||
Equip equip = user.getEquipManager().getEquipMap().get(equipId);
|
||||
if( null == equip || null == hero ){
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"");
|
||||
return;
|
||||
}
|
||||
if(!StringUtil.isEmpty(equip.getHeroId())){
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"");
|
||||
return;
|
||||
}
|
||||
int equipIdTid = equip.getEquipId();
|
||||
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid);
|
||||
int position = sEquipConfig.getPosition();
|
||||
int professionLimit = sEquipConfig.getProfessionLimit();
|
||||
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
if(professionLimit!=0 && scHero.getProfession()!= professionLimit){
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"");
|
||||
Hero hero = user.getHeroManager().getHeroMap().get(heroId);
|
||||
Map<Integer,String> equipInfoTmp = new HashMap<>(6);
|
||||
if(!checkEquipForWear(hero,user.getEquipManager(),equipIds,equipInfoTmp)){
|
||||
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"equip.wrong");
|
||||
return;
|
||||
}
|
||||
|
||||
hero.updateEquipPositionMap(position,equipId);
|
||||
hero.updateMutliEquipPositionMap(equipInfoTmp);
|
||||
|
||||
LOGGER.info("the heroTid={},the force={}",hero.getTemplateId(),calHeoForce(user,hero));
|
||||
|
||||
|
|
Loading…
Reference in New Issue