Ich würde alles einfach über Variablen und simplen If-Forks handlen.
Jedesmal wenn du eine Karte hinzufügst eine Variable (z.B. "Deck") hochzählen. Davor eine Fork setzen.
If Variable "Deck" = 20
// Deck ist voll
else
Variable "Deck" +1
Je nachdem was es für ein Kartentyp ist (Monsterkarte, Eigenschaftskarte) die entsprechende Variable hochzählen. Wenn der Spieler z.B. eine Monsterkarte hinzufügt, dann Abfrage von oben nutzen und neben
Variable "Deck" +1
auch Variable "Monsterkarte" +1
. Gegebenfalls erneut eine Fork-Abfrage
If Variable "Deck" = 20
// Deck ist voll
else
If Variable "Monsterkarte" = 12
// Bereits 12 Monsterkarten im Deck
else
Variable "Deck" +1
Variable "Monsterkarte" +1
Das ganze kannst du immer weiterspinnen.
If Variable "Deck" = 20
// Deck ist voll
else
If Variable "Monsterkarte" = 12
// Bereits 12 Monsterkarten im Deck
else
If Variable "RareKarten" = 1
// Eine RareKarte ist bereits enthalten
else
Variable "Deck" +1
Variable "Monsterkarte" +1
Variable "RareKarten" +1
Da nur eine RareKarte erlaubt ist, könntest du es theoretisch auch mit einem Switch machen und nach On/Off prüfen. Wenn vorhanden Switch "RareKarten" on, else off.
Jede Karte hier eine Variable zuteilen. Wenn du Karte "X" hinzufügst mit dem vorherigen Beispiel:
If Variable "Deck" = 20
// Deck ist voll
else
If Variable "Monsterkarte" = 12
// Bereits 12 Monsterkarten im Deck
else
If Variable "X" = 3
// Karte "X" bereits 3mal enthalten
else
Variable "Deck" +1
Variable "Monsterkarte" +1
Variable "X" +1
Ich würde alle möglichen Fälle abdecken und in ein Event packen, welches immer abgefragt wird sobald man eine Karte ausgewählt hat.
So oder so ähnlich. Alternativ über Ruby/RGSSx lösen.