Пример #1
0
        private void CheckForDirtAndCleanIfPossible()
        {
            if (_currentCapacity == 0)
            {
                return;
            }

            // Check tile below me
            var realWorldPosition = transform.position;

            var vLocPos = _doodadsBackgroundTilemap.transform.InverseTransformPoint(realWorldPosition);
            var gridX   = BrushUtil.GetGridX(vLocPos, _doodadsBackgroundTilemap.CellSize);
            var gridY   = BrushUtil.GetGridY(vLocPos, _doodadsBackgroundTilemap.CellSize);


            var gridPosition = TilemapUtils.GetGridPosition(
                _doodadsBackgroundTilemap,
                new Vector2(realWorldPosition.x, realWorldPosition.y)
                );

            gridPosition = new Vector2(gridX, gridY);

            var tileData = _doodadsBackgroundTilemap.GetTileData(gridPosition);

            // Remove the tile below me!
            if (IsDirtTile(tileData))
            {
                _doodadsBackgroundTilemap.Erase(gridPosition);
                _doodadsBackgroundTilemap.UpdateMesh();
                _currentCapacity--;
            }
        }
Пример #2
0
        private void DrawTileToLayers()
        {
            bool fx  = false;
            bool fy  = false;
            int  rot = 0;

            for (int i = 0; i < this.pyxelTilemap.layers.Length; i++)
            {
                STETilemap map = pyxelEdit.transform.Find(this.pyxelTilemap.layers[i].name).GetComponent <STETilemap>();

                for (int t = 0; t < this.pyxelTilemap.layers[i].tiles.Length; t++)
                {
                    int tileID = this.pyxelTilemap.layers[i].tiles[t].tile;

                    rot = this.pyxelTilemap.layers[i].tiles[t].rot;
                    fx  = this.pyxelTilemap.layers[i].tiles[t].flipX;
                    fy  = (rot == 2) ? true : false;
                    if (rot == 2)
                    {
                        fx = !fx;
                    }

                    int x = this.pyxelTilemap.layers[i].tiles[t].x;
                    int y = (this.pyxelTilemap.tileshigh - this.pyxelTilemap.layers[i].tiles[t].y) - 1;

                    if (tileID < 0)
                    {
                        map.Erase(x, y);
                    }
                    else
                    {
                        TileData tileData = new TileData();
                        tileData.brushId = 0;
                        tileData.tileId  = this.pyxelTilemap.layers[i].tiles[t].tile;

                        tileData.flipHorizontal = fx;
                        tileData.flipVertical   = fy;

                        map.SetTileData(x, y, tileData.BuildData());
                    }
                }

                map.UpdateMesh();
            }
        }
    protected override void ProceedUse(List <Vector2> pTiles)
    {
        //Spend player energy
        NeedBase energyNeed = PlayerNeedManager.Instance.GetNeed("Energy");

        energyNeed.Change(-CurrentTool.EnergyCost * (ToolCursorManager.Instance.CursorIndex + 1));

        List <Vector2> tiles = pTiles;

        foreach (Vector2 tile in tiles)
        {
            if (CheckTileValidity(tile))
            {
                FarmPlot plot = GetPlot(tile);
                if (plot != null && plot.Crop != null)
                {
                    plot.Crop.SendMessage("Hit", "Hoe");
                    return;
                }

                STETilemap affectedLayer = GetTileAffectedLayer(tile);
                affectedLayer.Erase(tile);
                affectedLayer.UpdateMeshImmediate();
                if (affectedLayer.name == "Dirt")
                {
                    GameObject.Instantiate(PlotPrefab, tile, this.transform.rotation);
                }
                foreach (AffectedLayer layer in AffectedLayerNames)
                {
                    if (layer.Name == affectedLayer.name)
                    {
                        int rand = Random.Range(0, 100);
                        if (rand <= layer.Output.Chance)
                        {
                            ItemSpawner.Instance.SpawnItems(layer.Output.ContainedItem, tile, (uint)layer.Output.Amount);
                        }
                    }
                }
            }
        }
    }
Пример #4
0
 void EraseTile(Vector2 pTileWorldPos)
 {
     OccupiedLayer.Erase(pTileWorldPos);
     OccupiedLayer.UpdateMeshImmediate();
 }