예제 #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++;
            }
        }
예제 #2
0
        /// <summary>
        /// Eventverarbeitung wenn ein Ankreuzfeld in Spielfarbe getapped wurde
        /// </summary>
        /// <param name="sender">View der getapped wurde</param>
        /// <param name="e"></param>
        async void OnTileTappedAsync(object sender, EventArgs args)
        {
            if (isBusy)
            {
                return;
            }

            isBusy = true;

            //Ermitteln welches TileAnkreuzFeldSpielfarbe zum getappeden View gehört
            View tileView = (View)sender;
            TileAnkreuzFeldSpielfarbe tappedTile = TileAnkreuzFeldSpielfarbe.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);

            Tapped?.Invoke(tappedTile.Spielfarbe, tappedTile.Augenzahl);

            isBusy = false;
        }