From 5a7a3f32c7a424c400a8a948d0b733391f725fd1 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 17 Jun 2019 10:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=94=E7=82=B9=E4=BB=BB=E5=8A=A1=E5=88=B7?= =?UTF-8?q?=E6=96=B0=20&=20=E8=A1=80=E6=88=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/room/RoomGetInfoHandler.java | 21 ++++++++++++ .../jieling/logic/GlobalDataManaager.java | 9 ++++++ .../jieling/logic/dao/UserMissionManager.java | 3 +- .../ljsd/jieling/logic/room/RoomManager.java | 32 ++++++++++++++++++- .../jieling/logic/room/RoomPlayerInfo.java | 9 ++++++ .../com/ljsd/jieling/util/MessageUtil.java | 15 +++++++++ 6 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomGetInfoHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomGetInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomGetInfoHandler.java new file mode 100644 index 000000000..e443b30e7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/room/RoomGetInfoHandler.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.handler.room; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.room.RoomManager; +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 RoomGetInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.ROOM_GET_FULL_INFO_REQEUST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + RoomManager.getRommInfo(iSession); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 4a20324ce..a751b992a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic; import com.google.protobuf.MessageLite; import com.ljsd.GameApplication; +import com.ljsd.jieling.config.SDailyTasksConfig; import com.ljsd.jieling.config.SGlobalSystemConfig; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; @@ -10,11 +11,14 @@ import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.arena.ArenaLogic; import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; +import com.ljsd.jieling.logic.dao.UserMissionManager; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.GameMisionType; import com.ljsd.jieling.logic.mission.data.DataManagerDistributor; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; +import com.ljsd.jieling.logic.mission.main.DailyMissionIdsType; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.Tea; @@ -229,6 +233,11 @@ public class GlobalDataManaager { if(fBuilder!=null){ user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); + Map config = SDailyTasksConfig.config; + int dailymissionType = GameMisionType.DAILYMISSION.getType(); + for(SDailyTasksConfig sDailyTasksConfig:config.values()){ + fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); + } if(session.getFiveReady() == 1){ //客户端准备好接受五点刷新请求 MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE,null,true); }else{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index a00c1d389..9fa9c5560 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -6,6 +6,7 @@ import com.ljsd.jieling.config.SVipLevelConfig; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameMisionType; +import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.main.DailyMissionIdsType; @@ -50,9 +51,7 @@ public class UserMissionManager extends MongoBase { updateString("dailyCumulationData",dailyCumulationData); } dailyMissionIdsType.getDoingMissionIds().addAll(missionIds); - updateString("dailyMissionIdsType",dailyMissionIdsType); - break; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomManager.java index 7d29b3de0..f99dcfb7d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomManager.java @@ -118,7 +118,7 @@ public class RoomManager { .setCurHp(1000) .setMaxHp(1000) .setCamp(i) - .setCurXY(CellUtil.xy2Pos(10+i,20+i+2)); + .setCurXY(CellUtil.xy2Pos(4+i,4+i)); agentInfoList.add(agentInfoBuilder.build()); } @@ -126,6 +126,36 @@ public class RoomManager { return room; } + public static void getRommInfo(ISession iSession) throws Exception { + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + int roomId = user.getRoomInfo().getRoomId(); + int responseMsgId = MessageTypeProto.MessageType.ROOM_GET_FULL_INFO_RESPONSE_VALUE; + if(roomId == -1){ + MessageUtil.sendErrorResponse(iSession, 0, responseMsgId, "已经在房间中了"); + return; + } + Room room = getRoomById(roomId); + if(room == null){ + MessageUtil.sendErrorResponse(iSession, 0, responseMsgId, "房间已销毁"); + return; + } + List cells = new ArrayList<>(); + RoomPlayerInfo[] playerArray = room.getPlayerArray(); + int i=0; + List agentInfoList = new ArrayList<>(); + for(RoomPlayerInfo roomPlayerInfo:playerArray) { + RoomProto.AgentInfo.Builder agentInfoBuilder = RoomProto.AgentInfo.newBuilder(); + agentInfoBuilder.setPlayerUid(roomPlayerInfo.getUid()) + .setCurHp(1000) + .setMaxHp(1000) + .setCamp(i++) + .setCurXY(CellUtil.xy2Pos(4+i,4+i)); + agentInfoList.add(agentInfoBuilder.build()); + } + MessageUtil.sendRoomInfoToPerson(iSession, room.getType(), roomId, 1, cells, agentInfoList); + } + public static synchronized Room getRoomById(int roomId) { return roomMap.get(roomId); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomPlayerInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomPlayerInfo.java index 15d0bdfa7..397183b2a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomPlayerInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/room/RoomPlayerInfo.java @@ -15,6 +15,7 @@ public class RoomPlayerInfo { public static final int OFFLINE_STATE = 3; //掉线了 private int state = UNREADY_STATE; //见上面的定义 private int curPos; + private int camp; private long preMoveTimestamp; //上次移动时间 private int speed; //移动速度 private List path; //根据目标点计算出来的移动路径 @@ -85,6 +86,14 @@ public class RoomPlayerInfo { this.curPos = curPos; } + public int getCamp() { + return camp; + } + + public void setCamp(int camp) { + this.camp = camp; + } + //todo …… } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index 19626ef34..6d8f86bc3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -226,6 +226,21 @@ public class MessageUtil { } } + public static void sendRoomInfoToPerson(ISession session,int type, int roomId, int mapId, + List cellList, List agentInfoList){ + RoomProto.RoomMatchSuccessIndication.Builder builder = RoomProto.RoomMatchSuccessIndication.newBuilder(); + builder.setRoomId(roomId); + builder.setType(type); + builder.setMapId(mapId); + builder.addAllMapList(cellList); + builder.addAllAgentInfos(agentInfoList); + CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder(); + builder.setTemporaryItems(dropBuilder.build()); + RoomProto.RoomGetFullInfoResponse build = RoomProto.RoomGetFullInfoResponse.newBuilder().setRoomMatchSuccessIndication(builder.build()).build(); + sendMessage(session,1, MessageTypeProto.MessageType.ROOM_GET_FULL_INFO_RESPONSE_VALUE, build, true); + + } + public static void sendRoomCancelMatchResponse(ISession session, int responseMsgId, int type, boolean result) { RoomProto.RoomMatchResponse.Builder builder = RoomProto.RoomMatchResponse.newBuilder(); builder.setResult(result);