コード例 #1
0
 public bool Passt(Karte karte)
 {
     return((karte.aktuelleBeschreibung().Farbe == offeneKarte.aktuelleBeschreibung().Farbe)
            ||
            (karte.aktuelleBeschreibung().Wert == offeneKarte.aktuelleBeschreibung().Wert)
            );
 }
コード例 #2
0
    public void KlickAufStapel()
    {
        Debug.Log("Klick auf Stapel");
        Kartenstapel stapel = GetComponent <Kartenstapel>(); //Verweis auf Kartenstapelscript

        if (vorschauKarte.aktuelleBeschreibung() != null)
        {
            stapel.legeKarteZurueck(vorschauKarte.aktuelleBeschreibung());
        }

        if (stapel.istLeer())
        {
            stapel.gameObject.SetActive(false);
        }
        else
        {
            Kartenbeschreibung gezogeneKarte = stapel.hebeObersteKarteAb(); //Karte vom Stapel abheben (nur Wert)
            vorschauKarte.setzeBeschreibung(gezogeneKarte, false);

            if (stapel.istLeer())
            {
                stapel.gameObject.SetActive(false);
            }
        }
    }
コード例 #3
0
    public void LegeAb(Karte handstapelkarteInSzene)
    {
        stapel.legeKarteZurueck(offeneKarte.aktuelleBeschreibung());
        stapel.mischeStapel();

        offeneKarte.setzeBeschreibung(handstapelkarteInSzene.aktuelleBeschreibung(), false);
        Destroy(handstapelkarteInSzene.gameObject); //Typischer Fehler: .gameObject vergessen
    }
コード例 #4
0
    public void LegeAb(Karte handstapelkarteInSzene)
    {
        stapel.legeKarteZurueck(offeneKarte.aktuelleBeschreibung());
        stapel.mischeStapel();

        offeneKarte.setzeBeschreibung(handstapelkarteInSzene.aktuelleBeschreibung(), false);
        Destroy(handstapelkarteInSzene.gameObject); //Typischer Fehler: .gameObject vergessen

        if (handstapelkarteInSzene.transform.parent.childCount == 1)
        {
            gewonnenDialog.SetActive(true);
            textGewonnen.text = WerIstDran().anzeigename + " hat gewonnen.";
        }
    }
    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();
                }
            }
        }
    }
コード例 #6
0
    private void KlickAufHandStapelKarte()
    {
        Karte karteInSzene = EventSystem.current.currentSelectedGameObject.GetComponent <Karte>();

        Debug.Log("Handstapelkarte angeklickt: " + karteInSzene.aktuelleBeschreibung());
        if (Passt(karteInSzene))
        {
            LegeAb(karteInSzene);
        }
        else
        {
            Debug.Log("Die Karte " + karteInSzene + " passt NICHT auf " + offeneKarte);
        }
    }
コード例 #7
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();
            }
        }
    }
コード例 #8
0
    private void KlickAufHandStapelKarte()
    {
        if (spielprinzip.WerIstDran() != this)
        {
            Debug.LogWarning("Du bist nicht dran! ");
            return;
        }

        Karte karteInSzene = EventSystem.current.currentSelectedGameObject.GetComponent <Karte>();

        Debug.Log("Handstapelkarte angeklickt: " + karteInSzene.aktuelleBeschreibung());
        if (spielprinzip.Passt(karteInSzene))
        {
            spielprinzip.LegeAb(karteInSzene);
            spielprinzip.stapel.GetComponent <Button>().interactable = false;
            SetzeHandkartenInteractable(false);
            btnRundeBeenden.interactable = true;
        }
        else
        {
            Debug.Log("Die Karte " + karteInSzene + " passt NICHT auf " + spielprinzip.offeneKarte);
        }
    }