コード例 #1
0
        private void HandleJoinTunnelRequest(TcpSession session, Packet p)
        {
            var tunnelID = p.ReadUInt32();
            var slotID   = p.ReadByte();
            //_logger.Debug("-C_JOIN_TUNNEL_REQ- Slot: {0} Tunnel: {1}", slotID, tunnelID);

            Player plr;

            if (!_players.TryGetValue(session.Guid, out plr))
            {
                session.StopListening();
                return;
            }

            Room room;

            if (!_rooms.TryGetValue(tunnelID, out room))
            {
                room = new Room(_rooms, EServerType.Relay)
                {
                    TunnelID = tunnelID
                };
                _rooms.TryAdd(tunnelID, room);
            }

            room.Join(plr);
            plr.SlotID = slotID;

            var ack = new Packet(ERelayPacket.SResultAck);

            ack.Write((uint)3); // error code
            session.Send(ack);
        }