public void CreateTile(int id, float pos_x, int tile_id) { if (!gameIsRunning) { return; } Debug.Log("Creating tile " + tile_id + " at " + pos_x + " with id " + id); TileScriptableObject tile = currentTileset.tiles[tile_id]; //(TileScriptableObject)tiles[tile_id]; GameObject go = Instantiate(tile.prefab).gameObject; go.transform.parent = tileHolder; go.transform.position = new Vector3(pos_x, 0f, 0f); go.name = id + ""; activeTiles.Add(go); string path = "Games/game_" + lobby_name + "/pair_" + pairID + "/level_data/blocks/block_" + id; if (playerID == 1) { Debug.Log("Uploading tile data to " + path); FirebaseDataManager.fdm.WriteData(path + "/id", id + ""); FirebaseDataManager.fdm.WriteData(path + "/pos_x", pos_x + ""); FirebaseDataManager.fdm.WriteData(path + "/tile_id", tile_id + ""); } }
void SpawnTile(int x, int y) { float xPos = x * tileSize; float yPos = y * tileSize; float scalingTime = 0.66f; // in seconds // create the actual tile element in the scene and store it GameObject createdTile = MonoBehaviour.Instantiate(tilePrefab, new Vector3(xPos, yPos, 0.0f), Quaternion.identity); createdTile.transform.localScale = new Vector3(0, 0, 0); LeanTween.scale(createdTile, new Vector3(4, 4, 4), scalingTime).setEaseInOutExpo(); Tile newTile = createdTile.GetComponent <Tile>(); newTile.xIndex = x; newTile.yIndex = y; board[x, y] = newTile; // set the tile's tile type int rndIndex = Random.Range(0, availableTileTypes.Count); TileScriptableObject tileType = availableTileTypes[rndIndex]; var tileController = createdTile.GetComponent <TileController>(); tileController.tileSource = tileType; tileController.Inititalize(); }
public void DisableItem(TileScriptableObject tileScriptableObject) { foreach (var inventorySlot in inventorySlots) { if (inventorySlot.slotType == tileScriptableObject) { inventorySlot.DisableItem(); } } }
bool IsMatch(int x, int y, string technicalName, List <Vector2> list) { TileScriptableObject neighbourType = board[x, y].GetTileType(); //Debug.Log("Neighbour type: "+neighbourType.technicalName +" to "+technicalName); if (neighbourType.technicalName.Equals(technicalName)) { list.Add(new Vector2(x, y)); return(true); } return(false); }
void RemoveTilesAndTriggerMatches(List <Vector2> tiles) { float animationTime = 0.33f; foreach (Vector2 tile in tiles) { int x = (int)tile.x; int y = (int)tile.y; Tile tileObject = board[x, y]; TileScriptableObject type = tileObject.GetTileType(); //InventoryManager.GetInstance().EnableItem(type); LeanTween.scale(tileObject.gameObject, new Vector3(0, 0, 0), animationTime).setEaseInOutExpo().setDestroyOnComplete(true); board[x, y] = null; } }
public void RerollTiles() { Debug.Log("Rerolling Tiles!"); int c = currentTileset.tiles.Count; for (int i = 0; i < actualButtonIndices.Length; i++) { int v = UnityEngine.Random.Range(0, c); actualButtonIndices[i] = v; TileScriptableObject tile = currentTileset.tiles[v]; Destroy(button_tile_preview_holder[i].gameObject); button_tile_preview_holder[i] = new GameObject("ContentHolder").AddComponent <RectTransform>(); button_tile_preview_holder[i].SetParent(button_tile[i]); List <Transform> toInstantiate = GetAllChildren(tile.prefab); foreach (Transform t in toInstantiate) { if (t.GetComponent <SpriteRenderer>() == null || t.GetComponent <SpriteRenderer>().sprite == null) { continue; } RectTransform content = new GameObject("Content_" + t.name).AddComponent <RectTransform>(); content.SetParent(button_tile_preview_holder[i].transform); content.gameObject.AddComponent <SpriteRenderer>().sprite = t.GetComponent <SpriteRenderer>().sprite; content.position = new Vector3(button_tile_preview_holder[i].position.x + 17.5f, button_tile_preview_holder[i].position.y + 7.5f - (4.77f * i), button_tile_preview_holder[i].position.z); content.localScale = t.lossyScale * 2f; } } Debug.Log("Finished Rerolling!"); }
public static int TileListSorter(TileScriptableObject a, TileScriptableObject b) { return(b.difficulty.CompareTo(a.difficulty)); }
List <Vector2> FindMatches(int x, int y) { //Debug.Log("Starting for x: "+ x + ", y: "+ y + "(tileType: "+board[x, y].GetTileType()+")"); List <Vector2> potentialHorizontalMatches = new List <Vector2>(); List <Vector2> potentialVerticalMatches = new List <Vector2>(); TileScriptableObject type = board[x, y].GetTileType(); // look horizontally to the left for (int i = x - 1; i >= 0; i--) { if (!IsMatch(i, y, type.technicalName, potentialHorizontalMatches)) { break; } } // look horizontally to the right for (int i = x + 1; i < boardWidth; i++) { if (!IsMatch(i, y, type.technicalName, potentialHorizontalMatches)) { break; } } // look vertically below for (int i = y - 1; i >= 0; i--) { if (!IsMatch(x, i, type.technicalName, potentialVerticalMatches)) { break; } } // look vertically above for (int i = y + 1; i < boardHeight; i++) { if (!IsMatch(x, i, type.technicalName, potentialVerticalMatches)) { break; } } List <Vector2> actualMatches = new List <Vector2>(); if (potentialHorizontalMatches.Count >= 2) { foreach (Vector2 neighbour in potentialHorizontalMatches) { actualMatches.Add(neighbour); } } if (potentialVerticalMatches.Count >= 2) { foreach (Vector2 neighbour in potentialVerticalMatches) { actualMatches.Add(neighbour); } } if (actualMatches.Count > 0) { actualMatches.Add(new Vector2(x, y)); } return(actualMatches); }