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); } }
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(); }
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 } }
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); }