Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }