예제 #1
0
        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);
        }
예제 #2
0
        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);
        }