Beispiel #1
0
    public bool reorganizeHand(GameObject currentCard, Vector2 droppedPos, int value)
    {
        bool retVal = true;

        RaycastHit2D[] touches = Physics2D.RaycastAll(droppedPos, droppedPos, 0.5f);
        if (touches.Length > 1)
        {
            var hit = touches[1];
            if (hit.transform != null)
            {
                if (hit.transform.tag == "Hex")
                {
                    GameObject     position = hit.transform.gameObject;
                    SpriteRenderer hitTile  = position.GetComponent <SpriteRenderer>();

                    if (!cm.containsTile(hitTile.sprite) && !cm.isSpell(currentCard.GetComponent <SpriteRenderer>().sprite))
                    {
                        TILETYPE t = GameManager.instance.cardData[cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite)].TYPE();
                        if ((t == TILETYPE.INDUSTRIAL && hexGrid.industryCheck(hexGrid.COORDS(position)) || (t != TILETYPE.INDUSTRIAL)))
                        {
                            if (hexGrid.placeTile(hexGrid.COORDS(position), t, GameManager.instance.firstTile(t), GameManager.instance.currentTiles.Count == 0))
                            {
                                hit.transform.gameObject.AddComponent <TileInfo>().SetInfo(hexGrid.updateGRID(position, cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite)), cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite));
                                GameManager.instance.currentTiles.Add(hit.transform.gameObject.GetComponent <TileInfo>());
                                currentCard.transform.position = new Vector2(-100, -100);
                                hitTile.sprite = currentCard.GetComponent <SpriteRenderer>().sprite;
                                GameManager.instance.playedCard(cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite));
                            }
                            else
                            {
                                if (hexGrid.surrounded(t) && !GameManager.instance.firstTile(t))
                                {
                                    hit.transform.gameObject.AddComponent <TileInfo>().SetInfo(hexGrid.updateGRID(position, cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite)), cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite));
                                    GameManager.instance.currentTiles.Add(hit.transform.gameObject.GetComponent <TileInfo>());
                                    currentCard.transform.position = new Vector2(-100, -100);
                                    hitTile.sprite = currentCard.GetComponent <SpriteRenderer>().sprite;
                                    GameManager.instance.playedCard(cm.cardValue(currentCard.GetComponent <SpriteRenderer>().sprite));
                                }
                                else
                                {
                                    currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                                    retVal  = false;
                                    warning = 1;
                                }
                            }
                        }
                        else
                        {
                            currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                            retVal  = false;
                            warning = 0;
                        }
                    }
                    else
                    {
                        if (cm.spellType(value) == SPELLTYPE.TARGETED)
                        {
                            if (cm.containsTile(hitTile.sprite))
                            {
                                TileInfo tile = position.GetComponent <TileInfo>();

                                if (tile)
                                {
                                    if (GameManager.instance.playSpell(value, tile))
                                    {
                                        currentCard.transform.position = new Vector2(-100, -100);
                                        //TODO : DO TURN ON SPELL MODIFIERS AND SUCH.
                                        GameManager.instance.playedCard(value);
                                    }
                                    else
                                    {
                                        currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                                        retVal = false;
                                    }
                                }
                                else
                                {
                                    // NO TILE INFO, SO WATER.
                                    currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                                    retVal = false;
                                }
                            }
                            else
                            {
                                currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                                retVal  = false;
                                warning = 7;
                            }
                        }
                        else
                        {
                            currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                            retVal = false;
                        }
                    }
                    // touchOffset = (Vector2)hit.transform.position - inputPosition;
                    // draggedObject.transform.localScale = new Vector3(1.2f,1.2f,1.2f);
                    // draggedObject.GetComponent<SpriteRenderer>().sprite = cm.changetoTile(draggedObject.GetComponent<SpriteRenderer>().sprite);
                }
                else if (hit.transform.tag == "SpellArea")
                {
                    // PLAY THE CARD

                    if (GameManager.instance.playSpell(value, null))
                    {
                        currentCard.transform.position = new Vector2(-100, -100);
                        //TODO : DO TURN ON SPELL MODIFIERS AND SUCH.
                        GameManager.instance.playedCard(value);
                    }
                    else
                    {
                        currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                        retVal = false;
                    }

                    // cm.spellArea.color = new Color(1,1,1,0); // TODO: FADE?
                    cm.spellSpot.SetActive(false);
                }
                else
                {
                    currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
                    retVal = false;
                    // not placed on anything.
                    warning = 5;
                }
            }
        }
        else
        {
            currentCard.transform.position = cardPositions[indexOfCard(currentCard)];
            retVal  = false;
            warning = 9;
            // not placed on anything.
        }

        if (!retVal && cm.isSpell(currentCard.GetComponent <SpriteRenderer>().sprite))
        {
            // cm.spellArea.color = new Color(1,1,1,0); // TODO: FADE?
            cm.spellSpot.SetActive(false);
        }

        if (!retVal)
        {
            setWarningTxt();
        }


        return(retVal);
    }