CardGolf Draw() { CardGolf cd = drawPile[0]; drawPile.RemoveAt(0); return(cd); }
public bool AdjacentRank(CardGolf c0, CardGolf c1) { if (!c0.canClick || !c1.faceUp) { return(false); } if (Mathf.Abs(c0.rank - c1.rank) == 1) { return(true); } return(false); }
void MoveToDiscard(CardGolf cd) { cd.state = eCardStateGolf.discard; discardPile.Add(cd); cd.transform.parent = layoutAnchor; cd.transform.localPosition = new Vector3( layout.multiplier.x * layout.discardPile.x, layout.multiplier.y * layout.discardPile.y, -layout.discardPile.layerID + 0.5f); cd.faceUp = true; cd.SetSortingLayerName(layout.discardPile.layerName); cd.SetSortOrder(-100 + discardPile.Count); }
void MoveToTarget(CardGolf cd) { if (target != null) { MoveToDiscard(target); } target = cd; cd.state = eCardStateGolf.target; cd.transform.parent = layoutAnchor; cd.transform.localPosition = new Vector3( layout.multiplier.x * layout.discardPile.x, layout.multiplier.y * layout.discardPile.y, -layout.discardPile.layerID ); cd.faceUp = true; cd.SetSortingLayerName(layout.discardPile.layerName); cd.SetSortOrder(0); }
public void CardClicked(CardGolf cd) { switch (cd.state) { case eCardStateGolf.target: break; case eCardStateGolf.drawpile: MoveToDiscard(target); MoveToTarget(Draw()); UpdateDrawPile(); ScoreManagerGolf.EVENT(eScoreEventGolf.draw); FloatingScoreHandler(eScoreEventGolf.draw); break; case eCardStateGolf.tableau: bool validMatch = true; CardGolf tempCardRef = target; if (!cd.canClick) { validMatch = false; } if (!AdjacentRank(cd, target)) { validMatch = false; } if (!validMatch) { return; } table.Remove(cd); MoveToTarget(cd); SetTableauFaces(); ScoreManagerGolf.EVENT(eScoreEventGolf.putt); FloatingScoreHandler(eScoreEventGolf.putt); break; } CheckForGameOver(); }
} //GetCardDefinitionByRank public void MakeCards() { // stub Add the code from page 577 here cardNames = new List <string>(); string[] letters = new string[] { "C", "D", "H", "S" }; foreach (string s in letters) { for (int i = 0; i < 13; i++) { cardNames.Add(s + (i + 1)); } } // list of all Cards cards = new List <CardGolf>(); // temp variables Sprite tS = null; GameObject tGO = null; SpriteRenderer tSR = null; // so tempted to make a D&D ref here... for (int i = 0; i < cardNames.Count; i++) { GameObject cgo = Instantiate(prefabCard) as GameObject; cgo.transform.parent = deckAnchor; CardGolf card = cgo.GetComponent <CardGolf>(); cgo.transform.localPosition = new Vector3(i % 13 * 3, i / 13 * 4, 0); card.name = cardNames[i]; card.suit = card.name[0].ToString(); card.rank = int.Parse(card.name.Substring(1)); if (card.suit == "D" || card.suit == "H") { card.colS = "Red"; card.color = Color.red; } card.def = GetCardDefinitionByRank(card.rank); // Add Decorators foreach (Decorator deco in decorators) { tGO = Instantiate(prefabSprite) as GameObject; tSR = tGO.GetComponent <SpriteRenderer>(); if (deco.type == "suit") { tSR.sprite = dictSuits[card.suit]; } else // it is a rank { tS = rankSprites[card.rank]; tSR.sprite = tS; tSR.color = card.color; } tSR.sortingOrder = 1; // make it render above card tGO.transform.parent = cgo.transform; // make deco a child of card GO tGO.transform.localPosition = deco.loc; // set the deco's local position if (deco.flip) { tGO.transform.rotation = Quaternion.Euler(0, 0, 180); } if (deco.scale != 1) { tGO.transform.localScale = Vector3.one * deco.scale; } tGO.name = deco.type; card.decoGOs.Add(tGO); } // foreach Deco //Add the pips foreach (Decorator pip in card.def.pips) { tGO = Instantiate(prefabSprite) as GameObject; tGO.transform.parent = cgo.transform; tGO.transform.localPosition = pip.loc; if (pip.flip) { tGO.transform.rotation = Quaternion.Euler(0, 0, 180); } if (pip.scale != 1) { tGO.transform.localScale = Vector3.one * pip.scale; } tGO.name = "pip"; tSR = tGO.GetComponent <SpriteRenderer>(); tSR.sprite = dictSuits[card.suit]; tSR.sortingOrder = 1; card.pipGOs.Add(tGO); } //Handle face cards if (card.def.face != "") { tGO = Instantiate(prefabSprite) as GameObject; tSR = tGO.GetComponent <SpriteRenderer>(); tS = GetFace(card.def.face + card.suit); tSR.sprite = tS; tSR.sortingOrder = 1; tGO.transform.parent = card.transform; tGO.transform.localPosition = Vector3.zero; // slap it smack dab in the middle tGO.name = "face"; } tGO = Instantiate(prefabSprite) as GameObject; tSR = tGO.GetComponent <SpriteRenderer>(); tSR.sprite = cardBack; tGO.transform.SetParent(card.transform); tGO.transform.localPosition = Vector3.zero; tSR.sortingOrder = 2; tGO.name = "back"; card.back = tGO; card.faceUp = false; cards.Add(card); } // for all the Cardnames } // makeCards