Exemple #1
0
        protected override async ETTask Run(Session session, C2G_EnterRoomRequest request, G2C_EnterRoomResponse response, Action reply)
        {
            // 获取房间Id
            long locationInstanceId             = StartSceneConfigCategory.Instance.LocationConfig.SceneId;
            L2A_RoomGetResponse roomGetResponse =
                (L2A_RoomGetResponse)await ActorMessageHelper.CallActor(locationInstanceId,
                                                                        new A2L_RoomGetRequest { RoomNum = request.RoomNum });

            if (roomGetResponse.Error != ErrorCode.ERR_Success)
            {
                response.Error   = roomGetResponse.Error;
                response.Message = roomGetResponse.Message;
                reply();
                return;
            }

            // 向房间请求加入
            long uid = session.GetComponent <UserInfo>().UId;
            M2G_EnterRoomResponse joinRoomResponse =
                (M2G_EnterRoomResponse)await ActorMessageHelper.CallLocationActor(roomGetResponse.RoomId,
                                                                                  new G2M_EnterRoomRequest { UId = uid, GateSessionId = session.InstanceId });

            response.SeatIndex  = joinRoomResponse.SeatIndex;
            response.Error      = joinRoomResponse.Error;
            response.Message    = joinRoomResponse.Message;
            response.RoomMaster = joinRoomResponse.RoomMaster;
            if (response.Error == ErrorCode.ERR_Success)
            {
                GateSessionActorId gateSessionActorId = session.GetComponent <GateSessionActorId>() ?? session.AddComponent <GateSessionActorId>();
                gateSessionActorId.ActorId = joinRoomResponse.PlayerActorId;
            }

            reply();
        }
Exemple #2
0
        protected override async ETTask Run(Scene scene, G2M_CreateRoomRequest message, M2G_CreateRoomResponse response, Action reply)
        {
            // 获取一个房间号
            long locationInstanceId = StartSceneConfigCategory.Instance.LocationConfig.SceneId;
            L2M_GetRoomNumResponse getRoomNumResponse =
                (L2M_GetRoomNumResponse)await ActorMessageHelper.CallActor(locationInstanceId, new M2L_GetRoomNumRequest());

            if (getRoomNumResponse.Error != ErrorCode.ERR_Success)
            {
                response.Error   = getRoomNumResponse.Error;
                response.Message = getRoomNumResponse.Message;
                reply();
                return;
            }

            Room room = EntityFactory.Create <Room, long, long>(scene, getRoomNumResponse.RoomNum, message.UId);

            room.Parent = scene;
            room.AddComponent <MailBoxComponent>();
            await room.AddLocation();

            response.RoomNum = room.Num;
            reply();

            Log.Info($"创建房间:{room.Num}");
        }