public override void OnEnter() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if (UpdateCache(go)) { STETilemap tilemap = cachedComponent as STETilemap; if (forceUpdate.Value) { tilemap.UpdateMeshImmediate(); } else { tilemap.UpdateMesh(); } } Finish(); }
protected override void ProceedUse(List <Vector2> pTiles) { 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)) { STETilemap affectedLayer = GetTileAffectedLayer(tile); uint rawData = affectedLayer.GetTileData(tile); TileData tileData = new TileData(rawData); foreach (AffectedTerrain terrain in AffectedTerrains) { if (affectedLayer.name == terrain.LayerName) { tileData.brushId = terrain.BrushId; } } if (affectedLayer.name == "Dirt") { FarmPlot plot = GetPlot(tile); if (plot != null) { Destroy(plot.gameObject); } } affectedLayer.SetTileData(tile, tileData.BuildData()); affectedLayer.UpdateMeshImmediate(); FindObjectOfType <PlayerInventory>().RemoveFromStack(Toolbar.Instance.SelectedSlot.ReferencedItemStack, 1); if (Toolbar.Instance.SelectedSlot.ReferencedItemStack == null) { return; } } } }
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); } } } } } }
private void TryToPlaceDirt() { if (MathHelper.GetRandomInt(0, 100) < 95) { return; } var randomTile = GetRandomPlaceableTilePosition(); if (randomTile.HasValue) { var flag = GetRandomTileRotationFlag(); _doodadsBackgroundTilemap.SetTile( randomTile.Value, GetRandomDirtTile(), Tileset.k_BrushId_Default, flag ); _doodadsBackgroundTilemap.UpdateMeshImmediate(); } }
private void SetDoorState(bool state) { if (state == _oldState) { return; } var top = DoorLocation; var bot = new Vector2(top.x, top.y + 1); var tileTop = WallTileId; // Default is closed var tileBot = FloorTileId; if (Locked) { tileTop = LockedWallTileId; tileBot = LockedFloorTileId; } else if (state) { tileTop = OpenWallTileId; tileBot = OpenFloorTileId; } DoorTilemap.SetTile(bot, tileTop); DoorTilemap.SetTile(top, tileBot); if (InvertTiles) { SetFlipForTile(DoorTilemap, bot); SetFlipForTile(DoorTilemap, top); } _oldState = state; DoorTilemap.UpdateMeshImmediate(); }
void SetTileData(Vector2 pTileWorldPos, TileData pTileData) { OccupiedLayer.SetTileData(pTileWorldPos, pTileData.BuildData()); OccupiedLayer.UpdateMeshImmediate(); }