Beispiel #1
0
        /// <summary>
        /// Aktuelle Spielfeldinformationen in der UI darstellen
        /// </summary>
        /// <param name="spielfeld"></param>
        public void SetzeSpielfeld(Spielfeld spielfeld)
        {
            //Ankreuzfelder in Spielfarbe setzen
            int zeile = 0;

            foreach (var ankreuzFelderSpielfarbe in spielfeld.AnkreuzFelderSpielfarbe)
            {
                Spielfarbe spielfarbe = ankreuzFelderSpielfarbe.Key;

                int spalte = 0;
                foreach (var ankreuzFeld in ankreuzFelderSpielfarbe.Value)
                {
                    // Create the tile
                    TileAnkreuzFeldSpielfarbe tile = new TileAnkreuzFeldSpielfarbe(ankreuzFeld, spielfarbe);

                    // Add tap recognition.
                    TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
                    tapGestureRecognizer.Tapped += OnTileTappedAsync;
                    tile.TileContentView.GestureRecognizers.Add(tapGestureRecognizer);

                    gridAnkreuzFelderSpielfarben.Children.Add(tile.TileContentView, spalte, zeile);

                    spalte++;
                }
                zeile++;
            }

            //Ankreuzfelder der Fehlversuche setzen
            int spalteAnkreuzFeldFehlversuch = 0;

            foreach (var ankreuzFeld in spielfeld.AnkreuzFelderFehlversuche)
            {
                // Create the tile
                TileAnkreuzFeldFehlversuch tile = new TileAnkreuzFeldFehlversuch(spalteAnkreuzFeldFehlversuch, ankreuzFeld.IstAngekreuzt, ankreuzFeld.IstNichtAnkreuzbar);

                // Add tap recognition.
                TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
                tapGestureRecognizer.Tapped += OnTileAnkreuzFeldFehlversuchTappedAsync;
                tile.TileContentView.GestureRecognizers.Add(tapGestureRecognizer);

                gridFehlversuche.Children.Add(tile.TileContentView, spalteAnkreuzFeldFehlversuch, 0);

                spalteAnkreuzFeldFehlversuch++;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Eventverarbeitung wenn ein Ankreuzfeld Fehlversuch getapped wurde
        /// </summary>
        /// <param name="sender">View der getapped wurde</param>
        /// <param name="e"></param>
        private async void OnTileAnkreuzFeldFehlversuchTappedAsync(object sender, EventArgs e)
        {
            if (isBusy)
            {
                return;
            }

            isBusy = true;

            //Ermitteln welches TileAnkreuzFeldFehlversuch zum getapped View gehört
            View tileView = (View)sender;
            TileAnkreuzFeldFehlversuch tappedTile = TileAnkreuzFeldFehlversuch.Dictionary[tileView];

            //Für User-Feedback Animation starten: Scale ContentView out and in
            await tappedTile.TileContentView.ScaleTo(1.5, 250, Easing.SinOut);

            await tappedTile.TileContentView.ScaleTo(1, 250, Easing.SinIn);

            //Ankreuzten des Feldes in der Business Logik verarbeiten
            TappedAnkreuzFeldFehlversuch?.Invoke(tappedTile.FeldIndex);

            isBusy = false;
        }