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 + "");
        }
    }
Esempio n. 2
0
    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();
    }
Esempio n. 3
0
 public void DisableItem(TileScriptableObject tileScriptableObject)
 {
     foreach (var inventorySlot in inventorySlots)
     {
         if (inventorySlot.slotType == tileScriptableObject)
         {
             inventorySlot.DisableItem();
         }
     }
 }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    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));
 }
Esempio n. 8
0
    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);
    }