コード例 #1
0
 public Sprite GetEdgeSprite(int index)
 {
     if (index >= cardData.edges.Length)
     {
         return(null);
     }
     CardManager.CardEdge edge = cardData.edges[index];
     return(CardManager.GetSpriteByEdge(edge));
 }
コード例 #2
0
    public static Dictionary <CardManager.CardId, CardManager.CardData> GetCardData()
    {
        TextAsset textFile = (TextAsset)Resources.Load("cardlist");
        string    txt      = textFile.text;
        Dictionary <string, CardManager.CardId>     cardIds      = new Dictionary <string, CardManager.CardId>();
        Dictionary <string, CardManager.CardFamily> cardFamilies = new Dictionary <string, CardManager.CardFamily>();
        Dictionary <string, CardManager.CardEdge>   cardEdges    = new Dictionary <string, CardManager.CardEdge>();

        for (int i = 0; i < (int)CardManager.CardId.COUNT; i++)
        {
            CardManager.CardId id = (CardManager.CardId)i;
            cardIds[id.ToString()] = id;
        }

        for (int i = 0; i < (int)CardManager.CardFamily.COUNT; i++)
        {
            CardManager.CardFamily family = (CardManager.CardFamily)i;
            cardFamilies[family.ToString()] = family;
        }

        for (int i = 0; i < (int)CardManager.CardFamily.COUNT; i++)
        {
            CardManager.CardEdge edge = (CardManager.CardEdge)i;
            cardEdges[edge.ToString()] = edge;
        }

        Dictionary <CardManager.CardId, CardManager.CardData> cardDict =
            new Dictionary <CardManager.CardId, CardManager.CardData>();

        foreach (string line in txt.Split('\n'))
        {
            string[]             parts = line.Split(',');
            CardManager.CardData data  = new CardManager.CardData
            {
                id        = cardIds[parts[0].Trim()],
                name      = parts[1].Trim(),
                family    = cardFamilies[parts[2].Trim()],
                baseScore = int.Parse(parts[3].Trim()),
                edges     = new CardManager.CardEdge[]
                {
                    cardEdges[parts[4].Trim()],
                    cardEdges[parts[5].Trim()],
                    cardEdges[parts[6].Trim()],
                    cardEdges[parts[7].Trim()]
                }
            };
            cardDict.Add(cardIds[parts[0].Trim()], data);
        }
        return(cardDict);
    }
コード例 #3
0
    public int GetCardScore(bool updateColors = true)
    {
        int score = activeCard.card.GetScore();

        if (updateColors)
        {
            ResetEdgeAndNeighborsColor();
        }
        for (int i = 0; i < 4; i++)
        {
            CardManager.CardEdge edge      = activeCard.card.cardData.edges[(i + 4 - activeCard.rotation) % 4];
            CardGrid             otherCard = GetAdjacentCard(i);
            if (!IsNextToEdge(i) && otherCard == null)
            {
                continue;
            }
            CardManager.CardEdge otherEdge = CardManager.CardEdge.NONE;
            if (otherCard != null)
            {
                otherEdge = otherCard.card.cardData.edges[(i + 6 - otherCard.rotation) % 4];
            }
            if (edge == otherEdge && edge != CardManager.CardEdge.NONE)
            {
                if (edge == CardManager.CardEdge.QUESTION)
                {
                    score += -2;
                    if (updateColors)
                    {
                        SetEdgeColorPenalty(i);
                    }
                }
                else if (edge != CardManager.CardEdge.ENERGY_HIGH && edge != CardManager.CardEdge.ENERGY_LOW)
                {
                    score += 2;
                    if (updateColors)
                    {
                        SetEdgeColorBonus(i);
                    }
                }
            }
            if (edge != otherEdge)
            {
                if (edge == CardManager.CardEdge.INFO && otherEdge == CardManager.CardEdge.QUESTION)
                {
                    score += 2;
                    if (updateColors)
                    {
                        SetEdgeColorBonus(i);
                    }
                }
                else if (
                    !(edge == CardManager.CardEdge.INFO && otherEdge == CardManager.CardEdge.NONE) &&
                    !(edge == CardManager.CardEdge.NONE && otherEdge == CardManager.CardEdge.INFO)
                    )
                {
                    score += -2;
                    if (updateColors)
                    {
                        SetEdgeColorPenalty(i);
                    }
                }
            }
        }
        return(score);
    }