Example #1
0
        private void PlaceCurrent()
        {
            if (!CurrentPlaceable)
            {
                return;
            }

            if (CurrentPlaceable.Price > SpendAmount)
            {
                GameManager.Instance.Ui.ShowError("NUH-UH", "You can't afford that!", 3f);
                return;
            }


            var testCollider = CurrentPlaceable.GetComponentInChildren <BoxCollider2D>();

            if (testCollider)
            {
                testCollider.enabled = true;

                Collider2D[] results = new Collider2D[1];

                var amount = testCollider.OverlapCollider(
                    new ContactFilter2D {
                    useLayerMask = true, layerMask = PlaceCheckMask
                },
                    results);

                if (amount > 0)
                {
                    testCollider.enabled = false;
                    GameManager.Instance.Ui.ShowError("NO WAY", "You need a clear space to put down furniture!", 3);
                    return;
                }


                testCollider.enabled = false;
            }

            SpendAmount -= CurrentPlaceable.Price;

            var placeable = Instantiate(CurrentPlaceable);

            placeable.IsBeingPlaced = false;

            var sprite = placeable.GetComponentInChildren <SpriteRenderer>();

            if (sprite)
            {
                sprite.color = sprite.color.WithAlpha(1);
            }

            placeable.transform.position = GridHelper.Instance.Align(PlaceAnchor.position);

            var realCollider = placeable.GetComponentInChildren <BoxCollider2D>();

            if (realCollider)
            {
                realCollider.enabled = true;
            }

            Destroy(CurrentPlaceable.gameObject);
            CurrentPlaceable = CreateGhostPlaceable(GameManager.Instance.Placeables[CurrentPlaceableIndex]);
        }