equip
parent
0a42dfd4d1
commit
873c16076e
|
@ -36,7 +36,7 @@ public class SEquipConfig implements BaseConfig {
|
||||||
sEquipConfigByIdMap = STableManager.getConfig(SEquipConfig.class);
|
sEquipConfigByIdMap = STableManager.getConfig(SEquipConfig.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SEquipConfig getsEquipConfigByI(int equipTid) {
|
public static SEquipConfig getsEquipConfigById(int equipTid) {
|
||||||
return sEquipConfigByIdMap.get(equipTid);
|
return sEquipConfigByIdMap.get(equipTid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,6 +21,8 @@ public class Equip extends MongoBase {
|
||||||
|
|
||||||
private int star;
|
private int star;
|
||||||
|
|
||||||
|
private String heroId;
|
||||||
|
|
||||||
private Map<Integer,Integer> propertyValueByIdMap; //主属性 key 对应PropertyConfig id
|
private Map<Integer,Integer> propertyValueByIdMap; //主属性 key 对应PropertyConfig id
|
||||||
|
|
||||||
private Map<Integer,Integer> secondValueByIdMap; //副属性
|
private Map<Integer,Integer> secondValueByIdMap; //副属性
|
||||||
|
@ -38,7 +40,7 @@ public class Equip extends MongoBase {
|
||||||
this.id = KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP,uid);
|
this.id = KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP,uid);
|
||||||
this.equipId = equipTid;
|
this.equipId = equipTid;
|
||||||
this.propertyValueByIdMap = new HashMap<>();
|
this.propertyValueByIdMap = new HashMap<>();
|
||||||
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigByI(equipTid);
|
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipTid);
|
||||||
int properTyId = sEquipConfig.getPropertyMin()[0];
|
int properTyId = sEquipConfig.getPropertyMin()[0];
|
||||||
int properMinNum = sEquipConfig.getPropertyMin()[1];
|
int properMinNum = sEquipConfig.getPropertyMin()[1];
|
||||||
int properMaxNum = sEquipConfig.getPropertyMax()[1];
|
int properMaxNum = sEquipConfig.getPropertyMax()[1];
|
||||||
|
@ -103,4 +105,13 @@ public class Equip extends MongoBase {
|
||||||
updateString("star",star);
|
updateString("star",star);
|
||||||
this.star = star;
|
this.star = star;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getHeroId() {
|
||||||
|
return heroId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeroId(String heroId) throws Exception {
|
||||||
|
updateString("heroId",heroId);
|
||||||
|
this.heroId = heroId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,4 +17,8 @@ public class EquipManager extends MongoBase {
|
||||||
removeString("equipMap." + equipId);
|
removeString("equipMap." + equipId);
|
||||||
equipMap.remove(equipId);
|
equipMap.remove(equipId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, Equip> getEquipMap() {
|
||||||
|
return equipMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,9 @@ import com.ljsd.jieling.util.KeyGenUtils;
|
||||||
import com.ljsd.jieling.util.UUIDEnum;
|
import com.ljsd.jieling.util.UUIDEnum;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class Hero extends MongoBase {
|
public class Hero extends MongoBase {
|
||||||
private String id;
|
private String id;
|
||||||
|
@ -23,7 +25,7 @@ public class Hero extends MongoBase {
|
||||||
|
|
||||||
private List<Integer> skillList;
|
private List<Integer> skillList;
|
||||||
|
|
||||||
private List<Equip> equipList;
|
private Map<Integer,String> equipByPositionMap;
|
||||||
|
|
||||||
private int breakId;
|
private int breakId;
|
||||||
|
|
||||||
|
@ -42,7 +44,7 @@ public class Hero extends MongoBase {
|
||||||
this.level = 1;
|
this.level = 1;
|
||||||
this.star = scHero.getStar();
|
this.star = scHero.getStar();
|
||||||
this.skillList = new ArrayList<>();
|
this.skillList = new ArrayList<>();
|
||||||
this.equipList = new ArrayList<>();
|
this.equipByPositionMap = new HashMap<>();
|
||||||
List<Integer> skillIds = scHero.getSkillListByStar().get(star);
|
List<Integer> skillIds = scHero.getSkillListByStar().get(star);
|
||||||
if(skillIds!=null && skillIds.isEmpty()){
|
if(skillIds!=null && skillIds.isEmpty()){
|
||||||
this.skillList.addAll(skillIds);
|
this.skillList.addAll(skillIds);
|
||||||
|
@ -116,12 +118,23 @@ public class Hero extends MongoBase {
|
||||||
this.skillList = skillList;
|
this.skillList = skillList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEquipList(List<Equip> equipList) {
|
public Map<Integer, String> getEquipByPositionMap() {
|
||||||
this.equipList = equipList;
|
return equipByPositionMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Equip> getEquipList() {
|
public void setEquipByPositionMap(Map<Integer, String> equipByPositionMap) throws Exception {
|
||||||
return equipList;
|
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() {
|
public int getBreakId() {
|
||||||
|
|
|
@ -8,10 +8,7 @@ import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import com.ljsd.jieling.protocols.HeroInfoProto;
|
import com.ljsd.jieling.protocols.HeroInfoProto;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.util.CBean2Proto;
|
import com.ljsd.jieling.util.*;
|
||||||
import com.ljsd.jieling.util.ItemUtil;
|
|
||||||
import com.ljsd.jieling.util.MathUtils;
|
|
||||||
import com.ljsd.jieling.util.MessageUtil;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class CBean2Proto {
|
||||||
.setLevel(hero.getLevel())
|
.setLevel(hero.getLevel())
|
||||||
.setStar(hero.getStar())
|
.setStar(hero.getStar())
|
||||||
.addAllSkillIdList(hero.getSkillList())
|
.addAllSkillIdList(hero.getSkillList())
|
||||||
.addAllEquipIdList(getHeroEquip(hero.getEquipList()))
|
// .addAllEquipIdList(getHeroEquip(hero.getEquipList()))
|
||||||
.build();
|
.build();
|
||||||
return heroProto;
|
return heroProto;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue