公会战
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 = "FAMILY_FIGHT" ;
|
||||||
public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK";
|
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_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 = "OPERATE_FAMILY";
|
||||||
public static final String OPERATE_FAMILY_APPLY = "OPERATE_FAMILY_APPLY";
|
public static final String OPERATE_FAMILY_APPLY = "OPERATE_FAMILY_APPLY";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.ljsd.jieling.handler.family;
|
package com.ljsd.jieling.handler.family;
|
||||||
|
|
||||||
import com.ljsd.jieling.handler.BaseHandler;
|
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.netty.cocdex.PacketNetData;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.Family;
|
import com.ljsd.jieling.protocols.Family;
|
||||||
|
@ -20,6 +20,6 @@ public class FamilyDefendDetailInfoHandler extends BaseHandler {
|
||||||
byte[] bytes = netData.parseClientProtoNetData();
|
byte[] bytes = netData.parseClientProtoNetData();
|
||||||
Family.FamilyDefendDetailViewRequest request = Family.FamilyDefendDetailViewRequest.parseFrom(bytes);
|
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;
|
package com.ljsd.jieling.handler.family;
|
||||||
|
|
||||||
import com.ljsd.jieling.handler.BaseHandler;
|
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.netty.cocdex.PacketNetData;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.Family;
|
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -18,6 +17,6 @@ public class FamilyDefendInfoHandler extends BaseHandler {
|
||||||
@Override
|
@Override
|
||||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
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;
|
package com.ljsd.jieling.handler.family;
|
||||||
|
|
||||||
import com.ljsd.jieling.handler.BaseHandler;
|
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.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;
|
||||||
|
@ -16,6 +16,6 @@ public class FamilyFightInfoHandler extends BaseHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
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;
|
package com.ljsd.jieling.handler.family;
|
||||||
|
|
||||||
import com.ljsd.jieling.handler.BaseHandler;
|
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.netty.cocdex.PacketNetData;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.Family;
|
import com.ljsd.jieling.protocols.Family;
|
||||||
|
@ -20,6 +20,6 @@ public class FamilyQuickSetDefendHandler extends BaseHandler {
|
||||||
byte[] bytes = netData.parseClientProtoNetData();
|
byte[] bytes = netData.parseClientProtoNetData();
|
||||||
Family.FamilyQuickDefendRequest request = Family.FamilyQuickDefendRequest.parseFrom(bytes);
|
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.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.globals.BIReason;
|
import com.ljsd.jieling.globals.BIReason;
|
||||||
import com.ljsd.jieling.globals.Global;
|
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.MapManager;
|
||||||
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
|
||||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||||
|
@ -66,7 +67,6 @@ public class GuildLogic {
|
||||||
for(Set<Integer> members : guildInfo.getMembers().values()){
|
for(Set<Integer> members : guildInfo.getMembers().values()){
|
||||||
for(int uidOfMember : members){
|
for(int uidOfMember : members){
|
||||||
User userMember = UserManager.getUser(uidOfMember);
|
User userMember = UserManager.getUser(uidOfMember);
|
||||||
userMember.getGuildMyInfo().move(System.currentTimeMillis());
|
|
||||||
builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember));
|
builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -104,8 +104,6 @@ public class GuildLogic {
|
||||||
.setFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(user))
|
.setFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(user))
|
||||||
.build();
|
.build();
|
||||||
MessageUtil.sendMessage(session,1,msgId,build,true);
|
MessageUtil.sendMessage(session,1,msgId,build,true);
|
||||||
familyFightMatching();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String checkForCreateGuild( User user,String familyName,String announce) throws Exception {
|
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());
|
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.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();
|
Family.FamilyJoinResponse response = Family.FamilyJoinResponse.newBuilder().setFamilyJoinIndicaion(build).build();
|
||||||
|
|
||||||
MessageUtil.sendMessage(session,1,msgId,response,true);
|
MessageUtil.sendMessage(session,1,msgId,response,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,8 +399,6 @@ public class GuildLogic {
|
||||||
targetUser.getPlayerInfoManager().setGuildId(guildInfo.getId());
|
targetUser.getPlayerInfoManager().setGuildId(guildInfo.getId());
|
||||||
GuilidManager.removeMineApplyGuildInfos(guildInfo.getId(),applyId);
|
GuilidManager.removeMineApplyGuildInfos(guildInfo.getId(),applyId);
|
||||||
GuilidManager.removeOneApplyGuildInfos(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){
|
}catch (Exception e){
|
||||||
LOGGER.error("the exception={}",e);
|
LOGGER.error("the exception={}",e);
|
||||||
}finally {
|
}finally {
|
||||||
|
@ -707,21 +702,16 @@ public class GuildLogic {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GuildMyInfo guildMyInfo = user.getGuildMyInfo();
|
GuildMyInfo guildMyInfo = user.getGuildMyInfo();
|
||||||
|
LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path);
|
||||||
|
|
||||||
user.getGuildMyInfo().move(System.currentTimeMillis());
|
|
||||||
LOGGER.info("old ={},path={}",guildMyInfo.getCurPos(),path);
|
|
||||||
boolean continuous = CellUtil.isContinuous(guildMyInfo.getCurPos(),path);
|
boolean continuous = CellUtil.isContinuous(guildMyInfo.getCurPos(),path);
|
||||||
if(!continuous){
|
if(!continuous){
|
||||||
MessageUtil.sendErrorResponse(session,0,msgId,"路线有误");
|
MessageUtil.sendErrorResponse(session,0,msgId,"路线有误");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
user.getGuildMyInfo().move(path);
|
user.getGuildMyInfo().move(path);
|
||||||
LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path);
|
|
||||||
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(user);
|
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(user);
|
||||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||||
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
|
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
|
||||||
MessageUtil.sendMessage(session,1,msgId,null,true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateMyPos(User user) {
|
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
|
* 给公会所有在线成员发送indication
|
||||||
* @param guildInfo
|
* @param guildInfo
|
||||||
* @param messageType
|
* @param messageType
|
||||||
* @param generatedMessage
|
* @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();
|
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
|
||||||
for(Set<Integer> items : members.values()){
|
for(Set<Integer> items : members.values()){
|
||||||
for(Integer sendUid : items){
|
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.STableManager;
|
||||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||||
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
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.CheckFight;
|
||||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||||
import com.ljsd.jieling.logic.store.StoreLogic;
|
import com.ljsd.jieling.logic.store.StoreLogic;
|
||||||
|
@ -49,6 +50,7 @@ public class MinuteTask extends Thread {
|
||||||
fiveMinuteOnlineSend();
|
fiveMinuteOnlineSend();
|
||||||
CheckFight.getInstance().luaHotFix();
|
CheckFight.getInstance().luaHotFix();
|
||||||
MongoUtil.getInstence().lastUpdate();
|
MongoUtil.getInstence().lastUpdate();
|
||||||
|
GuildFightLogic.familyFightStatus();
|
||||||
LOGGER.info("MinuteTask end...");
|
LOGGER.info("MinuteTask end...");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.error("e",e);
|
LOGGER.error("e",e);
|
||||||
|
|
Loading…
Reference in New Issue