back_recharge
wangyuan 2019-01-25 17:25:42 +08:00
parent 0a42dfd4d1
commit 873c16076e
8 changed files with 140 additions and 13 deletions

View File

@ -36,7 +36,7 @@ public class SEquipConfig implements BaseConfig {
sEquipConfigByIdMap = STableManager.getConfig(SEquipConfig.class);
}
public static SEquipConfig getsEquipConfigByI(int equipTid) {
public static SEquipConfig getsEquipConfigById(int equipTid) {
return sEquipConfigByIdMap.get(equipTid);
}

View File

@ -0,0 +1,25 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
@Component
public class EquipUnLoadOptHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.EQUIP_UNLOAD_OPT_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
HeroInfoProto.EquipUnLoadOptRequest equipUnLoadOptRequest = HeroInfoProto.EquipUnLoadOptRequest.parseFrom(netData.parseClientProtoNetData());
int type = equipUnLoadOptRequest.getType();
String equipId = equipUnLoadOptRequest.getEquipId();
String heroId = equipUnLoadOptRequest.getHeroId();
HeroLogic.getInstance().unloadEquipOpt(iSession,type,heroId,equipId);
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
@Component
public class EquipWearHandler extends BaseHandler{
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.EQUIP_WEAR_REQUEST;
}
@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());
}
}

View File

@ -21,6 +21,8 @@ public class Equip extends MongoBase {
private int star;
private String heroId;
private Map<Integer,Integer> propertyValueByIdMap; //主属性 key 对应PropertyConfig id
private Map<Integer,Integer> secondValueByIdMap; //副属性
@ -38,7 +40,7 @@ public class Equip extends MongoBase {
this.id = KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP,uid);
this.equipId = equipTid;
this.propertyValueByIdMap = new HashMap<>();
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigByI(equipTid);
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipTid);
int properTyId = sEquipConfig.getPropertyMin()[0];
int properMinNum = sEquipConfig.getPropertyMin()[1];
int properMaxNum = sEquipConfig.getPropertyMax()[1];
@ -103,4 +105,13 @@ public class Equip extends MongoBase {
updateString("star",star);
this.star = star;
}
public String getHeroId() {
return heroId;
}
public void setHeroId(String heroId) throws Exception {
updateString("heroId",heroId);
this.heroId = heroId;
}
}

View File

@ -17,4 +17,8 @@ public class EquipManager extends MongoBase {
removeString("equipMap." + equipId);
equipMap.remove(equipId);
}
public Map<String, Equip> getEquipMap() {
return equipMap;
}
}

View File

@ -9,7 +9,9 @@ import com.ljsd.jieling.util.KeyGenUtils;
import com.ljsd.jieling.util.UUIDEnum;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Hero extends MongoBase {
private String id;
@ -23,7 +25,7 @@ public class Hero extends MongoBase {
private List<Integer> skillList;
private List<Equip> equipList;
private Map<Integer,String> equipByPositionMap;
private int breakId;
@ -42,7 +44,7 @@ public class Hero extends MongoBase {
this.level = 1;
this.star = scHero.getStar();
this.skillList = new ArrayList<>();
this.equipList = new ArrayList<>();
this.equipByPositionMap = new HashMap<>();
List<Integer> skillIds = scHero.getSkillListByStar().get(star);
if(skillIds!=null && skillIds.isEmpty()){
this.skillList.addAll(skillIds);
@ -116,12 +118,23 @@ public class Hero extends MongoBase {
this.skillList = skillList;
}
public void setEquipList(List<Equip> equipList) {
this.equipList = equipList;
public Map<Integer, String> getEquipByPositionMap() {
return equipByPositionMap;
}
public List<Equip> getEquipList() {
return equipList;
public void setEquipByPositionMap(Map<Integer, String> equipByPositionMap) throws Exception {
updateString("breakId",breakId);
this.equipByPositionMap = equipByPositionMap;
}
public void updateEquipPositionMap(int position,String equipId) throws Exception {
updateString("breakId." + position ,breakId);
this.equipByPositionMap.put(position,equipId);
}
public void removeEquip(int position){
removeString("breakId." + position);
this.equipByPositionMap.remove(position);
}
public int getBreakId() {

View File

@ -8,10 +8,7 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MathUtils;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -415,5 +412,59 @@ public class HeroLogic {
// equip TODO 装备会导致英雄属性发生变化
public void wearEquipOpt(ISession session,String heroId,String equipId) 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 ){
return;
}
if(!StringUtil.isEmpty(equip.getHeroId())){
return;
}
int equipIdTid = equip.getEquipId();
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid);
int position = sEquipConfig.getPosition();
Map<Integer, String> equipByPositionMap = hero.getEquipByPositionMap();
if( equipByPositionMap!=null && equipByPositionMap.get(position)!= null){
return;
}
hero.updateEquipPositionMap(position,equipId);
//发送成功消息
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.EQUIP_WEAR_REQUEST_VALUE,null,true);
}
public void unloadEquipOpt(ISession session,int type,String heroId,String equipId) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
Equip equip = user.getEquipManager().getEquipMap().get(equipId);
Hero hero = user.getHeroManager().getHero(heroId);
if( hero == null|| null == equip || !StringUtil.isEmpty(equip.getHeroId()) ){
return;
}
int equipIdTid = equip.getEquipId();
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid);
int position = sEquipConfig.getPosition();
if(type == 1){
equip.setHeroId("");
hero.removeEquip(position);
}
if(type == 2){
hero.setEquipByPositionMap(new HashMap<>());
}
//发送成功消息
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.EQUIP_UNLOAD_OPT_RESPONSE_VALUE,null,true);
}
}

View File

@ -41,7 +41,7 @@ public class CBean2Proto {
.setLevel(hero.getLevel())
.setStar(hero.getStar())
.addAllSkillIdList(hero.getSkillList())
.addAllEquipIdList(getHeroEquip(hero.getEquipList()))
// .addAllEquipIdList(getHeroEquip(hero.getEquipList()))
.build();
return heroProto;
}