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); }