Тема: [Piercing Blow] PROTOCOL_ROOM_GET_SLOTINFO_ACK
Показать сообщение отдельно
Непрочитано 14.04.2017, 22:18   #22
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK

PROTOCOL_BATTLE_READYBATTLE_REQ приходит от клиента, после того, как он решил вступить в бой. Соответственно проставляешь клиенту статус Ready (9). Если бой уже начался или условия начала боя соблюдены (имеется необходимое количество игроков со статусом Ready) то нужно присвоить игроку\ам статус Load (10).

PROTOCOL_BATTLE_PRESTARTBATTLE_REQ при получении от клиента устанавливаешь ему статус PreStart (12) и как только очередь игроков со статусом Load закончится, меняешь статус комнаты на PreBattle:

public void PreStartBattleRequest(Account account)
{
	account.SetState(SlotState.PreStart);
 
	if (GetAccounts(SlotState.Load).Count() < 1)
	{
		SetState(RoomState.PreBattle);
	}
}
 
 
Code: C#

После этого от клиентов ждёшь пакет PROTOCOL_BATTLE_STARTBATTLE_REQ устанавливаешь ему статус PreBattle, а комнате Battle и можешь стартовать раунд.

При старте раунда естественно устанавливаешь статус Battle и у самого клиента. Только нужно дождаться всей очереди и запускать раунд уже всем подключившимся, а то кто-то будет раньше других появляться в бою.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием