private static void setupDTOs(PlayerDTO playerDTO, IList <PlayerDTO> opponentDTOs, IList <ResourceDTO> resourceDTOs) { // create the player IMoveable playerShip = PlayerAdapter.playerDTOToMoveable(playerDTO, Colors.Black); playerShip.Mover = new MoveStrategy(); UIDispatcher.Invoke(() => { Player = new Player(Username, UserID, playerDTO.Wallet, playerDTO.Health, playerShip); }); // convert data transfer objects to their respective types and add them to list foreach (PlayerDTO opponent in opponentDTOs) { IMoveable moveable = PlayerAdapter.playerDTOToMoveable(opponent, Colors.Red); while (!Opponents.TryAdd(opponent.Name, moveable)) { Task.Delay(1); } } foreach (ResourceDTO resource in resourceDTOs) { IResource r = ResourceAdapter.DTOToResource(resource); while (!Resources.TryAdd(resource.ID, r)) { Task.Delay(1); } } }