public LobbyForm(List<CrewSlotConfiguration> crewSlotConfigurations, Nation selectedNation, NationSelectForm nationSelectForm, VehicleType vehicleType = null)
		{
			InitializeComponent();

			_crewSlotConfigurations = crewSlotConfigurations;
			_nationSelectForm = nationSelectForm;

			if(_vehicleType == null && vehicleType != null)
				_vehicleType = vehicleType;

			Rectangle screenBounds = Screen.FromControl(this).Bounds;

			_groupBoxSize = new Size(149, 85);
			_vehicleTypeSize = new Size(138, 32);
			_crewSkillsSize = new Size(138, 32);

			ScreenWidth = screenBounds.Width;
			int offsetFromTopOfScreen = screenBounds.Height - Constants.OffsetFromTheBottomOfTheScreenForTheLobbyFormToStart;

			NationStartingXCoordinate = 198;

			Top = offsetFromTopOfScreen;
			Width = ScreenWidth;

			cbSelectedNation.Items.AddRange(Enum.GetValues(typeof(Nation)).Cast<object>().ToArray());

			SetSelectedNationAndStartingCoordinates(selectedNation);
			PopulateGroupBoxDictionary();

			cbSelectedNation_SelectedIndexChanged(null, null);
		}
		private void SetupElements(NationSelectForm nationSelectForm, Nation selectedNation, int numberOfCrewSlots)
		{
			_nationSelectForm = nationSelectForm;
			_selectedNation = selectedNation;
			_numberOfCrewSlots = numberOfCrewSlots;
			_vehicleType = new VehicleType();	// Crappy default value
			_crewSlotData = Helpers.LoadCrewSlotDataFromFile(CrewSlotDataFileName) ?? new List<CrewSlotData>();	// Load from file, if null is returned, creates a new (empty) list

			if (_crewSlotData.Count < 1) // Happens only when nothing comes from reading the file with data.
			{
				_crewSlotData.Add(new CrewSlotData(_selectedNation));
			}

			#region Setup fields for form controls
			List<string> vehicleNames = Helpers.LoadVehicleDataFromJson(Helpers.GetVehicleJsonDataForNation(_selectedNation)).OrderBy(v => v.VehicleName).Select(v => v.VehicleName).ToList();
			_faytVehicleSource = new AutoCompleteStringCollection();
			_faytVehicleSource.AddRange(vehicleNames.ToArray());

			List<string> vehicleTypes = Helpers.LoadVehicleTypesDataFromJson(Helpers.GetVehicleTypesJsonData()).OrderBy(t => t.VehicleTypeLongName).Select(t => t.VehicleTypeLongName).ToList();
			_faytVehicleTypeSource = new AutoCompleteStringCollection();
			_faytVehicleTypeSource.AddRange(vehicleTypes.ToArray());

			_crewSlotConfigurations = new List<CrewSlotConfiguration>();
			_crewSlotGroupBoxes = new Dictionary<int, GroupBox>();
			_crewNameComboBoxes = new Dictionary<int, ComboBox>();
			_crewTrainedMembersNumericScrollers = new Dictionary<int, NumericUpDown>();
			_crewVehicleTypeComboBoxes = new Dictionary<int, ComboBox>();
			#endregion

			SetFormHeight();
			Helpers.ChangeBackground(this, selectedNation);
			PopulateFormControls();
		}
		public ConfigureCrewSlotsForm(NationSelectForm nationSelectForm, Nation selectedNation, int numberOfCrewSlots)
		{
			InitializeComponent();
			SetupElements(nationSelectForm, selectedNation, numberOfCrewSlots);
		}
		private void btnSetup_Click(object sender, EventArgs e)
		{
			Visible = false;
			var nationSelectForm = new NationSelectForm(this);
			nationSelectForm.ShowDialog();
		}