public void ConnectRoom()
    {
        MessageRoomEnter message = new MessageRoomEnter();

        message.id = myId;
        GalaxyApi.send.SendMessageToServer((byte)CommandType.roomEnter, message, GalaxyCoreCommon.GalaxyDeliveryType.reliable);
    }
Esempio n. 2
0
        /// <summary>
        /// Отправляем игроку который хотел войти в комнату ответ с разрешением входа.
        /// </summary>
        /// <param name="clientConnection">Коннект клиента</param>
        private void SendRoomEnterSusses(ClientConnection clientConnection)
        {
            MessageRoomEnter message = new MessageRoomEnter();                                               // создаем новое сообщение

            message.id   = this.id;                                                                          // текущий ид инстанса
            message.name = this.name;                                                                        //текущее имя инстанса
            clientConnection.SendMessage((byte)CommandType.roomEnter, message, GalaxyDeliveryType.reliable); // отправляем сообщение
            if (Server.debugLog)
            {
                Client client = Server.clientManager.GetClientByConnection(clientConnection);
                Console.WriteLine("Клиент ID:" + client.id + " присоеденился к комнате ID:" + this.id);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Реализация обработки входящих сообщений
        /// </summary>
        /// <param name="code">Код сообщения который мы приложили со стороны клиента</param>
        /// <param name="data">Массив байт (сообщение)</param>
        /// <param name="clientConnection">Экземпляр подключения клиента</param>
        public void IncomingMessage(byte code, byte[] data, ClientConnection clientConnection)
        {
            // распределяем сообщения по заданному нами же коду, для удобства используем Enum
            switch ((CommandType)code)
            {
            case CommandType.roomCreate:
                //передаем запрос о создании комнаты менеджер инстансов
                Server.instanceManager.CreateRoom(data, clientConnection);
                break;

            case CommandType.roomGetList:
                //Передаем запрос о получении списка комнат
                //По сколько этот запрос может быть довольно долгим, а время его выполнения нас не сильно волнует
                //мы вызываем его отдельным таском
                Task.Run(() => Server.instanceManager.GetAllRoomsInfo(clientConnection));
                break;

            case CommandType.roomEnter:
                MessageRoomEnter message = MessageRoomEnter.Deserialize <MessageRoomEnter>(data);
                if (message.id == 0)
                {
                    return;
                }
                Server.instanceManager.ClientEnter(message.id, clientConnection);
                break;


            //В остальных случаях отправляем сообщение в инстанс
            default:
                if (clientConnection.instanse == null)
                {
                    return;
                }
                clientConnection.instanse.TossMessage(code, data, clientConnection);
                break;
            }
        }