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--; } }
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); } } } } } }
void EraseTile(Vector2 pTileWorldPos) { OccupiedLayer.Erase(pTileWorldPos); OccupiedLayer.UpdateMeshImmediate(); }