public MechCountForm(Action switchToSelect, Action switchToAddMech) { this.SwitchSelect = switchToSelect; this.SwitchToAddMech = switchToAddMech; choosableModels = XMLRetriever.GetMechModels(AllClasses, AllFactions); InitializeComponent(); FillOutForm(); // Inner Sphere light mechs IS20TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, LightMechWeightIncrements.TWENTY.ToString()); }; IS25TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, LightMechWeightIncrements.TWENTY_FIVE.ToString()); }; IS30TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, LightMechWeightIncrements.THIRTY.ToString()); }; IS35TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, LightMechWeightIncrements.THIRTY_FIVE.ToString()); }; // Clan light mechs clan20TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, LightMechWeightIncrements.TWENTY.ToString()); }; clan25TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, LightMechWeightIncrements.TWENTY_FIVE.ToString()); }; clan30TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, LightMechWeightIncrements.THIRTY.ToString()); }; clan35TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, LightMechWeightIncrements.THIRTY_FIVE.ToString()); }; // Inner Sphere medium mechs IS40TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, MediumMechWeightIncrements.FORTY.ToString()); }; IS45TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, MediumMechWeightIncrements.FORTY_FIVE.ToString()); }; IS50TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, MediumMechWeightIncrements.FIFTY.ToString()); }; IS55TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, MediumMechWeightIncrements.FIFTY_FIVE.ToString()); }; // Clan medium mechs clan40TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, MediumMechWeightIncrements.FORTY.ToString()); }; clan45TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, MediumMechWeightIncrements.FORTY_FIVE.ToString()); }; clan50TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, MediumMechWeightIncrements.FIFTY.ToString()); }; clan55TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, MediumMechWeightIncrements.FIFTY_FIVE.ToString()); }; // Inner Sphere heavy mechs IS60TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, HeavyMechWeightIncrements.SIXTY.ToString()); }; IS65TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, HeavyMechWeightIncrements.SIXTY_FIVE.ToString()); }; IS70TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, HeavyMechWeightIncrements.SEVENTY.ToString()); }; IS75TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, HeavyMechWeightIncrements.SEVENTY_FIVE.ToString()); }; // Clan heavy mechs clan60TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, HeavyMechWeightIncrements.SIXTY.ToString()); }; clan65TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, HeavyMechWeightIncrements.SIXTY_FIVE.ToString()); }; clan70TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, HeavyMechWeightIncrements.SEVENTY.ToString()); }; clan75TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, HeavyMechWeightIncrements.SEVENTY_FIVE.ToString()); }; // Inner Sphere assault mechs IS80TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, AssaultMechWeightIncrements.EIGHTY.ToString()); }; IS85TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, AssaultMechWeightIncrements.EIGHTY_FIVE.ToString()); }; IS90TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, AssaultMechWeightIncrements.NINETY.ToString()); }; IS95TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, AssaultMechWeightIncrements.NINETY_FIVE.ToString()); }; IS100TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.INNER_SPHERE, AssaultMechWeightIncrements.HUNDRED.ToString()); }; // Clan assault mechs clan80TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, AssaultMechWeightIncrements.EIGHTY.ToString()); }; clan85TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, AssaultMechWeightIncrements.EIGHTY_FIVE.ToString()); }; clan90TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, AssaultMechWeightIncrements.NINETY.ToString()); }; clan95TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, AssaultMechWeightIncrements.NINETY_FIVE.ToString()); }; clan100TonMoreButton.Click += delegate(object sender, EventArgs e) { OpenMoreWindow(sender, e, Factions.CLAN, AssaultMechWeightIncrements.HUNDRED.ToString()); }; }
private void ChooseMechButton_Click(object sender, EventArgs e) { if (ValidateFactionCheckboxes() && ValidateWeightClassCheckboxes()) { StrongRandom rand = new StrongRandom(); List <MechClasses> chosenClasses = new List <MechClasses>(); if (this.LightCheckbox.Checked) { chosenClasses.Add(MechClasses.LIGHT); } if (this.MediumCheckbox.Checked) { chosenClasses.Add(MechClasses.MEDIUM); } if (this.HeavyCheckbox.Checked) { chosenClasses.Add(MechClasses.HEAVY); } if (this.AssaultCheckbox.Checked) { chosenClasses.Add(MechClasses.ASSAULT); } List <Factions> chosenFactions = new List <Factions>(); if (this.ClanCheckbox.Checked) { chosenFactions.Add(Factions.CLAN); } if (this.InnerSphereCheckbox.Checked) { chosenFactions.Add(Factions.INNER_SPHERE); } List <MechModel> choosableModels = XMLRetriever.GetMechModels(chosenClasses.ToArray(), chosenFactions.ToArray()); if (choosableModels.Count > 0) { int mechSelectAttempts = 0; bool successfullySelectedMech = false; while (!successfullySelectedMech && mechSelectAttempts < NoRepeatsFailoverLimit) { int randomMechIndex = rand.Next(choosableModels.Count); MechModel chosenMech = choosableModels[randomMechIndex]; if (!AlreadySelectedMechs.Contains(chosenMech)) { this.ChassisName.Text = chosenMech.MechModelName; this.VariantName.Text = chosenMech.ModelVariantName; this.NoMechsError.Visible = false; AlreadySelectedMechs.Add(chosenMech); successfullySelectedMech = true; } else { mechSelectAttempts++; //Simple cleanout: if reached no repeat failover limit minus 1, //assume already selected mech list should be emptied so that last //attempt in while loop *should* succeed if any mech matches criteria if (mechSelectAttempts == (NoRepeatsFailoverLimit - 1)) { AlreadySelectedMechs.Clear(); } } } } else { this.ChassisName.Text = ""; this.VariantName.Text = ""; this.NoMechsError.Visible = true; } } }