public override async Task <bool> OnExecute() { var vineSelectionViewModel = _mefContainer.GetExportedValue <IVineSelectionViewModel>(); var selectedVine = await _metroDialog.ShowDialog(vineSelectionViewModel); if (selectedVine == null) { IgnoreMaxValue = false; IgnoreRequirements = false; return(false); } var fieldSelectionViewModel = _mefContainer.GetExportedValue <IFieldSelectionViewModel>(); fieldSelectionViewModel.IgnoreMaxValue = IgnoreMaxValue; fieldSelectionViewModel.VineToPlant = selectedVine; var selectedField = await _metroDialog.ShowDialog(fieldSelectionViewModel); if (selectedField == null) { IgnoreMaxValue = false; IgnoreRequirements = false; return(false); } selectedField.PlantVine(selectedVine); GameState.Hand.RemoveCard(selectedVine); if (GameState.Windmill.IsBought && !GameState.Windmill.HasBeenUsed) { GameState.Windmill.HasBeenUsed = true; GameState.VictoryPoints++; } IgnoreMaxValue = false; IgnoreRequirements = false; return(true); }
private async Task <bool> SelectStructure() { var dialogViewModel = _mefContainer.GetExportedValue <IBuildStructureViewModel>(); dialogViewModel.BuildingBonus = BuildingBonus; var selectedStructure = await _metroDialog.ShowDialog(dialogViewModel); if (selectedStructure == null) { return(false); } selectedStructure.IsBought = true; GameState.Money -= Math.Max(selectedStructure.Cost - BuildingBonus, 0); BuildingBonus = 0; return(true); }
private async Task <bool> ChooseAndPlayCard() { var cardSelectionViewModel = _mefContainer.GetExportedValue <ICardSelectionViewModel>(); cardSelectionViewModel.Initialize(Cards.Where(p => p.CanPlay(GameState))); var selectedCard = await _metroDialog.ShowDialog(cardSelectionViewModel); if (selectedCard == null) { return(false); } var result = await selectedCard.Apply(GameState); if (!result) { return(false); } selectedCard.Discard(); return(true); }