公会战最终提交。。。

back_recharge
lvxinran 2019-09-24 21:34:38 +08:00
parent 5a6b460d8b
commit 8f20e52680
2 changed files with 16 additions and 13 deletions

View File

@ -17,6 +17,7 @@ public class FamilyFightAttackHandler extends BaseHandler<Family.FamilyFightAtta
@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);
int gid = proto.getGid();
GuildFightLogic.familyFightResult(iSession,attackUid,gid, MessageTypeProto.MessageType.FAMILY_FIGHT_ATTACK_RESPONSE);
}
}

View File

@ -379,7 +379,7 @@ public class GuildFightLogic {
/**
*
*/
public static void familyFightResult(ISession session, int defendUid, MessageTypeProto.MessageType messageType) throws Exception {
public static void familyFightResult(ISession session, int defendUid,int gid, MessageTypeProto.MessageType messageType) throws Exception {
User userAttack = UserManager.getUser(session.getUid());
RedisUtil redisUtil = RedisUtil.getInstence();
//战斗次数
@ -388,13 +388,10 @@ public class GuildFightLogic {
attackCount = 0;
}
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT_ATTACK_COUNT,"",String.valueOf(userAttack.getId()),attackCount+1);
User userDefend = UserManager.getUser(defendUid);
int defendGuildId = userDefend.getPlayerInfoManager().getGuildId();
int defendBuildId = GuilidManager.guildInfoMap.get(defendGuildId).getDefendInfo().get(defendUid);
FamilyFightInfo defendInfo = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), FamilyFightInfo.class);
FamilyFightInfo defendInfo = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(gid), String.valueOf(defendUid), FamilyFightInfo.class);
Map<String, FamilyHeroInfo> heroAttribute = defendInfo.getHeroAttribute();
//防守血量处理
CommonProto.FightTeamInfo fightDefendTeamInfo = BloodLogic.getInstance().fightDataMakeUp(userDefend,heroAttribute,501);
CommonProto.FightTeamInfo fightDefendTeamInfo = BloodLogic.getInstance().fightDataMakeUp(defendInfo.getHeroSkills(),heroAttribute,defendInfo.getPokenmonSkills());
//攻击者血量处理
CommonProto.FightTeamInfo fightAttackTeamInfo = null;
List<CommonProto.FightUnitInfo> heroAttackFightInfos = new ArrayList<>();
@ -408,7 +405,7 @@ public class GuildFightLogic {
}
StringBuilder skillSb = new StringBuilder();
StringBuilder propertySb = new StringBuilder();
String heroSkill = HeroLogic.getInstance().getHeroSkills(userDefend, hero, skillSb).toString();
String heroSkill = HeroLogic.getInstance().getHeroSkills(userAttack, hero, skillSb).toString();
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(userAttack, hero, false, 502);
for(Map.Entry<String,String> blood:attackBloodMap.entrySet()){
if(teamHero.getHeroId().equals(blood.getKey())){
@ -474,7 +471,9 @@ public class GuildFightLogic {
indexAttack++;
}
}else{
int memberType = GuildLogic.getMemberType(defendUid, GuilidManager.guildInfoMap.get(defendGuildId).getMembers());
PlayerInfoCache player = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(defendUid), PlayerInfoCache.class);
int memberType =player.getGuildPosition();
int maxStar = sGuildSetting.getStarNum()[memberType-1];
int lessStar = maxStar - dieCount*maxStar/5;
//倍数k(maxStar/5)
@ -484,10 +483,10 @@ public class GuildFightLogic {
redisUtil.putMapEntry(RedisKey.FAMILY_ATTACK_BLOOD,String.valueOf(userAttack.getId()),attack.getHeroId(),100);
}
}
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), defendInfo);
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(gid), String.valueOf(defendUid), defendInfo);
//发送indication
Family.DefeatResponse fightResponse = Family.DefeatResponse.newBuilder().setUid(defendUid).setTeamLostStar(getStar).build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(userDefend.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(gid), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(userAttack.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
//获得星数处理
int attackGuildId = userAttack.getPlayerInfoManager().getGuildId();
@ -498,11 +497,11 @@ public class GuildFightLogic {
}
redisUtil.zsetAddOne(attackRankKey,String.valueOf(userAttack.getId()),starCount+getStar);
//建筑星数
Integer haveGotStar = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR, String.valueOf(attackGuildId), String.valueOf(defendBuildId), int.class);
Integer haveGotStar = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR, String.valueOf(attackGuildId), String.valueOf(defendInfo.getBuildId()), int.class);
if(haveGotStar==null){
haveGotStar = 0;
}
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR,String.valueOf(attackGuildId),String.valueOf(defendBuildId),haveGotStar+getStar);
redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR,String.valueOf(attackGuildId),String.valueOf(defendInfo.getBuildId()),haveGotStar+getStar);
Family.FamilyFightAttackResponse response = Family.FamilyFightAttackResponse.newBuilder().setResult(fightResult[0]).setStarCount(getStar).setData(fightData).build();
userAttack.getUserMissionManager().onGameEvent(userAttack, GameEvent.FAMILY_FIGHT_ATTACK);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
@ -639,6 +638,9 @@ public class GuildFightLogic {
redisUtil.removeMapEntrys(RedisKey.FAMILY_FIGHT_BUFF,index,String.valueOf(i));
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(index));
if(guildInfo==null){
continue;
}
//删除进攻血量信息
for(Map.Entry<Integer,Set<Integer>> entry:guildInfo.getMembers().entrySet()){
for(Integer attackId:entry.getValue()){