private void AskToSelectTimedBomb(Action callback) { GeniusBombDecisionSubPhase selectBombToDrop = (GeniusBombDecisionSubPhase)Phases.StartTemporarySubPhaseNew( "Select bomb to drop", typeof(GeniusBombDecisionSubPhase), callback ); foreach (var timedBombInstalled in BombsManager.GetBombsToDrop(HostShip, BombTypeRestriction)) { selectBombToDrop.AddDecision( timedBombInstalled.UpgradeInfo.Name, delegate { SelectBomb(timedBombInstalled); } ); } selectBombToDrop.DescriptionShort = "\"Genius\""; selectBombToDrop.DescriptionLong = "Select a device to drop"; selectBombToDrop.ImageSource = HostUpgrade; selectBombToDrop.DefaultDecisionName = BombsManager.GetBombsToDrop(HostShip, BombTypeRestriction).First().UpgradeInfo.Name; selectBombToDrop.RequiredPlayer = HostShip.Owner.PlayerNo; selectBombToDrop.Start(); }
private void UseGeniusAbility(object sender, EventArgs e) { List <GenericUpgrade> timedBombsInstalled = BombsManager.GetBombsToDrop(HostShip, BombTypeRestriction); DecisionSubPhase.ConfirmDecisionNoCallback(); if (timedBombsInstalled.Count == 1) { BombsManager.CurrentDevice = timedBombsInstalled[0] as GenericBomb; StartDropBombSubphase(); } else { AskToSelectTimedBomb(StartDropBombSubphase); } }