鸿蒙阵

back_recharge
jiahuiwen 2020-12-17 15:04:46 +08:00
parent ed1e5e1233
commit 6a1faf574c
7 changed files with 234 additions and 40 deletions

View File

@ -204,6 +204,19 @@ public class GetPlayerInfoHandler extends BaseHandler{
.build(); .build();
hongmengHeroInfos.add(hongmengHeroInfo); hongmengHeroInfos.add(hongmengHeroInfo);
} }
// 组装鸿蒙守卫或者鸿蒙使者信息
List<PlayerInfoProto.HongmengHeroInfo> hongmengGuardsProto = new ArrayList<>();
Map<Integer, String> hongmengGuards = heroManager.getHongmengGuards();
Map<Integer, Long> hongmengGuardTime = heroManager.getHongmengGuardTime();
for (Map.Entry<Integer, String> entry : hongmengGuards.entrySet()) {
PlayerInfoProto.HongmengHeroInfo hongmengHeroInfo = PlayerInfoProto.HongmengHeroInfo.newBuilder()
.setGridId(entry.getKey())
.setHeroId(entry.getValue())
.setTime(hongmengGuardTime.containsKey(entry.getKey()) ? (hongmengGuardTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengGuardTime.get(entry.getKey()) - now) / 1000) : 0)
.build();
hongmengGuardsProto.add(hongmengHeroInfo);
}
List<PlayerInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>(); List<PlayerInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition(); Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) { for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
@ -249,7 +262,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
.setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve()) .setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve())
.setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime()) .setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime())
.setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime()) .setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime())
.addAllHongmengGuards(heroManager.getHongmengGuard()) .addAllHongmengGuards(hongmengGuardsProto)
.setHongmengTablet(heroManager.getHongmengTablet()) .setHongmengTablet(heroManager.getHongmengTablet())
.addAllHongmengHeroInfos(hongmengHeroInfos) .addAllHongmengHeroInfos(hongmengHeroInfos)
.addAllHongmengAdditions(hongmengAdditions) .addAllHongmengAdditions(hongmengAdditions)

View File

@ -17,6 +17,7 @@ public class HongmengCleanTimeRequestHandler extends BaseHandler<HeroInfoProto.C
@Override @Override
public void processWithProto(ISession session, HeroInfoProto.CleanResonanceTimeRequest proto) throws Exception { public void processWithProto(ISession session, HeroInfoProto.CleanResonanceTimeRequest proto) throws Exception {
int gridId = proto.getGridId(); int gridId = proto.getGridId();
HeroLogic.getInstance().cleanTime(session, MessageTypeProto.MessageType.HONGMENG_CLEAN_TIME_RESPONSE, gridId); int type = proto.getType();
HeroLogic.getInstance().cleanTime(session, MessageTypeProto.MessageType.HONGMENG_CLEAN_TIME_RESPONSE, gridId, type);
} }
} }

View File

@ -1,5 +1,7 @@
package com.ljsd.jieling.handler.hero; package com.ljsd.jieling.handler.hero;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
@ -16,10 +18,20 @@ public class HongmengResonanceRequestHandler extends BaseHandler<HeroInfoProto.R
@Override @Override
public void processWithProto(ISession session, HeroInfoProto.ResonanceRequest proto) throws Exception { public void processWithProto(ISession session, HeroInfoProto.ResonanceRequest proto) throws Exception {
// 1:共鸣 2卸下共鸣神将 3:卸下鸿蒙使者 4:上阵鸿蒙使者
if (proto.getType() == 1) { if (proto.getType() == 1) {
HeroLogic.getInstance().resonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getHeroId(), proto.getGridId()); HeroLogic.getInstance().resonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getHeroId(), proto.getGridId());
} else { } else if (proto.getType() == 2){
HeroLogic.getInstance().unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getGridId()); HeroLogic.getInstance().unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getGridId());
} }
else if (proto.getType() == 3){
HeroLogic.getInstance().unLoadHongmengTableHero(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getGridId());
}
else if (proto.getType() == 4){
HeroLogic.getInstance().addHongmengTableHero(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, proto.getHeroId(), proto.getGridId());
} else {
LOGGER.info("processWithProto uid=>{} HONGMENG_RESONANCE_REQUEST wrong type=>{}", session.getUid(), proto.getType());
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
} }
} }

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.handler.hero;
import com.google.protobuf.GeneratedMessage; import com.google.protobuf.GeneratedMessage;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.hero.HeroLogic; 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.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -18,4 +19,9 @@ public class HongmengUpgradRequestHandler extends BaseHandler {
public void processWithProto(ISession iSession, GeneratedMessage proto) throws Exception { public void processWithProto(ISession iSession, GeneratedMessage proto) throws Exception {
HeroLogic.getInstance().updateHongmengTablet(iSession, MessageTypeProto.MessageType.HONGMENG_UPGRADE_RESPONSE); HeroLogic.getInstance().updateHongmengTablet(iSession, MessageTypeProto.MessageType.HONGMENG_UPGRADE_RESPONSE);
} }
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
HeroLogic.getInstance().updateHongmengTablet(iSession, MessageTypeProto.MessageType.HONGMENG_UPGRADE_RESPONSE);
}
} }

View File

@ -161,6 +161,11 @@ public class Hero extends MongoBase {
* @return * @return
*/ */
public int getLevel(HeroManager heroManager) { public int getLevel(HeroManager heroManager) {
// 如果鸿蒙碑开启 返回鸿蒙系统中神将返回鸿蒙碑等级
if (heroManager.getHongmengTablet() > 0 && (heroManager.getResonances().values().contains(id) ||
heroManager.getHongmengGuards().values().contains(id))) {
return heroManager.getHongmengTablet();
}
if (heroManager.getResonances().values().contains(id)) { if (heroManager.getResonances().values().contains(id)) {
HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.LEVEL); HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.LEVEL);
if (hongMengAddAttribute != null) { if (hongMengAddAttribute != null) {

View File

@ -30,8 +30,11 @@ public class HeroManager extends MongoBase {
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
// 鸿蒙守卫 // 鸿蒙守卫/鸿蒙使者 <格子id英雄id>
private List<String> hongmengGuard = new ArrayList<>(); private Map<Integer, String> hongmengGuards = new HashMap<>();
// 鸿蒙守卫/鸿蒙使者<格子id冷却时间>
private Map<Integer, Long> hongmengGuardTime = new HashMap<>();
// 共鸣英雄<格子id英雄id> // 共鸣英雄<格子id英雄id>
private Map<Integer, String> resonances = new HashMap<>(); private Map<Integer, String> resonances = new HashMap<>();
// 共鸣英雄<格子id冷却时间> // 共鸣英雄<格子id冷却时间>
@ -142,13 +145,32 @@ public class HeroManager extends MongoBase {
removeString(getMongoKey()+"skinInfo."+skinId); removeString(getMongoKey()+"skinInfo."+skinId);
} }
public List<String> getHongmengGuard() { public Map<Integer, String> getHongmengGuards() {
return hongmengGuard; return hongmengGuards;
} }
public void setHongmengGuard(List<String> hongmengGuard) { public void setHongmengGuards(Map<Integer, String> hongmengGuards) {
this.hongmengGuard = hongmengGuard; this.hongmengGuards = hongmengGuards;
updateString("hongmengGuard", hongmengGuard); updateString("hongmengGuards", hongmengGuards);
}
public void updateHongmengGuards(int key, String heroId) {
this.hongmengGuards.put(key, heroId);
updateString("hongmengGuards." + key, heroId);
}
public Map<Integer, Long> getHongmengGuardTime() {
return hongmengGuardTime;
}
public void setHongmengGuardTime(Map<Integer, Long> hongmengGuardTime) {
this.hongmengGuardTime = hongmengGuardTime;
updateString("hongmengGuardTime", hongmengGuardTime);
}
public void updateHongmengGuardTime(int key, long targetTime) {
this.hongmengGuardTime.put(key, targetTime);
updateString("hongmengGuardTime." + key, targetTime);
} }
public Map<Integer, String> getResonances() { public Map<Integer, String> getResonances() {

View File

@ -1071,6 +1071,14 @@ public class HeroLogic{
if(isInTeam(user,heroId,1)){ if(isInTeam(user,heroId,1)){
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid()));
} }
if (targetHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) {
Set<Integer> hongmengMaxLevel = heroManager.getHongmengMaxLevel();
boolean add = hongmengMaxLevel.add(targetHero.getTemplateId());
if (add) {
// 增加鸿蒙碑神将等级
heroManager.setHongmengMaxLevel(hongmengMaxLevel);
}
}
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,baseBuilder.build(),true); MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,baseBuilder.build(),true);
// 觉醒飘字 // 觉醒飘字
if (targetHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) { if (targetHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) {
@ -3406,11 +3414,15 @@ public class HeroLogic{
* 鸿 * 鸿
* @param user * @param user
*/ */
public void addOrUpdateHongmeng(User user) { public void addOrUpdateHongmeng(User user) throws Exception {
if (user.getPlayerInfoManager().getLevel() < SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_OPENLEVEL)) { if (user.getPlayerInfoManager().getLevel() < SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_OPENLEVEL)) {
return; return;
} }
HeroManager heroManager = user.getHeroManager(); HeroManager heroManager = user.getHeroManager();
// 鸿蒙碑开启,不需要再更新鸿蒙使者和鸿蒙守卫
if (heroManager.getHongmengTablet() > 0) {
return;
}
Collection<Hero> values = heroManager.getHeroMap().values(); Collection<Hero> values = heroManager.getHeroMap().values();
List<Hero> heroes = new ArrayList<>(values); List<Hero> heroes = new ArrayList<>(values);
Collections.sort(heroes, new Comparator<Hero>() { Collections.sort(heroes, new Comparator<Hero>() {
@ -3423,7 +3435,7 @@ public class HeroLogic{
return Integer.compare(hero2.getStar(), hero1.getStar()); return Integer.compare(hero2.getStar(), hero1.getStar());
} }
}); });
List<String> hongmengs = new ArrayList<>(); Map<Integer, String> hongmengs = new HashMap<>();
int defaultValue = 1000; int defaultValue = 1000;
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备 // 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备
HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue); HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
@ -3442,6 +3454,7 @@ public class HeroLogic{
Collection<String> values2 = heroManager.getResonances().values(); Collection<String> values2 = heroManager.getResonances().values();
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap(); Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#");
int key = 1;
for (int i = 0; i < heroes.size(); i++) { for (int i = 0; i < heroes.size(); i++) {
Hero hero = heroes.get(i); Hero hero = heroes.get(i);
if (values2.contains(hero.getId())) { if (values2.contains(hero.getId())) {
@ -3459,15 +3472,16 @@ public class HeroLogic{
} }
// 等级 // 等级
hongmengLevel(resonanceLevel, hero); hongmengLevel(resonanceLevel, hero);
hongmengs.add(hero.getId()); hongmengs.put(key++, hero.getId());
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) { if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
break; break;
} }
} }
// 不够6个无法开启鸿蒙阵
if (hongmengs.size() < Integer.parseInt(openLevel[0])) { if (hongmengs.size() < Integer.parseInt(openLevel[0])) {
return; return;
} }
heroManager.setHongmengGuard(hongmengs); heroManager.setHongmengGuards(hongmengs);
// 第一个格子免费开启 // 第一个格子免费开启
Map<Integer, String> resonances = heroManager.getResonances(); Map<Integer, String> resonances = heroManager.getResonances();
if (!resonances.containsKey(1)) { if (!resonances.containsKey(1)) {
@ -3502,6 +3516,14 @@ public class HeroLogic{
if (tablet == 1 && heroManager.getHongmengTablet() == 0) { if (tablet == 1 && heroManager.getHongmengTablet() == 0) {
// 开启鸿蒙碑 // 开启鸿蒙碑
heroManager.setHongmengTablet(Integer.parseInt(openLevel[1])); heroManager.setHongmengTablet(Integer.parseInt(openLevel[1]));
for (String resetLevelId : heroManager.getHongmengGuards().values()) {
Hero hero = heroManager.getHero(resetLevelId);
if (hero == null) {
continue;
}
hero.setLevel(user, 1);
}
} }
} }
@ -3649,7 +3671,7 @@ public class HeroLogic{
LOGGER.info("resonance uid=>{} no the heroId=>{}", user.getId(), heroId); LOGGER.info("resonance uid=>{} no the heroId=>{}", user.getId(), heroId);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
} }
if (heroManager.getHongmengGuard().contains(heroId)) { if (heroManager.getHongmengGuards().values().contains(heroId)) {
LOGGER.info("resonance uid=>{} the heroId=>{} is HongmengGuard", user.getId(), heroId); LOGGER.info("resonance uid=>{} the heroId=>{} is HongmengGuard", user.getId(), heroId);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
} }
@ -3666,6 +3688,12 @@ public class HeroLogic{
} }
// 添加到共鸣区 // 添加到共鸣区
heroManager.updateResonances(index, heroId); heroManager.updateResonances(index, heroId);
HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.EQUIP);
if (hongMengAddAttribute.value == -1) {
Map<Integer, Integer> equipByPositionMap = hero.getEquipByPositionMap();
equipByPositionMap.clear();
hero.setEquipByPositionMap(equipByPositionMap);
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
} }
@ -3707,9 +3735,10 @@ public class HeroLogic{
* @param index * @param index
* @throws Exception * @throws Exception
*/ */
public void cleanTime(ISession session, MessageTypeProto.MessageType messageType, int index) throws Exception { public void cleanTime(ISession session, MessageTypeProto.MessageType messageType, int index, int type) throws Exception {
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
HeroManager heroManager = user.getHeroManager(); HeroManager heroManager = user.getHeroManager();
if (type == 1) {
Map<Integer, String> resonances = heroManager.getResonances(); Map<Integer, String> resonances = heroManager.getResonances();
String resonanceInfo = resonances.get(index); String resonanceInfo = resonances.get(index);
if (resonanceInfo == null) { if (resonanceInfo == null) {
@ -3734,6 +3763,36 @@ public class HeroLogic{
} }
ItemUtil.itemCost(user, cost, BIReason.CLEAR_HONGMENG_GRAID, index); ItemUtil.itemCost(user, cost, BIReason.CLEAR_HONGMENG_GRAID, index);
heroManager.updateResonancesTime(index, 0L); heroManager.updateResonancesTime(index, 0L);
} else {
if (heroManager.getHongmengTablet() == 0) {
LOGGER.info("cleanTime uid=>{} the HongmengTablet not open=>{}", user.getId(), index);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Map<Integer, String> hongmengGuards = heroManager.getHongmengGuards();
String resonanceInfo = hongmengGuards.get(index);
if (resonanceInfo == null) {
LOGGER.info("cleanTime uid=>{} the index not open=>{}", user.getId(), index);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Map<Integer, Long> hongmengGuardTime = heroManager.getHongmengGuardTime();
Long unloadTime = hongmengGuardTime.get(index);
if (unloadTime == null || unloadTime <= TimeUtils.now()) {
LOGGER.info("cleanTime uid=>{} time =>{}", user.getId(), unloadTime);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
String[] stringValue = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_LATTICE_PRICE).split("#");
long time = unloadTime - TimeUtils.now();
int count = (int) (time / 1000 * Integer.parseInt(stringValue[0]));
Map<Integer, Integer> cost = new HashMap<>(1);
cost.put(Integer.parseInt(stringValue[1]), count);
boolean checkCost = ItemUtil.checkCost(user, cost);
if (!checkCost) {
LOGGER.info("cleanTime uid=>{} item not enough =>{}", user.getId(), unloadTime);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
ItemUtil.itemCost(user, cost, BIReason.CLEAR_HONGMENG_GRAID, index);
heroManager.updateHongmengGuardTime(index, 0L);
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
} }
@ -3751,7 +3810,7 @@ public class HeroLogic{
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
} }
String[] split = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); String[] split = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#");
int maxLevel = heroManager.getHongmengMaxLevel().size() * SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_ONEHERO_OPENLEVEL) + Integer.parseInt(split[0]); int maxLevel = heroManager.getHongmengMaxLevel().size() * SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_ONEHERO_OPENLEVEL) + Integer.parseInt(split[1]);
if (heroManager.getHongmengTablet() >= maxLevel) { if (heroManager.getHongmengTablet() >= maxLevel) {
LOGGER.info("updateHongmengTablet uid=>{} curLevel={} maxLevel =>{}", user.getId(), heroManager.getHongmengTablet(), maxLevel); LOGGER.info("updateHongmengTablet uid=>{} curLevel={} maxLevel =>{}", user.getId(), heroManager.getHongmengTablet(), maxLevel);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
@ -3772,4 +3831,80 @@ public class HeroLogic{
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
} }
/**
* 鸿
* @param session
* @param messageType
* @param heroId 鸿id
* @param index 鸿
*/
public void addHongmengTableHero(ISession session, MessageTypeProto.MessageType messageType, String heroId, int index) throws Exception {
User user = UserManager.getUser(session.getUid());
HeroManager heroManager = user.getHeroManager();
if (heroManager.getHongmengTablet() == 0) {
LOGGER.info("addHongmengTableHero uid=>{} HongmengTablet==0", user.getId());
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Hero hero = heroManager.getHeroMap().get(heroId);
if (hero == null) {
LOGGER.info("addHongmengTableHero uid=>{} no the heroId=>{}", user.getId(), heroId);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
if (heroManager.getHongmengGuards().values().contains(heroId)) {
LOGGER.info("addHongmengTableHero uid=>{} the heroId=>{} is HongmengGuard", user.getId(), heroId);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Map<Integer, String> resonances = heroManager.getHongmengGuards();
String resonanceInfo = resonances.get(index);
if (resonanceInfo == null || resonanceInfo.isEmpty()) {
LOGGER.info("addHongmengTableHero uid=>{} not hero key=>{}", user.getId(), index);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Map<Integer, Long> resonancesTime = heroManager.getHongmengGuardTime();
if (resonancesTime.get(index) != null && resonancesTime.get(index) > TimeUtils.now()) {
LOGGER.info("addHongmengTableHero uid=>{} time =>{}", user.getId(), resonancesTime.get(index));
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
// 添加鸿蒙碑
heroManager.updateHongmengGuards(index, heroId);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
}
/**
* 鸿
* @param session
* @param messageType
* @param index
* @throws Exception
*/
public void unLoadHongmengTableHero(ISession session, MessageTypeProto.MessageType messageType, int index) throws Exception{
User user = UserManager.getUser(session.getUid());
HeroManager heroManager = user.getHeroManager();
if (heroManager.getHongmengTablet() == 0) {
LOGGER.info("unLoadHongmengTableHero uid=>{} HongmengTablet==0", user.getId());
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Map<Integer, String> resonances = heroManager.getHongmengGuards();
String heroId = resonances.get(index);
if (heroId == null || heroId.isEmpty()) {
LOGGER.info("unLoadHongmengTableHero uid=>{} no hero=>{}", user.getId(), index);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
Hero hero = heroManager.getHero(heroId);
if (hero == null) {
LOGGER.info("unLoadHongmengTableHero uid=>{} cur hero is null {}", user.getId(), heroId);
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
}
heroManager.updateHongmengGuards(index, "");
heroManager.updateHongmengGuardTime(index, TimeUtils.now() + SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME) * 1000);
HeroInfoProto.ResonanceResponse resonanceResponse = HeroInfoProto.ResonanceResponse
.newBuilder()
.setLeftTime(SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME))
.build();
MessageUtil.sendMessage(session, 1, messageType.getNumber(), resonanceResponse);
}
} }