战报功能二版

back_recharge
duhui 2020-12-18 10:01:12 +08:00
parent ce1de8c9af
commit c11dd1b1ce
20 changed files with 116 additions and 34 deletions

View File

@ -18,6 +18,9 @@ public enum FightType {
EXPEDITION(13), // 远征 EXPEDITION(13), // 远征
GuildChallenge(14), //公会副本 GuildChallenge(14), //公会副本
NewGeneral(15),//新将
TenDespairArray(16),//十绝阵
Firend(17),//好友
; ;

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.handler.Expedition; package com.ljsd.jieling.handler.Expedition;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.db.redis.RedisUtil;
@ -13,6 +14,7 @@ import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.fight.DefFightSnapData; import com.ljsd.jieling.logic.fight.DefFightSnapData;
import com.ljsd.jieling.logic.fight.FightRecordLogic;
import com.ljsd.jieling.logic.fight.FightUtil; import com.ljsd.jieling.logic.fight.FightUtil;
import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum;
import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
@ -119,12 +121,19 @@ public class StartExpeditionBattleRequest extends BaseHandler<Expedition.StartEx
FightInfoProto.FightStartResponse.Builder fightStartResponse = FightInfoProto.FightStartResponse.newBuilder(); FightInfoProto.FightStartResponse.Builder fightStartResponse = FightInfoProto.FightStartResponse.newBuilder();
fightStartResponse.setFightData(CommonProto.FightData.newBuilder() CommonProto.FightData fightData = CommonProto.FightData.newBuilder()
.setFightMaxTime(maxTime) .setFightMaxTime(maxTime)
.setFightSeed(seed) .setFightSeed(seed)
.setHeroFightInfos(fightTeamInfo) .setHeroFightInfos(fightTeamInfo)
.addMonsterList(deffightTeamInfo) .addMonsterList(deffightTeamInfo)
.build()); .setFightType(FightType.StoryFight.getType())
.setFightId(FightUtil.getFightId(user.getId(), FightType.StoryFight.getType()))
.build();
fightStartResponse.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
MessageUtil.sendMessage(iSession, 1,MessageTypeProto.MessageType.EXPEDITION_START_BATTLE_RESONSE_VALUE, fightStartResponse.build(), true); MessageUtil.sendMessage(iSession, 1,MessageTypeProto.MessageType.EXPEDITION_START_BATTLE_RESONSE_VALUE, fightStartResponse.build(), true);
} }

View File

@ -14,10 +14,7 @@ import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildFightLogic; import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.PVPFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
@ -143,6 +140,11 @@ public class FastChallengeHandler extends BaseHandler<FightInfoProto.FastFightCh
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
} }
fightData.toBuilder().setFightId(FightUtil.getFightId(uid,fightData.getFightType()));
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
guildInfo.addCarFightSb(uid); guildInfo.addCarFightSb(uid);
user.getGuildMyInfo().setCarPlayTime(TimeUtils.nowInt()); user.getGuildMyInfo().setCarPlayTime(TimeUtils.nowInt());
FightInfoProto.FastFightChallengeResponse build = FightInfoProto.FastFightChallengeResponse.newBuilder().setHurt(hurt).setScore(gainScore).setFightData(fightData).build(); FightInfoProto.FastFightChallengeResponse build = FightInfoProto.FastFightChallengeResponse.newBuilder().setHurt(hurt).setScore(gainScore).setFightData(fightData).build();

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.handler.activity; package com.ljsd.jieling.handler.activity;
import com.google.protobuf.GeneratedMessage; import com.google.protobuf.GeneratedMessage;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.exception.ErrorCodeException;
@ -8,10 +9,7 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.FightUtil;
import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.protocols.ActivityProto; import com.ljsd.jieling.protocols.ActivityProto;
@ -83,17 +81,20 @@ public class NewGeneralAttackHandler extends BaseHandler<ActivityProto.NewGenera
} }
// 战斗逻辑 // 战斗逻辑
PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), GlobalsDef.FORMATION_NORMAL, 1000, "", GameFightType.GuildChallenge, monsterGroupId, 3); PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), GlobalsDef.FORMATION_NORMAL, 1000, "", GameFightType.NewGeneral, monsterGroupId, 3);
FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
CommonProto.FightData fightData = CommonProto.FightData.newBuilder() CommonProto.FightData fightData = CommonProto.FightData.newBuilder()
.setFightMaxTime(20) .setFightMaxTime(20)
.setFightSeed(fightResult.getSeed()) .setFightSeed(fightResult.getSeed())
.setHeroFightInfos(fightResult.getFightTeamInfo()) .setHeroFightInfos(fightResult.getFightTeamInfo())
.addAllMonsterList(fightResult.getMonsterTeamList()) .addAllMonsterList(fightResult.getMonsterTeamList())
.setFightType(GameFightType.DailyChallenge.getFightType().getType()) .setFightType(FightType.NewGeneral.getType())
.setFightId(FightUtil.getFightId(user.getId(),GameFightType.DailyChallenge)) .setFightId(FightUtil.getFightId(user.getId(), FightType.NewGeneral.getType()))
.build(); .build();
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
// 战斗结果,第二位是伤害 // 战斗结果,第二位是伤害
int[] checkResult = fightResult.getCheckResult(); int[] checkResult = fightResult.getCheckResult();

View File

@ -9,6 +9,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@Deprecated
public class AdventureBossChallengeHandler extends BaseHandler{ public class AdventureBossChallengeHandler extends BaseHandler{
@Override @Override
public MessageTypeProto.MessageType getMessageCode() { public MessageTypeProto.MessageType getMessageCode() {

View File

@ -7,6 +7,7 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.FightDispatcher;
import com.ljsd.jieling.logic.fight.FightRecordLogic;
import com.ljsd.jieling.logic.fight.GameFightType; import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent; import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
@ -506,6 +507,9 @@ public class JourneyMap {
pveFightEvent.setMonsterRemainHp(hps); pveFightEvent.setMonsterRemainHp(hps);
FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightResult.getFightData());
int[] checkResult = fightResult.getCheckResult(); int[] checkResult = fightResult.getCheckResult();
MapInfoProto.JourneyFightResponse.Builder response =MapInfoProto.JourneyFightResponse.newBuilder(); MapInfoProto.JourneyFightResponse.Builder response =MapInfoProto.JourneyFightResponse.newBuilder();

View File

@ -3153,6 +3153,10 @@ public class MapLogic {
.build(); .build();
int[] checkResult = fightResult.getCheckResult(); int[] checkResult = fightResult.getCheckResult();
builder.setFightData(fightData); builder.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
if(checkResult[0]>0){ if(checkResult[0]>0){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1);
builder.setDrop(drop); builder.setDrop(drop);

View File

@ -1,9 +1,11 @@
package com.ljsd.jieling.handler.map.behavior; package com.ljsd.jieling.handler.map.behavior;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.googlecode.protobuf.format.JsonFormat; import com.googlecode.protobuf.format.JsonFormat;
import com.ljsd.fight.FightType; import com.ljsd.fight.FightType;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.handler.map.TrailHero; import com.ljsd.jieling.handler.map.TrailHero;
import com.ljsd.jieling.logic.fight.FightRecordLogic;
import com.ljsd.jieling.logic.fight.FightUtil; import com.ljsd.jieling.logic.fight.FightUtil;
import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum;
import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
@ -195,6 +197,8 @@ public class BehaviorUtil {
fightData.setFightId(FightUtil.getFightId(user.getId(),FightType.MapExploreFight.getType())); fightData.setFightId(FightUtil.getFightId(user.getId(),FightType.MapExploreFight.getType()));
fightStartRespons.setFightData(fightData); fightStartRespons.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData.build());
String key = RedisKey.getKey(RedisKey.FIGHT, Integer.toString(user.getId()), false); String key = RedisKey.getKey(RedisKey.FIGHT, Integer.toString(user.getId()), false);
Map<String,Object> fightInfo = new HashMap<>(); Map<String,Object> fightInfo = new HashMap<>();
@ -341,7 +345,7 @@ public class BehaviorUtil {
} }
} }
public static void getLevelDifficultyifficuFightInfo(User user,FightType fightType,int groupId,int teamId, int maxTime,FightInfoProto.FightStartResponse.Builder fightStartRespons,String fightKey) { public static void getLevelDifficultyifficuFightInfo(User user,FightType fightType,int groupId,int teamId, int maxTime,FightInfoProto.FightStartResponse.Builder fightStartRespons,String fightKey) throws JsonProcessingException {
CommonProto.FightData.Builder fightData = CommonProto.FightData.newBuilder(); CommonProto.FightData.Builder fightData = CommonProto.FightData.newBuilder();
CommonProto.FightTeamInfo fightTeamInfo = getFightTeamInfo(user, teamId,true); CommonProto.FightTeamInfo fightTeamInfo = getFightTeamInfo(user, teamId,true);
fightData.setHeroFightInfos(fightTeamInfo); fightData.setHeroFightInfos(fightTeamInfo);
@ -361,6 +365,8 @@ public class BehaviorUtil {
fightData.setFightId(FightUtil.getFightId(user.getId(),fightType.getType())); fightData.setFightId(FightUtil.getFightId(user.getId(),fightType.getType()));
fightStartRespons.setFightData(fightData); fightStartRespons.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData.build());
String key = RedisKey.getKey(fightKey,Integer.toString(user.getId()), false); String key = RedisKey.getKey(fightKey,Integer.toString(user.getId()), false);
Map<String,Object> fightInfo = new HashMap<>(); Map<String,Object> fightInfo = new HashMap<>();

View File

@ -18,6 +18,7 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.FightDispatcher;
import com.ljsd.jieling.logic.fight.FightRecordLogic;
import com.ljsd.jieling.logic.fight.GameFightType; import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent; import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
@ -287,6 +288,10 @@ public class EndlessMap extends AbstractMap{
fastFightResponseBuilder.setEnventDrop(drop.build()); fastFightResponseBuilder.setEnventDrop(drop.build());
fastFightResponseBuilder.setResult(resultCode); fastFightResponseBuilder.setResult(resultCode);
fastFightResponseBuilder.setFightData(fightResult.getFightData()); fastFightResponseBuilder.setFightData(fightResult.getFightData());
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightResult.getFightData());
//todo 临时粘贴 //todo 临时粘贴
mapManager.updateEndlessFightCount(1+mapManager.getEndlessMapInfo().getFightCount()); mapManager.updateEndlessFightCount(1+mapManager.getEndlessMapInfo().getFightCount());

View File

@ -18,6 +18,7 @@ import com.ljsd.jieling.logic.dao.TeamPosManager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.FightDispatcher;
import com.ljsd.jieling.logic.fight.FightRecordLogic;
import com.ljsd.jieling.logic.fight.GameFightType; import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent; import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
@ -501,6 +502,9 @@ public class TowerMap extends AbstractMap {
fastFightResponseBuilder.setResult(resultCode); fastFightResponseBuilder.setResult(resultCode);
fastFightResponseBuilder.setEssenceValue(trialInfo.getEnergy()); fastFightResponseBuilder.setEssenceValue(trialInfo.getEnergy());
fastFightResponseBuilder.setFightData(fightResult.getFightData()); fastFightResponseBuilder.setFightData(fightResult.getFightData());
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightResult.getFightData());
// LOGGER.info("endFight() uid=>{},nextEventId=>{}", uid, nextEventId); // LOGGER.info("endFight() uid=>{},nextEventId=>{}", uid, nextEventId);
MapMissionManager.updateMapMission(user, EventType.fightEvent, groupId, checkResult[1]); MapMissionManager.updateMapMission(user, EventType.fightEvent, groupId, checkResult[1]);
ReportUtil.onReportEvent(user,ReportEventEnum.CHALLENGE_PANOPTIC_MIRROR_ENEMY.getType(),trialInfo.getFloor(),resultCode==1?"胜利":"失败"); ReportUtil.onReportEvent(user,ReportEventEnum.CHALLENGE_PANOPTIC_MIRROR_ENEMY.getType(),trialInfo.getFloor(),resultCode==1?"胜利":"失败");

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.handler.monsterAttack; package com.ljsd.jieling.handler.monsterAttack;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.core.HandlerLogicThread; import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.core.TransTask; import com.ljsd.jieling.core.TransTask;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
@ -96,8 +97,13 @@ public class QuickStartMonsterFighter extends BaseHandler<FightInfoProto.QuickSt
.setFightSeed(fightResult.getSeed()) .setFightSeed(fightResult.getSeed())
.setHeroFightInfos(fightResult.getFightTeamInfo()) .setHeroFightInfos(fightResult.getFightTeamInfo())
.addAllMonsterList(fightResult.getMonsterTeamList()) .addAllMonsterList(fightResult.getMonsterTeamList())
.setFightType(FightType.MonterFight.getType())
.setFightId(FightUtil.getFightId(uid,FightType.MonterFight.getType()))
.build(); .build();
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightDataBuild);
if (resultCode == 0) { if (resultCode == 0) {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder(); CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
FightInfoProto.QuickStartMonsterFightResponse builder = FightInfoProto.QuickStartMonsterFightResponse.newBuilder() FightInfoProto.QuickStartMonsterFightResponse builder = FightInfoProto.QuickStartMonsterFightResponse.newBuilder()

View File

@ -261,6 +261,10 @@ public class SituationLogic {
.build(); .build();
int[] checkResult = fightResult.getCheckResult(); int[] checkResult = fightResult.getCheckResult();
builder.setFightData(fightData); builder.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
//挑战成功 //挑战成功
if(checkResult[0]>0){ if(checkResult[0]>0){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, BIReason.SITUATION_CHALLENGE_REWARD); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, BIReason.SITUATION_CHALLENGE_REWARD);
@ -309,6 +313,7 @@ public class SituationLogic {
.setFightId(FightUtil.getFightId(fightEvent.getAttackUid(),fightEvent.getFightType())) .setFightId(FightUtil.getFightId(fightEvent.getAttackUid(),fightEvent.getFightType()))
.build(); .build();
builder.setFightData(fightData); builder.setFightData(fightData);
return builder.build(); return builder.build();
} }

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.arena;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
@ -179,8 +180,14 @@ public class ArenaLogic {
.setFightSeed(seed) .setFightSeed(seed)
.setHeroFightInfos(fightTeamInfo) .setHeroFightInfos(fightTeamInfo)
.addMonsterList(deffightTeamInfo) .addMonsterList(deffightTeamInfo)
.setFightType(FightType.ArenaFight.getType())
.setFightId(FightUtil.getFightId(mine.getId(),FightType.ArenaFight.getType()))
.build(); .build();
builder.setFightData(build); builder.setFightData(build);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(mine,build);
//数据互换 //数据互换
byte[] snapRecord = build.toByteArray(); byte[] snapRecord = build.toByteArray();
arenaRecord.setFightData(snapRecord); arenaRecord.setFightData(snapRecord);
@ -546,7 +553,12 @@ public class ArenaLogic {
.setFightSeed(seed) .setFightSeed(seed)
.setHeroFightInfos(fightTeamInfo) .setHeroFightInfos(fightTeamInfo)
.addMonsterList(deffightTeamInfo) .addMonsterList(deffightTeamInfo)
.setFightType(FightType.Firend.getType())
.setFightId(FightUtil.getFightId(mine.getId(),FightType.Firend.getType()))
.build(); .build();
ArenaInfoProto.PlayWithSbResponse response = ArenaInfoProto.PlayWithSbResponse.newBuilder().setFightData(build).build(); ArenaInfoProto.PlayWithSbResponse response = ArenaInfoProto.PlayWithSbResponse.newBuilder().setFightData(build).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.PLAY_WITH_SB_RESPONSE_VALUE,response,true); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.PLAY_WITH_SB_RESPONSE_VALUE,response,true);

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.family; package com.ljsd.jieling.logic.family;
import com.ljsd.common.mogodb.util.BlockingUniqueQueue; import com.ljsd.common.mogodb.util.BlockingUniqueQueue;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.chat.logic.ChatLogic; import com.ljsd.jieling.chat.logic.ChatLogic;
import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
@ -18,9 +19,7 @@ import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
@ -322,7 +321,13 @@ public class DeathPathLogic {
.setFightSeed(fightResult.getSeed()) .setFightSeed(fightResult.getSeed())
.setHeroFightInfos(fightResult.getFightTeamInfo()) .setHeroFightInfos(fightResult.getFightTeamInfo())
.addAllMonsterList(fightResult.getMonsterTeamList()) .addAllMonsterList(fightResult.getMonsterTeamList())
.setFightType(FightType.TenDespairArray.getType())
.setFightId(FightUtil.getFightId(uid,FightType.TenDespairArray.getType()))
.build(); .build();
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
//更新排行榜数据 //更新排行榜数据
tasks.offer(new DeathPathTask(uid,guildId,damage,pathId)); tasks.offer(new DeathPathTask(uid,guildId,damage,pathId));
//挑战次数记录 //挑战次数记录

View File

@ -15,9 +15,7 @@ import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildCache; import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo; import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
@ -339,7 +337,12 @@ public class GuildChallengeLogic {
response.setDrop(drop); response.setDrop(drop);
if(fightData!=null){ if(fightData!=null){
fightData.toBuilder().setFightId(FightUtil.getFightId(uid,fightData.getFightType()));
response.setFightData(fightData); response.setFightData(fightData);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(user,fightData);
} }
response.setKill(kill); response.setKill(kill);

View File

@ -521,7 +521,13 @@ public class GuildFightLogic {
.setFightSeed(dispatcher.getSeed()) .setFightSeed(dispatcher.getSeed())
.setHeroFightInfos(dispatcher.getFightTeamInfo()) .setHeroFightInfos(dispatcher.getFightTeamInfo())
.addMonsterList(dispatcher.getDefFightTeamInfo()) .addMonsterList(dispatcher.getDefFightTeamInfo())
.setFightType(FightType.GuildFight.getType())
.setFightId(FightUtil.getFightId(userAttack.getId(),FightType.GuildFight.getType()))
.build(); .build();
// 记录战报
FightRecordLogic.getInstance().addRecordMap(userAttack,fightData);
Family.FamilyFightAttackResponse response = Family.FamilyFightAttackResponse.newBuilder().setResult(fightResult[0]).setStarCount(getStar).setData(fightData).build(); Family.FamilyFightAttackResponse response = Family.FamilyFightAttackResponse.newBuilder().setResult(fightResult[0]).setStarCount(getStar).setData(fightData).build();
userAttack.getUserMissionManager().onGameEvent(userAttack, GameEvent.FAMILY_FIGHT_ATTACK); userAttack.getUserMissionManager().onGameEvent(userAttack, GameEvent.FAMILY_FIGHT_ATTACK);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true); MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);

View File

@ -17,10 +17,7 @@ public class FightDispatcher {
// 获取类型 // 获取类型
GameFightType fightType = fightEvent.getFightType(); GameFightType fightType = fightEvent.getFightType();
// 战斗逻辑 // 战斗逻辑
FightResult fightResult = fightType.getFightEventProcesor().process(fightEvent); return fightType.getFightEventProcesor().process(fightEvent);
// 记录战报
FightRecordLogic.getInstance().addRecordMap(fightEvent,fightResult);
return fightResult;
} }
//gs-fight //gs-fight

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.fight;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.googlecode.protobuf.format.JsonFormat; import com.googlecode.protobuf.format.JsonFormat;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
@ -9,7 +10,6 @@ import org.springframework.util.MultiValueMap;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
public class FightRecordLogic { public class FightRecordLogic {
@ -32,35 +32,38 @@ public class FightRecordLogic {
return instance; return instance;
} }
ConcurrentHashMap<Integer,MultiValueMap<Integer,String>> recordMap = new ConcurrentHashMap<>(); private ConcurrentHashMap<Integer,MultiValueMap<Integer,String>> recordMap = new ConcurrentHashMap<>();
public ConcurrentHashMap<Integer, MultiValueMap<Integer, String>> getRecordMap() { public ConcurrentHashMap<Integer, MultiValueMap<Integer, String>> getRecordMap() {
return recordMap; return recordMap;
} }
// 一种类型存储上限
private static int max = 18;
public void setRecordMap(ConcurrentHashMap<Integer, MultiValueMap<Integer, String>> recordMap) { public void setRecordMap(ConcurrentHashMap<Integer, MultiValueMap<Integer, String>> recordMap) {
this.recordMap = recordMap; this.recordMap = recordMap;
} }
public void addRecordMap(FightEvent fightEvent, FightResult fightResult) throws JsonProcessingException { public void addRecordMap(User user, CommonProto.FightData fightData) throws JsonProcessingException {
// 玩家id // 玩家id
int uid = fightEvent.getAttackUid(); int uid = user.getId();
// 战斗类型 // 战斗类型
int multiKey = fightEvent.getFightType().getFightType().getType(); int multiKey = fightData.getFightType();
// 获取玩家的战斗数据 // 获取玩家的战斗数据
MultiValueMap<Integer, String> multiValueMap = recordMap.getOrDefault(uid, new LinkedMultiValueMap<Integer, String>()); MultiValueMap<Integer, String> multiValueMap = recordMap.getOrDefault(uid, new LinkedMultiValueMap<Integer, String>());
// 根据类型获取战斗数据 // 根据类型获取战斗数据
List<String> strings = multiValueMap.getOrDefault(multiKey,new ArrayList<>()); List<String> strings = multiValueMap.getOrDefault(multiKey,new ArrayList<>());
// 类型大于十条删除最早的一条 // 类型大于十条删除最早的一条
if (strings.size() >= 10){ if (strings.size() >= max){
strings.remove(0); strings.remove(0);
} }
// protobuf转字符串 // protobuf转字符串
String str = JsonFormat.printToString(fightResult.getFightData()); String str = JsonFormat.printToString(fightData);
strings.add(str); strings.add(str);
// 重新赋值 // 重新赋值
multiValueMap.put(multiKey,strings); multiValueMap.put(multiKey,strings);
System.out.println("fightId======================="+fightResult.getFightData().getFightId()); System.out.println("fightId======================="+fightData.getFightId());
recordMap.put(uid,multiValueMap); recordMap.put(uid,multiValueMap);
} }

View File

@ -48,7 +48,7 @@ public enum GameFightType {
CarBossChallenge(FightType.CarBossFight,new DefaultWithoutHandFightHandler(),null), CarBossChallenge(FightType.CarBossFight,new DefaultWithoutHandFightHandler(),null),
CarPersonChallenge(FightType.CarBossFight,new PVPFightHandler(),null), CarPersonChallenge(FightType.CarBossFight,new PVPFightHandler(),null),
GuildChallenge(FightType.GuildChallenge,new DefaultWithoutHandFightHandler(),null), GuildChallenge(FightType.GuildChallenge,new DefaultWithoutHandFightHandler(),null),
NewGeneral(FightType.GuildChallenge,new DefaultWithoutHandFightHandler(),null),
; ;

View File

@ -13,6 +13,8 @@ public class SGlobalSystemConfig implements BaseConfig {
private int id; private int id;
private String name;
private int[] openRules; private int[] openRules;
private String systemOpen; private String systemOpen;
@ -62,7 +64,11 @@ public class SGlobalSystemConfig implements BaseConfig {
return id; return id;
} }
public int[] getOpenRules() { public String getName() {
return name;
}
public int[] getOpenRules() {
return openRules; return openRules;
} }