公会战
parent
07d68f5c69
commit
ed50688201
|
@ -116,6 +116,8 @@ public class RedisKey {
|
|||
public static final String FAMILY_FIGHT = "FAMILY_FIGHT" ;
|
||||
public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK";
|
||||
public static final String FAMILY_FIGHT_MATCHING_RANK ="FAMILY_FIGHT_MATCHING_RANK";
|
||||
//公会战进攻获得星数排行榜
|
||||
public static final String FAMILY_FIGHT_STAR_RANK = "FAMILY_FIGHT_STAR_RANK";
|
||||
|
||||
public static final String OPERATE_FAMILY = "OPERATE_FAMILY";
|
||||
public static final String OPERATE_FAMILY_APPLY = "OPERATE_FAMILY_APPLY";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildLogic;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.Family;
|
||||
|
@ -20,6 +20,6 @@ public class FamilyDefendDetailInfoHandler extends BaseHandler {
|
|||
byte[] bytes = netData.parseClientProtoNetData();
|
||||
Family.FamilyDefendDetailViewRequest request = Family.FamilyDefendDetailViewRequest.parseFrom(bytes);
|
||||
|
||||
GuildLogic.viewDefendDetailInfo(iSession,request.getPlayerId(), MessageTypeProto.MessageType.FAMILY_VIEW_DEFEND_DETAIL_RESPONSE);
|
||||
GuildFightLogic.viewDefendDetailInfo(iSession,request.getPlayerId(), MessageTypeProto.MessageType.FAMILY_VIEW_DEFEND_DETAIL_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildLogic;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.Family;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -18,6 +17,6 @@ public class FamilyDefendInfoHandler extends BaseHandler {
|
|||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
|
||||
GuildLogic.viewDefendInfo(iSession,MessageTypeProto.MessageType.FAMILY_VIEW_DEFEND_RESPONSE);
|
||||
GuildFightLogic.viewDefendInfo(iSession,MessageTypeProto.MessageType.FAMILY_VIEW_DEFEND_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.Family;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class FamilyFightAttackHandler extends BaseHandler<Family.FamilyFightAttackRequest> {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FAMILY_FIGHT_ATTACK_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, Family.FamilyFightAttackRequest proto) throws Exception {
|
||||
int attackUid = proto.getAttackUid();
|
||||
GuildFightLogic.familyFightResult(iSession,attackUid, MessageTypeProto.MessageType.FAMILY_FIGHT_ATTACK_RESPONSE);
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildLogic;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
|
@ -16,6 +16,6 @@ public class FamilyFightInfoHandler extends BaseHandler {
|
|||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
GuildLogic.viewFightInfo(iSession, MessageTypeProto.MessageType.FAMILY_FIGHT_INFO_RESPONSE);
|
||||
GuildFightLogic.viewFightInfo(iSession, MessageTypeProto.MessageType.FAMILY_FIGHT_INFO_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
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;
|
||||
|
||||
@Component
|
||||
public class FamilyPersonalResultHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FAMILY_PERSONAL_FIGHT_RESULT_REQUEST;
|
||||
}
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
GuildFightLogic.personalFightResult(iSession,MessageTypeProto.MessageType.FAMILY_PERSONAL_FIGHT_RESULT_RESPONSE);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildLogic;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.Family;
|
||||
|
@ -20,6 +20,6 @@ public class FamilyQuickSetDefendHandler extends BaseHandler {
|
|||
byte[] bytes = netData.parseClientProtoNetData();
|
||||
Family.FamilyQuickDefendRequest request = Family.FamilyQuickDefendRequest.parseFrom(bytes);
|
||||
|
||||
GuildLogic.quickSetDefend(iSession,request.getBuildId(),request.getUid(), MessageTypeProto.MessageType.FAMILY_QUICK_SET_DEFEND_RESPONSE);
|
||||
GuildFightLogic.quickSetDefend(iSession,request.getBuildId(),request.getUid(), MessageTypeProto.MessageType.FAMILY_QUICK_SET_DEFEND_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
public class FamilyRound {
|
||||
|
||||
public static final int FAMILY_FIGHT_START = 9;
|
||||
|
||||
public static final int FAMILY_FIGHT_DEFEND_END = 10;
|
||||
|
||||
public static final int FAMILY_FIGHT_MATCHING_END =11;
|
||||
|
||||
public static final int FAMILY_FIGHT_ATTACK_END = 12;
|
||||
|
||||
public static final int FAMILY_FIGHT_END = 13;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.ljsd.jieling.handler.family;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
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;
|
||||
|
||||
@Component
|
||||
public class FamilyRoundInfoHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.FAMILY_FIGHT_ROUND_INFO_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
GuildFightLogic.getFamilyFightRoundInfo(iSession, MessageTypeProto.MessageType.FAMILY_FIGHT_ROUND_INFO_RESPONSE);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,475 @@
|
|||
package com.ljsd.jieling.logic.family;
|
||||
|
||||
import com.ljsd.jieling.config.SGuildSetting;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.handler.family.FamilyRound;
|
||||
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.GuildInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.fight.CheckFight;
|
||||
import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
import com.ljsd.jieling.protocols.Family;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.FightDataUtil;
|
||||
import com.ljsd.jieling.util.MathUtils;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.TimeUtils;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class GuildFightLogic {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(GuildFightLogic.class);
|
||||
/**
|
||||
* 公会战状态
|
||||
*/
|
||||
private static int status;
|
||||
private static boolean startMatching;
|
||||
|
||||
/**
|
||||
* 查看工会布防信息
|
||||
*
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewDefendInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int gid = user.getPlayerInfoManager().getGuildId();
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
Family.FamilyDefendViewResponse.Builder response = Family.FamilyDefendViewResponse.newBuilder();
|
||||
for (Map.Entry<Integer, Integer> entry : defendInfo.entrySet()) {
|
||||
Family.FamilyDefendInfo.Builder defend = Family.FamilyDefendInfo.newBuilder();
|
||||
defend.setStarCount(5);
|
||||
defend.setUid(entry.getKey());
|
||||
defend.setBuildId(entry.getValue());
|
||||
defend.setCurForce(HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()), 501, false));
|
||||
response.addInfo(defend);
|
||||
}
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response.build(), true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看公会具体布防信息
|
||||
*
|
||||
* @param session
|
||||
* @param uid
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewDefendDetailInfo(ISession session, int uid, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(uid);
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
FamilyFightInfo fightInfo = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(guildId), String.valueOf(uid), FamilyFightInfo.class);
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
CommonProto.Team.Builder team = CommonProto.Team.newBuilder();
|
||||
CommonProto.TeamOneTeamInfo.Builder oneInfo = CommonProto.TeamOneTeamInfo.newBuilder();
|
||||
for(Map.Entry<String, FamilyHeroInfo> entry:fightInfo.getHeroAttribute().entrySet()){
|
||||
int templateId = entry.getValue().getTempleteId();
|
||||
team.addHeroTid(templateId);
|
||||
Map<Integer, Integer> attribute = entry.getValue().getAttribute();
|
||||
if(status==3){
|
||||
int remainHp = attribute.get(HeroAttributeEnum.CurHP.getPropertyId())*100/attribute.get(HeroAttributeEnum.Hp.getPropertyId());
|
||||
LOGGER.info("血量为百分之{}",remainHp);
|
||||
oneInfo.addRemainHp(remainHp);
|
||||
}
|
||||
}
|
||||
oneInfo.setTeam(team);
|
||||
oneInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user, 501, false));
|
||||
if (teamPosManager.getTeamPosForPoken().get(1) != null && teamPosManager.getTeamPosForPoken().get(1).size() > 0) {
|
||||
for (TeamPosForPokenInfo posForPokenInfo : teamPosManager.getTeamPosForPoken().get(1)) {
|
||||
oneInfo.addPokemonInfos(posForPokenInfo.getPokenId());
|
||||
}
|
||||
}
|
||||
Family.FamilyDefendDetailViewResponse.Builder response = Family.FamilyDefendDetailViewResponse.newBuilder();
|
||||
response.setTeamInfo(oneInfo);
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response.build(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键布防、调整布防
|
||||
*
|
||||
* @param session
|
||||
* @param messageType
|
||||
*/
|
||||
public static void quickSetDefend(ISession session, int buildId, int uid, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(uid);
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
if (teamPosManager.getTeamPosForHero().get(501) == null || teamPosManager.getTeamPosForHero().get(501).size() < 1) {
|
||||
teamPosManager.updateTeamPosByTeamId(501, teamPosManager.getTeamPosForHero().get(1));
|
||||
}
|
||||
if (buildId == 0) {
|
||||
buildId = 1;
|
||||
}
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
|
||||
SGuildSetting guildSetting = SGuildSetting.sGuildSetting;
|
||||
int memberType = GuildLogic.getMemberType(uid, guildInfo.getMembers());
|
||||
guildInfo.updateDefendInfo(uid, buildId);
|
||||
Family.FamilyDefendInfo.Builder defend = Family.FamilyDefendInfo.newBuilder();
|
||||
defend.setBuildId(buildId);
|
||||
defend.setUid(uid);
|
||||
defend.setStarCount(guildSetting.getStarNum()[memberType-1]);
|
||||
defend.setCurForce(HeroLogic.getInstance().calTeamTotalForce(user, 501, false));
|
||||
GuildLogic.sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_QUICK_SET_DEFEND_INDICATION, defend.build());
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true);
|
||||
}
|
||||
|
||||
|
||||
private static Family.FamilyFightInfo familyFightDetailInfo(int guildId) throws Exception {
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
Family.FamilyFightInfo.Builder fightInfo = Family.FamilyFightInfo.newBuilder();
|
||||
fightInfo.setGid(guildId);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
Family.FamilyBuildBuffInfo.Builder buffInfo = Family.FamilyBuildBuffInfo.newBuilder();
|
||||
buffInfo.setBuildId(i + 1);
|
||||
buffInfo.setBuffId(i + 1);
|
||||
fightInfo.addBuildBuff(buffInfo);
|
||||
}
|
||||
for (Map.Entry<Integer, Integer> entry : defendInfo.entrySet()) {
|
||||
Family.FamilyFightPlayerInfo.Builder playerInfo = Family.FamilyFightPlayerInfo.newBuilder();
|
||||
playerInfo.setBuildId(entry.getValue());
|
||||
playerInfo.setStarCount(5);
|
||||
PlayerManager playerManager = UserManager.getUser(entry.getKey()).getPlayerInfoManager();
|
||||
Family.FamilyUserInfo.Builder userInfo = Family.FamilyUserInfo.newBuilder()
|
||||
.setRoleUid(entry.getKey())
|
||||
.setUserName(playerManager.getNickName())
|
||||
.setUserLevel(playerManager.getLevel())
|
||||
.setPosition(2)
|
||||
.setSoulForce(HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()), 501, false))
|
||||
.setHead(playerManager.getHead())
|
||||
.setFrame(playerManager.getHeadFrame())
|
||||
.setContribute(0);
|
||||
playerInfo.setUserInfo(userInfo.build());
|
||||
fightInfo.addUser(playerInfo);
|
||||
}
|
||||
return fightInfo.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 公会战查看双方对战信息
|
||||
*
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewFightInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
int enemyId = getEnemyFamily(guildId);
|
||||
Family.FamilyFightInfoResponse.Builder builder = Family.FamilyFightInfoResponse.newBuilder();
|
||||
builder.addInfo(familyFightDetailInfo(guildId));
|
||||
builder.addInfo(familyFightDetailInfo(enemyId));
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 公会战计入缓存
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void familyFightMatching() throws Exception {
|
||||
Set<Integer> guildIds = GuilidManager.guildInfoMap.keySet();
|
||||
if (guildIds.size() < 1) {
|
||||
return;
|
||||
}
|
||||
RedisUtil redisUtil = RedisUtil.getInstence();
|
||||
String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_RANK, "", false);
|
||||
Set<String> rank = redisUtil.getZset(key, 0, redisUtil.getZsetSize(key));
|
||||
for (Integer gid : guildIds) {
|
||||
//匹配处理
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
|
||||
if (guildInfo.getDefendInfo() != null && guildInfo.getDefendInfo().size() > 0) {
|
||||
String matchingKey = RedisKey.getKey(RedisKey.FAMILY_FIGHT_MATCHING_RANK, "", false);
|
||||
int random = MathUtils.randomInt(30);
|
||||
if (!rank.contains(gid.toString())) {
|
||||
redisUtil.zsetAddOne(key, gid.toString(), 100);
|
||||
redisUtil.zsetAddOne(matchingKey, gid.toString(), 100 + random);
|
||||
} else {
|
||||
Double zSetScore = redisUtil.getZSetScore(RedisKey.FAMILY_FIGHT_RANK, "", gid.toString());
|
||||
redisUtil.zsetAddOne(matchingKey, gid.toString(), zSetScore + random);
|
||||
}
|
||||
}
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
if (defendInfo == null || defendInfo.size() < 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//血量记录处理,星级记录处理
|
||||
SGuildSetting guildSetting = SGuildSetting.sGuildSetting;
|
||||
for (Map.Entry<Integer, Integer> entry : defendInfo.entrySet()) {
|
||||
User user = UserManager.getUser(entry.getKey());
|
||||
int memberType = GuildLogic.getMemberType(entry.getKey(), guildInfo.getMembers());
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
List<TeamPosHeroInfo> teamPosHeroInfos = teamPosManager.getTeamPosForHero().get(501);
|
||||
Iterator<TeamPosHeroInfo> it = teamPosHeroInfos.iterator();
|
||||
FamilyFightInfo fightInfo = new FamilyFightInfo();
|
||||
Map<String, FamilyHeroInfo> heroAllAttribute = new HashMap<>();
|
||||
while (it.hasNext()) {
|
||||
TeamPosHeroInfo heroInfo = it.next();
|
||||
Hero hero = heroManager.getHero(heroInfo.getHeroId());
|
||||
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, 501);
|
||||
heroAllAttribute.put(heroInfo.getHeroId(), new FamilyHeroInfo(hero.getTemplateId(), hero.getLevel(), heroAttributeMap));
|
||||
}
|
||||
fightInfo.setHeroAttribute(heroAllAttribute);
|
||||
fightInfo.setStarCount(guildSetting.getStarNum()[memberType-1]);
|
||||
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(guildInfo.getId()), String.valueOf(entry.getKey()), fightInfo);
|
||||
}
|
||||
}
|
||||
for (Integer gid : guildIds) {
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
|
||||
int enemyFamily = getEnemyFamily(guildInfo.getId());
|
||||
if (enemyFamily == -1) {
|
||||
continue;
|
||||
}
|
||||
GuildInfo enemyInfo = GuilidManager.guildInfoMap.get(enemyFamily);
|
||||
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder().setId(enemyInfo.getId()).setLevel(enemyInfo.getLevel()).setName(enemyInfo.getName()).setPictureId(1).build();
|
||||
GuildLogic.sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_FIGHT_MATCHING_SUCCESS_INDICATION, familyInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户公会的敌对公会
|
||||
*
|
||||
* @param myFamilyId
|
||||
* @return
|
||||
*/
|
||||
private static int getEnemyFamily(int myFamilyId) {
|
||||
RedisUtil redisUtil = RedisUtil.getInstence();
|
||||
Long matchingRank = redisUtil.getZSetreverseRank(RedisKey.FAMILY_FIGHT_MATCHING_RANK, "", String.valueOf(myFamilyId));
|
||||
int enmeyFamilyId;
|
||||
long rank;
|
||||
if (matchingRank % 2 == 1) {
|
||||
rank = matchingRank;
|
||||
} else {
|
||||
rank = matchingRank - 2;
|
||||
}
|
||||
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FAMILY_FIGHT_MATCHING_RANK, "", rank, rank);
|
||||
if (zsetreverseRangeWithScores.size() != 1) {
|
||||
return -1;
|
||||
} else {
|
||||
String value = zsetreverseRangeWithScores.iterator().next().getValue();
|
||||
enmeyFamilyId = Integer.parseInt(value);
|
||||
}
|
||||
return enmeyFamilyId;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 战斗之后数据更新
|
||||
*
|
||||
* @param userAttack
|
||||
* @param userDefend
|
||||
*/
|
||||
public static void familyFightResult(ISession session, int defendUid, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User userAttack = UserManager.getUser(session.getUid());
|
||||
User userDefend = UserManager.getUser(defendUid);
|
||||
int defendGuildId = userDefend.getPlayerInfoManager().getGuildId();
|
||||
RedisUtil redisUtil = RedisUtil.getInstence();
|
||||
FamilyFightInfo defendInfo = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), FamilyFightInfo.class);
|
||||
Map<String, FamilyHeroInfo> heroAttribute = defendInfo.getHeroAttribute();
|
||||
int seed = (int) (System.currentTimeMillis() / 1000);
|
||||
List<CommonProto.FightUnitInfo> heroDefendFightInfos = new ArrayList<>();
|
||||
for (Map.Entry<String, FamilyHeroInfo> entry : heroAttribute.entrySet()) {
|
||||
Hero hero = userDefend.getHeroManager().getHero(entry.getKey());
|
||||
if (hero == null) {
|
||||
continue;
|
||||
}
|
||||
StringBuilder skillSb = new StringBuilder();
|
||||
StringBuilder propertySb = new StringBuilder();
|
||||
String heroSkill = HeroLogic.getInstance().getHeroSkills(userDefend, hero, skillSb).toString();
|
||||
String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero, entry.getValue().getAttribute()).toString();
|
||||
CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo
|
||||
.newBuilder()
|
||||
.setUnitId(Integer.toString(hero.getTemplateId()))
|
||||
.setUnitSkillIds(heroSkill.substring(0, heroSkill.length() - 1))
|
||||
.setProperty(property.substring(0, property.length() - 1))
|
||||
.build();
|
||||
heroDefendFightInfos.add(heroFightInfo);
|
||||
}
|
||||
CommonProto.FightTeamInfo fightDefendTeamInfo = CommonProto.FightTeamInfo.
|
||||
newBuilder()
|
||||
.addAllFightUnitList(heroDefendFightInfos)
|
||||
.setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(userDefend, 1))
|
||||
.build();
|
||||
CommonProto.FightTeamInfo fightAttackTeamInfo = BehaviorUtil.getFightTeamInfo(userAttack, 502, true);
|
||||
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightAttackTeamInfo, fightDefendTeamInfo);
|
||||
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
||||
|
||||
int[] fightResult = CheckFight.getInstance().checkFight(seed, 1000, getFightData, getOptionData);
|
||||
for (int i = 0; i < fightResult.length; i++) {
|
||||
System.out.println(fightResult[i]);
|
||||
}
|
||||
int index = 2;
|
||||
// 战斗之后数据处理
|
||||
for (Map.Entry<String, FamilyHeroInfo> entry : heroAttribute.entrySet()) {
|
||||
FamilyHeroInfo value = entry.getValue();
|
||||
Map<Integer, Integer> attribute = value.getAttribute();
|
||||
if(fightResult[0]==0) {
|
||||
attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), fightResult[index]);
|
||||
}else{
|
||||
attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), 0);
|
||||
}
|
||||
value.setAttribute(attribute);
|
||||
index++;
|
||||
}
|
||||
|
||||
|
||||
defendInfo.setHeroAttribute(heroAttribute);
|
||||
if (fightResult[0] == 0) {
|
||||
defendInfo.setStarCount(defendInfo.getStarCount() - 1);
|
||||
}
|
||||
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), defendInfo);
|
||||
//获得星数处理
|
||||
int attackGuildId = userAttack.getPlayerInfoManager().getGuildId();
|
||||
String attackRankKey = RedisKey.getKey(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(attackGuildId), false);
|
||||
Double starCount = redisUtil.getZSetScore(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(attackGuildId), String.valueOf(userAttack.getId()));
|
||||
redisUtil.zsetAddOne(attackRankKey,String.valueOf(userAttack.getId()),starCount+1);
|
||||
Family.FamilyFightAttackResponse response = Family.FamilyFightAttackResponse.newBuilder().setResult(fightResult[0]).setStarCount(1).build();
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取公会战阶段信息
|
||||
*
|
||||
* @param session
|
||||
* @param messageType
|
||||
*/
|
||||
public static void getFamilyFightRoundInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
int startFightTime;
|
||||
int roundStartTime = 0;
|
||||
int roundEndTime = 0;
|
||||
int hour = TimeUtils.getHourOfDay();
|
||||
//活动开启时间
|
||||
if (hour < FamilyRound.FAMILY_FIGHT_END) {
|
||||
startFightTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_START) / 1000);
|
||||
} else {
|
||||
startFightTime = (int) ((TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_START) + TimeUtils.DAY) / 1000);
|
||||
}
|
||||
//阶段以及时间段
|
||||
if (hour >= FamilyRound.FAMILY_FIGHT_START && hour < FamilyRound.FAMILY_FIGHT_DEFEND_END) {
|
||||
roundStartTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_START) / 1000);
|
||||
roundEndTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_DEFEND_END) / 1000);
|
||||
} else if (hour >= FamilyRound.FAMILY_FIGHT_DEFEND_END && hour < FamilyRound.FAMILY_FIGHT_MATCHING_END) {
|
||||
roundStartTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_DEFEND_END) / 1000);
|
||||
roundEndTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_MATCHING_END) / 1000);
|
||||
} else if (hour >= FamilyRound.FAMILY_FIGHT_MATCHING_END && hour < FamilyRound.FAMILY_FIGHT_ATTACK_END) {
|
||||
roundStartTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_MATCHING_END) / 1000);
|
||||
roundEndTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_ATTACK_END) / 1000);
|
||||
} else if (hour >= FamilyRound.FAMILY_FIGHT_ATTACK_END && hour < FamilyRound.FAMILY_FIGHT_END) {
|
||||
roundStartTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_ATTACK_END) / 1000);
|
||||
roundEndTime = (int) (TimeUtils.getAppointTime(FamilyRound.FAMILY_FIGHT_END) / 1000);
|
||||
}
|
||||
int enemyFamily = getEnemyFamily(UserManager.getUser(session.getUid()).getPlayerInfoManager().getGuildId());
|
||||
|
||||
Family.FamilyFightRoundResponse.Builder response = Family.FamilyFightRoundResponse.newBuilder()
|
||||
.setType(status)
|
||||
.setStartTime(startFightTime)
|
||||
.setRoundStartTime(roundStartTime)
|
||||
.setRoundEndTime(roundEndTime)
|
||||
.setJoinType(1);
|
||||
if (enemyFamily != -1) {
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(enemyFamily);
|
||||
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder().setId(guildInfo.getId()).setLevel(guildInfo.getLevel()).setName(guildInfo.getName()).setPictureId(1).build();
|
||||
response.setEnemy(familyInfo);
|
||||
}
|
||||
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response.build(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 公会战状态更改
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void familyFightStatus() throws Exception {
|
||||
if (status == 2 && startMatching) {
|
||||
familyFightMatching();
|
||||
startMatching = false;
|
||||
}
|
||||
int hour = TimeUtils.getHourOfDay();
|
||||
if (status == 0 && hour == FamilyRound.FAMILY_FIGHT_START) {
|
||||
LOGGER.info("阶段变为布防");
|
||||
status = 1;
|
||||
} else if (status == 1 && hour == FamilyRound.FAMILY_FIGHT_DEFEND_END) {
|
||||
status = 2;
|
||||
LOGGER.info("阶段变为匹配");
|
||||
startMatching = true;
|
||||
} else if (status == 2 && hour == FamilyRound.FAMILY_FIGHT_MATCHING_END) {
|
||||
status = 3;
|
||||
LOGGER.info("阶段变为进攻");
|
||||
|
||||
} else if (status == 3 && hour == FamilyRound.FAMILY_FIGHT_ATTACK_END) {
|
||||
status = 4;
|
||||
LOGGER.info("阶段变为结算");
|
||||
|
||||
} else if (status == 4 && hour == FamilyRound.FAMILY_FIGHT_END) {
|
||||
|
||||
status = 0;
|
||||
LOGGER.info("阶段变为等待");
|
||||
} else if (hour > FamilyRound.FAMILY_FIGHT_END || hour < FamilyRound.FAMILY_FIGHT_START) {
|
||||
status = 0;
|
||||
removeMatchingInfo();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*公会战结束删除匹配信息
|
||||
*/
|
||||
private static void removeMatchingInfo(){
|
||||
RedisUtil redisUtil = RedisUtil.getInstence();
|
||||
String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_MATCHING_RANK,"",false);
|
||||
redisUtil.removeZSetRangeByRank(key,0,redisUtil.getZsetSize(key));
|
||||
}
|
||||
/**
|
||||
* 公会战结算
|
||||
*/
|
||||
public void accountFamilyFightResult() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询该公会个人战绩
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void personalFightResult(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
int guildId = UserManager.getUser(session.getUid()).getPlayerInfoManager().getGuildId();
|
||||
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(guildId), 0, 20);
|
||||
Iterator<ZSetOperations.TypedTuple<String>> it = zsetreverseRangeWithScores.iterator();
|
||||
int rank = 1;
|
||||
Family.PersonalFightResultResponse.Builder response = Family.PersonalFightResultResponse.newBuilder();
|
||||
while (it.hasNext()){
|
||||
ZSetOperations.TypedTuple<String> personal = it.next();
|
||||
int uid = Integer.parseInt(personal.getValue());
|
||||
PlayerManager playerInfoManager = UserManager.getUser(uid).getPlayerInfoManager();
|
||||
Family.PersonalFightResult.Builder fightResult = Family.PersonalFightResult.newBuilder()
|
||||
.setRank(rank)
|
||||
.setAttackCount(2)
|
||||
.setUid(uid)
|
||||
.setHead(1)
|
||||
.setHeadFrame(playerInfoManager.getHeadFrame())
|
||||
.setPosition(1)
|
||||
.setName(playerInfoManager.getNickName())
|
||||
.setStarCount(personal.getScore().intValue());
|
||||
response.addResult(fightResult.build());
|
||||
rank++;
|
||||
}
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import com.ljsd.jieling.db.redis.RedisKey;
|
|||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.handler.family.FamilyRound;
|
||||
import com.ljsd.jieling.handler.map.MapManager;
|
||||
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
|
@ -66,7 +67,6 @@ public class GuildLogic {
|
|||
for(Set<Integer> members : guildInfo.getMembers().values()){
|
||||
for(int uidOfMember : members){
|
||||
User userMember = UserManager.getUser(uidOfMember);
|
||||
userMember.getGuildMyInfo().move(System.currentTimeMillis());
|
||||
builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember));
|
||||
}
|
||||
}
|
||||
|
@ -104,8 +104,6 @@ public class GuildLogic {
|
|||
.setFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(user))
|
||||
.build();
|
||||
MessageUtil.sendMessage(session,1,msgId,build,true);
|
||||
familyFightMatching();
|
||||
|
||||
}
|
||||
|
||||
public static String checkForCreateGuild( User user,String familyName,String announce) throws Exception {
|
||||
|
@ -232,7 +230,6 @@ public class GuildLogic {
|
|||
addGuildLog(guildInfo.getId(),GuildDef.Log.JOIN,user.getPlayerInfoManager().getNickName());
|
||||
Family.FamilyJoinIndicaion build = Family.FamilyJoinIndicaion.newBuilder().setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)).setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, GlobalsDef.MEMBER)).build();
|
||||
Family.FamilyJoinResponse response = Family.FamilyJoinResponse.newBuilder().setFamilyJoinIndicaion(build).build();
|
||||
|
||||
MessageUtil.sendMessage(session,1,msgId,response,true);
|
||||
}
|
||||
|
||||
|
@ -402,8 +399,6 @@ public class GuildLogic {
|
|||
targetUser.getPlayerInfoManager().setGuildId(guildInfo.getId());
|
||||
GuilidManager.removeMineApplyGuildInfos(guildInfo.getId(),applyId);
|
||||
GuilidManager.removeOneApplyGuildInfos(guildInfo.getId(),applyId);
|
||||
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(targetUser);
|
||||
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
|
||||
}catch (Exception e){
|
||||
LOGGER.error("the exception={}",e);
|
||||
}finally {
|
||||
|
@ -707,21 +702,16 @@ public class GuildLogic {
|
|||
return;
|
||||
}
|
||||
GuildMyInfo guildMyInfo = user.getGuildMyInfo();
|
||||
|
||||
|
||||
user.getGuildMyInfo().move(System.currentTimeMillis());
|
||||
LOGGER.info("old ={},path={}",guildMyInfo.getCurPos(),path);
|
||||
LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path);
|
||||
boolean continuous = CellUtil.isContinuous(guildMyInfo.getCurPos(),path);
|
||||
if(!continuous){
|
||||
MessageUtil.sendErrorResponse(session,0,msgId,"路线有误");
|
||||
return;
|
||||
}
|
||||
user.getGuildMyInfo().move(path);
|
||||
LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path);
|
||||
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(user);
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
|
||||
MessageUtil.sendMessage(session,1,msgId,null,true);
|
||||
}
|
||||
|
||||
public static void updateMyPos(User user) {
|
||||
|
@ -778,90 +768,13 @@ public class GuildLogic {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看工会布防信息
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewDefendInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int gid = user.getPlayerInfoManager().getGuildId();
|
||||
GuildInfo guildInfo =GuilidManager.guildInfoMap.get(gid);
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
Family.FamilyDefendViewResponse.Builder response = Family.FamilyDefendViewResponse.newBuilder();
|
||||
for(Map.Entry<Integer, Integer> entry:defendInfo.entrySet()){
|
||||
Family.FamilyDefendInfo.Builder defend = Family.FamilyDefendInfo.newBuilder();
|
||||
defend.setStarCount(5);
|
||||
defend.setUid(entry.getKey());
|
||||
defend.setBuildId(entry.getValue());
|
||||
defend.setCurForce(HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()),501,false));
|
||||
response.addInfo(defend);
|
||||
}
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看公会具体布防信息
|
||||
* @param session
|
||||
* @param uid
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewDefendDetailInfo(ISession session,int uid,MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(uid);
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
CommonProto.Team.Builder team = CommonProto.Team.newBuilder();
|
||||
for (TeamPosHeroInfo heroInfo:teamPosManager.getTeamPosForHero().get(501)) {
|
||||
int templateId = user.getHeroManager().getHero(heroInfo.getHeroId()).getTemplateId();
|
||||
team.addHeroTid(templateId);
|
||||
}
|
||||
CommonProto.TeamOneTeamInfo.Builder oneInfo = CommonProto.TeamOneTeamInfo.newBuilder()
|
||||
.setTeam(team);
|
||||
oneInfo.setTotalForce(HeroLogic.getInstance().calTeamTotalForce(user,501,false));
|
||||
if(teamPosManager.getTeamPosForPoken().get(1)!=null&&teamPosManager.getTeamPosForPoken().get(1).size()>0){
|
||||
for(TeamPosForPokenInfo posForPokenInfo:teamPosManager.getTeamPosForPoken().get(1)){
|
||||
oneInfo.addPokemonInfos(posForPokenInfo.getPokenId());
|
||||
}
|
||||
}
|
||||
Family.FamilyDefendDetailViewResponse.Builder response = Family.FamilyDefendDetailViewResponse.newBuilder();
|
||||
response.setTeamInfo(oneInfo);
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
}
|
||||
/**
|
||||
* 一键布防、调整布防
|
||||
* @param session
|
||||
* @param messageType
|
||||
*/
|
||||
public static void quickSetDefend(ISession session,int buildId,int uid, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(uid);
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
if(teamPosManager.getTeamPosForHero().get(501)==null||teamPosManager.getTeamPosForHero().get(501).size()<1){
|
||||
teamPosManager.updateTeamPosByTeamId(501,teamPosManager.getTeamPosForHero().get(1));
|
||||
}
|
||||
if(buildId==0){
|
||||
buildId = 1;
|
||||
}
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
|
||||
guildInfo.updateDefendInfo(uid,buildId);
|
||||
Family.FamilyDefendInfo.Builder defend = Family.FamilyDefendInfo.newBuilder();
|
||||
defend.setBuildId(buildId);
|
||||
defend.setUid(uid);
|
||||
defend.setStarCount(5);
|
||||
defend.setCurForce(HeroLogic.getInstance().calTeamTotalForce(user,501,false));
|
||||
sendIndicationToMember(guildInfo,MessageTypeProto.MessageType.FAMILY_QUICK_SET_DEFEND_INDICATION,defend.build());
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 给公会所有在线成员发送indication
|
||||
* @param guildInfo
|
||||
* @param messageType
|
||||
* @param generatedMessage
|
||||
*/
|
||||
private static void sendIndicationToMember(GuildInfo guildInfo, MessageTypeProto.MessageType messageType, GeneratedMessage generatedMessage){
|
||||
public static void sendIndicationToMember(GuildInfo guildInfo, MessageTypeProto.MessageType messageType, GeneratedMessage generatedMessage){
|
||||
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
|
||||
for(Set<Integer> items : members.values()){
|
||||
for(Integer sendUid : items){
|
||||
|
@ -872,159 +785,4 @@ public class GuildLogic {
|
|||
}
|
||||
}
|
||||
}
|
||||
private static Family.FamilyFightInfo familyFightDetailInfo(int guildId) throws Exception {
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
Family.FamilyFightInfo.Builder fightInfo = Family.FamilyFightInfo.newBuilder();
|
||||
fightInfo.setGid(guildId);
|
||||
for(int i = 0 ; i <3 ;i ++){
|
||||
Family.FamilyBuildBuffInfo.Builder buffInfo = Family.FamilyBuildBuffInfo.newBuilder();
|
||||
buffInfo.setBuildId(i+1);
|
||||
buffInfo.setBuffId(i+1);
|
||||
fightInfo.addBuildBuff(buffInfo);
|
||||
}
|
||||
for(Map.Entry<Integer, Integer> entry:defendInfo.entrySet()){
|
||||
Family.FamilyFightPlayerInfo.Builder playerInfo = Family.FamilyFightPlayerInfo.newBuilder();
|
||||
playerInfo.setBuildId(entry.getValue());
|
||||
playerInfo.setStarCount(5);
|
||||
PlayerManager playerManager = UserManager.getUser(entry.getKey()).getPlayerInfoManager();
|
||||
Family.FamilyUserInfo.Builder userInfo =Family.FamilyUserInfo.newBuilder()
|
||||
.setRoleUid(entry.getKey())
|
||||
.setUserName(playerManager.getNickName())
|
||||
.setUserLevel(playerManager.getLevel())
|
||||
.setPosition(2)
|
||||
.setSoulForce(HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()),501,false))
|
||||
.setHead(playerManager.getHead())
|
||||
.setFrame(playerManager.getHeadFrame())
|
||||
.setContribute(0);
|
||||
playerInfo.setUserInfo(userInfo.build());
|
||||
fightInfo.addUser(playerInfo);
|
||||
}
|
||||
return fightInfo.build();
|
||||
}
|
||||
/**
|
||||
* 公会战查看双方对战信息
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void viewFightInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
int enemyId = 13;
|
||||
if(guildId==13){
|
||||
enemyId = 14;
|
||||
}
|
||||
Family.FamilyFightInfoResponse.Builder builder = Family.FamilyFightInfoResponse.newBuilder();
|
||||
builder.addInfo(familyFightDetailInfo(guildId));
|
||||
builder.addInfo(familyFightDetailInfo(enemyId));
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true);
|
||||
|
||||
}
|
||||
/**
|
||||
* 公会战计入缓存
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void familyFightMatching() throws Exception {
|
||||
Set<Integer> guildIds= GuilidManager.guildInfoMap.keySet();
|
||||
if(guildIds.size()<1){
|
||||
return;
|
||||
}
|
||||
RedisUtil redisUtil = RedisUtil.getInstence();
|
||||
Set<String> rank = redisUtil.getZset(RedisKey.FAMILY_FIGHT_RANK, 0, redisUtil.getZsetSize(RedisKey.FAMILY_FIGHT_RANK));
|
||||
for(Integer gid:guildIds){
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
|
||||
if(guildInfo.getDefendInfo()!=null&&guildInfo.getDefendInfo().size()>0) {
|
||||
if (!rank.contains(gid.toString())) {
|
||||
String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_MATCHING_RANK, gid.toString(), false);
|
||||
redisUtil.zsetAddOne(key, gid.toString(), 100);
|
||||
} else {
|
||||
Double zSetScore = redisUtil.getZSetScore(RedisKey.FAMILY_FIGHT_RANK, "", gid.toString());
|
||||
redisUtil.zsetAddOne(RedisKey.FAMILY_FIGHT_MATCHING_RANK, gid.toString(), zSetScore);
|
||||
}
|
||||
}
|
||||
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
|
||||
if(defendInfo==null||defendInfo.size()<1){
|
||||
continue;
|
||||
}
|
||||
for(Map.Entry<Integer,Integer> entry:defendInfo.entrySet()){
|
||||
User user = UserManager.getUser(entry.getKey());
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
TeamPosManager teamPosManager = user.getTeamPosManager();
|
||||
List<TeamPosHeroInfo> teamPosHeroInfos = teamPosManager.getTeamPosForHero().get(501);
|
||||
Iterator<TeamPosHeroInfo> it = teamPosHeroInfos.iterator();
|
||||
FamilyFightInfo fightInfo = new FamilyFightInfo();
|
||||
Map<String ,FamilyHeroInfo> heroAllAttribute = new HashMap<>();
|
||||
while (it.hasNext()){
|
||||
TeamPosHeroInfo heroInfo = it.next();
|
||||
Hero hero = heroManager.getHero(heroInfo.getHeroId());
|
||||
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false,501);
|
||||
heroAllAttribute.put(heroInfo.getHeroId(),new FamilyHeroInfo(hero.getTemplateId(),hero.getLevel(),heroAttributeMap));
|
||||
}
|
||||
fightInfo.setHeroAttribute(heroAllAttribute);
|
||||
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT,String.valueOf(guildInfo.getId()),String.valueOf(entry.getKey()),fightInfo);
|
||||
}
|
||||
}
|
||||
// redisUtil.getZset(key,0, redisUtil.getZsetSize(RedisKey.FAMILY_FIGHT_RANK));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 战斗之后数据更新
|
||||
* @param userAttack
|
||||
* @param userDefend
|
||||
*/
|
||||
public void familyFightResult(User userAttack,User userDefend){
|
||||
int defendGuildId =userDefend.getPlayerInfoManager().getGuildId();
|
||||
FamilyFightInfo defendInfo = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), FamilyFightInfo.class);
|
||||
Map<String, FamilyHeroInfo> heroAttribute = defendInfo.getHeroAttribute();
|
||||
int seed = (int)(System.currentTimeMillis()/1000);
|
||||
List<CommonProto.FightUnitInfo> heroDefendFightInfos = new ArrayList<>();
|
||||
for (Map.Entry<String, FamilyHeroInfo> entry : heroAttribute.entrySet()) {
|
||||
Hero hero = userDefend.getHeroManager().getHero(entry.getKey());
|
||||
if (hero == null) {
|
||||
continue;
|
||||
}
|
||||
StringBuilder skillSb = new StringBuilder();
|
||||
StringBuilder propertySb = new StringBuilder();
|
||||
String heroSkill = HeroLogic.getInstance().getHeroSkills(userDefend,hero,skillSb).toString();
|
||||
String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb,hero,entry.getValue().getAttribute()).toString();
|
||||
CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo
|
||||
.newBuilder()
|
||||
.setUnitId(Integer.toString(hero.getTemplateId()))
|
||||
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
|
||||
.setProperty(property.substring(0, property.length()-1))
|
||||
.build();
|
||||
heroDefendFightInfos.add(heroFightInfo);
|
||||
}
|
||||
CommonProto.FightTeamInfo fightDefendTeamInfo = CommonProto.FightTeamInfo.
|
||||
newBuilder()
|
||||
.addAllFightUnitList(heroDefendFightInfos)
|
||||
.setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(userDefend,1))
|
||||
.build();
|
||||
CommonProto.FightTeamInfo fightAttackTeamInfo = BehaviorUtil.getFightTeamInfo(userAttack, 502, true);
|
||||
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightAttackTeamInfo, fightDefendTeamInfo);
|
||||
LuaValue getOptionData = FightDataUtil.getOptionData("");
|
||||
|
||||
int[] fightResult = CheckFight.getInstance().checkFight(seed,1000,getFightData,getOptionData);
|
||||
int index = 2;
|
||||
// 战斗之后数据处理
|
||||
for (Map.Entry<String, FamilyHeroInfo> entry : heroAttribute.entrySet()) {
|
||||
FamilyHeroInfo value = entry.getValue();
|
||||
Map<Integer, Integer> attribute = value.getAttribute();
|
||||
attribute.put(HeroAttributeEnum.CurHP.getPropertyId(),fightResult[index]);
|
||||
value.setAttribute(attribute);
|
||||
index++;
|
||||
}
|
||||
defendInfo.setHeroAttribute(heroAttribute);
|
||||
if(fightResult[0]==0){
|
||||
defendInfo.setStarCount(defendInfo.getStarCount()-1);
|
||||
}
|
||||
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_FIGHT,String.valueOf(defendGuildId),String.valueOf(userDefend.getId()),defendInfo);
|
||||
}
|
||||
public void accountFamilyFightResult(){
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.ljsd.jieling.logic.OnlineUserManager;
|
|||
import com.ljsd.jieling.logic.STableManager;
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.logic.fight.CheckFight;
|
||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||
import com.ljsd.jieling.logic.store.StoreLogic;
|
||||
|
@ -49,6 +50,7 @@ public class MinuteTask extends Thread {
|
|||
fiveMinuteOnlineSend();
|
||||
CheckFight.getInstance().luaHotFix();
|
||||
MongoUtil.getInstence().lastUpdate();
|
||||
GuildFightLogic.familyFightStatus();
|
||||
LOGGER.info("MinuteTask end...");
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("e",e);
|
||||
|
|
Loading…
Reference in New Issue