Example #1
0
    CardGolf Draw()
    {
        CardGolf cd = drawPile[0];

        drawPile.RemoveAt(0);
        return(cd);
    }
Example #2
0
 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);
 }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
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