鸿蒙阵
parent
ed1e5e1233
commit
6a1faf574c
|
@ -204,6 +204,19 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
.build();
|
||||
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<>();
|
||||
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||
for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
|
||||
|
@ -249,7 +262,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
.setExpeditionLeve(user.getExpeditionManager().getExpeditionLeve())
|
||||
.setHadLuckTime( user.getPlayerInfoManager().getLuckWheelLimitTime())
|
||||
.setHadAdvanceLuckTime(user.getPlayerInfoManager().getLuckAdvanceWheelLimitTime())
|
||||
.addAllHongmengGuards(heroManager.getHongmengGuard())
|
||||
.addAllHongmengGuards(hongmengGuardsProto)
|
||||
.setHongmengTablet(heroManager.getHongmengTablet())
|
||||
.addAllHongmengHeroInfos(hongmengHeroInfos)
|
||||
.addAllHongmengAdditions(hongmengAdditions)
|
||||
|
|
|
@ -17,6 +17,7 @@ public class HongmengCleanTimeRequestHandler extends BaseHandler<HeroInfoProto.C
|
|||
@Override
|
||||
public void processWithProto(ISession session, HeroInfoProto.CleanResonanceTimeRequest proto) throws Exception {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
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.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
@ -16,10 +18,20 @@ public class HongmengResonanceRequestHandler extends BaseHandler<HeroInfoProto.R
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession session, HeroInfoProto.ResonanceRequest proto) throws Exception {
|
||||
// 1:共鸣 2:卸下共鸣神将 3:卸下鸿蒙使者 4:上阵鸿蒙使者
|
||||
if (proto.getType() == 1) {
|
||||
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());
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.handler.hero;
|
|||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
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.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -18,4 +19,9 @@ public class HongmengUpgradRequestHandler extends BaseHandler {
|
|||
public void processWithProto(ISession iSession, GeneratedMessage proto) throws Exception {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -161,6 +161,11 @@ public class Hero extends MongoBase {
|
|||
* @return
|
||||
*/
|
||||
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)) {
|
||||
HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.LEVEL);
|
||||
if (hongMengAddAttribute != null) {
|
||||
|
|
|
@ -30,8 +30,11 @@ public class HeroManager extends MongoBase {
|
|||
this.setRootCollection(User._COLLECTION_NAME);
|
||||
}
|
||||
|
||||
// 鸿蒙守卫
|
||||
private List<String> hongmengGuard = new ArrayList<>();
|
||||
// 鸿蒙守卫/鸿蒙使者 <格子id,英雄id>
|
||||
private Map<Integer, String> hongmengGuards = new HashMap<>();
|
||||
// 鸿蒙守卫/鸿蒙使者<格子id,冷却时间>
|
||||
private Map<Integer, Long> hongmengGuardTime = new HashMap<>();
|
||||
|
||||
// 共鸣英雄<格子id,英雄id>
|
||||
private Map<Integer, String> resonances = new HashMap<>();
|
||||
// 共鸣英雄<格子id,冷却时间>
|
||||
|
@ -142,13 +145,32 @@ public class HeroManager extends MongoBase {
|
|||
removeString(getMongoKey()+"skinInfo."+skinId);
|
||||
}
|
||||
|
||||
public List<String> getHongmengGuard() {
|
||||
return hongmengGuard;
|
||||
public Map<Integer, String> getHongmengGuards() {
|
||||
return hongmengGuards;
|
||||
}
|
||||
|
||||
public void setHongmengGuard(List<String> hongmengGuard) {
|
||||
this.hongmengGuard = hongmengGuard;
|
||||
updateString("hongmengGuard", hongmengGuard);
|
||||
public void setHongmengGuards(Map<Integer, String> hongmengGuards) {
|
||||
this.hongmengGuards = hongmengGuards;
|
||||
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() {
|
||||
|
|
|
@ -1071,6 +1071,14 @@ public class HeroLogic{
|
|||
if(isInTeam(user,heroId,1)){
|
||||
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);
|
||||
// 觉醒飘字
|
||||
if (targetHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) {
|
||||
|
@ -3406,11 +3414,15 @@ public class HeroLogic{
|
|||
* 添加或更新鸿蒙守卫
|
||||
* @param user
|
||||
*/
|
||||
public void addOrUpdateHongmeng(User user) {
|
||||
public void addOrUpdateHongmeng(User user) throws Exception {
|
||||
if (user.getPlayerInfoManager().getLevel() < SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_OPENLEVEL)) {
|
||||
return;
|
||||
}
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
// 鸿蒙碑开启,不需要再更新鸿蒙使者和鸿蒙守卫
|
||||
if (heroManager.getHongmengTablet() > 0) {
|
||||
return;
|
||||
}
|
||||
Collection<Hero> values = heroManager.getHeroMap().values();
|
||||
List<Hero> heroes = new ArrayList<>(values);
|
||||
Collections.sort(heroes, new Comparator<Hero>() {
|
||||
|
@ -3423,7 +3435,7 @@ public class HeroLogic{
|
|||
return Integer.compare(hero2.getStar(), hero1.getStar());
|
||||
}
|
||||
});
|
||||
List<String> hongmengs = new ArrayList<>();
|
||||
Map<Integer, String> hongmengs = new HashMap<>();
|
||||
int defaultValue = 1000;
|
||||
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备
|
||||
HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
|
@ -3442,6 +3454,7 @@ public class HeroLogic{
|
|||
Collection<String> values2 = heroManager.getResonances().values();
|
||||
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
|
||||
String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#");
|
||||
int key = 1;
|
||||
for (int i = 0; i < heroes.size(); i++) {
|
||||
Hero hero = heroes.get(i);
|
||||
if (values2.contains(hero.getId())) {
|
||||
|
@ -3459,15 +3472,16 @@ public class HeroLogic{
|
|||
}
|
||||
// 等级
|
||||
hongmengLevel(resonanceLevel, hero);
|
||||
hongmengs.add(hero.getId());
|
||||
hongmengs.put(key++, hero.getId());
|
||||
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 不够6个无法开启鸿蒙阵
|
||||
if (hongmengs.size() < Integer.parseInt(openLevel[0])) {
|
||||
return;
|
||||
}
|
||||
heroManager.setHongmengGuard(hongmengs);
|
||||
heroManager.setHongmengGuards(hongmengs);
|
||||
// 第一个格子免费开启
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
if (!resonances.containsKey(1)) {
|
||||
|
@ -3502,6 +3516,14 @@ public class HeroLogic{
|
|||
if (tablet == 1 && heroManager.getHongmengTablet() == 0) {
|
||||
// 开启鸿蒙碑
|
||||
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);
|
||||
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);
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
}
|
||||
|
@ -3666,6 +3688,12 @@ public class HeroLogic{
|
|||
}
|
||||
// 添加到共鸣区
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -3707,33 +3735,64 @@ public class HeroLogic{
|
|||
* @param index
|
||||
* @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());
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
String resonanceInfo = resonances.get(index);
|
||||
if (resonanceInfo == null) {
|
||||
LOGGER.info("cleanTime uid=>{} the index not open=>{}", user.getId(), index);
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
if (type == 1) {
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
String resonanceInfo = resonances.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> resonancesTime = heroManager.getResonancesTime();
|
||||
Long unloadTime = resonancesTime.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.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);
|
||||
}
|
||||
Map<Integer, Long> resonancesTime = heroManager.getResonancesTime();
|
||||
Long unloadTime = resonancesTime.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.updateResonancesTime(index, 0L);
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
|
||||
}
|
||||
|
||||
|
@ -3751,7 +3810,7 @@ public class HeroLogic{
|
|||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
}
|
||||
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) {
|
||||
LOGGER.info("updateHongmengTablet uid=>{} curLevel={} maxLevel =>{}", user.getId(), heroManager.getHongmengTablet(), maxLevel);
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
|
@ -3772,4 +3831,80 @@ public class HeroLogic{
|
|||
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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue