void WorkshopMode()
    {
        //Find mouse position and convert that to the cell on Tilemap
        if (workshopCamera.enabled == true)
        {
            mousePosition = workshopCamera.ScreenToWorldPoint(Input.mousePosition);
        }

        cellPosition = buildingMap.WorldToCell(mousePosition);

        if (Input.GetMouseButton(0))
        {
            map.SetTile(cellPosition, equippedBlock); //Add a new tile to a seperate Tilemap

            //Creating an array of tiles and their positions to be copied and pasted later
            SaveTiles save = SaveTiles.CreateInstance(map.GetTile(cellPosition), cellPosition);
            tileCreation.Add(save);
        }

        //Keep the cursor updated to the current tile
        else if (cellPosition != previousCell)
        {
            buildingMap.SetTile(cellPosition, equippedBlock);

            buildingMap.SetTile(previousCell, null);

            previousCell = cellPosition;
        }
    }
Beispiel #2
0
    public static SaveTiles CreateInstance(TileBase tile, Vector3Int tileLocation)
    {
        SaveTiles data = ScriptableObject.CreateInstance <SaveTiles>();

        data.Init(tile, tileLocation);
        return(data);
    }
    //Gets the relative location of all the tiles based on the baseTile
    void GetRelativeLocation()
    {
        baseTile = GetLowestRelativeY(tileCreation);

        foreach (SaveTiles tiles in tileCreation)
        {
            Debug.Log(tiles.tileLocation + "" + baseTile.tileLocation + "" + (baseTile.tileLocation.x - tiles.tileLocation.x));
            Vector3Int relativeLoc = new Vector3Int(baseTile.tileLocation.x - tiles.tileLocation.x, baseTile.tileLocation.y - tiles.tileLocation.y, baseTile.tileLocation.z - tiles.tileLocation.z);
            SaveTiles  save        = SaveTiles.CreateInstance(tiles.tile, relativeLoc);
            relativeTileCreation.Add(save);
        }
    }
    //Find the lowest block in the creation to use as placement
    SaveTiles GetLowestRelativeY(List <SaveTiles> saveTiles)
    {
        SaveTiles lowestRelativeY = null;

        foreach (SaveTiles tiles in saveTiles)
        {
            if (lowestRelativeY == null)
            {
                lowestRelativeY = tiles;
            }
            else if (lowestRelativeY.tileLocation.y > tiles.tileLocation.y)
            {
                lowestRelativeY = tiles;
            }
        }
        return(lowestRelativeY);
    }