public Task <FinalWorldEnterData> EnterWorld(int characterSlotNumber) { if (State != ClientState.LobbyServerCharacterListReceived) { throw new InvalidOperationException("Client has not received characters or busy"); } var tcs = new VirtualTCS <FinalWorldEnterData>(); ActiveTask = tcs; State = ClientState.LobbyServerWorldEnterInProgress; LobbyClient.EnterWorld(characterSlotNumber); return(tcs.Task); }