鸿蒙阵功能关闭
parent
e1ad8231d1
commit
e98ff31de5
|
|
@ -1,13 +1,10 @@
|
|||
package com.ljsd.jieling.handler;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.hero.HongMengFunctionEnum;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import org.springframework.stereotype.Component;
|
||||
import rpc.protocols.HeroInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 神将归元
|
||||
|
|
@ -21,15 +18,6 @@ public class HeroReturnHandler extends BaseHandler<HeroInfoProto.HeroReturnReque
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, HeroInfoProto.HeroReturnRequest proto) throws Exception {
|
||||
if (proto.getType() == 0) {
|
||||
// 验证是否可以使用功能,神将归元
|
||||
boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.HERO_BACK_TO_BEGIN.getPropertyId(), proto.getHeroId());
|
||||
if (!useFunction){
|
||||
throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
|
||||
}
|
||||
HeroLogic.getInstance().heroBack(iSession,proto.getHeroId());
|
||||
} else {
|
||||
HeroLogic.getInstance().heroReturn(iSession,proto.getHeroId());
|
||||
}
|
||||
HeroLogic.getInstance().heroBack(iSession,proto.getHeroId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.ljsd.jieling.handler.hero;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import org.springframework.stereotype.Component;
|
||||
import rpc.protocols.HeroInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
|
||||
@Component
|
||||
@Deprecated
|
||||
public class HongmengGetInfoRequestHandler extends BaseHandler<HeroInfoProto.GetHongmengInfoRequest> {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
|
|
@ -16,6 +16,6 @@ public class HongmengGetInfoRequestHandler extends BaseHandler<HeroInfoProto.Get
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession session, HeroInfoProto.GetHongmengInfoRequest proto) throws Exception {
|
||||
HeroLogic.getInstance().addOrUpdateHongmeng(session, true);
|
||||
// HeroLogic.getInstance().addOrUpdateHongmeng(session, true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2235,8 +2235,8 @@ public class HeroLogic {
|
|||
// 消耗道具
|
||||
ItemUtil.itemCost(user,item,BIReason.HERO_CHANGE_COST,0);
|
||||
|
||||
CommonProto.Hero heroProto1 = CBean2Proto.getHero(hero1, heroManager);
|
||||
CommonProto.Hero heroProto2 = CBean2Proto.getHero(hero2, heroManager);
|
||||
CommonProto.Hero heroProto1 = CBean2Proto.getHero(hero1);
|
||||
CommonProto.Hero heroProto2 = CBean2Proto.getHero(hero2);
|
||||
HeroInfoProto.HeroChangeResponse.Builder builder = HeroInfoProto.HeroChangeResponse.newBuilder();
|
||||
builder.addHeros(heroProto1);
|
||||
builder.addHeros(heroProto2);
|
||||
|
|
@ -5350,7 +5350,7 @@ public class HeroLogic {
|
|||
* @param session
|
||||
*/
|
||||
public void addOrUpdateHongmeng(ISession session) {
|
||||
addOrUpdateHongmeng(session, false);
|
||||
// addOrUpdateHongmeng(session, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -5376,213 +5376,213 @@ public class HeroLogic {
|
|||
* @param judge true:返回,false:推送
|
||||
*/
|
||||
public void addOrUpdateHongmeng(ISession session, boolean judge){
|
||||
try {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
// 鸿蒙阵逻辑
|
||||
HeroInfoProto.HongmengInfoIndication.Builder hongmengInfoIndication = HeroInfoProto.HongmengInfoIndication.newBuilder();
|
||||
|
||||
SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.HongMeng.getFunctionType());
|
||||
boolean open = GlobleSystemLogic.checkOpen(user, sGlobalSystemConfig);
|
||||
// 鸿蒙阵开启条件
|
||||
if (open) {
|
||||
/** ========================== 共鸣信息初始化 =========================== **/
|
||||
// 限制表 鸿蒙守卫数量#鸿蒙碑使者等级
|
||||
String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#");
|
||||
|
||||
Map<Integer, String> hongmengs = new HashMap<>(Integer.parseInt(openLevel[0]));
|
||||
int defaultValue = 1000;
|
||||
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 -1:不用卸下装备,其他表示装备星级
|
||||
HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣
|
||||
HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
HongMengAddAttribute spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
|
||||
// 共鸣等级=鸿蒙守卫中最低的等级
|
||||
HongMengAddAttribute resonanceLevel = new HongMengAddAttribute(0, defaultValue);
|
||||
|
||||
// 共鸣法宝=鸿蒙守卫中法宝强化最低等级
|
||||
HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue);
|
||||
|
||||
/** ========================== 开始处理玩家信息,更 =========================== **/
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
// 共鸣英雄池
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
// 第一个格子免费开启
|
||||
if (!resonances.containsKey(1)) {
|
||||
resonances.put(1, "");
|
||||
heroManager.setResonances(resonances);
|
||||
// 成就任务
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.HONGMENG_RESONANCE_LATTICE, resonances.size());
|
||||
}
|
||||
|
||||
// 获取玩家全部英雄
|
||||
Collection<Hero> values = heroManager.getHeroMap().values();
|
||||
List<Hero> heroes = new ArrayList<>(values);
|
||||
|
||||
// 是否开启鸿蒙碑
|
||||
int tabletMax = 0;
|
||||
// 是否为鸿蒙碑
|
||||
if (heroManager.getHongmengTablet() > 0) {
|
||||
// 等级
|
||||
resonanceLevel.value = heroManager.getHongmengTablet();
|
||||
tabletMax = heroManager.getHongmengMaxLevelByInt();
|
||||
} else {
|
||||
// 玩家英雄背包按等级排序
|
||||
Collections.sort(heroes);
|
||||
|
||||
for (int i = 0; i < heroes.size(); i++) {
|
||||
Hero hero = heroes.get(i);
|
||||
resonances.forEach((k, v) -> {
|
||||
if (v.equals(hero.getId())) {
|
||||
try {
|
||||
// 共鸣格子更新
|
||||
unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, k, 0);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
// 是否开启鸿蒙碑
|
||||
if (hero.getOriginalLevel() >= Integer.parseInt(openLevel[1])) {
|
||||
tabletMax++;
|
||||
}
|
||||
// 等级
|
||||
hongmengLevel(resonanceLevel, hero);
|
||||
hongmengs.put(i + 1, hero.getId());
|
||||
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 更新鸿蒙使者
|
||||
heroManager.setHongmengGuards(hongmengs);
|
||||
|
||||
// 鸿蒙碑,觉醒限制
|
||||
if (tabletMax >= Integer.parseInt(openLevel[0]) && 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(1);
|
||||
hero.setBreakId(0);
|
||||
}
|
||||
// 初始化鸿蒙碑等级上限
|
||||
for (Hero hero : heroes) {
|
||||
if (hero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) {
|
||||
heroManager.addHongmengMaxLevel(hero.getTemplateId());
|
||||
}
|
||||
}
|
||||
tabletMax = heroManager.getHongmengMaxLevelByInt();
|
||||
resonanceLevel.heroTid = 0;
|
||||
resonanceLevel.value = heroManager.getHongmengTablet();
|
||||
|
||||
// 鸿蒙碑新手引导推送
|
||||
HeroInfoProto.HongmengSteleNewHandIndication.Builder builder = HeroInfoProto.HongmengSteleNewHandIndication.newBuilder().setState(1);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_STELE_NEW_HAND_INDICATION.getNumber(), builder.build(), true);
|
||||
}
|
||||
}
|
||||
// 守卫/使者英雄池
|
||||
Map<Integer, String> guards = heroManager.getHongmengGuards();
|
||||
// 英雄装备
|
||||
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
|
||||
|
||||
// if (guards.size() >= Integer.parseInt(openLevel[0])) {
|
||||
// for (int i = 0; i < guards.size(); i++) {
|
||||
// Hero hero = user.getHeroManager().getHero(guards.get(i + 1));
|
||||
// if (hero == null) {
|
||||
// // 找不到英雄,不存在这些共鸣属性
|
||||
// hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// break;
|
||||
// }
|
||||
// // 装备
|
||||
// hongmengEquip(hongMengAddAttributeEquip, hero);
|
||||
// // 魂宝 灵宝
|
||||
// soulOrSpirit(soulEquip, 1, equipMap, hero);
|
||||
// soulOrSpirit(spiritEquip, 2, equipMap, hero);
|
||||
// }
|
||||
// }
|
||||
|
||||
/*** ============================= 计算共鸣信息 ==================================== **/
|
||||
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||
resonanceAddition.clear();
|
||||
if (resonanceLevel.value == defaultValue) {
|
||||
resonanceLevel.value = -1;
|
||||
}
|
||||
// if (hongMengAddAttributeEquip.value == defaultValue) {
|
||||
// hongMengAddAttributeEquip.value = -1;
|
||||
// }
|
||||
// if (soulEquip.value == defaultValue) {
|
||||
// soulEquip.value = -1;
|
||||
// }
|
||||
// if (spiritEquip.value == defaultValue) {
|
||||
// spiritEquip.value = -1;
|
||||
// }
|
||||
// if (especialEquipLevel.value == defaultValue) {
|
||||
// especialEquipLevel.value = -1;
|
||||
// }
|
||||
resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel);
|
||||
// resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip);
|
||||
// resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip);
|
||||
// resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip);
|
||||
heroManager.setResonanceAddition(resonanceAddition);
|
||||
|
||||
/*** ============================= 开始组装鸿蒙阵信息 ==================================== **/
|
||||
// 当前时间,秒
|
||||
long now = TimeUtils.now() / 1000;
|
||||
// 鸿蒙守卫
|
||||
List<HeroInfoProto.HongmengHeroInfo> hongmengGuardsProto = new ArrayList<>();
|
||||
Map<Integer, String> hongmengGuards = heroManager.getHongmengGuards();
|
||||
Map<Integer, Long> hongmengGuardTime = heroManager.getHongmengGuardTime();
|
||||
for (Map.Entry<Integer, String> entry : hongmengGuards.entrySet()) {
|
||||
HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.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)) : 0)
|
||||
.build();
|
||||
hongmengGuardsProto.add(hongmengHeroInfo);
|
||||
}
|
||||
// 共鸣属性
|
||||
List<HeroInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
|
||||
for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
|
||||
HeroInfoProto.HongmengAddition hongmengAddition = HeroInfoProto.HongmengAddition
|
||||
.newBuilder()
|
||||
.setAdditionType(entry.getKey().getPropertyId())
|
||||
.setValue(entry.getValue().value)
|
||||
.setHeroTid(entry.getValue().heroTid)
|
||||
.build();
|
||||
hongmengAdditions.add(hongmengAddition);
|
||||
}
|
||||
// 共鸣使者
|
||||
List<HeroInfoProto.HongmengHeroInfo> hongmengResonancesProto = new ArrayList<>();
|
||||
Map<Integer, String> hongmengResonances = heroManager.getResonances();
|
||||
Map<Integer, Long> hongmengResonanceTime = heroManager.getResonancesTime();
|
||||
for (Map.Entry<Integer, String> entry : hongmengResonances.entrySet()) {
|
||||
HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder()
|
||||
.setGridId(entry.getKey())
|
||||
.setHeroId(entry.getValue())
|
||||
.setTime(hongmengResonanceTime.containsKey(entry.getKey()) ? (hongmengResonanceTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengResonanceTime.get(entry.getKey()) - now)) : 0)
|
||||
.build();
|
||||
hongmengResonancesProto.add(hongmengHeroInfo);
|
||||
}
|
||||
hongmengInfoIndication.addAllHongmengGuards(hongmengGuardsProto).addAllHongmengAdditions(hongmengAdditions)
|
||||
.addAllHongmengResonacnes(hongmengResonancesProto).setHongmengTabletMax(tabletMax).build();
|
||||
}
|
||||
// 返回协议
|
||||
if (judge) {
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_GET_INFO_RESPONSE_VALUE, hongmengInfoIndication.build(), true);
|
||||
} else {
|
||||
if (hongmengInfoIndication.getHongmengGuardsCount() > 0 || hongmengInfoIndication.getHongmengAdditionsCount() > 0 || hongmengInfoIndication.getHongmengResonacnesCount() > 0) {
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_INFO_INDICATION_VALUE, hongmengInfoIndication.build(), true);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("鸿蒙阵报错,{}",e.getMessage());
|
||||
}
|
||||
// try {
|
||||
// User user = UserManager.getUser(session.getUid());
|
||||
// // 鸿蒙阵逻辑
|
||||
// HeroInfoProto.HongmengInfoIndication.Builder hongmengInfoIndication = HeroInfoProto.HongmengInfoIndication.newBuilder();
|
||||
//
|
||||
// SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.HongMeng.getFunctionType());
|
||||
// boolean open = GlobleSystemLogic.checkOpen(user, sGlobalSystemConfig);
|
||||
// // 鸿蒙阵开启条件
|
||||
// if (open) {
|
||||
// /** ========================== 共鸣信息初始化 =========================== **/
|
||||
// // 限制表 鸿蒙守卫数量#鸿蒙碑使者等级
|
||||
// String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#");
|
||||
//
|
||||
// Map<Integer, String> hongmengs = new HashMap<>(Integer.parseInt(openLevel[0]));
|
||||
// int defaultValue = 1000;
|
||||
// // 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 -1:不用卸下装备,其他表示装备星级
|
||||
// HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// // 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣
|
||||
// HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// HongMengAddAttribute spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
//
|
||||
// // 共鸣等级=鸿蒙守卫中最低的等级
|
||||
// HongMengAddAttribute resonanceLevel = new HongMengAddAttribute(0, defaultValue);
|
||||
//
|
||||
// // 共鸣法宝=鸿蒙守卫中法宝强化最低等级
|
||||
// HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue);
|
||||
//
|
||||
// /** ========================== 开始处理玩家信息,更 =========================== **/
|
||||
// HeroManager heroManager = user.getHeroManager();
|
||||
// // 共鸣英雄池
|
||||
// Map<Integer, String> resonances = heroManager.getResonances();
|
||||
// // 第一个格子免费开启
|
||||
// if (!resonances.containsKey(1)) {
|
||||
// resonances.put(1, "");
|
||||
// heroManager.setResonances(resonances);
|
||||
// // 成就任务
|
||||
// user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.HONGMENG_RESONANCE_LATTICE, resonances.size());
|
||||
// }
|
||||
//
|
||||
// // 获取玩家全部英雄
|
||||
// Collection<Hero> values = heroManager.getHeroMap().values();
|
||||
// List<Hero> heroes = new ArrayList<>(values);
|
||||
//
|
||||
// // 是否开启鸿蒙碑
|
||||
// int tabletMax = 0;
|
||||
// // 是否为鸿蒙碑
|
||||
// if (heroManager.getHongmengTablet() > 0) {
|
||||
// // 等级
|
||||
// resonanceLevel.value = heroManager.getHongmengTablet();
|
||||
// tabletMax = heroManager.getHongmengMaxLevelByInt();
|
||||
// } else {
|
||||
// // 玩家英雄背包按等级排序
|
||||
// Collections.sort(heroes);
|
||||
//
|
||||
// for (int i = 0; i < heroes.size(); i++) {
|
||||
// Hero hero = heroes.get(i);
|
||||
// resonances.forEach((k, v) -> {
|
||||
// if (v.equals(hero.getId())) {
|
||||
// try {
|
||||
// // 共鸣格子更新
|
||||
// unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, k, 0);
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// // 是否开启鸿蒙碑
|
||||
// if (hero.getOriginalLevel() >= Integer.parseInt(openLevel[1])) {
|
||||
// tabletMax++;
|
||||
// }
|
||||
// // 等级
|
||||
// hongmengLevel(resonanceLevel, hero);
|
||||
// hongmengs.put(i + 1, hero.getId());
|
||||
// if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 更新鸿蒙使者
|
||||
// heroManager.setHongmengGuards(hongmengs);
|
||||
//
|
||||
// // 鸿蒙碑,觉醒限制
|
||||
// if (tabletMax >= Integer.parseInt(openLevel[0]) && 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(1);
|
||||
// hero.setBreakId(0);
|
||||
// }
|
||||
// // 初始化鸿蒙碑等级上限
|
||||
// for (Hero hero : heroes) {
|
||||
// if (hero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) {
|
||||
// heroManager.addHongmengMaxLevel(hero.getTemplateId());
|
||||
// }
|
||||
// }
|
||||
// tabletMax = heroManager.getHongmengMaxLevelByInt();
|
||||
// resonanceLevel.heroTid = 0;
|
||||
// resonanceLevel.value = heroManager.getHongmengTablet();
|
||||
//
|
||||
// // 鸿蒙碑新手引导推送
|
||||
// HeroInfoProto.HongmengSteleNewHandIndication.Builder builder = HeroInfoProto.HongmengSteleNewHandIndication.newBuilder().setState(1);
|
||||
// MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_STELE_NEW_HAND_INDICATION.getNumber(), builder.build(), true);
|
||||
// }
|
||||
// }
|
||||
// // 守卫/使者英雄池
|
||||
// Map<Integer, String> guards = heroManager.getHongmengGuards();
|
||||
// // 英雄装备
|
||||
// Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
|
||||
//
|
||||
// // if (guards.size() >= Integer.parseInt(openLevel[0])) {
|
||||
// // for (int i = 0; i < guards.size(); i++) {
|
||||
// // Hero hero = user.getHeroManager().getHero(guards.get(i + 1));
|
||||
// // if (hero == null) {
|
||||
// // // 找不到英雄,不存在这些共鸣属性
|
||||
// // hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// // soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// // spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// // break;
|
||||
// // }
|
||||
// // // 装备
|
||||
// // hongmengEquip(hongMengAddAttributeEquip, hero);
|
||||
// // // 魂宝 灵宝
|
||||
// // soulOrSpirit(soulEquip, 1, equipMap, hero);
|
||||
// // soulOrSpirit(spiritEquip, 2, equipMap, hero);
|
||||
// // }
|
||||
// // }
|
||||
//
|
||||
// /*** ============================= 计算共鸣信息 ==================================== **/
|
||||
// Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||
// resonanceAddition.clear();
|
||||
// if (resonanceLevel.value == defaultValue) {
|
||||
// resonanceLevel.value = -1;
|
||||
// }
|
||||
// // if (hongMengAddAttributeEquip.value == defaultValue) {
|
||||
// // hongMengAddAttributeEquip.value = -1;
|
||||
// // }
|
||||
// // if (soulEquip.value == defaultValue) {
|
||||
// // soulEquip.value = -1;
|
||||
// // }
|
||||
// // if (spiritEquip.value == defaultValue) {
|
||||
// // spiritEquip.value = -1;
|
||||
// // }
|
||||
// // if (especialEquipLevel.value == defaultValue) {
|
||||
// // especialEquipLevel.value = -1;
|
||||
// // }
|
||||
// resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel);
|
||||
// // resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip);
|
||||
// // resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip);
|
||||
// // resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip);
|
||||
// heroManager.setResonanceAddition(resonanceAddition);
|
||||
//
|
||||
// /*** ============================= 开始组装鸿蒙阵信息 ==================================== **/
|
||||
// // 当前时间,秒
|
||||
// long now = TimeUtils.now() / 1000;
|
||||
// // 鸿蒙守卫
|
||||
// List<HeroInfoProto.HongmengHeroInfo> hongmengGuardsProto = new ArrayList<>();
|
||||
// Map<Integer, String> hongmengGuards = heroManager.getHongmengGuards();
|
||||
// Map<Integer, Long> hongmengGuardTime = heroManager.getHongmengGuardTime();
|
||||
// for (Map.Entry<Integer, String> entry : hongmengGuards.entrySet()) {
|
||||
// HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.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)) : 0)
|
||||
// .build();
|
||||
// hongmengGuardsProto.add(hongmengHeroInfo);
|
||||
// }
|
||||
// // 共鸣属性
|
||||
// List<HeroInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
|
||||
// for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
|
||||
// HeroInfoProto.HongmengAddition hongmengAddition = HeroInfoProto.HongmengAddition
|
||||
// .newBuilder()
|
||||
// .setAdditionType(entry.getKey().getPropertyId())
|
||||
// .setValue(entry.getValue().value)
|
||||
// .setHeroTid(entry.getValue().heroTid)
|
||||
// .build();
|
||||
// hongmengAdditions.add(hongmengAddition);
|
||||
// }
|
||||
// // 共鸣使者
|
||||
// List<HeroInfoProto.HongmengHeroInfo> hongmengResonancesProto = new ArrayList<>();
|
||||
// Map<Integer, String> hongmengResonances = heroManager.getResonances();
|
||||
// Map<Integer, Long> hongmengResonanceTime = heroManager.getResonancesTime();
|
||||
// for (Map.Entry<Integer, String> entry : hongmengResonances.entrySet()) {
|
||||
// HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder()
|
||||
// .setGridId(entry.getKey())
|
||||
// .setHeroId(entry.getValue())
|
||||
// .setTime(hongmengResonanceTime.containsKey(entry.getKey()) ? (hongmengResonanceTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengResonanceTime.get(entry.getKey()) - now)) : 0)
|
||||
// .build();
|
||||
// hongmengResonancesProto.add(hongmengHeroInfo);
|
||||
// }
|
||||
// hongmengInfoIndication.addAllHongmengGuards(hongmengGuardsProto).addAllHongmengAdditions(hongmengAdditions)
|
||||
// .addAllHongmengResonacnes(hongmengResonancesProto).setHongmengTabletMax(tabletMax).build();
|
||||
// }
|
||||
// // 返回协议
|
||||
// if (judge) {
|
||||
// MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_GET_INFO_RESPONSE_VALUE, hongmengInfoIndication.build(), true);
|
||||
// } else {
|
||||
// if (hongmengInfoIndication.getHongmengGuardsCount() > 0 || hongmengInfoIndication.getHongmengAdditionsCount() > 0 || hongmengInfoIndication.getHongmengResonacnesCount() > 0) {
|
||||
// MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_INFO_INDICATION_VALUE, hongmengInfoIndication.build(), true);
|
||||
// }
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// LOGGER.error("鸿蒙阵报错,{}",e.getMessage());
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -6050,45 +6050,46 @@ public class HeroLogic {
|
|||
* @throws Exception
|
||||
*/
|
||||
public boolean isUseFunction(int uid, int functionId, String... heroId) throws Exception {
|
||||
User user = UserManager.getUser(uid);
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
// 记录每个英雄
|
||||
Map<String, Boolean> heroMap = new HashMap<>(heroId.length);
|
||||
|
||||
for (String s : heroId) {
|
||||
// 属性初始化
|
||||
int[] value = null;
|
||||
heroMap.put(s, false);
|
||||
|
||||
if ("".equals(s) || s == null) {
|
||||
heroMap.put(s, true);
|
||||
continue;
|
||||
}
|
||||
// 鸿蒙守卫
|
||||
if (heroManager.getHongmengTablet() <= 0 && heroManager.getHongmengGuards().containsValue(s)) {
|
||||
value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_GUARD_LIMIT);
|
||||
}
|
||||
// 鸿蒙使者
|
||||
if (heroManager.getHongmengTablet() > 0 && heroManager.getHongmengGuards().containsValue(s)) {
|
||||
value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_MESSENGER_LIMIT);
|
||||
}
|
||||
// 共鸣神将
|
||||
if (heroManager.getResonances().containsValue(s)) {
|
||||
value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_TAKE_LIMIT);
|
||||
}
|
||||
if (value == null) {
|
||||
heroMap.put(s, true);
|
||||
continue;
|
||||
}
|
||||
// 包含类型,返回false
|
||||
for (int i : value)
|
||||
if (i == functionId) {
|
||||
heroMap.put(s, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
boolean contains = heroMap.containsValue(false);
|
||||
return !contains;
|
||||
// User user = UserManager.getUser(uid);
|
||||
// HeroManager heroManager = user.getHeroManager();
|
||||
// // 记录每个英雄
|
||||
// Map<String, Boolean> heroMap = new HashMap<>(heroId.length);
|
||||
//
|
||||
// for (String s : heroId) {
|
||||
// // 属性初始化
|
||||
// int[] value = null;
|
||||
// heroMap.put(s, false);
|
||||
//
|
||||
// if ("".equals(s) || s == null) {
|
||||
// heroMap.put(s, true);
|
||||
// continue;
|
||||
// }
|
||||
// // 鸿蒙守卫
|
||||
// if (heroManager.getHongmengTablet() <= 0 && heroManager.getHongmengGuards().containsValue(s)) {
|
||||
// value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_GUARD_LIMIT);
|
||||
// }
|
||||
// // 鸿蒙使者
|
||||
// if (heroManager.getHongmengTablet() > 0 && heroManager.getHongmengGuards().containsValue(s)) {
|
||||
// value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_MESSENGER_LIMIT);
|
||||
// }
|
||||
// // 共鸣神将
|
||||
// if (heroManager.getResonances().containsValue(s)) {
|
||||
// value = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HONGMENG_TAKE_LIMIT);
|
||||
// }
|
||||
// if (value == null) {
|
||||
// heroMap.put(s, true);
|
||||
// continue;
|
||||
// }
|
||||
// // 包含类型,返回false
|
||||
// for (int i : value)
|
||||
// if (i == functionId) {
|
||||
// heroMap.put(s, true);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// boolean contains = heroMap.containsValue(false);
|
||||
// return !contains;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -493,10 +493,10 @@ public class ItemLogic {
|
|||
// 验证是否可以使用功能,恭送神将
|
||||
String[] heroIds = new String[heroIdsList.size()];
|
||||
heroIdsList.toArray(heroIds);
|
||||
boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.FAREWELL_HERO.getPropertyId(), heroIds);
|
||||
if (!useFunction){
|
||||
throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
|
||||
}
|
||||
// boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.FAREWELL_HERO.getPropertyId(), heroIds);
|
||||
// if (!useFunction){
|
||||
// throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
|
||||
// }
|
||||
// 逻辑
|
||||
User user = UserManager.getUser(iSession.getUid());
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
|
|
|
|||
|
|
@ -1277,7 +1277,7 @@ public class PlayerLogic {
|
|||
builder.addEquip(CBean2Proto.getFaxiangEquipProto(faxiang));
|
||||
}
|
||||
builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute));
|
||||
builder.setHero(CBean2Proto.getHeroByHongMeng(hero, userInMem.getHeroManager()));
|
||||
builder.setHero(CBean2Proto.getHero(hero));
|
||||
builder.setPlayerGiftLv(HeroLogic.getInstance().getGiftPotentialLv(userInMem, heroId));
|
||||
Map<Integer, Integer> guildSkill = userInMem.getGuildMyInfo().getGuildSkill();
|
||||
int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession();
|
||||
|
|
|
|||
|
|
@ -364,18 +364,18 @@ public class CBean2Proto {
|
|||
.setFirstOrMini(function);
|
||||
}
|
||||
|
||||
public static CommonProto.Hero getHero(Hero hero,HeroManager heroManager){
|
||||
// 鸿蒙阵装备同步
|
||||
Collection<Integer> equipList =hero.getEquipByPositionMap().values();
|
||||
if(equipList.isEmpty()){
|
||||
equipList = hero.getEquipByHongmengPositionMap(heroManager).values();
|
||||
}
|
||||
|
||||
CommonProto.Hero hero1 = getHero(hero);
|
||||
hero1.toBuilder().addAllEquipIdList(equipList);
|
||||
|
||||
return hero1;
|
||||
}
|
||||
// public static CommonProto.Hero getHero(Hero hero,HeroManager heroManager){
|
||||
// // 鸿蒙阵装备同步
|
||||
// Collection<Integer> equipList =hero.getEquipByPositionMap().values();
|
||||
// if(equipList.isEmpty()){
|
||||
// equipList = hero.getEquipByHongmengPositionMap(heroManager).values();
|
||||
// }
|
||||
//
|
||||
// CommonProto.Hero hero1 = getHero(hero);
|
||||
// hero1.toBuilder().addAllEquipIdList(equipList);
|
||||
//
|
||||
// return hero1;
|
||||
// }
|
||||
|
||||
public static CommonProto.Hero getHero(Hero hero){
|
||||
// 魂印
|
||||
|
|
@ -439,13 +439,13 @@ public class CBean2Proto {
|
|||
/***
|
||||
* 获取鸿蒙阵英雄属性
|
||||
*/
|
||||
public static CommonProto.Hero getHeroByHongMeng(Hero hero,HeroManager heroManager){
|
||||
CommonProto.Hero hero1 = getHero(hero,heroManager);
|
||||
CommonProto.Hero.Builder builder = hero1.toBuilder();
|
||||
builder.setLevel(hero.getLevel(heroManager));
|
||||
builder.setBreakId(hero.getBreakIdByHongMeng(heroManager));
|
||||
return builder.build();
|
||||
}
|
||||
// public static CommonProto.Hero getHeroByHongMeng(Hero hero,HeroManager heroManager){
|
||||
// CommonProto.Hero hero1 = getHero(hero,heroManager);
|
||||
// CommonProto.Hero.Builder builder = hero1.toBuilder();
|
||||
// builder.setLevel(hero.getLevel(heroManager));
|
||||
// builder.setBreakId(hero.getBreakIdByHongMeng(heroManager));
|
||||
// return builder.build();
|
||||
// }
|
||||
|
||||
/* public static CommonProto.Hero getRobotHero(SCHero scHero, SArenaRobotConfig sArenaRobotConfig) throws Exception {
|
||||
return CommonProto.Hero
|
||||
|
|
@ -642,6 +642,7 @@ public class CBean2Proto {
|
|||
return monster;
|
||||
}
|
||||
|
||||
@SuppressWarnings("StringBufferReplaceableByString")
|
||||
public static CommonProto.FightUnitInfo.Builder getMonster(SDuoDuiTower tower, int indexId) {
|
||||
StringBuilder monsterPropertyList = new StringBuilder();//火风水地光暗
|
||||
monsterPropertyList.append(tower.getLevel()).append("#"); //等级
|
||||
|
|
|
|||
Loading…
Reference in New Issue