예제 #1
0
    public void OnDrop(PointerEventData eventData)
    {
        Debug.Log("OnDrop! " + eventData);

        StapelContainer      ziel         = GetComponent <StapelContainer>();
        SpielprinzipPatience spielprinzip = FindObjectOfType <SpielprinzipPatience>();
        //spielprinzip.LegeKarteAuf(ziel);

        Karte karte = eventData.pointerDrag.GetComponent <Karte>();

        if (karte != null) //es wurde eine (vorschau)karte gezogen
        {
            spielprinzip.LegeKarteAuf(ziel);
            return; //ondrop abbrechen
        }

        StapelContainer spalte = eventData.pointerDrag.GetComponent <StapelContainer>();

        if (spalte != null)                                             //es wurde eine andere spalte/container gezogen
        {
            if (spielprinzip.LegeKarteAuf(ziel, spalte.ObersteKarte())) //wurde abgelegt
            {
                spalte.EntferneObersteKarte();
            }
        }
    }
    public void LegeKarteAuf(StapelContainer container)
    {
        if (vorschauKarte.aktuelleBeschreibung() == null) //keine Karte aufgedeckt oder übrig
        {
            return;
        }

        Kartenbeschreibung alteKarte = container.ObersteKarte();
        Kartenbeschreibung neueKarte = vorschauKarte.aktuelleBeschreibung();

        if (WertPasst(alteKarte, neueKarte) && FarbePasst(alteKarte, neueKarte))
        {
            Debug.Log("Lege die Karte auf " + container);
            Kartenstapel stapel = GetComponent <Kartenstapel>();                         //Verweis auf Kartenstapelscript
            stapel.kartenContainer = container.gameObject;                               //dem Stapel sagen, wo erzeugeKarteInSzene die Karte unterordnen soll
            Karte karteInSzene = stapel.erzeugeKarteInSzene();                           //GameObject zum Zeichnen der Karte in der Szene anlegen
            karteInSzene.setzeBeschreibung(vorschauKarte.aktuelleBeschreibung(), false); //Kartenwert und Darstellung verbinden & sofort aufdecken
            vorschauKarte.setzeBeschreibung(null, false);
            KlickAufStapel();

            container.KartenAnordnen();

            if (stapel.istLeer() && vorschauKarte.aktuelleBeschreibung() == null) //alle karten abgelegt
            {
                dialogGewonnen.SetActive(true);
            }
        }
        else //passt nicht
        {
            dialogFehler.SetActive(true);
        }
    }
예제 #3
0
 public void OnEndDrag(PointerEventData eventData)
 {
     ghostGroup.gameObject.SetActive(false);
     geisterLoeschen();
     if (container != null) //es wurde Container/Spalte gezogen
     {
         container.ziehendeKarten.Clear();
         container = null;
     }
 }
    public void LegeKarteAuf(StapelContainer container)
    {
        if (vorschauKarte.aktuelleBeschreibung() == null) //keine Karte aufgedeckt oder übrig
        {
            return;
        }
        Kartenbeschreibung neueKarte = vorschauKarte.aktuelleBeschreibung();

        if (LegeKarteAuf(container, neueKarte))
        {
            vorschauKarte.setzeBeschreibung(null, false);
            KlickAufStapel();
            Kartenstapel stapel = GetComponent <Kartenstapel>();                  //Verweis auf Kartenstapelscript
            if (stapel.istLeer() && vorschauKarte.aktuelleBeschreibung() == null) //alle karten abgelegt
            {
                dialogGewonnen.SetActive(true);
            }
        }
    }
    public void LegeKarteAuf(StapelContainer container)
    {
        if (vorschauKarte.aktuelleBeschreibung() == null) //keine Karte aufgedeckt oder übrig
        {
            return;
        }

        Debug.Log("Lege die Karte auf " + container);
        Kartenstapel stapel = GetComponent <Kartenstapel>();                         //Verweis auf Kartenstapelscript

        stapel.kartenContainer = container.gameObject;                               //dem Stapel sagen, wo erzeugeKarteInSzene die Karte unterordnen soll
        Karte karteInSzene = stapel.erzeugeKarteInSzene();                           //GameObject zum Zeichnen der Karte in der Szene anlegen

        karteInSzene.setzeBeschreibung(vorschauKarte.aktuelleBeschreibung(), false); //Kartenwert und Darstellung verbinden & sofort aufdecken
        vorschauKarte.setzeBeschreibung(null, false);
        KlickAufStapel();

        container.KartenAnordnen();
    }
예제 #6
0
    public void OnDrop(PointerEventData eventData)
    {
        Debug.Log("OnDrop! " + eventData);

        StapelContainer      ziel         = GetComponent <StapelContainer>();
        SpielprinzipPatience spielprinzip = FindObjectOfType <SpielprinzipPatience>();
        //spielprinzip.LegeKarteAuf(ziel);

        Karte karte = eventData.pointerDrag.GetComponent <Karte>();

        if (karte != null) //es wurde eine (vorschau)karte gezogen
        {
            spielprinzip.LegeKarteAuf(ziel);
            return; //ondrop abbrechen
        }

        StapelContainer spalte = eventData.pointerDrag.GetComponent <StapelContainer>();

        if (spalte != null)                      //es wurde eine andere spalte/container gezogen
        {
            if (spalte.ziehendeKarten.Count > 0) //wenn mehrere karten einer anderen spalte hierher gezogen werden
            {
                foreach (Karte k in spalte.ziehendeKarten)
                {
                    Debug.Log("- gezogen wurde: " + k);
                }

                Karte untersteKarte = spalte.ziehendeKarten[0];
                if (spielprinzip.LegeKarteAuf(ziel, untersteKarte.aktuelleBeschreibung())) //unterste Karte der Ziehenden gemäß der Spielregeln ablegbar?
                {
                    for (int i = 1; i < spalte.ziehendeKarten.Count; i++)
                    {
                        spielprinzip.LegeKarteAuf(ziel, spalte.ziehendeKarten[i].aktuelleBeschreibung());
                    }
                    spalte.EntferneZiehendeKarten();
                }
            }
            else if (spielprinzip.LegeKarteAuf(ziel, spalte.ObersteKarte())) //wurde abgelegt
            {
                spalte.EntferneObersteKarte();
            }
        }
    }
    private bool passt(Kartenbeschreibung neueKarte)
    {
        StapelContainer    endablageContainer = GetComponent <StapelContainer>();
        Kartenbeschreibung alteKarte          = endablageContainer.ObersteKarte();

        Debug.Log("Endablage überprüft: " + neueKarte + " kann gelegt werden auf: " + alteKarte);

        if (alteKarte == null)
        {
            return(neueKarte.Wert == 2);  //in leere Endablage kann nur die 2 gelegt werden
        }
        else
        {
            return
                ((alteKarte.Farbe == neueKarte.Farbe)
                 &&
                 (neueKarte.Wert == alteKarte.Wert + 1)
                );
        }
    }
    public bool LegeKarteAuf(StapelContainer container, Kartenbeschreibung neueKarte)
    {
        Kartenbeschreibung alteKarte = container.ObersteKarte();

        if (WertPasst(alteKarte, neueKarte) && FarbePasst(alteKarte, neueKarte))
        {
            Debug.Log("Lege die Karte auf " + container);
            Kartenstapel stapel = GetComponent <Kartenstapel>(); //Verweis auf Kartenstapelscript
            stapel.kartenContainer = container.gameObject;       //dem Stapel sagen, wo erzeugeKarteInSzene die Karte unterordnen soll
            Karte karteInSzene = stapel.erzeugeKarteInSzene();   //GameObject zum Zeichnen der Karte in der Szene anlegen
            karteInSzene.setzeBeschreibung(neueKarte, false);    //Kartenwert und Darstellung verbinden & sofort aufdecken

            container.KartenAnordnen();
            return(true); //Karte passt und wurde verschoben
        }
        else //passt nicht
        {
            dialogFehler.SetActive(true);
            return(false); //Karte passt nicht, nichts weiter machen
        }
    }
예제 #9
0
    public void OnBeginDrag(PointerEventData eventData)
    {
        container = GetComponent <StapelContainer>();
        if (container != null)
        {
            if (container.ObersteKarte() == null) //Drag abbrechen, wenn gezogene Spalte leer
            {
                eventData.pointerDrag = null;
                return;
            }
            else
            {
                //ghost.sprite = container.ObersteKarte().kartenbild;

                Karte karteUnterMaus = eventData.pointerPressRaycast.gameObject.GetComponent <Karte>();
                if (karteUnterMaus != null)
                {
                    Debug.Log("KarteunterMaus=" + karteUnterMaus);
                    if (!container.SammleKartenAb(karteUnterMaus))
                    {
                        eventData.pointerDrag = null;                                            //Versuch verdeckte Karte zu ziehen -> Abbruch!
                    }
                    else //karten können gezogen werden
                    {
                        foreach (Karte k in container.ziehendeKarten)
                        {
                            geistErzeugen(k.aktuelleBeschreibung().kartenbild);
                        }
                    }
                }
            }
        }
        else
        {
            geistErzeugen(GetComponent <Image>().sprite); //ghost.sprite = GetComponent<Image>().sprite;
        }
        ghostGroup.gameObject.SetActive(true);
    }
    public void OnDrop(PointerEventData eventData)
    {
        StapelContainer spalte = eventData.pointerDrag.GetComponent <StapelContainer>();

        if (spalte != null)                       //es wurde eine spalte/container auf die Endablage gezogen
        {
            if (spalte.ziehendeKarten.Count == 1) //wenn mehrere karten einer anderen spalte hierher gezogen werden
            {
                Karte untersteKarte = spalte.ziehendeKarten[0];
                if (passt(untersteKarte.aktuelleBeschreibung())) //Kann Karte abgelegt werden?
                {
                    //Kartenstapel kartenstapel = FindObjectOfType<Kartenstapel>();
                    kartenstapel.kartenContainer = gameObject;
                    kartenstapel.erzeugeKarteInSzene().setzeBeschreibung(untersteKarte.aktuelleBeschreibung(), false);

                    spalte.EntferneObersteKarte();

                    SpielprinzipPatienceHarfe erweiterung = kartenstapel.GetComponent <SpielprinzipPatienceHarfe>();
                    erweiterung.PruefeObGewonnen();
                }
            }
        }
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        StapelContainer container = GetComponent <StapelContainer>();

        if (container != null)
        {
            if (container.ObersteKarte() == null) //Drag abbrechen, wenn gezogene Spalte leer
            {
                eventData.pointerDrag = null;
                return;
            }
            else
            {
                ghost.sprite = container.ObersteKarte().kartenbild;
            }
        }
        else
        {
            ghost.sprite = GetComponent <Image>().sprite;
        }


        ghost.gameObject.SetActive(true);
    }