public void LoadSpecs(GridSpecs <T> gridSpecs, int cols, int rows) { gridSpecs.Dimensions = new Vector2(cols, rows); gridSpecs.Initialise(); TileSpecs = new TileSpecs <T>(gridSpecs, cols, rows); gridSpecs.CalibrateTile(TileSpecs); // Because I cannot serialise GridSpecs<T> _gridSpecs = gridSpecs; }
private void OnTriggerEnter(Collider other) { Debug.Log("meni"); tile = other.GetComponent <TileSpecs>(); if (tile != null) { if (gameStarted && tile.colorInt == doc.color) { hittedTile = true; } else { hittedTile = false; } } }
public void Do777Sorting(List <RectTransform> tileList, List <TileSpecs> tileSpecsList, List <TileSpecs> removedTiles) { TileSpecs UniqueTile = null; List <List <TileSpecs> > MatchedTiles = new List <List <TileSpecs> >(); for (int i = 0; i < tileList.Count; i++) { if (tileList[i].GetComponent <TileSpecs>().isUnique) { UniqueTile = tileList[i].GetComponent <TileSpecs>(); } } for (int i = 1; i < tileSpecsList.Count; i++) { int count = tileSpecsList.FindAll(s => s.number.Equals(i) && !s.isDuplicated && !s.isUnique && !s.isUsed).Count; if (count >= 3) { MatchedTiles.Add(tileSpecsList.FindAll(s => s.number.Equals(i) && !s.isDuplicated && !s.isUnique && !s.isUsed)); } else if (count == 2 && !UniqueTile.isUsed) { UniqueTile.isUsed = true; List <TileSpecs> UniqeTileAdder; UniqeTileAdder = tileSpecsList.FindAll(s => s.number.Equals(i) && !s.isDuplicated && !s.isUnique && !s.isUsed); UniqeTileAdder.Add(UniqueTile); MatchedTiles.Add(UniqeTileAdder); } } for (int i = 0; i < MatchedTiles.Count; i++) { for (int j = 0; j < MatchedTiles[i].Count; j++) { if (MatchedTiles[i][j] != null) { LeanTween.move(MatchedTiles[i][j].gameObject, TileCreator.TC.Slots[TileCreator.TC.CurrentOpenSlotIndex].transform.position, 0.35f); // MatchedTiles[i][j].TargetPos = TileCreator.TC.Slots[TileCreator.TC.CurrentOpenSlotIndex].transform.position; MatchedTiles[i][j].isUsed = true; TileCreator.TC.Slots[TileCreator.TC.CurrentOpenSlotIndex].GetComponent <SlotScript>().isOccupied = true; // Debug.Log("Number: " + MatchedTiles[i][j].number + " Color: " + MatchedTiles[i][j].color + " Duplicated: " // + MatchedTiles[i][j].isDuplicated); TileCreator.TC.CurrentOpenSlotIndex++; } } TileCreator.TC.CurrentOpenSlotIndex++; } for (int i = 0; i < tileSpecsList.Count; i++) { if (!tileSpecsList[i].isUsed) { if (!removedTiles.Contains(tileSpecsList[i])) { removedTiles.Add(tileSpecsList[i]); Debug.Log("ALOOOOOOOOOOOOO"); } // tileSpecsList[i].transform.position = TileCreator.TC.Slots[TileCreator.TC.CurrentOpenSlotIndex].transform.position; // TileCreator.TC.CurrentOpenSlotIndex++; } } }
public void CalibrateTile(TileSpecs <T> specs) { var scale = new Vector3(specs.ScaleX, specs.ScaleY); TileInstance.Scale(scale); }
private IEnumerator CheckNeighbours(GameObject go) { if (playerTurn == 1) { whichPlayerHasTurn = player1PC; } else { whichPlayerHasTurn = player2PC; } color = go.GetComponent <TileSpecs>().colorInt; TileSpecs goSpecs = go.GetComponent <TileSpecs>(); if (!goSpecs.hasChecked) { if (Physics.Raycast(go.transform.position, Vector3.up, out hit, 1f) && hit.collider.tag == "Tile" && hit.collider.gameObject.GetComponent <TileSpecs>().colorInt == color) { if (!hit.collider.gameObject.GetComponent <TileSpecs>().hasChecked&& !hit.collider.gameObject.GetComponent <TileSpecs>().isAdded) { goSpecs.neighboursList.Add(hit.collider.gameObject); destroy.Add(hit.collider.gameObject); hit.collider.gameObject.GetComponent <TileSpecs>().isAdded = true; } } if (Physics.Raycast(go.transform.position, Vector3.down, out hit, 1f) && hit.collider.tag == "Tile" && hit.collider.gameObject.GetComponent <TileSpecs>().colorInt == color) { if (!hit.collider.gameObject.GetComponent <TileSpecs>().hasChecked&& !hit.collider.gameObject.GetComponent <TileSpecs>().isAdded) { goSpecs.neighboursList.Add(hit.collider.gameObject); destroy.Add(hit.collider.gameObject); hit.collider.gameObject.GetComponent <TileSpecs>().isAdded = true; } } if (Physics.Raycast(go.transform.position, Vector3.left, out hit, 1f) && hit.collider.tag == "Tile" && hit.collider.gameObject.GetComponent <TileSpecs>().colorInt == color) { if (!hit.collider.gameObject.GetComponent <TileSpecs>().hasChecked&& !hit.collider.gameObject.GetComponent <TileSpecs>().isAdded) { goSpecs.neighboursList.Add(hit.collider.gameObject); destroy.Add(hit.collider.gameObject); hit.collider.gameObject.GetComponent <TileSpecs>().isAdded = true; } } if (Physics.Raycast(go.transform.position, Vector3.right, out hit, 1f) && hit.collider.tag == "Tile" && hit.collider.gameObject.GetComponent <TileSpecs>().colorInt == color) { if (!hit.collider.gameObject.GetComponent <TileSpecs>().hasChecked&& !hit.collider.gameObject.GetComponent <TileSpecs>().isAdded) { goSpecs.neighboursList.Add(hit.collider.gameObject); destroy.Add(hit.collider.gameObject); hit.collider.gameObject.GetComponent <TileSpecs>().isAdded = true; } } goSpecs.hasChecked = true; yield return(new WaitForSeconds(0.0f)); if (goSpecs.neighboursList.Count != 0) { for (int i = 0; i < goSpecs.neighboursList.Count; i++) { yield return(new WaitForSeconds(0.0f)); StartCoroutine(CheckNeighbours(goSpecs.neighboursList[i])); } } else { for (int i = 0; i < destroy.Count; i++) { if (destroy[i].GetComponent <TileSpecs>().isAdded == true && destroy[i].GetComponent <TileSpecs>().hasChecked == false) { StartCoroutine(CheckNeighbours(destroy[i])); } } yield return(new WaitForSeconds(0.0f)); for (int i = 0; i < destroy.Count; i++) { if (color == 1) { blue++; AddProbs(whichPlayerHasTurn); } else if (color == 2) { green++; AddProbs(whichPlayerHasTurn); } else if (color == 3) { red++; AddProbs(whichPlayerHasTurn); } Destroy(destroy[i]); //Debug.Log("Destroyed tiles: "+ x); //destroy.Remove(destroy[i]); } destroy.Clear(); } } }