鸿蒙阵
parent
ed1e5e1233
commit
6a1faf574c
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue