diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SChallengeMapConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SChallengeMapConfig.java index b6bbf94d6..5f0ce0baf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SChallengeMapConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SChallengeMapConfig.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.config; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.logic.dao.GuildMyInfo; import java.util.Map; @@ -13,6 +14,7 @@ public class SChallengeMapConfig implements BaseConfig{ @Override public void init() throws Exception { integerSChallengeMapConfigMap = STableManager.getConfig(SChallengeMapConfig.class); + GuildMyInfo.init(); } private int mapId; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/UpdateStateHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/UpdateStateHandler.java new file mode 100644 index 000000000..26444d63c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/UpdateStateHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + + +@Component +public class UpdateStateHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.UPDATE_STATE_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + PlayerInfoProto.UpdateStateRequest updateStateRequest = PlayerInfoProto.UpdateStateRequest.parseFrom(netData.parseClientProtoNetData()); + + PlayerLogic.getInstance().updateState(iSession,updateStateRequest.getType()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightInfoHandler.java new file mode 100644 index 000000000..90ba47b6a --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightInfoHandler.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.handler.family; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.family.GuildLogic; +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 FamilyFightInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.FAMILY_FIGHT_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + GuildLogic.viewFightInfo(iSession, MessageTypeProto.MessageType.FAMILY_FIGHT_INFO_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 69ef9cd34..0a9894189 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1736,6 +1736,12 @@ public class MapLogic { return; } }else if(sChallengeConfig.getSweepingOpenRule()[0]==2){ + CrossInfo crossInfo = mapManager.getCrossInfoMap().get(mapId); + if(crossInfo == null){ + LOGGER.info("sweep 未通关"); + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "未通关"); + return; + } MapMission copyMission = mapManager.getCopyMissionProgresById(sChallengeConfig.getMapId()); if(copyMission.getTotalWeight() 0) { String reward = Global.STAMINA + "#" + itemNum; ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.USER_LEVELUPSTAMINA_REWARD); - } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java index 132292c25..c8f072528 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java @@ -12,13 +12,15 @@ public class FinishOptionsDifficultMapProcessor implements BaseMissionProcesor{ public int checkAndUpdateMissionProcessor(User user, SAccomplishmentConfig sAccomplishmentConfig, int eventId, int time, MapMissionType mapMissionType,int missionValue) { MapManager mapManager = user.getMapManager(); SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); - if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[sAccomplishmentConfig.getValues().length-1][0]){ + int[][] configValues = sAccomplishmentConfig.getValues(); + + if(configValues[configValues.length-1][0]!=0&&sChallengeConfig.getDifficultType()!= configValues[configValues.length-1][0]){ return GlobalsDef.MAP_MISSION_RETURN; } if(missionValue==-1){ return GlobalsDef.MAP_MISSION_RETURN; } - int[][] value = sAccomplishmentConfig.getValues(); + int[][] value = configValues; missionValue = 0-missionValue; for(int i = 0 ; i path = new ArrayList<>(); //行走路线 - private int curPos=257;//当前位置 + private int curPos=initPos;//当前位置 private long preMoveTimestamp; //上次更新时间 public void clearOfLevelGuild(){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index b69fc0036..000acaecf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.logic.family; import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.config.SChallengeMapConfig; import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.config.SGuildSetting; import com.ljsd.jieling.core.GlobalsDef; @@ -58,11 +59,17 @@ public class GuildLogic { return; } GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId); - Family.GetFamilyInfoResponse build = Family.GetFamilyInfoResponse.newBuilder() + Family.GetFamilyInfoResponse.Builder builder = Family.GetFamilyInfoResponse.newBuilder() .setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)) - .setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers()))) - .build(); - MessageUtil.sendMessage(session,1,msgId,build,true); + .setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers()))); + + for(Set members : guildInfo.getMembers().values()){ + for(int uidOfMember : members){ + User userMember = UserManager.getUser(uidOfMember); + builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember)); + } + } + MessageUtil.sendMessage(session,1,msgId,builder.build(),true); } @@ -92,7 +99,9 @@ public class GuildLogic { addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName()); Family.FamilyCreateResponse build = Family.FamilyCreateResponse.newBuilder() .setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)) - .setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user,GlobalsDef.CHAIRMAN)).build(); + .setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user,GlobalsDef.CHAIRMAN)) + .setFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(user)) + .build(); MessageUtil.sendMessage(session,1,msgId,build,true); familyFightMatching(); @@ -694,6 +703,7 @@ public class GuildLogic { return; } GuildMyInfo guildMyInfo = user.getGuildMyInfo(); + LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path); boolean continuous = CellUtil.isContinuous(guildMyInfo.getCurPos(),path); if(!continuous){ MessageUtil.sendErrorResponse(session,0,msgId,"路线有误"); @@ -853,7 +863,54 @@ public class GuildLogic { } } } + private static Family.FamilyFightInfo familyFightDetailInfo(int guildId) throws Exception { + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId); + Map 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 entry:defendInfo.entrySet()){ + Family.FamilyFightPlayerInfo.Builder playerInfo = Family.FamilyFightPlayerInfo.newBuilder(); + playerInfo.setBuildId(entry.getValue()); + playerInfo.setBuildId(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()); + playerInfo.setUserInfo(userInfo); + 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 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index e05d29085..502f77144 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -311,6 +311,9 @@ public class MissionEventDistributor { } if(gameMisionType == GameMisionType.SEVENMISSION){ STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionStateChangeInfo.getMissionId()); + if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ + continue; + } progress= sTreasureTaskConfig.getTaskValue()[1][0]; if(progress<0){ progress=1; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index b7dd7ad64..3f185ec7f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -14,7 +14,11 @@ import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.GameMisionType; import com.ljsd.jieling.logic.mission.MissionLoigc; +import com.ljsd.jieling.logic.mission.MissionState; +import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType; import com.ljsd.jieling.logic.mission.main.TreasureMissionType; import com.ljsd.jieling.logic.store.GiftGoodsType; @@ -36,6 +40,36 @@ public class PlayerLogic { return InnerClass.instance; } + //更新客户状态 + public void updateState(ISession iSession, int type) throws Exception { + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + //七日狂欢领取活动 + if(type == 1){ + Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); + int sevenActivityId = 0; + for(Integer activityId : activityMissionMap.keySet()){ + if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.SERVERHAPPY){ + sevenActivityId = activityId; + } + } + if(sevenActivityId!=0){ + STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureSevenTaskConfigByActivityMap.get(sevenActivityId); + if(user.getActivityManager().getSenvenTime()<=System.currentTimeMillis()){ + BitSet rewardedMissionIds = user.getUserMissionManager().getSevenHappyMissionType().getRewardedMissionIds(); + MissionState state = MissionState.FINISH; + if(rewardedMissionIds.get(sTreasureTaskConfig.getId())){ + state = MissionState.REWARD; + } + int progrss = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getSevenHappyCumulationData(),sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]); + MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(sTreasureTaskConfig.getId(), state, progrss); + MissionEventDistributor.getMissionStateChangeInfo(GameMisionType.SEVENMISSION).add(missionStateChangeInfo); + } + } + } + MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.UPDATE_STATE_RESPONSE_VALUE,null,true); + } + static class InnerClass{ public final static PlayerLogic instance = new PlayerLogic();