From db8c4d43d91b1931b49014dcef9794848a8f670c Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 12 Aug 2019 17:49:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=94=A8=E6=88=B7=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/config/SChallengeMapConfig.java | 2 ++ .../jieling/handler/UpdateStateHandler.java | 24 +++++++++++++ .../ljsd/jieling/handler/map/MapLogic.java | 7 +++- .../logic/activity/DefaultEmptyActivity.java | 3 -- .../ljsd/jieling/logic/dao/GuildMyInfo.java | 14 +++++++- .../ljsd/jieling/logic/family/GuildLogic.java | 20 ++++++++--- .../event/MissionEventDistributor.java | 3 ++ .../jieling/logic/player/PlayerLogic.java | 34 +++++++++++++++++++ 8 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/UpdateStateHandler.java 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/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/logic/activity/DefaultEmptyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java index bec150616..ec0edb171 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java @@ -4,16 +4,13 @@ import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.config.SGlobalActivity; import com.ljsd.jieling.config.SSevenDaysScore; import com.ljsd.jieling.config.STreasureTaskConfig; -import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType; -import com.ljsd.jieling.logic.mission.main.TreasureMissionType; import com.ljsd.jieling.util.ItemUtil; -import com.ljsd.jieling.util.MessageUtil; import java.util.ArrayList; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java index db63c9ac4..c6c830fa2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java @@ -1,16 +1,28 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; +import com.ljsd.jieling.config.SChallengeMapConfig; +import com.ljsd.jieling.util.CellUtil; import java.util.ArrayList; import java.util.List; public class GuildMyInfo extends MongoBase { private static int speed = 500; + private static int initPos = 0; + + + public static void init(){ + SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(11); + initPos = CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]); + } + + + private List 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 770f911d9..77ae0cc5a 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,"路线有误"); 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();