protected override void StartDelayed(InteractionEvent interactionEvent) { var targetBehaviour = (IGameObjectProvider)interactionEvent.Target; TileManager tileManager = Object.FindObjectOfType <TileManager>(); TileObject targetTile = targetBehaviour.GameObject.GetComponentInParent <TileObject>(); var tile = targetTile.Tile; // Deconstruct if (tile.turf?.isWall == true) { tile.turf = null; } else // Construct { tile.turf = WallToConstruct; } // TODO: Change rotation from defaulting to North tile.fixtures.SetFloorFixtureAtLayer(null, FloorFixtureLayers.FurnitureFixtureMain); FixturesContainer.ValidateFixtures(tile); // TODO: Make an easier way of doing this. tile.subStates = new object[2]; tileManager.UpdateTile(targetTile.transform.position, tile); }
protected override void StartDelayed(InteractionEvent interactionEvent) { var targetBehaviour = (IGameObjectProvider)interactionEvent.Target; TileManager tileManager = Object.FindObjectOfType <TileManager>(); TileObject targetTile = targetBehaviour.GameObject.GetComponentInParent <TileObject>(); var tile = targetTile.Tile; if (tile.fixtures.GetFloorFixtureAtLayer(FloorFixtureLayers.FurnitureFixtureMain) != null) // If there is a fixture on the place { if (tile.fixtures.GetFloorFixtureAtLayer(FloorFixtureLayers.FurnitureFixtureMain) == TableToConstruct) // If the fixture is a table { tile.fixtures.SetFloorFixtureAtLayer(null, FloorFixtureLayers.FurnitureFixtureMain); // Deconstruct } } else // If there is no fixture on place { tile.fixtures.SetFloorFixtureAtLayer(TableToConstruct, FloorFixtureLayers.FurnitureFixtureMain); // Construct } // TODO: Make an easier way of doing this. tile.subStates = new object[2]; // Validate if we can actually place the table FixturesContainer.ValidateFixtures(tile); tile.fixtures = (FixturesContainer)tile.fixtures.Clone(); tileManager.UpdateTile(targetTile.transform.position, tile); }