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 и у самого клиента. Только нужно дождаться всей очереди и запускать раунд уже всем подключившимся, а то кто-то будет раньше других появляться в бою.