GalaxyServer:Room

Материал из GreatGalaxy
Перейти к: навигация, поиск

GGRoom

Описание

Это некий инстанс, отделенный от других комнат. Игроки могут видеть друг друга и взаимодействовать только в пределах своей комнаты. После выхода последнего игрока из комнаты - она удаляется с сервера.

Параметры комнаты

  • (ushort) id (read_only) - уникальный порядковый идентификатор
  • (string) name - имя комнаты (4..32 символов)
  • (ushort) clients_count (read_only) - текущее количество игроков
  • (ushort) clients_count_max - максимальное количество игроков
  • (еще не сделано) Количество игроков для старта (1=старт сразу)
  • (bool) visible - открытая или закрытая (Видимая / Скрытая)
  • (uint) client_host_id - Уникальный идентификатор хоста-клиента (создателья) комнаты
  • (GGPlayer) client_host - Хост-клиент (создатель) комнаты. (бета) возможен возврат null
  • (int32) param_int1 - Пользовательский параметр-1 комнаты
  • (int32) param_int2 - Пользовательский параметр-2 комнаты
  • (int32) param_int3 - Пользовательский параметр-3 комнаты
  • Dictionary<NetConnection, Client>Clients - Список клиентов в комнате ВНИМАНИЕ! Эту переменную скрыть и сделать прослойку вызова


Информацию об игроках комнаты можно получить:

ushort cnt = GalaxyNetwork.Players.Count;   // Количество клиентов

bool b = GalaxyNetwork.Players.Exist(uint clientId);   // Проверка, такой игрок есть в комнате?

GGPlayer player = GalaxyNetwork.Players.GetPlayer(uint clientId);   // Получить игрока по id

List<GGPlayer> players = GalaxyNetwork.Players.GetPlayersList();   // Получить список игроков

bool myPlayer = GalaxyNetwork.Players.MyPlayer;   // Мой персонаж

Проверить, являюсь ли я хостом:

bool isHost = GalaxyNetwork.Connection.isHost;


Операции

Запрос списка комнат

 GalaxyNetwork.SendOperation.Room.GetRoomsList(byte maxCount);

Где maxCnt необязательное значение, указывающее ограничение максимального кол-во получаемых записей комнат. По умолчанию =15 Результат придет в подписанный метод: OnGalaxyRoomList. Большие значения сильно влияют на трафик.


Создание и вход в новую комнату

 GalaxyNetwork.SendOperation.Room.EnterToNewRoom(GGRoom room);

Пример: GalaxyNetwork.SendOperation.Room.EnterToNewRoom(new GGRoom(параметры_создаваемой_комнаты));


Запрос на переход в комнату

 GalaxyNetwork.SendOperation.Room.RoomEnter(ushort roomId);

Где roomId можно получить в пришедшем списке комнат OnGalaxyRoomList.


Запрос на выход из текущей комнаты в Лобби

 GalaxyNetwork.SendOperation.Room.RoomExitToLobby();


Список событий, на которые можно подписаться:

Изменены параметры комнаты или создана новая

void OnGalaxyRoomUpdate(GGRoom room, ErrorCode errorCode)

Где, GGRoom - комната, параметры которой изменились.

Параметры комнаты изменились, например название комнаты, количество игроков, статус (открыта или закрыта).

Если кол-во игроков =0, то комната удалена.

Так-же, вызывается если создана новая комната.

Количество игроков в комнате можно узнать из room.currentPlayersCount.

Внимание: Событие срабатывает только в Лобби и служит для обновления списка комнат


Выход из комнаты

// Автоматически вызывается, когда кто-то вышел из комнаты, где и ты
void OnGalaxyRoomExit(uint clientId, string nikname, ErrorCode errorCode)


Игрок вошел в комнату

void OnGalaxyRoomEnter(UInt32 clientId, String nikname, ErrorCode errorCode)

Проверить, что вы подключились к комнате можно так: if(clientId == GalaxyNetwork.Connection.clientId) Debug.Log("Я вошел в комнату");

Где, clientId - идентификатор клиента, nikname - ник игрока.

Вызывается, когда любой игрок подключается к комнате.

Новый, вошедший игрок, будет добавлен в список GalaxyNetwork.Players.


Вы создали и вошли в свою комнату

void OnGalaxyEnterToNewRoom(GGRoom room, ErrorCode errorCode)

Где, GGRoom - текущая комната.

Вызывается, когда создадите новую комнату.


Сервер прислал список комнат

void OnGalaxyRoomList(List<GGRoom> roomsList, ErrorCode errorCode)

Где, roomsList - список пришедших комната.

Вызывается, только в лобби, по запросу списка комнат игроком.

Список автоматически сортируется, в начале идут не заполненные комнаты.




Назад